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);