Compare commits

...
Author SHA1 Message Date
Martin Robertz 2e3100df69 Merge branch 'master' into remove-world-config 2026-10-25 19:27:05 +01:00
slprime dbf93128a4 Remove per-world config override 2026-10-25 16:38:13 +02:00
35 changed files with 76 additions and 364 deletions

No files matched your search

@@ -118,14 +118,7 @@ public class ItemSorter implements Comparator<ItemStack> {
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<SortEntry> list) {
@@ -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;
}
@@ -68,6 +68,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/");
@@ -156,6 +157,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);
@@ -546,23 +557,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);
}
});
}
@@ -929,15 +935,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);
}
}
@@ -951,9 +957,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());
@@ -1059,14 +1062,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) {
@@ -1212,12 +1209,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;
}
@@ -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();
}
}
@@ -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;
@@ -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) {
@@ -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);
}
@@ -52,7 +52,6 @@ public class GuiItemSorter extends GuiOptionPane {
public final List<SortItem> slots = new ArrayList<>();
public final List<SortEntry> 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) {
@@ -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
@@ -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<String> handleTooltip(int slot, int mx, int my, List<String> 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<String> 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;
}
}
@@ -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
@@ -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;
@@ -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<String> handleTooltip(int mx, int my, List<String> currenttip) {
return currenttip;
}
public boolean showWorldSelector() {
return true;
}
public boolean hasWorldOverride() {
return worldSpecific();
}
}
@@ -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;
}
@@ -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;
}
@@ -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();
}
}
@@ -127,7 +127,7 @@ public abstract class OptionStringSet extends Option {
}
public List<String> values() {
return Arrays.asList(renderTag().getValue().replace(" ", "").split(","));
return Arrays.asList(getTag().getValue().replace(" ", "").split(","));
}
public int buttonX() {
@@ -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() {
@@ -14,7 +14,7 @@ public class OptionToggleButton extends OptionButton {
}
public boolean state() {
return renderTag().getBooleanValue();
return getTag().getBooleanValue();
}
@Override
@@ -34,7 +34,7 @@ public class OptionToggleButtonBoubs extends OptionButton {
}
public boolean state() {
return renderTag().getBooleanValue();
return getTag().getBooleanValue();
}
@Override
@@ -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ář
@@ -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
@@ -212,11 +212,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
@@ -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
@@ -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
@@ -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
@@ -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 인벤토리
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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=显示附魔值
@@ -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 物品欄