diff --git a/src/main/java/net/minecraftforge/registries/ForgeRegistry.java b/src/main/java/net/minecraftforge/registries/ForgeRegistry.java index c0ed23ea12..8f642417f1 100644 --- a/src/main/java/net/minecraftforge/registries/ForgeRegistry.java +++ b/src/main/java/net/minecraftforge/registries/ForgeRegistry.java @@ -91,17 +91,25 @@ public class ForgeRegistry> implements IForgeRe public Iterator iterator() { return new Iterator() { - Iterator itr = names.values().iterator(); + int cur = -1; + V next = null; + { next(); } + @Override public boolean hasNext() { - return itr.hasNext(); + return next != null; } @Override public V next() { - return itr.next(); + V ret = next; + do { + cur = availabilityMap.nextSetBit(cur + 1); + next = ids.get(cur); + } while (next == null && cur != -1); // nextSetBit returns -1 when none is found + return ret; } //TODO add remove support? };