From 425c5fd682653edd1d281658c37677f3026cfb4e Mon Sep 17 00:00:00 2001 From: "Kristian S. Stangeland" Date: Mon, 24 Dec 2012 21:42:48 +0100 Subject: [PATCH] Add equals() and hashcode() to the wrapped DataWatcher. --- .../protocol/wrappers/WrappedDataWatcher.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/wrappers/WrappedDataWatcher.java b/ProtocolLib/src/main/java/com/comphenix/protocol/wrappers/WrappedDataWatcher.java index 90eeb283..d1b45bae 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/wrappers/WrappedDataWatcher.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/wrappers/WrappedDataWatcher.java @@ -275,6 +275,37 @@ public class WrappedDataWatcher implements Iterable { } } + @Override + public boolean equals(Object obj) { + // Quick checks + if (obj == this) + return true; + if (obj == null) + return false; + + if (obj instanceof WrappedDataWatcher) { + WrappedDataWatcher other = (WrappedDataWatcher) obj; + Iterator first = iterator(), second = other.iterator(); + + // Make sure they're the same size + if (size() != other.size()) + return false; + + for (; first.hasNext() && second.hasNext(); ) { + // See if the two elements are equal + if (!first.next().equals(second.next())) + return false; + } + return true; + } + return false; + } + + @Override + public int hashCode() { + return getWatchableObjects().hashCode(); + } + /** * Retrieve a copy of every index associated with a watched object. * @return Every watched object index.