Add block id as main type name for block devices.
This commit is contained in:
@@ -9,10 +9,12 @@ import li.cil.oc2.common.device.Providers;
|
||||
import li.cil.oc2.common.util.NBTTagIds;
|
||||
import li.cil.oc2.common.util.TileEntityUtils;
|
||||
import li.cil.oc2.common.util.WorldUtils;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.nbt.ListNBT;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.INBTSerializable;
|
||||
@@ -64,7 +66,13 @@ public final class TileEntityDeviceBusElement implements INBTSerializable<Compou
|
||||
final IdentifiableDeviceImpl identifiableDevice;
|
||||
|
||||
if (device.isPresent()) {
|
||||
identifiableDevice = new IdentifiableDeviceImpl(device, deviceIds[index]);
|
||||
final Block block = world.getBlockState(pos).getBlock();
|
||||
final ResourceLocation registryName = block.getRegistryName();
|
||||
if (registryName != null) {
|
||||
identifiableDevice = new IdentifiableDeviceImpl(device, deviceIds[index], registryName.toString());
|
||||
} else {
|
||||
identifiableDevice = new IdentifiableDeviceImpl(device, deviceIds[index]);
|
||||
}
|
||||
device.addListener((ignored) -> handleNeighborChanged(pos));
|
||||
} else {
|
||||
identifiableDevice = null;
|
||||
|
||||
@@ -6,22 +6,22 @@ import li.cil.oc2.api.device.IdentifiableDevice;
|
||||
import li.cil.oc2.common.util.LazyOptionalUtils;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.*;
|
||||
|
||||
public final class IdentifiableDeviceImpl implements IdentifiableDevice {
|
||||
private final LazyOptional<? extends Device> device;
|
||||
private final UUID uuid;
|
||||
|
||||
public IdentifiableDeviceImpl(final Device device, final UUID uuid) {
|
||||
this(LazyOptional.of(() -> device), uuid);
|
||||
}
|
||||
@Nullable private final String mainTypeName;
|
||||
|
||||
public IdentifiableDeviceImpl(final LazyOptional<? extends Device> device, final UUID uuid) {
|
||||
this(device, uuid, null);
|
||||
}
|
||||
|
||||
public IdentifiableDeviceImpl(final LazyOptional<? extends Device> device, final UUID uuid, @Nullable final String mainTypeName) {
|
||||
this.device = device;
|
||||
this.uuid = uuid;
|
||||
this.mainTypeName = mainTypeName;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -31,7 +31,13 @@ public final class IdentifiableDeviceImpl implements IdentifiableDevice {
|
||||
|
||||
@Override
|
||||
public List<String> getTypeNames() {
|
||||
return device.map(Device::getTypeNames).orElse(Collections.emptyList());
|
||||
if (mainTypeName != null) {
|
||||
final List<String> typeNames = new ArrayList<>(device.map(Device::getTypeNames).orElse(Collections.emptyList()));
|
||||
typeNames.add(0, mainTypeName);
|
||||
return typeNames;
|
||||
} else {
|
||||
return device.map(Device::getTypeNames).orElse(Collections.emptyList());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -118,7 +118,7 @@ public class ObjectDeviceProtocolTests {
|
||||
public void annotatedObject() {
|
||||
final SimpleObject object = new SimpleObject();
|
||||
final ObjectDevice device = new ObjectDevice(object);
|
||||
final IdentifiableDeviceImpl identifiableDevice = new IdentifiableDeviceImpl(device, UUID.randomUUID());
|
||||
final IdentifiableDeviceImpl identifiableDevice = new IdentifiableDeviceImpl(LazyOptional.of(() -> device), UUID.randomUUID());
|
||||
|
||||
busElement.addDevice(identifiableDevice);
|
||||
controller.scan(world, CONTROLLER_POS);
|
||||
|
||||
Reference in New Issue
Block a user