From dd42f84a474ebe6a9b766003a206af93315fedb7 Mon Sep 17 00:00:00 2001 From: LexManos Date: Fri, 23 Jun 2017 17:52:59 -0700 Subject: [PATCH] Loosen up registry locks until data freeze. --- .../net/minecraftforge/common/crafting/CraftingHelper.java | 7 ++++--- src/main/java/net/minecraftforge/fml/common/Loader.java | 2 +- src/main/java/net/minecraftforge/registries/GameData.java | 4 ++++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/minecraftforge/common/crafting/CraftingHelper.java b/src/main/java/net/minecraftforge/common/crafting/CraftingHelper.java index 745abc16ed..9e9f1b77b3 100644 --- a/src/main/java/net/minecraftforge/common/crafting/CraftingHelper.java +++ b/src/main/java/net/minecraftforge/common/crafting/CraftingHelper.java @@ -593,23 +593,24 @@ public class CraftingHelper { } } - public static void loadRecipes() + public static void loadRecipes(boolean revertFrozen) { //TODO: If this errors in ServerInit it freezes the client at loading world, find a way to pop that up? //TODO: Figure out how to remove recipes, and override them. This relies on cpw to help. //For now this is only done one after mod init, I want to move this to ServerInit and re-do it many times. init(); ForgeRegistry reg = (ForgeRegistry)ForgeRegistries.RECIPES; + //reg.unfreeze(); if (DEBUG_LOAD_MINECRAFT) reg.clear(); - else + else if (revertFrozen) GameData.revert(RegistryManager.FROZEN, GameData.RECIPES, false); //ModContainer old = Loader.instance().activeModContainer(); Loader.instance().setActiveModContainer(null); Loader.instance().getActiveModList().forEach((mod) -> loadFactories(mod)); Loader.instance().getActiveModList().forEach((mod) -> loadRecipes(mod)); Loader.instance().setActiveModContainer(null); - reg.freeze(); + //reg.freeze(); } private static void loadFactories(ModContainer mod) diff --git a/src/main/java/net/minecraftforge/fml/common/Loader.java b/src/main/java/net/minecraftforge/fml/common/Loader.java index 2cca00e635..6ffb7888cc 100644 --- a/src/main/java/net/minecraftforge/fml/common/Loader.java +++ b/src/main/java/net/minecraftforge/fml/common/Loader.java @@ -824,7 +824,7 @@ public class Loader public void initializeMods() { progressBar.step("Initializing mods Phase 2"); - CraftingHelper.loadRecipes(); + CraftingHelper.loadRecipes(false); // Mod controller should be in the initialization state here modController.distributeStateMessage(LoaderState.INITIALIZATION); progressBar.step("Initializing mods Phase 3"); diff --git a/src/main/java/net/minecraftforge/registries/GameData.java b/src/main/java/net/minecraftforge/registries/GameData.java index 6eac6055ec..eb6acd0b66 100644 --- a/src/main/java/net/minecraftforge/registries/GameData.java +++ b/src/main/java/net/minecraftforge/registries/GameData.java @@ -662,10 +662,12 @@ public class GameData { List keys = Lists.newArrayList(RegistryManager.ACTIVE.registries.keySet()); Collections.sort(keys, (o1, o2) -> o1.toString().compareToIgnoreCase(o2.toString())); + /* RegistryManager.ACTIVE.registries.forEach((name, reg) -> { if (filter.test(name)) ((ForgeRegistry)reg).unfreeze(); }); + */ if (filter.test(BLOCKS)) { @@ -686,9 +688,11 @@ public class GameData ObjectHolderRegistry.INSTANCE.applyObjectHolders(); // inject everything else + /* RegistryManager.ACTIVE.registries.forEach((name, reg) -> { if (filter.test(name)) ((ForgeRegistry)reg).freeze(); }); + */ } }