diff --git a/src/main/java/codechicken/nei/ItemsGrid.java b/src/main/java/codechicken/nei/ItemsGrid.java index 98f0e35d..accac9fb 100644 --- a/src/main/java/codechicken/nei/ItemsGrid.java +++ b/src/main/java/codechicken/nei/ItemsGrid.java @@ -153,8 +153,12 @@ public class ItemsGrid { invalidSlotMap = new boolean[rows * columns]; perPage = columns * rows; - checkGuiOverlap(gui, 0, columns - 2, 1); - checkGuiOverlap(gui, columns - 1, 1, -1); + if (NEIClientConfig.optimizeGuiOverlapComputation()) { + checkGuiOverlap(gui, 0, columns - 2, 1); + checkGuiOverlap(gui, columns - 1, 1, -1); + } else { + checkGuiOverlap(gui, 0, columns, 1); + } if (oldRows != rows || oldColumns != columns || !Arrays.equals(oldSlotMap, invalidSlotMap)) { onGridChanged(); @@ -164,7 +168,7 @@ public class ItemsGrid { private void checkGuiOverlap(GuiContainer gui, int start, int end, int dir) { boolean validColumn = false; - for (int c = start; c != end && !validColumn; c += dir) { + for (int c = start; c != end && (!NEIClientConfig.optimizeGuiOverlapComputation() || !validColumn); c += dir) { validColumn = true; for (int r = 0; r < rows; r++) { diff --git a/src/main/java/codechicken/nei/NEIClientConfig.java b/src/main/java/codechicken/nei/NEIClientConfig.java index 0e26db1a..ed29f7bd 100644 --- a/src/main/java/codechicken/nei/NEIClientConfig.java +++ b/src/main/java/codechicken/nei/NEIClientConfig.java @@ -274,6 +274,11 @@ public class NEIClientConfig { .getBooleanValue(false); API.addOption(new OptionToggleButton("inventory.ignore_potion_overlap", true)); + tag.getTag("inventory.optimize_gui_overlap_computation") + .setComment("Optimize computation for GUI overlap") + .getBooleanValue(false); + API.addOption(new OptionToggleButton("inventory.optimize_gui_overlap_computation", true)); + tag.getTag("tools.handler_load_from_config") .setComment("ADVANCED: Load handlers from config") .getBooleanValue(false); @@ -540,6 +545,10 @@ public class NEIClientConfig { return getBooleanSetting("inventory.ignore_potion_overlap"); } + public static boolean optimizeGuiOverlapComputation() { + return getBooleanSetting("inventory.optimize_gui_overlap_computation"); + } + public static boolean isEnabled() { return enabledOverride && getBooleanSetting("inventory.widgetsenabled"); } diff --git a/src/main/resources/assets/nei/lang/en_US.lang b/src/main/resources/assets/nei/lang/en_US.lang index 22b6bb89..60628cee 100644 --- a/src/main/resources/assets/nei/lang/en_US.lang +++ b/src/main/resources/assets/nei/lang/en_US.lang @@ -161,6 +161,9 @@ nei.options.inventory.creative_tab_style.false=JEI nei.options.inventory.ignore_potion_overlap=Ignore overlap with potion effect HUD nei.options.inventory.ignore_potion_overlap.true=Yes nei.options.inventory.ignore_potion_overlap.false=No +nei.options.inventory.optimize_gui_overlap_computation=Optimize computation for GUI overlap +nei.options.inventory.optimize_gui_overlap_computation.true=Yes +nei.options.inventory.optimize_gui_overlap_computation.false=No nei.options.inventory.widgetsenabled.true=NEI Enabled nei.options.inventory.widgetsenabled.false=NEI Disabled nei.options.inventory.cheatmode.0=Recipe Mode