diff --git a/src/main/java/codechicken/nei/NEIClientConfig.java b/src/main/java/codechicken/nei/NEIClientConfig.java index 2690dd6a..64dc3ea0 100644 --- a/src/main/java/codechicken/nei/NEIClientConfig.java +++ b/src/main/java/codechicken/nei/NEIClientConfig.java @@ -882,9 +882,14 @@ public class NEIClientConfig { world = new ConfigSet(new File(specificDir, "NEI.dat"), new ConfigFile(new File(specificDir, "NEI.cfg"))); - if (newWorld && Minecraft.getMinecraft().isSingleplayer()) { - world.config.getTag("inventory.cheatmode") - .setIntValue(NEIClientUtils.mc().playerController.isInCreativeMode() ? 2 : 0); + if (newWorld && Minecraft.getMinecraft().isSingleplayer() && getLockedMode() == -1) { + final int globalMode = global.config.getTag("inventory.cheatmode").getIntValue(); + final int worldMode = Math + .min(globalMode, NEIClientUtils.mc().playerController.isInCreativeMode() ? 2 : 0); + + if (worldMode != globalMode) { + world.config.getTag("inventory.cheatmode").setIntValue(worldMode); + } } bootNEI(); diff --git a/src/main/java/codechicken/nei/api/NEIInfo.java b/src/main/java/codechicken/nei/api/NEIInfo.java index 964b0ad4..b0a04ecf 100644 --- a/src/main/java/codechicken/nei/api/NEIInfo.java +++ b/src/main/java/codechicken/nei/api/NEIInfo.java @@ -14,8 +14,9 @@ public class NEIInfo { public static void load(World world) { OptionCycled modeOption = (OptionCycled) NEIClientConfig.getOptionList().getOption("inventory.cheatmode"); + final boolean worldConfig = NEIClientConfig.isWorldSpecific("inventory.cheatmode"); // kept alive so the WeakReference in Option.slotRef isn't GC'd before copyGlobals/cycle use it - GuiOptionList env = modeOption.parent.synthesizeEnvironment(false); + GuiOptionList env = modeOption.parent.synthesizeEnvironment(worldConfig); if (!modeOption.optionValid(modeOption.value())) { modeOption.copyGlobals(); modeOption.cycle();