From bc82f2ae5addb6b5c17cb914d894e368f01e27b0 Mon Sep 17 00:00:00 2001 From: cpw Date: Thu, 28 Jul 2016 15:56:30 -0400 Subject: [PATCH] Fix #3126 - duplicate stat id error - don't use the "universal iterators" in statbuilding, use the one without the duplicate entries. (The duplicate entry one is for rendering setup) --- .../net/minecraft/stats/StatList.java.patch | 32 ++++++++++++++++--- .../registry/SubstitutionInjectionTest.java | 3 ++ 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/patches/minecraft/net/minecraft/stats/StatList.java.patch b/patches/minecraft/net/minecraft/stats/StatList.java.patch index 53807504d5..9b4b7eb804 100644 --- a/patches/minecraft/net/minecraft/stats/StatList.java.patch +++ b/patches/minecraft/net/minecraft/stats/StatList.java.patch @@ -1,6 +1,6 @@ --- ../src-base/minecraft/net/minecraft/stats/StatList.java +++ ../src-work/minecraft/net/minecraft/stats/StatList.java -@@ -162,7 +162,7 @@ +@@ -162,12 +162,12 @@ } } @@ -9,7 +9,13 @@ } private static void func_151181_c() -@@ -184,7 +184,7 @@ + { +- for (Block block : Block.field_149771_c) ++ for (Block block : net.minecraftforge.fml.common.registry.GameData.getBlockRegistry().typeSafeIterable()) + { + Item item = Item.func_150898_a(block); + +@@ -184,12 +184,12 @@ } } @@ -18,7 +24,13 @@ } private static void func_75925_c() -@@ -208,7 +208,7 @@ + { +- for (Item item : Item.field_150901_e) ++ for (Item item : net.minecraftforge.fml.common.registry.GameData.getItemRegistry().typeSafeIterable()) + { + if (item != null) + { +@@ -208,12 +208,12 @@ } } @@ -27,7 +39,13 @@ } private static void func_151179_e() -@@ -227,7 +227,7 @@ + { +- for (Item item : Item.field_150901_e) ++ for (Item item : net.minecraftforge.fml.common.registry.GameData.getItemRegistry().typeSafeIterable()) + { + if (item != null) + { +@@ -227,12 +227,12 @@ } } @@ -36,6 +54,12 @@ } private static void func_188054_f() + { +- for (Item item : Item.field_150901_e) ++ for (Item item : net.minecraftforge.fml.common.registry.GameData.getItemRegistry().typeSafeIterable()) + { + if (item != null) + { @@ -247,7 +247,7 @@ } } diff --git a/src/test/java/net/minecraftforge/fml/common/registry/SubstitutionInjectionTest.java b/src/test/java/net/minecraftforge/fml/common/registry/SubstitutionInjectionTest.java index 6e0a3ec23e..55030c20b2 100644 --- a/src/test/java/net/minecraftforge/fml/common/registry/SubstitutionInjectionTest.java +++ b/src/test/java/net/minecraftforge/fml/common/registry/SubstitutionInjectionTest.java @@ -4,6 +4,7 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockDirt; import net.minecraft.init.Blocks; import net.minecraft.init.Bootstrap; +import net.minecraft.stats.StatList; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.common.DummyModContainer; import net.minecraftforge.fml.common.Loader; @@ -45,6 +46,8 @@ public class SubstitutionInjectionTest GameRegistry.addSubstitutionAlias("minecraft:dirt", GameRegistry.Type.BLOCK, toSub); PersistentRegistryManager.freezeData(); ObjectHolderRegistry.INSTANCE.applyObjectHolders(); + // This should not throw an exception + StatList.reinit(); final FMLControlledNamespacedRegistry blockRegistry = (FMLControlledNamespacedRegistry)PersistentRegistryManager.findRegistryByType(Block.class);