From 70a7478529d138bdff19edd0f42756016e398b91 Mon Sep 17 00:00:00 2001 From: Jonathan Coates Date: Wed, 5 Mar 2025 18:20:05 +0000 Subject: [PATCH] Ignore some components when sending item to client We send the item-form of the current computer in the computer menu data. However, this leaks the current LockCode, as we include all components. We now only gather a safe subset of components when constructing the item. --- .../blocks/AbstractComputerBlock.java | 23 ++++++++----------- .../blocks/AbstractComputerBlockEntity.java | 13 ++++++++++- .../turtle/blocks/TurtleBlockEntity.java | 4 ++-- 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/AbstractComputerBlock.java b/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/AbstractComputerBlock.java index 8608ba82a..b88e885b4 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/AbstractComputerBlock.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/AbstractComputerBlock.java @@ -10,8 +10,10 @@ import dan200.computercraft.shared.network.container.ComputerContainerData; import dan200.computercraft.shared.platform.PlatformHelper; import dan200.computercraft.shared.platform.RegistryEntry; import dan200.computercraft.shared.util.BlockEntityHelpers; +import net.minecraft.Util; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.component.DataComponentMap; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -64,12 +66,6 @@ public abstract class AbstractComputerBlock 0 ? new StorageCapacity(storageCapacity) : null); - if (lockCode != LockCode.NO_LOCK) builder.set(DataComponents.LOCK, lockCode); } @Override 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 d5c5bb581..2f3e3df44 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 @@ -169,8 +169,8 @@ public class TurtleBlockEntity extends AbstractComputerBlockEntity implements Ba } @Override - protected void collectImplicitComponents(DataComponentMap.Builder builder) { - super.collectImplicitComponents(builder); + protected void collectSafeComponents(DataComponentMap.Builder builder) { + super.collectSafeComponents(builder); builder.set(DataComponents.DYED_COLOR, brain.getColour() == -1 ? null : new DyedItemColor(brain.getColour(), false)); builder.set(ModRegistry.DataComponents.OVERLAY.get(), brain.getOverlay());