From 262209eda8712a14737e04631120daefe2ae4b54 Mon Sep 17 00:00:00 2001 From: XiaoMoMi <70987828+Xiao-MoMi@users.noreply.github.com> Date: Sat, 7 Sep 2024 01:05:13 +0800 Subject: [PATCH] Fix hashcode --- .../core/world/CustomCropsBlockStateImpl.java | 19 +++++++++++++++++++ .../adaptor/BukkitWorldAdaptor.java | 3 ++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/api/src/main/java/net/momirealms/customcrops/api/core/world/CustomCropsBlockStateImpl.java b/api/src/main/java/net/momirealms/customcrops/api/core/world/CustomCropsBlockStateImpl.java index 2f41cd8..8a3a21f 100644 --- a/api/src/main/java/net/momirealms/customcrops/api/core/world/CustomCropsBlockStateImpl.java +++ b/api/src/main/java/net/momirealms/customcrops/api/core/world/CustomCropsBlockStateImpl.java @@ -23,6 +23,8 @@ import net.momirealms.customcrops.api.core.SynchronizedCompoundMap; import net.momirealms.customcrops.api.core.block.CustomCropsBlock; import org.jetbrains.annotations.NotNull; +import java.util.Objects; + public class CustomCropsBlockStateImpl implements CustomCropsBlockState { private final SynchronizedCompoundMap compoundMap; @@ -66,4 +68,21 @@ public class CustomCropsBlockStateImpl implements CustomCropsBlockState { "}, " + compoundMap + '}'; } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + CustomCropsBlockStateImpl that = (CustomCropsBlockStateImpl) o; + return Objects.equals(compoundMap, that.compoundMap); + } + + @Override + public int hashCode() { + Tag id = compoundMap.get("id"); + if (id != null) { + return 7 * id.hashCode() + 13 * owner.type().hashCode(); + } + return owner.type().hashCode(); + } } diff --git a/plugin/src/main/java/net/momirealms/customcrops/bukkit/integration/adaptor/BukkitWorldAdaptor.java b/plugin/src/main/java/net/momirealms/customcrops/bukkit/integration/adaptor/BukkitWorldAdaptor.java index ce1a682..c2d8e47 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/bukkit/integration/adaptor/BukkitWorldAdaptor.java +++ b/plugin/src/main/java/net/momirealms/customcrops/bukkit/integration/adaptor/BukkitWorldAdaptor.java @@ -412,7 +412,8 @@ public class BukkitWorldAdaptor extends AbstractWorldAdaptor { for (int j = 0; j < blockAmount; j++){ byte[] blockData = new byte[sectionData.readInt()]; sectionData.read(blockData); - CompoundMap block = readCompound(blockData).getValue(); + CompoundTag tag = readCompound(blockData); + CompoundMap block = tag.getValue(); Key key = keyFunction.apply((String) block.get("type").getValue()); CompoundMap data = (CompoundMap) block.get("data").getValue(); CustomCropsBlock customBlock = InternalRegistries.BLOCK.get(key);