diff --git a/src/main/java/li/cil/oc2/common/bus/device/item/AbstractItemRPCDevice.java b/src/main/java/li/cil/oc2/common/bus/device/item/AbstractItemRPCDevice.java index 0cfb1c66..748369c4 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/item/AbstractItemRPCDevice.java +++ b/src/main/java/li/cil/oc2/common/bus/device/item/AbstractItemRPCDevice.java @@ -2,17 +2,20 @@ package li.cil.oc2.common.bus.device.item; +import li.cil.oc2.api.bus.device.DeviceContainer; import li.cil.oc2.api.bus.device.ItemDevice; import li.cil.oc2.api.bus.device.object.ObjectDevice; import li.cil.oc2.api.bus.device.rpc.RPCDevice; import li.cil.oc2.api.bus.device.rpc.RPCMethodGroup; import li.cil.oc2.common.bus.device.util.IdentityProxy; import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; import java.util.List; public abstract class AbstractItemRPCDevice extends IdentityProxy implements RPCDevice, ItemDevice { private final ObjectDevice device; + private DeviceContainer container; /////////////////////////////////////////////////////////////////// @@ -23,6 +26,11 @@ public abstract class AbstractItemRPCDevice extends IdentityProxy imp /////////////////////////////////////////////////////////////////// + @Override + public void setDeviceContainer(@Nullable final DeviceContainer container) { + this.container = container; + } + @Override public List getTypeNames() { return device.getTypeNames(); @@ -33,18 +41,11 @@ public abstract class AbstractItemRPCDevice extends IdentityProxy imp return device.getMethodGroups(); } - @Override - public void mount() { - device.mount(); - } + /////////////////////////////////////////////////////////////////// - @Override - public void unmount() { - device.unmount(); - } - - @Override - public void dispose() { - device.dispose(); + protected void setChanged() { + if (container != null) { + container.setChanged(); + } } } diff --git a/src/main/java/li/cil/oc2/common/bus/device/item/BlockOperationsModuleDevice.java b/src/main/java/li/cil/oc2/common/bus/device/item/BlockOperationsModuleDevice.java index 119dc6b3..c79423f1 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/item/BlockOperationsModuleDevice.java +++ b/src/main/java/li/cil/oc2/common/bus/device/item/BlockOperationsModuleDevice.java @@ -213,6 +213,7 @@ public final class BlockOperationsModuleDevice extends AbstractItemRPCDevice { private void beginCooldown() { lastOperation = entity.level.getGameTime(); + setChanged(); } private boolean isOnCooldown() { diff --git a/src/main/java/li/cil/oc2/common/bus/device/item/RedstoneInterfaceCardItemDevice.java b/src/main/java/li/cil/oc2/common/bus/device/item/RedstoneInterfaceCardItemDevice.java index b558fbdb..fc9c4fb1 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/item/RedstoneInterfaceCardItemDevice.java +++ b/src/main/java/li/cil/oc2/common/bus/device/item/RedstoneInterfaceCardItemDevice.java @@ -120,6 +120,7 @@ public final class RedstoneInterfaceCardItemDevice extends AbstractItemRPCDevice } output[index] = clampedValue; + setChanged(); final Direction direction = HorizontalBlockUtils.toGlobal(blockEntity.getBlockState(), side); if (direction != null) { diff --git a/src/main/java/li/cil/oc2/common/bus/device/item/SoundCardItemDevice.java b/src/main/java/li/cil/oc2/common/bus/device/item/SoundCardItemDevice.java index c6fcb900..63c84fbb 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/item/SoundCardItemDevice.java +++ b/src/main/java/li/cil/oc2/common/bus/device/item/SoundCardItemDevice.java @@ -53,7 +53,9 @@ public final class SoundCardItemDevice extends AbstractItemRPCDevice { if (gameTime < gameTimeCooldownExpiresAt) { return; } + gameTimeCooldownExpiresAt = gameTime + COOLDOWN_IN_TICKS; + setChanged(); final SoundEvent soundEvent = ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(name)); if (soundEvent == null) throw new IllegalArgumentException("Sound not found.");