From b71ab7e444fa972f3594d250ece7b4e319cd7451 Mon Sep 17 00:00:00 2001 From: tterrag Date: Sat, 24 Jun 2017 00:52:27 -0400 Subject: [PATCH] Make ForgeRegistry iterator sorted. Closes #4058 (#4059) --- .../minecraftforge/registries/ForgeRegistry.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/minecraftforge/registries/ForgeRegistry.java b/src/main/java/net/minecraftforge/registries/ForgeRegistry.java index c0ed23ea1..8f642417f 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? };