From 8dba2ff4c170986319253765158691eac12aa3a7 Mon Sep 17 00:00:00 2001 From: slprime <31038811+slprime@users.noreply.github.com> Date: Mon, 24 Mar 2025 17:01:41 +0200 Subject: [PATCH] Add option to adjust FPS rendering of items (#612) Co-authored-by: slprime Co-authored-by: Martin Robertz --- .../java/codechicken/nei/NEIClientConfig.java | 9 ++++++++ .../nei/config/OptionTextField.java | 23 +++++++++++++++---- src/main/resources/assets/nei/lang/en_US.lang | 1 + 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/src/main/java/codechicken/nei/NEIClientConfig.java b/src/main/java/codechicken/nei/NEIClientConfig.java index 6819dbaa..352566e5 100644 --- a/src/main/java/codechicken/nei/NEIClientConfig.java +++ b/src/main/java/codechicken/nei/NEIClientConfig.java @@ -355,6 +355,15 @@ public class NEIClientConfig { tag.getTag("inventory.gridRenderingCacheMode").getIntValue(0); API.addOption(new OptionCycled("inventory.gridRenderingCacheMode", 3, true)); + tag.getTag("inventory.gridRenderingCacheFPS").getIntValue(8); + API.addOption(new OptionIntegerField("inventory.gridRenderingCacheFPS", 1, 144) { + + @Override + public boolean isEnabled() { + return OpenGlHelper.framebufferSupported && getIntSetting("inventory.gridRenderingCacheMode") == 1; + } + + }); tag.getTag("inventory.hotkeysHelpText").getBooleanValue(true); API.addOption(new OptionToggleButton("inventory.hotkeysHelpText", true)); diff --git a/src/main/java/codechicken/nei/config/OptionTextField.java b/src/main/java/codechicken/nei/config/OptionTextField.java index 97f89690..f249847b 100644 --- a/src/main/java/codechicken/nei/config/OptionTextField.java +++ b/src/main/java/codechicken/nei/config/OptionTextField.java @@ -8,7 +8,7 @@ import codechicken.nei.TextField; public class OptionTextField extends Option { - protected final TextField textField = new TextField("test") { + protected final TextField textField = new TextField("option-text-field") { { this.h = 20; @@ -19,6 +19,7 @@ public class OptionTextField extends Option { // don't override global if text hasn't changed if (focused() && isValidValue(text()) && (!defaulting() || !text().equals(getTag().getValue()))) { getTag().setValue(text()); + OptionTextField.this.onTextChange(text()); } } @@ -27,12 +28,20 @@ public class OptionTextField extends Option { if (!focus && !isValidValue(text())) setText(renderTag().getValue()); super.setFocus(focus); } + + @Override + public void draw(int mousex, int mousey) { + this.field.setEnabled(isEnabled()); + super.draw(mousex, mousey); + } }; public OptionTextField(String name) { super(name); } + public void onTextChange(String text) {} + @Override public void update() { textField.update(); @@ -47,6 +56,10 @@ public class OptionTextField extends Option { return slot.slotWidth(); } + public boolean isEnabled() { + return true; + } + @Override public void draw(int mousex, int mousey, float frame) { GuiDraw.drawString(getPrefix(), 10, 6, -1); @@ -59,12 +72,14 @@ public class OptionTextField extends Option { @Override public void keyTyped(char c, int keycode) { - textField.handleKeyPress(keycode, c); + if (isEnabled()) { + textField.handleKeyPress(keycode, c); + } } @Override public void mouseClicked(int mousex, int mousey, int button) { - if (textField.contains(mousex, mousey)) textField.handleClick(mousex, mousey, button); + if (isEnabled() && textField.contains(mousex, mousey)) textField.handleClick(mousex, mousey, button); } @Override @@ -74,7 +89,7 @@ public class OptionTextField extends Option { @Override public List handleTooltip(int mousex, int mousey, List currenttip) { - if (new Rectangle4i(10, 0, textField.x - 10, 20).contains(mousex, mousey)) { + if (isEnabled() && new Rectangle4i(10, 0, textField.x - 10, 20).contains(mousex, mousey)) { String tip = translateN(name + ".tip"); if (!tip.equals(namespaced(name + ".tip"))) currenttip.add(tip); } diff --git a/src/main/resources/assets/nei/lang/en_US.lang b/src/main/resources/assets/nei/lang/en_US.lang index d4375696..9d74d1f7 100644 --- a/src/main/resources/assets/nei/lang/en_US.lang +++ b/src/main/resources/assets/nei/lang/en_US.lang @@ -320,6 +320,7 @@ nei.options.inventory.gridRenderingCacheMode=Grid Rendering Cache Mode nei.options.inventory.gridRenderingCacheMode.0=Off nei.options.inventory.gridRenderingCacheMode.1=Low FPS nei.options.inventory.gridRenderingCacheMode.2=Freeze +nei.options.inventory.gridRenderingCacheFPS=Grid Rendering Cache FPS nei.options.inventory.collapsibleItems=Collapsible Items nei.options.inventory.collapsibleItems.enabled=Collapsible Items nei.options.inventory.collapsibleItems.enabled.true=Enabled