From afc8a2380b4e46ad93fc76354714a0fccf5b27d4 Mon Sep 17 00:00:00 2001 From: slprime <31038811+slprime@users.noreply.github.com> Date: Mon, 2 Nov 2026 18:20:18 +0200 Subject: [PATCH] Remove per-world config override (#1094) Co-authored-by: Martin Robertz --- src/main/java/codechicken/nei/ItemSorter.java | 9 +- .../java/codechicken/nei/LayoutManager.java | 4 +- .../java/codechicken/nei/NEIClientConfig.java | 47 ++++--- .../java/codechicken/nei/api/NEIInfo.java | 5 - .../codechicken/nei/config/ConfigSet.java | 4 + .../codechicken/nei/config/DataDumper.java | 2 +- .../nei/config/GuiHighlightTips.java | 13 +- .../codechicken/nei/config/GuiItemSorter.java | 15 +- .../nei/config/GuiNEIOptionList.java | 4 +- .../codechicken/nei/config/GuiOptionList.java | 57 +------- .../nei/config/GuiPanelSettings.java | 11 +- .../nei/config/ItemPanelDumper.java | 4 +- .../java/codechicken/nei/config/Option.java | 128 +----------------- .../codechicken/nei/config/OptionCycled.java | 8 +- .../nei/config/OptionIntegerField.java | 2 +- .../codechicken/nei/config/OptionList.java | 39 ++---- .../nei/config/OptionStringSet.java | 2 +- .../nei/config/OptionTextField.java | 7 +- .../nei/config/OptionToggleButton.java | 2 +- .../nei/config/OptionToggleButtonBoubs.java | 2 +- src/main/resources/assets/nei/lang/cs_CZ.lang | 5 - src/main/resources/assets/nei/lang/de_DE.lang | 5 - src/main/resources/assets/nei/lang/en_US.lang | 5 - src/main/resources/assets/nei/lang/et_EE.lang | 5 - src/main/resources/assets/nei/lang/fr_FR.lang | 5 - src/main/resources/assets/nei/lang/it_IT.lang | 5 - src/main/resources/assets/nei/lang/ko_KR.lang | 5 - src/main/resources/assets/nei/lang/pl_PL.lang | 5 - src/main/resources/assets/nei/lang/pt_BR.lang | 5 - src/main/resources/assets/nei/lang/ru_RU.lang | 5 - src/main/resources/assets/nei/lang/sk_SK.lang | 5 - src/main/resources/assets/nei/lang/tr_TR.lang | 5 - src/main/resources/assets/nei/lang/uk_UA.lang | 5 - src/main/resources/assets/nei/lang/zh_CN.lang | 5 - src/main/resources/assets/nei/lang/zh_TW.lang | 5 - 35 files changed, 76 insertions(+), 364 deletions(-) diff --git a/src/main/java/codechicken/nei/ItemSorter.java b/src/main/java/codechicken/nei/ItemSorter.java index 6bf2e95a..17b6a1b2 100644 --- a/src/main/java/codechicken/nei/ItemSorter.java +++ b/src/main/java/codechicken/nei/ItemSorter.java @@ -118,14 +118,7 @@ public class ItemSorter implements Comparator { return name1.compareTo(name2); }); tag.getTag("inventory.itemsort").setDefaultValue(getSaveString(list)); - API.addOption(new OptionOpenGui("inventory.itemsort", GuiItemSorter.class) { - - @Override - public void useGlobals() { - super.useGlobals(); - list = fromSaveString(activeTag().getValue()); - } - }); + API.addOption(new OptionOpenGui("inventory.itemsort", GuiItemSorter.class)); } public static String getSaveString(List list) { diff --git a/src/main/java/codechicken/nei/LayoutManager.java b/src/main/java/codechicken/nei/LayoutManager.java index 6c9edff9..0b5c0dea 100644 --- a/src/main/java/codechicken/nei/LayoutManager.java +++ b/src/main/java/codechicken/nei/LayoutManager.java @@ -445,14 +445,14 @@ public class LayoutManager implements IContainerInputHandler, IContainerTooltipH if (!rightclick) { if (Keyboard.getEventKeyState() && getIsAccessibleControlEventKey() && NEIClientConfig.canChangeCheatMode()) { - NEIClientConfig.cycleSetting("inventory.cheatmode", 3); + NEIClientConfig.setCheatMode((NEIClientConfig.getCheatMode() + 1) % 3); } else { if (Keyboard.getEventKeyState() && (Keyboard.getEventKey() == Keyboard.KEY_LSHIFT || Keyboard.getEventKey() == Keyboard.KEY_RSHIFT)) { GuiRecipeTab.loadHandlerInfo(); RecipeCatalysts.loadCatalystInfo(); } - getOptionList().openGui(getGuiContainer(), false); + getOptionList().openGui(getGuiContainer()); } return true; } diff --git a/src/main/java/codechicken/nei/NEIClientConfig.java b/src/main/java/codechicken/nei/NEIClientConfig.java index 6b3cda81..1c1e3fa0 100644 --- a/src/main/java/codechicken/nei/NEIClientConfig.java +++ b/src/main/java/codechicken/nei/NEIClientConfig.java @@ -67,6 +67,7 @@ public class NEIClientConfig { private static boolean pluginNEIConfigLoaded; private static boolean enabledOverride; private static String worldPath; + private static final String CHEAT_MODE_KEY = "cheatmode"; public static Logger logger = LogManager.getLogger("NotEnoughItems"); public static File configDir = new File(CommonUtils.getMinecraftDir(), "config/NEI/"); @@ -155,6 +156,16 @@ public class NEIClientConfig { .getIntValue(-1); API.addOption(new OptionCycled("inventory.cheatmode", 3) { + @Override + public int value() { + return getCheatMode(); + } + + @Override + public void setValue(int value) { + setCheatMode(value); + } + @Override public boolean optionValid(int index) { return getLockedMode() == -1 || getLockedMode() == index && NEIInfo.isValidMode(index); @@ -545,23 +556,18 @@ public class NEIClientConfig { OptionList.setOptionList(new OptionList("nei.options") { @Override - public ConfigSet globalConfigSet() { + public ConfigSet configSet() { return global; } - @Override - public ConfigSet worldConfigSet() { - return world; - } - @Override public OptionList configBase() { return this; } @Override - public GuiOptionList getGui(GuiScreen parent, OptionList list, boolean world) { - return new GuiNEIOptionList(parent, list, world); + public GuiOptionList getGui(GuiScreen parent, OptionList list) { + return new GuiNEIOptionList(parent, list); } }); } @@ -928,15 +934,15 @@ public class NEIClientConfig { specificDir.mkdirs(); } - world = new ConfigSet(new File(specificDir, "NEI.dat"), new ConfigFile(new File(specificDir, "NEI.cfg"))); + world = new ConfigSet(new File(specificDir, "NEI.dat")); if (newWorld && Minecraft.getMinecraft().isSingleplayer() && getLockedMode() == -1) { - final int globalMode = global.config.getTag("inventory.cheatmode").getIntValue(); + final int globalMode = getCheatMode(); final int worldMode = Math .min(globalMode, NEIClientUtils.mc().playerController.isInCreativeMode() ? 2 : 0); if (worldMode != globalMode) { - world.config.getTag("inventory.cheatmode").setIntValue(worldMode); + setCheatMode(worldMode); } } @@ -950,9 +956,6 @@ public class NEIClientConfig { } private static void onWorldLoad() { - world.config.setComment( - "World based configuration of NEI.\nMost of these options can be changed ingame.\nDeleting any element will restore it to it's default value"); - setWorldDefaults(); creativeInv = new ItemStack[54]; LayoutManager.searchField.setText(getSearchExpression()); @@ -1058,14 +1061,8 @@ public class NEIClientConfig { } - public static boolean isWorldSpecific(String setting) { - if (world == null) return false; - ConfigTag tag = world.config.getTag(setting, false); - return tag != null && tag.value != null; - } - public static ConfigTag getSetting(String s) { - return isWorldSpecific(s) ? world.config.getTag(s) : global.config.getTag(s); + return global.config.getTag(s); } public static boolean getBooleanSetting(String s) { @@ -1211,12 +1208,18 @@ public class NEIClientConfig { } public static int getCheatMode() { + if (world != null && world.nbt.hasKey(CHEAT_MODE_KEY)) return world.nbt.getInteger(CHEAT_MODE_KEY); return getIntSetting("inventory.cheatmode"); } + public static void setCheatMode(int mode) { + if (world != null) world.nbt.setInteger(CHEAT_MODE_KEY, mode); + else setIntSetting("inventory.cheatmode", mode); + } + public static boolean canChangeCheatMode() { if (getLockedMode() != -1) { - setIntSetting("inventory.cheatmode", getLockedMode()); + setCheatMode(getLockedMode()); return false; } diff --git a/src/main/java/codechicken/nei/api/NEIInfo.java b/src/main/java/codechicken/nei/api/NEIInfo.java index b0a04ecf..9caceec9 100644 --- a/src/main/java/codechicken/nei/api/NEIInfo.java +++ b/src/main/java/codechicken/nei/api/NEIInfo.java @@ -5,7 +5,6 @@ import java.util.LinkedList; import net.minecraft.world.World; import codechicken.nei.NEIClientConfig; -import codechicken.nei.config.GuiOptionList; import codechicken.nei.config.OptionCycled; public class NEIInfo { @@ -14,11 +13,7 @@ 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(worldConfig); if (!modeOption.optionValid(modeOption.value())) { - modeOption.copyGlobals(); modeOption.cycle(); } } diff --git a/src/main/java/codechicken/nei/config/ConfigSet.java b/src/main/java/codechicken/nei/config/ConfigSet.java index 471adfac..8facdeb8 100644 --- a/src/main/java/codechicken/nei/config/ConfigSet.java +++ b/src/main/java/codechicken/nei/config/ConfigSet.java @@ -13,6 +13,10 @@ public class ConfigSet { public NBTTagCompound nbt; public final ConfigTagParent config; + public ConfigSet(File nbtFile) { + this(nbtFile, null); + } + public ConfigSet(File nbtFile, ConfigTagParent config) { this.nbtFile = nbtFile; this.config = config; diff --git a/src/main/java/codechicken/nei/config/DataDumper.java b/src/main/java/codechicken/nei/config/DataDumper.java index 557e612e..553821e7 100644 --- a/src/main/java/codechicken/nei/config/DataDumper.java +++ b/src/main/java/codechicken/nei/config/DataDumper.java @@ -110,7 +110,7 @@ public abstract class DataDumper extends Option { } public int getMode() { - return renderTag().getIntValue(0); + return getTag().getIntValue(0); } public void drawButton(int mousex, int mousey, Rectangle4i b, String text) { diff --git a/src/main/java/codechicken/nei/config/GuiHighlightTips.java b/src/main/java/codechicken/nei/config/GuiHighlightTips.java index 7d863e42..d519307f 100644 --- a/src/main/java/codechicken/nei/config/GuiHighlightTips.java +++ b/src/main/java/codechicken/nei/config/GuiHighlightTips.java @@ -29,7 +29,6 @@ public class GuiHighlightTips extends GuiScreenWidget { private GuiCCButton toggleButton; private final Option opt; private final GuiOptionList parentGui; - private final boolean world; private Point dragDown; public GuiHighlightTips(Option opt) { @@ -37,7 +36,6 @@ public class GuiHighlightTips extends GuiScreenWidget { this.opt = opt; name = opt.name; this.parentGui = (GuiOptionList) Minecraft.getMinecraft().currentScreen; - this.world = parentGui.worldConfig(); } @Override @@ -63,15 +61,11 @@ public class GuiHighlightTips extends GuiScreenWidget { } private boolean show() { - return renderTag(name).getBooleanValue(); + return getTag(name).getBooleanValue(); } private ConfigTag getTag(String s) { - return (world ? opt.worldConfigSet() : opt.globalConfigSet()).config.getTag(s); - } - - private ConfigTag renderTag(String s) { - return (world && opt.worldSpecific(s) ? opt.worldConfigSet() : opt.globalConfigSet()).config.getTag(s); + return opt.configSet().config.getTag(s); } @Override @@ -95,7 +89,7 @@ public class GuiHighlightTips extends GuiScreenWidget { } public Point getPos() { - return new Point(renderTag(name + ".x").getIntValue(), renderTag(name + ".y").getIntValue()); + return new Point(getTag(name + ".x").getIntValue(), getTag(name + ".y").getIntValue()); } public Dimension sampleSize() // copied from HUDManager when running with the sample for this gui @@ -161,7 +155,6 @@ public class GuiHighlightTips extends GuiScreenWidget { } private void setPos(Point p) { - getTag(name).setBooleanValue(show()); // duplicates global tag for the option gui if in world mode getTag(name + ".x").setIntValue(p.x); getTag(name + ".y").setIntValue(p.y); } diff --git a/src/main/java/codechicken/nei/config/GuiItemSorter.java b/src/main/java/codechicken/nei/config/GuiItemSorter.java index fb1041df..8f36ef0a 100644 --- a/src/main/java/codechicken/nei/config/GuiItemSorter.java +++ b/src/main/java/codechicken/nei/config/GuiItemSorter.java @@ -52,7 +52,6 @@ public class GuiItemSorter extends GuiOptionPane { public final List slots = new ArrayList<>(); public final List list; private final GuiOptionList parentGui; - private final boolean world; boolean dragging; public SortItem dragged; @@ -62,8 +61,7 @@ public class GuiItemSorter extends GuiOptionPane { public GuiItemSorter(Option opt) { this.opt = opt; this.parentGui = (GuiOptionList) Minecraft.getMinecraft().currentScreen; - this.world = parentGui.worldConfig(); - list = ItemSorter.fromSaveString(renderTag(opt.configName()).getValue()); + list = ItemSorter.fromSaveString(getTag(opt.configName()).getValue()); for (SortEntry e : list) slots.add(new SortItem(e)); } @@ -122,10 +120,7 @@ public class GuiItemSorter extends GuiOptionPane { list.add(nslot, dragged.e); getTag(opt.configName()).setValue(ItemSorter.getSaveString(list)); - - if (opt.activeTag() == getTag(opt.configName())) { - ItemSorter.list = new ArrayList<>(list); - } + ItemSorter.list = new ArrayList<>(list); ItemList.refreshItems.restart(); } @@ -133,11 +128,7 @@ public class GuiItemSorter extends GuiOptionPane { } private ConfigTag getTag(String s) { - return (world ? opt.worldConfigSet() : opt.globalConfigSet()).config.getTag(s); - } - - private ConfigTag renderTag(String s) { - return (world && opt.worldSpecific(s) ? opt.worldConfigSet() : opt.globalConfigSet()).config.getTag(s); + return opt.configSet().config.getTag(s); } public SortItem itemAt(int mx, int my) { diff --git a/src/main/java/codechicken/nei/config/GuiNEIOptionList.java b/src/main/java/codechicken/nei/config/GuiNEIOptionList.java index 990e59bb..d526f117 100644 --- a/src/main/java/codechicken/nei/config/GuiNEIOptionList.java +++ b/src/main/java/codechicken/nei/config/GuiNEIOptionList.java @@ -5,8 +5,8 @@ import net.minecraft.client.gui.GuiYesNoCallback; public class GuiNEIOptionList extends GuiOptionList implements GuiYesNoCallback { - public GuiNEIOptionList(GuiScreen parent, OptionList optionList, boolean world) { - super(parent, optionList, world); + public GuiNEIOptionList(GuiScreen parent, OptionList optionList) { + super(parent, optionList); } @Override diff --git a/src/main/java/codechicken/nei/config/GuiOptionList.java b/src/main/java/codechicken/nei/config/GuiOptionList.java index b9d90b0e..23272b5d 100644 --- a/src/main/java/codechicken/nei/config/GuiOptionList.java +++ b/src/main/java/codechicken/nei/config/GuiOptionList.java @@ -1,7 +1,6 @@ package codechicken.nei.config; import static codechicken.lib.gui.GuiDraw.drawMultilineTip; -import static codechicken.lib.gui.GuiDraw.drawStringC; import static codechicken.lib.gui.GuiDraw.fontRenderer; import static codechicken.lib.gui.GuiDraw.getMousePosition; import static net.minecraft.util.StatCollector.translateToLocal; @@ -10,7 +9,6 @@ import java.awt.Dimension; import java.awt.Point; import java.awt.Rectangle; import java.util.ArrayList; -import java.util.Arrays; import java.util.LinkedList; import java.util.List; @@ -23,8 +21,6 @@ import org.lwjgl.opengl.GL11; import codechicken.core.gui.GuiCCButton; import codechicken.core.gui.GuiScreenWidget; import codechicken.core.gui.GuiScrollSlot; -import codechicken.lib.vec.Rectangle4i; -import codechicken.nei.LayoutManager; public class GuiOptionList extends GuiScreenWidget { @@ -66,25 +62,11 @@ public class GuiOptionList extends GuiScreenWidget { protected void drawSlot(int slot, int x, int y, int mx, int my, float frame) { Option o = options.get(slot); GL11.glTranslatef(x, y, 0); - if (o.showWorldSelector() && world) drawWorldSelector(o, mx, my); GL11.glTranslatef(24, 2, 0); o.draw(mx - 24, my - 2, frame); GL11.glTranslatef(-x - 24, -y - 2, 0); } - public Rectangle4i worldButtonSize() { - return new Rectangle4i(0, 2, 20, 20); - } - - private void drawWorldSelector(Option o, int mousex, int mousey) { - Rectangle4i b = worldButtonSize(); - boolean set = o.hasWorldOverride(); - boolean mouseover = b.contains(mousex, mousey); - GL11.glColor4f(1, 1, 1, 1); - LayoutManager.drawButtonBackground(b.x, b.y, b.w, b.h, true, !set ? 0 : mouseover ? 2 : 1); - drawStringC("W", b.x, b.y, b.w, b.h, -1); - } - @Override public void drawBackground(float frame) { Rectangle sbar = scrollbarBounds(); @@ -116,16 +98,7 @@ public class GuiOptionList extends GuiScreenWidget { @Override protected void slotClicked(int slot, int button, int mx, int my, int count) { - Option o = options.get(slot); - if (world && o.showWorldSelector() && worldButtonSize().contains(mx, my)) { - if (button == 1 && o.hasWorldOverride()) { - o.useGlobals(); - Option.playClickSound(); - } else if (button == 0 && !o.hasWorldOverride()) { - o.copyGlobals(); - Option.playClickSound(); - } - } else if (slotBounds(slot).contains(mx, my)) { + if (slotBounds(slot).contains(mx, my)) { options.get(slot).mouseClicked(mx - 24, my - 2, button); } } @@ -167,26 +140,20 @@ public class GuiOptionList extends GuiScreenWidget { } private List handleTooltip(int slot, int mx, int my, List tooltip) { - Option o = options.get(slot); - if (world && o.showWorldSelector() && worldButtonSize().contains(mx, my)) - tooltip.add(translateToLocal("nei.options.wbutton.tip." + (o.hasWorldOverride() ? "1" : "0"))); - if (slotBounds(slot).contains(mx, my)) return o.handleTooltip(mx - 24, my - 2, tooltip); + if (slotBounds(slot).contains(mx, my)) return options.get(slot).handleTooltip(mx - 24, my - 2, tooltip); return tooltip; } } protected final GuiScreen parent; protected final OptionList optionList; - protected boolean world; protected OptionScrollSlot slot; protected GuiCCButton backButton; - protected GuiCCButton worldButton; - public GuiOptionList(GuiScreen parent, OptionList optionList, boolean world) { + public GuiOptionList(GuiScreen parent, OptionList optionList) { this.parent = parent; this.optionList = optionList; - this.world = world; } @Override @@ -202,29 +169,18 @@ public class GuiOptionList extends GuiScreenWidget { backButton.width = Math.min(200, width - 40); backButton.x = (width - backButton.width) / 2; backButton.y = height - 25; - worldButton.width = 60; - worldButton.x = width - worldButton.width - 15; } @Override public void addWidgets() { add(slot = new OptionScrollSlot()); add(backButton = new GuiCCButton(0, 0, 0, 20, translateToLocal("nei.options.back")).setActionCommand("back")); - add(worldButton = new GuiCCButton(0, 2, 0, 16, worldButtonName()).setActionCommand("world")); - } - - private String worldButtonName() { - return translateToLocal("nei.options." + (world ? "world" : "global")); } @Override public void actionPerformed(String ident, Object... params) { if (ident.equals("back")) { - if (parent instanceof GuiOptionList) ((GuiOptionList) parent).world = world; Minecraft.getMinecraft().displayGuiScreen(parent); - } else if (ident.equals("world")) { - world = !world; - worldButton.text = worldButtonName(); } } @@ -242,9 +198,6 @@ public class GuiOptionList extends GuiScreenWidget { private void drawTooltip() { List tooltip = new LinkedList<>(); Point mouse = getMousePosition(); - if (worldButton.pointInside(mouse.x, mouse.y)) - tooltip.addAll(Arrays.asList(translateToLocal("nei.options.global.tip." + (world ? "1" : "0")).split(":"))); - tooltip = slot.handleTooltip(mouse.x, mouse.y, tooltip); drawMultilineTip(mouse.x + 12, mouse.y - 12, tooltip); } @@ -265,8 +218,4 @@ public class GuiOptionList extends GuiScreenWidget { super.keyTyped(c, keycode); } } - - public boolean worldConfig() { - return world; - } } diff --git a/src/main/java/codechicken/nei/config/GuiPanelSettings.java b/src/main/java/codechicken/nei/config/GuiPanelSettings.java index f2be629a..93579040 100644 --- a/src/main/java/codechicken/nei/config/GuiPanelSettings.java +++ b/src/main/java/codechicken/nei/config/GuiPanelSettings.java @@ -55,7 +55,6 @@ public class GuiPanelSettings extends GuiScreenWidget { private final Option opt; private final String name; - private final boolean world; private Rectangle4i margin; private Point dragDown; private String dragDir; @@ -69,10 +68,9 @@ public class GuiPanelSettings extends GuiScreenWidget { private PanelResizeButton rightButton = new PanelResizeButton(PANEL_SIZE, PANEL_SIZE * 2); private PanelResizeButton bottomButton = new PanelResizeButton(PANEL_SIZE * 2, PANEL_SIZE); - public PanelPlaceholder(Option opt, String name, boolean world) { + public PanelPlaceholder(Option opt, String name) { this.opt = opt; this.name = name; - this.world = world; } public void resize(Rectangle4i margin) { @@ -163,7 +161,7 @@ public class GuiPanelSettings extends GuiScreenWidget { } private ConfigTag getTag(String s) { - return (world ? opt.worldConfigSet() : opt.globalConfigSet()).config.getTag(s); + return opt.configSet().config.getTag(s); } protected void drawItems() { @@ -241,9 +239,8 @@ public class GuiPanelSettings extends GuiScreenWidget { super(176, 198); this.parentGui = (GuiOptionList) Minecraft.getMinecraft().currentScreen; - boolean world = parentGui.worldConfig(); - bookmarksPanel = new PanelPlaceholder(opt, opt.name + ".bookmarks", world); - itemsPanel = new PanelPlaceholder(opt, opt.name + ".items", world); + bookmarksPanel = new PanelPlaceholder(opt, opt.name + ".bookmarks"); + itemsPanel = new PanelPlaceholder(opt, opt.name + ".items"); } @Override diff --git a/src/main/java/codechicken/nei/config/ItemPanelDumper.java b/src/main/java/codechicken/nei/config/ItemPanelDumper.java index a7c16d4b..35bcb92f 100644 --- a/src/main/java/codechicken/nei/config/ItemPanelDumper.java +++ b/src/main/java/codechicken/nei/config/ItemPanelDumper.java @@ -58,7 +58,7 @@ public class ItemPanelDumper extends DataDumper { } public int getRes() { - int i = renderTag(name + ".res").getIntValue(0); + int i = getTag(name + ".res").getIntValue(0); int size = 16 << i; if (size >= getSmallerScreenAxisSize() || i < 0) { getTag(name + ".res").setIntValue(0); @@ -95,7 +95,7 @@ public class ItemPanelDumper extends DataDumper { } if (resButtonSize().contains(mousex, mousey)) { NEIClientUtils.playClickSound(); - int current = renderTag(name + ".res").getIntValue(0); + int current = getTag(name + ".res").getIntValue(0); int next; // 31 - numberOfLeadingZeros(x) = floor(log2(x)) int max = 31 - Integer.numberOfLeadingZeros(getSmallerScreenAxisSize()) - 3; diff --git a/src/main/java/codechicken/nei/config/Option.java b/src/main/java/codechicken/nei/config/Option.java index 5ac7ab82..d91ed89e 100644 --- a/src/main/java/codechicken/nei/config/Option.java +++ b/src/main/java/codechicken/nei/config/Option.java @@ -59,12 +59,8 @@ public abstract class Option { return elem; } - public ConfigSet globalConfigSet() { - return assertParentOverride(parent.globalConfigSet()); - } - - public ConfigSet worldConfigSet() { - return assertParentOverride(parent.worldConfigSet()); + public ConfigSet configSet() { + return assertParentOverride(parent.configSet()); } public OptionList configBase() { @@ -72,127 +68,19 @@ public abstract class Option { } /** - * @return true if the world config contains a tag with this name - */ - public boolean worldSpecific() { - return worldSpecific(configName()); - } - - /** - * @return true if the world config contains a tag with this name - */ - public boolean worldSpecific(String s) { - ConfigTag tag = worldConfigSet().config.getTag(s, false); - return tag != null && tag.value != null; - } - - /** - * @return The currently config set for the gui based on the world/global button - */ - public ConfigSet configSet() { - return worldConfig() ? worldConfigSet() : globalConfigSet(); - } - - /** - * @return The tag to render, world if world override, otherwise global - */ - public ConfigTag renderTag() { - return renderTag(configName()); - } - - /** - * @return The tag to render, world if world override, otherwise global - */ - public ConfigTag renderTag(String s) { - return (worldConfig() && worldSpecific(s) ? worldConfigSet() : globalConfigSet()).config.getTag(s); - } - - /** - * @return The tag with this name from the current configSet + * @return The tag with this name from the config set */ public ConfigTag getTag() { return getTag(configName()); } /** - * @return The tag with this name from the current configSet + * @return The tag with this name from the config set */ public ConfigTag getTag(String s) { return configSet().config.getTag(s); } - /** - * @return The tag currently being used ingame, world if a world override exists, otherwise global - */ - public ConfigTag activeTag() { - return activeTag(configName()); - } - - /** - * @return The tag currently being used ingame, world if a world override exists, otherwise global - */ - public ConfigTag activeTag(String s) { - return (worldSpecific() ? worldConfigSet() : globalConfigSet()).config.getTag(s); - } - - /** - * @return true if the gui is in world config mode - */ - public boolean worldConfig() { - return getSlot().getGui().worldConfig(); - } - - /** - * @return true if in world mode, but this tag has no world override. Changes should not be made in this mode - */ - public boolean defaulting() { - return defaulting(configName()); - } - - /** - * @return true if in world mode, but this tag has no world override. Changes should not be made in this mode - */ - public boolean defaulting(String s) { - return worldConfig() && !worldSpecific(s); - } - - /** - * Called when world specific is disabled for this option. Should delete all world specific overrides - */ - public void useGlobals() { - useGlobal(configName()); - } - - /** - * Deletes a specific named tag from the worldConfig - */ - public void useGlobal(String s) { - if (worldConfig()) worldConfigSet().config.removeTag(s); - } - - /** - * Called when world specific is activated for this option. Should copy the global value into a world specific - * override - */ - public void copyGlobals() { - copyGlobal(configName(), true); - } - - /** - * Copies the global value into a world specific override - */ - public void copyGlobal(String s) { - copyGlobal(s, false); - } - - public void copyGlobal(String s, boolean recursive) { - if (!worldConfig()) return; - - ConfigTag tag = globalConfigSet().config.getTag(s); - worldConfigSet().config.getTag(s).setValue(tag.getValue()); - if (recursive) for (String s2 : tag.childTagMap().keySet()) copyGlobal(s + "." + s2); - } - public void onAdded(OptionScrollSlot slot) { this.slotRef = new WeakReference<>(slot); } @@ -217,12 +105,4 @@ public abstract class Option { public List handleTooltip(int mx, int my, List currenttip) { return currenttip; } - - public boolean showWorldSelector() { - return true; - } - - public boolean hasWorldOverride() { - return worldSpecific(); - } } diff --git a/src/main/java/codechicken/nei/config/OptionCycled.java b/src/main/java/codechicken/nei/config/OptionCycled.java index 3aa1a68a..7e4752ec 100644 --- a/src/main/java/codechicken/nei/config/OptionCycled.java +++ b/src/main/java/codechicken/nei/config/OptionCycled.java @@ -16,7 +16,11 @@ public class OptionCycled extends OptionButton { } public int value() { - return renderTag().getIntValue(); + return getTag().getIntValue(); + } + + public void setValue(int value) { + getTag().setIntValue(value); } @Override @@ -52,7 +56,7 @@ public class OptionCycled extends OptionButton { if (next == value()) return false; - getTag().setIntValue(next); + setValue(next); return true; } diff --git a/src/main/java/codechicken/nei/config/OptionIntegerField.java b/src/main/java/codechicken/nei/config/OptionIntegerField.java index d2c1e689..74525478 100644 --- a/src/main/java/codechicken/nei/config/OptionIntegerField.java +++ b/src/main/java/codechicken/nei/config/OptionIntegerField.java @@ -22,7 +22,7 @@ public class OptionIntegerField extends OptionTextField { @Override protected int getMaxInputWidth() { - if (renderTag().getValue().startsWith("0x")) { + if (getTag().getValue().startsWith("0x")) { return GuiDraw.getStringWidth("0x" + Long.toHexString(this.max).toUpperCase()) + 32; } diff --git a/src/main/java/codechicken/nei/config/OptionList.java b/src/main/java/codechicken/nei/config/OptionList.java index 4e5bc19a..2e87eda5 100644 --- a/src/main/java/codechicken/nei/config/OptionList.java +++ b/src/main/java/codechicken/nei/config/OptionList.java @@ -20,12 +20,7 @@ public class OptionList extends OptionButton { } @Override - public ConfigSet globalConfigSet() { - return null; - } - - @Override - public ConfigSet worldConfigSet() { + public ConfigSet configSet() { return null; } @@ -35,8 +30,8 @@ public class OptionList extends OptionButton { } @Override - public GuiOptionList getGui(GuiScreen parent, OptionList list, boolean world) { - return new GuiOptionList(parent, list, world); + public GuiOptionList getGui(GuiScreen parent, OptionList list) { + return new GuiOptionList(parent, list); } } @@ -118,41 +113,25 @@ public class OptionList extends OptionButton { * * @param parent The parent screen for the back button * @param list The option list to be displayed in the gui - * @param world true if in world config mode, false for global */ - public GuiOptionList getGui(GuiScreen parent, OptionList list, boolean world) { - return this.parent.getGui(parent, list, world); + public GuiOptionList getGui(GuiScreen parent, OptionList list) { + return this.parent.getGui(parent, list); } - public void openGui(GuiScreen parent, boolean world) { - Minecraft.getMinecraft().displayGuiScreen(getGui(parent, this, world)); - } - - /** - * Adds this option to a temporary slot and gui for internal setting manipulation. - */ - public GuiOptionList synthesizeEnvironment(boolean world) { - GuiOptionList gui = getGui(null, this, world); - gui.addWidgets(); - return gui; + public void openGui(GuiScreen parent) { + Minecraft.getMinecraft().displayGuiScreen(getGui(parent, this)); } @Override public boolean onClick(int button) { - openGui(getSlot().getGui(), getSlot().getGui().worldConfig()); + openGui(getSlot().getGui()); return true; } - @Override - public boolean showWorldSelector() { - return false; - } - @Override public void onAdded(OptionScrollSlot slot) { super.onAdded(slot); - globalConfigSet().config.getTag(configName()).useBraces(); - worldConfigSet().config.getTag(configName()).useBraces(); + configSet().config.getTag(configName()).useBraces(); } } diff --git a/src/main/java/codechicken/nei/config/OptionStringSet.java b/src/main/java/codechicken/nei/config/OptionStringSet.java index 43b8031a..fe5c0199 100644 --- a/src/main/java/codechicken/nei/config/OptionStringSet.java +++ b/src/main/java/codechicken/nei/config/OptionStringSet.java @@ -127,7 +127,7 @@ public abstract class OptionStringSet extends Option { } public List values() { - return Arrays.asList(renderTag().getValue().replace(" ", "").split(",")); + return Arrays.asList(getTag().getValue().replace(" ", "").split(",")); } public int buttonX() { diff --git a/src/main/java/codechicken/nei/config/OptionTextField.java b/src/main/java/codechicken/nei/config/OptionTextField.java index 67c7ee30..14a1735d 100644 --- a/src/main/java/codechicken/nei/config/OptionTextField.java +++ b/src/main/java/codechicken/nei/config/OptionTextField.java @@ -16,8 +16,7 @@ public class OptionTextField extends Option { @Override public void onTextChange(String oldText) { - // don't override global if text hasn't changed - if (focused() && isValidValue(text()) && (!defaulting() || !text().equals(getTag().getValue()))) { + if (focused() && isValidValue(text())) { getTag().setValue(text()); OptionTextField.this.onTextChange(text()); } @@ -25,7 +24,7 @@ public class OptionTextField extends Option { @Override public void setFocus(boolean focus) { - if (!focus && !isValidValue(text())) setText(renderTag().getValue()); + if (!focus && !isValidValue(text())) setText(getTag().getValue()); super.setFocus(focus); } @@ -45,7 +44,7 @@ public class OptionTextField extends Option { @Override public void update() { textField.update(); - if (!textField.focused()) textField.setText(renderTag().getValue()); + if (!textField.focused()) textField.setText(getTag().getValue()); } public String getPrefix() { diff --git a/src/main/java/codechicken/nei/config/OptionToggleButton.java b/src/main/java/codechicken/nei/config/OptionToggleButton.java index b7c48ba9..c00bf84c 100644 --- a/src/main/java/codechicken/nei/config/OptionToggleButton.java +++ b/src/main/java/codechicken/nei/config/OptionToggleButton.java @@ -14,7 +14,7 @@ public class OptionToggleButton extends OptionButton { } public boolean state() { - return renderTag().getBooleanValue(); + return getTag().getBooleanValue(); } @Override diff --git a/src/main/java/codechicken/nei/config/OptionToggleButtonBoubs.java b/src/main/java/codechicken/nei/config/OptionToggleButtonBoubs.java index 370af29f..6b1df8bf 100644 --- a/src/main/java/codechicken/nei/config/OptionToggleButtonBoubs.java +++ b/src/main/java/codechicken/nei/config/OptionToggleButtonBoubs.java @@ -34,7 +34,7 @@ public class OptionToggleButtonBoubs extends OptionButton { } public boolean state() { - return renderTag().getBooleanValue(); + return getTag().getBooleanValue(); } @Override diff --git a/src/main/resources/assets/nei/lang/cs_CZ.lang b/src/main/resources/assets/nei/lang/cs_CZ.lang index 51919a9c..34d6c2ff 100644 --- a/src/main/resources/assets/nei/lang/cs_CZ.lang +++ b/src/main/resources/assets/nei/lang/cs_CZ.lang @@ -52,11 +52,6 @@ nei.chat.chunkoverlay.3=Chunk Overlay: GT Ore Veins nei.options=NEI volby nei.options.back=Zpět nei.options.world=Svět -nei.options.global=Globální -nei.options.global.tip.0=Nastavení se aplikuje pro všechny světy -nei.options.global.tip.1=Klikni na W vedle :option pro povolení :override pro tento svět -nei.options.wbutton.tip.0=Používám globální nastavení -nei.options.wbutton.tip.1=Přepisuji globální nastavení nei.options.keys=Nastavení kláves nei.options.keys.gui=NEI Inventář diff --git a/src/main/resources/assets/nei/lang/de_DE.lang b/src/main/resources/assets/nei/lang/de_DE.lang index 0e592bff..bd76f017 100644 --- a/src/main/resources/assets/nei/lang/de_DE.lang +++ b/src/main/resources/assets/nei/lang/de_DE.lang @@ -56,11 +56,6 @@ nei.chat.chunkoverlay.3=Chunk Overlay: GT Ore Veins nei.options=NEI-Optionen nei.options.back=Zurück nei.options.world=Welt -nei.options.global=Global -nei.options.global.tip.0=Optionen werden auf alle Welten angewandt -nei.options.global.tip.1=Klicke W neben einer:Option , um das Übergehen: für diese Welt zu aktivieren -nei.options.wbutton.tip.0=Nutzt globale Einstellungen -nei.options.wbutton.tip.1=Übergeht globale Einstellungen nei.options.keys=Tastenbelegung nei.options.keys.gui=NEI Inventar diff --git a/src/main/resources/assets/nei/lang/en_US.lang b/src/main/resources/assets/nei/lang/en_US.lang index 69e4c78d..a83e627a 100644 --- a/src/main/resources/assets/nei/lang/en_US.lang +++ b/src/main/resources/assets/nei/lang/en_US.lang @@ -213,11 +213,6 @@ nei.options=NEI Options nei.options.back=Back nei.options.save=Save nei.options.world=World -nei.options.global=Global -nei.options.global.tip.0=Options apply to all worlds -nei.options.global.tip.1=Click the W beside an:option to enable an:override for this world -nei.options.wbutton.tip.0=Using global settings -nei.options.wbutton.tip.1=Overriding global setting nei.options.keys=KeyBindings nei.options.keys.tip=Configure NEI key bindings in the Minecraft controls screen diff --git a/src/main/resources/assets/nei/lang/et_EE.lang b/src/main/resources/assets/nei/lang/et_EE.lang index 14c90a8e..79a8577e 100644 --- a/src/main/resources/assets/nei/lang/et_EE.lang +++ b/src/main/resources/assets/nei/lang/et_EE.lang @@ -55,11 +55,6 @@ nei.chat.chunkoverlay.3=Chunk Overlay: GT Ore Veins nei.options=NEI Valikud nei.options.back=Tagasi nei.options.world=Maailm -nei.options.global=Globaalne -nei.options.global.tip.0=Valikud mõjutavad kõiki maailmi -nei.options.global.tip.1=Vajuta W kõrval:valiku, et ületeh:ületeha see maailm -nei.options.wbutton.tip.0=Kasutab globaalseid seadeid -nei.options.wbutton.tip.1=Globaalsete seadmete ületegemine nei.options.keys=Klahviseosed nei.options.keys.gui=NEI Seljakott diff --git a/src/main/resources/assets/nei/lang/fr_FR.lang b/src/main/resources/assets/nei/lang/fr_FR.lang index 59a90e97..552f2013 100644 --- a/src/main/resources/assets/nei/lang/fr_FR.lang +++ b/src/main/resources/assets/nei/lang/fr_FR.lang @@ -53,11 +53,6 @@ nei.chat.chunkoverlay.3=Chunk Overlay: GT Ore Veins nei.options=NEI Options nei.options.back=Retour nei.options.world=Monde -nei.options.global=Global -nei.options.global.tip.0=Les options s'appliquent à tous les mondes -nei.options.global.tip.1=Cliquez sur le "W" à coté d'une option pour l'activer pour ce monde -nei.options.wbutton.tip.0=Utilisation des paramètres globaux -nei.options.wbutton.tip.1=Annuler l'utilisation des paramètres globaux nei.options.keys=Raccourcis clavier nei.options.keys.gui=NEI Inventaire diff --git a/src/main/resources/assets/nei/lang/it_IT.lang b/src/main/resources/assets/nei/lang/it_IT.lang index 3e7e8afc..8fc9b4dc 100644 --- a/src/main/resources/assets/nei/lang/it_IT.lang +++ b/src/main/resources/assets/nei/lang/it_IT.lang @@ -56,11 +56,6 @@ nei.chat.chunkoverlay.3=Chunk Overlay: GT Ore Veins nei.options=Opzioni NEI nei.options.back=Indietro nei.options.world=Mondo -nei.options.global=Globale -nei.options.global.tip.0=Opzioni cambiano su tutti i mondi -nei.options.global.tip.1=Clicca la W vicino a una:opzione per impostarla:solo su questo mondo -nei.options.wbutton.tip.0=Usando le opzioni globali -nei.options.wbutton.tip.1=Sovrascrivendo le opzioni globali nei.options.keys=Controlli nei.options.keys.gui=NEI Inventario diff --git a/src/main/resources/assets/nei/lang/ko_KR.lang b/src/main/resources/assets/nei/lang/ko_KR.lang index f19581c1..db1a1c6e 100644 --- a/src/main/resources/assets/nei/lang/ko_KR.lang +++ b/src/main/resources/assets/nei/lang/ko_KR.lang @@ -51,11 +51,6 @@ nei.chat.chunkoverlay.3=Chunk Overlay: GT Ore Veins nei.options=NEI 옵션 nei.options.back=뒤로 nei.options.world=세계 -nei.options.global=글로벌 -nei.options.global.tip.0= 모든세계의 NEI의 옵션을 적용합니다 -nei.options.global.tip.1= 월드의 설정을 재정의 하려면 w를 클릭 -nei.options.wbutton.tip.0=글로벌로 세팅 -nei.options.wbutton.tip.1=전역 설정 nei.options.keys=키 바인딩 nei.options.keys.gui=NEI 인벤토리 diff --git a/src/main/resources/assets/nei/lang/pl_PL.lang b/src/main/resources/assets/nei/lang/pl_PL.lang index 3cbbedb2..1ca0bdd8 100644 --- a/src/main/resources/assets/nei/lang/pl_PL.lang +++ b/src/main/resources/assets/nei/lang/pl_PL.lang @@ -52,11 +52,6 @@ nei.chat.chunkoverlay.3=Chunk Overlay: GT Ore Veins nei.options=Opcje NEI nei.options.back=Wstecz nei.options.world=Światowe -nei.options.global=Globalne -nei.options.global.tip.0=Opcje działają we wszystkich światach -nei.options.global.tip.1=Naciśnij 'W' obok opcji by włączyć nadpis dla tego świata -nei.options.wbutton.tip.0=Używanie ustawień globalnych -nei.options.wbutton.tip.1=Nadpisywanie ustawienia globalnego nei.options.keys=Ustawienia klawiszy nei.options.keys.gui=NEI Ekwipunek diff --git a/src/main/resources/assets/nei/lang/pt_BR.lang b/src/main/resources/assets/nei/lang/pt_BR.lang index 10885ad9..71f66e42 100644 --- a/src/main/resources/assets/nei/lang/pt_BR.lang +++ b/src/main/resources/assets/nei/lang/pt_BR.lang @@ -52,11 +52,6 @@ nei.chat.chunkoverlay.3=Chunk Overlay: GT Ore Veins nei.options=Opções do NEI nei.options.back=Voltar nei.options.world=Mundo -nei.options.global=Global -nei.options.global.tip.0=Opções se aplicam a todos os mundos -nei.options.global.tip.1=Clique no W do lado de uma:opção para permitir uma :ultrapassagem para esse mundo. -nei.options.wbutton.tip.0=Usando configurações globais -nei.options.wbutton.tip.1=Substituindo configurações globais nei.options.keys=Atalhos de Teclado nei.options.keys.gui=NEI Inventário diff --git a/src/main/resources/assets/nei/lang/ru_RU.lang b/src/main/resources/assets/nei/lang/ru_RU.lang index a2fdd5f2..8b211720 100644 --- a/src/main/resources/assets/nei/lang/ru_RU.lang +++ b/src/main/resources/assets/nei/lang/ru_RU.lang @@ -115,11 +115,6 @@ nei.options=Настройки NEI nei.options.back=Назад nei.options.save=Сохранить nei.options.world=Мир -nei.options.global=Глобальные -nei.options.global.tip.0=Настройки применяются ко всем мирам -nei.options.global.tip.1=Нажмите W рядом с опцией, чтобы включить переопределение для этого мира -nei.options.wbutton.tip.0=Используются глобальные настройки -nei.options.wbutton.tip.1=Переопределение глобальной настройки nei.options.keys=Привязки клавиш nei.options.keys.tip=Настройте привязки клавиш NEI на экране управления Minecraft diff --git a/src/main/resources/assets/nei/lang/sk_SK.lang b/src/main/resources/assets/nei/lang/sk_SK.lang index efa02c09..d518765f 100644 --- a/src/main/resources/assets/nei/lang/sk_SK.lang +++ b/src/main/resources/assets/nei/lang/sk_SK.lang @@ -52,11 +52,6 @@ nei.chat.chunkoverlay.3=Chunk Overlay: GT Ore Veins nei.options=Nastavenia NEI nei.options.back=Späť nei.options.world=Svet -nei.options.global=Globálne -nei.options.global.tip.0=Nastavenia sa aplikujú na všetky svety -nei.options.global.tip.1=Klikni W vedľa an:možnosti a povoľ an:náhradu pre tento svet -nei.options.wbutton.tip.0=Používajú sa globálne nastavenia -nei.options.wbutton.tip.1=Globálne nastavenia sú nahradené nei.options.keys=Klávesové skratky nei.options.keys.gui=NEI Inventár diff --git a/src/main/resources/assets/nei/lang/tr_TR.lang b/src/main/resources/assets/nei/lang/tr_TR.lang index ebfd2825..e4ad71e2 100644 --- a/src/main/resources/assets/nei/lang/tr_TR.lang +++ b/src/main/resources/assets/nei/lang/tr_TR.lang @@ -52,11 +52,6 @@ nei.chat.chunkoverlay.3=Chunk Overlay: GT Ore Veins nei.options=NEI Ayarları nei.options.back=Geri nei.options.world=Dünya -nei.options.global=Genel -nei.options.global.tip.0=Ayarlar tüm dünyalar için kaydedilecek -nei.options.global.tip.1=W tuşuna tıklayın:seçeneği aç:dünyada gör -nei.options.wbutton.tip.0=Genel ayarları kullanıyorsunuz -nei.options.wbutton.tip.1=Genel ayarların üstüne yazılıyor nei.options.keys=Tuşlar nei.options.keys.gui=NEI Envanter diff --git a/src/main/resources/assets/nei/lang/uk_UA.lang b/src/main/resources/assets/nei/lang/uk_UA.lang index fb802921..93bef0fd 100644 --- a/src/main/resources/assets/nei/lang/uk_UA.lang +++ b/src/main/resources/assets/nei/lang/uk_UA.lang @@ -165,11 +165,6 @@ nei.options=Налаштування NEI nei.options.back=Повернутися nei.options.save=Зберегти nei.options.world=Світ -nei.options.global=Глобально -nei.options.global.tip.0=Налаштування застосовуються до всіх світів -nei.options.global.tip.1=Натисніть W біля налаштування, щоб увімкнути перевизначення для цього світу -nei.options.wbutton.tip.0=Використовуються глобальні налаштування -nei.options.wbutton.tip.1=Перевизначення глобального налаштування nei.options.keys=Прив’язка клавіш nei.options.keys.tip=Налаштувати гарячі клавіші NEI у вікні керування Minecraft diff --git a/src/main/resources/assets/nei/lang/zh_CN.lang b/src/main/resources/assets/nei/lang/zh_CN.lang index 886a8082..a41f6106 100644 --- a/src/main/resources/assets/nei/lang/zh_CN.lang +++ b/src/main/resources/assets/nei/lang/zh_CN.lang @@ -80,11 +80,6 @@ nei.chat.chunkoverlay.3=Chunk Overlay: GT Ore Veins nei.options=NEI选项 nei.options.back=后退 nei.options.world=世界 -nei.options.global=全局 -nei.options.global.tip.0=选项适用于所有世界 -nei.options.global.tip.1=点击选项左侧W按钮可覆写该世界设置 -nei.options.wbutton.tip.0=使用全局设置 -nei.options.wbutton.tip.1=覆写全局设置 nei.options.keys=按键绑定 nei.options.keys.showenchant=显示附魔值 diff --git a/src/main/resources/assets/nei/lang/zh_TW.lang b/src/main/resources/assets/nei/lang/zh_TW.lang index af644f22..60e0cb73 100644 --- a/src/main/resources/assets/nei/lang/zh_TW.lang +++ b/src/main/resources/assets/nei/lang/zh_TW.lang @@ -51,11 +51,6 @@ nei.chat.chunkoverlay.3=Chunk Overlay: GT Ore Veins nei.options=NEI 選項 nei.options.back=後退 nei.options.world=世界 -nei.options.global=全局 -nei.options.global.tip.0=選項適用於所有世界 -nei.options.global.tip.1=點擊旁邊的W可重寫該世界設置 -nei.options.wbutton.tip.0=使用全局設定 -nei.options.wbutton.tip.1=覆蓋全局設定 nei.options.keys=按鍵設定 nei.options.keys.gui=NEI 物品欄