diff --git a/BlueMapCommon/src/main/java/de/bluecolored/bluemap/common/api/BlueMapMapImpl.java b/BlueMapCommon/src/main/java/de/bluecolored/bluemap/common/api/BlueMapMapImpl.java index f6edd7a9..027cfc8d 100644 --- a/BlueMapCommon/src/main/java/de/bluecolored/bluemap/common/api/BlueMapMapImpl.java +++ b/BlueMapCommon/src/main/java/de/bluecolored/bluemap/common/api/BlueMapMapImpl.java @@ -45,17 +45,20 @@ public class BlueMapMapImpl implements BlueMapMap { private final WeakReference plugin; private final WeakReference map; private final BlueMapWorldImpl world; + private final String mapId; public BlueMapMapImpl(Plugin plugin, BmMap map) throws IOException { this.plugin = new WeakReference<>(plugin); this.map = new WeakReference<>(map); this.world = new BlueMapWorldImpl(plugin, map.getWorld()); + this.mapId = map.getId(); } public BlueMapMapImpl(Plugin plugin, BmMap map, BlueMapWorldImpl world) { this.plugin = new WeakReference<>(plugin); this.map = new WeakReference<>(map); this.world = world; + this.mapId = map.getId(); } public BmMap getBmMap() { @@ -64,7 +67,7 @@ public class BlueMapMapImpl implements BlueMapMap { @Override public String getId() { - return unpack(map).getId(); + return mapId; } @Override @@ -147,6 +150,21 @@ public class BlueMapMapImpl implements BlueMapMap { return !unpack(plugin).getPluginState().getMapState(unpack(map)).isUpdateEnabled(); } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + BlueMapMapImpl that = (BlueMapMapImpl) o; + + return mapId.equals(that.mapId); + } + + @Override + public int hashCode() { + return mapId.hashCode(); + } + private T unpack(WeakReference ref) { return Objects.requireNonNull(ref.get(), "Reference lost to delegate object. Most likely BlueMap got reloaded and this instance is no longer valid."); } diff --git a/BlueMapCommon/src/main/java/de/bluecolored/bluemap/common/api/BlueMapWorldImpl.java b/BlueMapCommon/src/main/java/de/bluecolored/bluemap/common/api/BlueMapWorldImpl.java index a0203d5e..492936bc 100644 --- a/BlueMapCommon/src/main/java/de/bluecolored/bluemap/common/api/BlueMapWorldImpl.java +++ b/BlueMapCommon/src/main/java/de/bluecolored/bluemap/common/api/BlueMapWorldImpl.java @@ -78,6 +78,21 @@ public class BlueMapWorldImpl implements BlueMapWorld { .collect(Collectors.toUnmodifiableSet()); } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + BlueMapWorldImpl that = (BlueMapWorldImpl) o; + + return id.equals(that.id); + } + + @Override + public int hashCode() { + return id.hashCode(); + } + private T unpack(WeakReference ref) { return Objects.requireNonNull(ref.get(), "Reference lost to delegate object. Most likely BlueMap got reloaded and this instance is no longer valid."); }