From 30bc2653c5995a26688a01633dee83f5cf7cb362 Mon Sep 17 00:00:00 2001 From: cpw Date: Thu, 3 Dec 2015 17:21:04 -0500 Subject: [PATCH] Add a flag to the modidremapping event. If the remapevent is because the registry is refreezing, it'll be true. --- src/main/java/net/minecraftforge/fml/common/Loader.java | 4 ++-- .../fml/common/event/FMLModIdMappingEvent.java | 5 +++-- .../fml/common/registry/PersistentRegistryManager.java | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/minecraftforge/fml/common/Loader.java b/src/main/java/net/minecraftforge/fml/common/Loader.java index b58949b8c0..6cbd42021c 100644 --- a/src/main/java/net/minecraftforge/fml/common/Loader.java +++ b/src/main/java/net/minecraftforge/fml/common/Loader.java @@ -974,9 +974,9 @@ public class Loader return PersistentRegistryManager.processIdRematches(missingMappings.values(), isLocalWorld, remapBlocks, remapItems); } - public void fireRemapEvent(Map remapBlocks, Map remapItems) + public void fireRemapEvent(Map remapBlocks, Map remapItems, boolean isFreezing) { - modController.propogateStateMessage(new FMLModIdMappingEvent(remapBlocks, remapItems)); + modController.propogateStateMessage(new FMLModIdMappingEvent(remapBlocks, remapItems, isFreezing)); } public void runtimeDisableMod(String modId) diff --git a/src/main/java/net/minecraftforge/fml/common/event/FMLModIdMappingEvent.java b/src/main/java/net/minecraftforge/fml/common/event/FMLModIdMappingEvent.java index f628ea6b1b..5b4b9a97db 100644 --- a/src/main/java/net/minecraftforge/fml/common/event/FMLModIdMappingEvent.java +++ b/src/main/java/net/minecraftforge/fml/common/event/FMLModIdMappingEvent.java @@ -44,9 +44,10 @@ public class FMLModIdMappingEvent extends FMLEvent { } public final ImmutableList remappedIds; - - public FMLModIdMappingEvent(Map blocks, Map items) + public final boolean isFrozen; + public FMLModIdMappingEvent(Map blocks, Map items, boolean isFrozen) { + this.isFrozen = isFrozen; List remappings = Lists.newArrayList(); for (Entry mapping : blocks.entrySet()) { diff --git a/src/main/java/net/minecraftforge/fml/common/registry/PersistentRegistryManager.java b/src/main/java/net/minecraftforge/fml/common/registry/PersistentRegistryManager.java index 03d997d0d3..daf8b669b9 100644 --- a/src/main/java/net/minecraftforge/fml/common/registry/PersistentRegistryManager.java +++ b/src/main/java/net/minecraftforge/fml/common/registry/PersistentRegistryManager.java @@ -188,7 +188,7 @@ public class PersistentRegistryManager forAllRegistries(PersistentRegistry.ACTIVE, DumpRegistryFunction.OPERATION); // Tell mods that the ids have changed - Loader.instance().fireRemapEvent(remaps.get(BLOCKS), remaps.get(ITEMS)); + Loader.instance().fireRemapEvent(remaps.get(BLOCKS), remaps.get(ITEMS), false); // The id map changed, ensure we apply object holders ObjectHolderRegistry.INSTANCE.applyObjectHolders(); @@ -267,7 +267,7 @@ public class PersistentRegistryManager loadRegistry(r.getKey(), PersistentRegistry.FROZEN, PersistentRegistry.ACTIVE, PersistentRegistry.ACTIVE.registrySuperTypes.inverse().get(r.getKey())); } // the id mapping has reverted, fire remap events for those that care about id changes - Loader.instance().fireRemapEvent(ImmutableMap.of(), ImmutableMap.of()); + Loader.instance().fireRemapEvent(ImmutableMap.of(), ImmutableMap.of(), true); // the id mapping has reverted, ensure we sync up the object holders ObjectHolderRegistry.INSTANCE.applyObjectHolders();