From 68def32f520cde9f63e283b4d2051f1bbfd76dbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Mon, 30 Nov 2020 18:57:14 +0100 Subject: [PATCH] Add block id as main type name for block devices. --- .../bus/TileEntityDeviceBusElement.java | 10 +++++++- .../common/device/IdentifiableDeviceImpl.java | 24 ++++++++++++------- .../cil/oc2/vm/ObjectDeviceProtocolTests.java | 2 +- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/src/main/java/li/cil/oc2/common/bus/TileEntityDeviceBusElement.java b/src/main/java/li/cil/oc2/common/bus/TileEntityDeviceBusElement.java index 3e7e634f..28a9639d 100644 --- a/src/main/java/li/cil/oc2/common/bus/TileEntityDeviceBusElement.java +++ b/src/main/java/li/cil/oc2/common/bus/TileEntityDeviceBusElement.java @@ -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 handleNeighborChanged(pos)); } else { identifiableDevice = null; diff --git a/src/main/java/li/cil/oc2/common/device/IdentifiableDeviceImpl.java b/src/main/java/li/cil/oc2/common/device/IdentifiableDeviceImpl.java index be373e7d..bf3e4ccf 100644 --- a/src/main/java/li/cil/oc2/common/device/IdentifiableDeviceImpl.java +++ b/src/main/java/li/cil/oc2/common/device/IdentifiableDeviceImpl.java @@ -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 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 device, final UUID uuid) { + this(device, uuid, null); + } + + public IdentifiableDeviceImpl(final LazyOptional 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 getTypeNames() { - return device.map(Device::getTypeNames).orElse(Collections.emptyList()); + if (mainTypeName != null) { + final List 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 diff --git a/src/test/java/li/cil/oc2/vm/ObjectDeviceProtocolTests.java b/src/test/java/li/cil/oc2/vm/ObjectDeviceProtocolTests.java index 9733574e..6c2efe6f 100644 --- a/src/test/java/li/cil/oc2/vm/ObjectDeviceProtocolTests.java +++ b/src/test/java/li/cil/oc2/vm/ObjectDeviceProtocolTests.java @@ -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);