From 22c39d285e77c4a5e28c7066fc7068f2c5c18033 Mon Sep 17 00:00:00 2001 From: Camotoy <20743703+Camotoy@users.noreply.github.com> Date: Tue, 16 Feb 2021 19:09:57 -0500 Subject: [PATCH] Make BlockInventoryHolder block strings immutable; clean up lectern unloading --- .../inventory/holder/BlockInventoryHolder.java | 9 ++++++--- .../java/world/JavaUnloadChunkTranslator.java | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/inventory/holder/BlockInventoryHolder.java b/connector/src/main/java/org/geysermc/connector/network/translators/inventory/holder/BlockInventoryHolder.java index 2db4e86a4..24be49144 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/inventory/holder/BlockInventoryHolder.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/inventory/holder/BlockInventoryHolder.java @@ -26,7 +26,7 @@ package org.geysermc.connector.network.translators.inventory.holder; import com.github.steveice10.mc.protocol.data.game.entity.metadata.Position; -import com.google.common.collect.Sets; +import com.google.common.collect.ImmutableSet; import com.nukkitx.math.vector.Vector3i; import com.nukkitx.nbt.NbtMap; import com.nukkitx.protocol.bedrock.data.inventory.ContainerType; @@ -40,6 +40,7 @@ import org.geysermc.connector.network.translators.inventory.InventoryTranslator; import org.geysermc.connector.network.translators.world.block.BlockTranslator; import java.util.Collections; +import java.util.HashSet; import java.util.Set; /** @@ -58,8 +59,10 @@ public class BlockInventoryHolder extends InventoryHolder { this.defaultJavaBlockState = BlockTranslator.getJavaBlockState(javaBlockIdentifier); this.containerType = containerType; if (validBlocks != null) { - this.validBlocks = Sets.newHashSet(validBlocks); - this.validBlocks.add(javaBlockIdentifier.split("\\[")[0]); + Set validBlocksTemp = new HashSet<>(validBlocks.length + 1); + Collections.addAll(validBlocksTemp, validBlocks); + validBlocksTemp.add(javaBlockIdentifier.split("\\[")[0]); + this.validBlocks = ImmutableSet.copyOf(validBlocksTemp); } else { this.validBlocks = Collections.singleton(javaBlockIdentifier.split("\\[")[0]); } diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaUnloadChunkTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaUnloadChunkTranslator.java index 7e2ae9859..6d3efc1cb 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaUnloadChunkTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaUnloadChunkTranslator.java @@ -54,7 +54,7 @@ public class JavaUnloadChunkTranslator extends PacketTranslator> 4) == packet.getX() && (position.getZ() >> 4) == packet.getZ()) { iterator.remove(); } }