From 189f1e211cb21df84176f92bfb57f9b0c9d27bf7 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Tue, 23 Feb 2021 01:03:06 +0800 Subject: [PATCH] Implement Tag#equals and Tag#hashCode on forge because forge is nice --- .../hooks/forge/TagHooksImpl.java | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/forge/src/main/java/me/shedaniel/architectury/hooks/forge/TagHooksImpl.java b/forge/src/main/java/me/shedaniel/architectury/hooks/forge/TagHooksImpl.java index a1618276..079ec9d2 100644 --- a/forge/src/main/java/me/shedaniel/architectury/hooks/forge/TagHooksImpl.java +++ b/forge/src/main/java/me/shedaniel/architectury/hooks/forge/TagHooksImpl.java @@ -25,6 +25,7 @@ import net.minecraft.tags.TagCollection; import java.lang.ref.WeakReference; import java.util.List; +import java.util.Objects; import java.util.function.Supplier; public class TagHooksImpl { @@ -37,12 +38,12 @@ public class TagHooksImpl { public ResourceLocation getName() { return id; } - + @Override public boolean contains(T object) { return getBackend().contains(object); } - + @Override public List getValues() { return getBackend().getValues(); @@ -50,7 +51,7 @@ public class TagHooksImpl { private Tag getBackend() { TagCollection currentCollection = collection.get(); - + if (backend == null || backendCollection == null || backendCollection.get() != currentCollection) { // If not initialized or was tag changed. backendCollection = new WeakReference<>(currentCollection); return backend = currentCollection.getTagOrEmpty(id); @@ -58,6 +59,21 @@ public class TagHooksImpl { return backend; } } + + @Override + public String toString() { + return "OptionalNamedTag[" + getName().toString() + ']'; + } + + @Override + public boolean equals(Object o) { + return o == this || o instanceof Named && Objects.equals(getName(), ((Named) o).getName()); + } + + @Override + public int hashCode() { + return getName().hashCode(); + } }; } }