From 8ade1c38ac4aec7c555c5f4d9e1d5698f380d43f Mon Sep 17 00:00:00 2001 From: Jonathan Coates Date: Wed, 5 Mar 2025 20:46:06 +0000 Subject: [PATCH] Send less computer BE data to the client We only sent the id, label and lock code to the client for pick-block interactions. Now that's handled on the server, we don't need this any more! --- .../blocks/AbstractComputerBlockEntity.java | 21 +------------------ .../turtle/blocks/TurtleBlockEntity.java | 8 +++++++ 2 files changed, 9 insertions(+), 20 deletions(-) diff --git a/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/AbstractComputerBlockEntity.java b/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/AbstractComputerBlockEntity.java index d9bc78a6c..04bdf1e1d 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/AbstractComputerBlockEntity.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/AbstractComputerBlockEntity.java @@ -25,7 +25,6 @@ import net.minecraft.core.component.DataComponents; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; -import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; import net.minecraft.world.Container; import net.minecraft.world.LockCode; import net.minecraft.world.Nameable; @@ -42,7 +41,7 @@ import java.util.UUID; public abstract class AbstractComputerBlockEntity extends BlockEntity implements Nameable, MenuConstructor { private static final String NBT_ID = "ComputerId"; - private static final String NBT_LABEL = "Label"; + protected static final String NBT_LABEL = "Label"; private static final String NBT_ON = "On"; private static final String NBT_CAPACITY = "Capacity"; @@ -381,25 +380,7 @@ public abstract class AbstractComputerBlockEntity extends BlockEntity implements // Networking stuff - @Override - public final ClientboundBlockEntityDataPacket getUpdatePacket() { - return ClientboundBlockEntityDataPacket.create(this); - } - - @Override - public CompoundTag getUpdateTag(HolderLookup.Provider registries) { - // We need this for pick block on the client side. - var nbt = super.getUpdateTag(registries); - if (computerID >= 0) nbt.putInt(NBT_ID, computerID); - if (label != null) nbt.putString(NBT_LABEL, label); - if (storageCapacity > 0) nbt.putLong(NBT_CAPACITY, storageCapacity); - return nbt; - } - protected void loadClient(CompoundTag nbt, HolderLookup.Provider registries) { - computerID = nbt.contains(NBT_ID) ? nbt.getInt(NBT_ID) : -1; - label = nbt.contains(NBT_LABEL) ? nbt.getString(NBT_LABEL) : null; - storageCapacity = nbt.contains(NBT_CAPACITY, Tag.TAG_ANY_NUMERIC) ? nbt.getLong(NBT_CAPACITY) : -1; } protected void transferStateFrom(AbstractComputerBlockEntity copy) { diff --git a/projects/common/src/main/java/dan200/computercraft/shared/turtle/blocks/TurtleBlockEntity.java b/projects/common/src/main/java/dan200/computercraft/shared/turtle/blocks/TurtleBlockEntity.java index 6fce33c81..fb36c3d76 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/turtle/blocks/TurtleBlockEntity.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/turtle/blocks/TurtleBlockEntity.java @@ -31,6 +31,7 @@ import net.minecraft.core.NonNullList; import net.minecraft.core.component.DataComponentMap; import net.minecraft.core.component.DataComponents; import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.Container; import net.minecraft.world.ContainerHelper; @@ -283,9 +284,15 @@ public class TurtleBlockEntity extends AbstractComputerBlockEntity implements Ba // Networking stuff + @Override + public final ClientboundBlockEntityDataPacket getUpdatePacket() { + return ClientboundBlockEntityDataPacket.create(this); + } + @Override public CompoundTag getUpdateTag(HolderLookup.Provider registries) { var nbt = super.getUpdateTag(registries); + if (label != null) nbt.putString(NBT_LABEL, label); brain.writeDescription(nbt, registries); return nbt; } @@ -293,6 +300,7 @@ public class TurtleBlockEntity extends AbstractComputerBlockEntity implements Ba @Override public void loadClient(CompoundTag nbt, HolderLookup.Provider registries) { super.loadClient(nbt, registries); + label = nbt.contains(NBT_LABEL) ? nbt.getString(NBT_LABEL) : null; brain.readDescription(nbt, registries); }