diff --git a/src/main/java/codechicken/nei/ItemZoom.java b/src/main/java/codechicken/nei/ItemZoom.java index b029a1cb..3d3eac97 100644 --- a/src/main/java/codechicken/nei/ItemZoom.java +++ b/src/main/java/codechicken/nei/ItemZoom.java @@ -111,8 +111,14 @@ public class ItemZoom extends Widget implements IContainerInputHandler { this.xPosition = (availableAreaWidth - this.scale * SLOT_SIZE) / 2; this.availableAreaWidth = (int) (availableAreaWidth / screenScale); - if (availableAreaWidth / screenScale >= mouse.x) { - this.xPosition += gui.width * screenScale - availableAreaWidth; + final float rightSideShift = gui.width * screenScale - availableAreaWidth; + final boolean leftSideFree = availableAreaWidth / screenScale < mouse.x; + final boolean rightSideFree = mouse.x < gui.width - availableAreaWidth / screenScale; + + final boolean showOnRight = leftSideFree && rightSideFree ? !preferLeftSide() : !leftSideFree; + + if (showOnRight) { + this.xPosition += rightSideShift; } try { @@ -128,6 +134,22 @@ public class ItemZoom extends Widget implements IContainerInputHandler { } } + private boolean preferLeftSide() { + switch (NEIClientConfig.getIntSetting("inventory.itemzoom.preferredSide")) { + case 1: + return true; + case 2: + return false; + } + + final int leftCount = NEIClientConfig.isBookmarkPanelHidden() + || ItemPanels.bookmarkPanel.getGrid().getPerPage() == 0 ? 0 : ItemPanels.bookmarkPanel.getGrid().size(); + final int rightCount = ItemPanels.itemPanel.getGrid().getPerPage() == 0 ? 0 + : ItemPanels.itemPanel.getGrid().size(); + + return leftCount <= rightCount; + } + private float getPointSize(GuiContainer gui) { final float screenScale = 1.0f / getScreenScale(); final float availableAreaWidth = (gui.width - (gui.xSize + gui.width) / 2) * screenScale; diff --git a/src/main/java/codechicken/nei/NEIClientConfig.java b/src/main/java/codechicken/nei/NEIClientConfig.java index 732e5bac..5218f534 100644 --- a/src/main/java/codechicken/nei/NEIClientConfig.java +++ b/src/main/java/codechicken/nei/NEIClientConfig.java @@ -382,6 +382,11 @@ public class NEIClientConfig { tag.getTag("inventory.itemzoom.onlySolid").getBooleanValue(false); API.addOption(new OptionToggleButton("inventory.itemzoom.onlySolid", true)); + tag.getTag("inventory.itemzoom.preferredSide") + .setComment("Which side to prefer showing the zoomed item on, when both sides are free.") + .getIntValue(0); + API.addOption(new OptionCycled("inventory.itemzoom.preferredSide", 3, true)); + tag.getTag("inventory.itemzoom.helpText") .setComment("Display name \"Item Zoom\" and the hotkey to toggle this mod below the zoomed item.") .getBooleanValue(true); diff --git a/src/main/resources/assets/nei/lang/en_US.lang b/src/main/resources/assets/nei/lang/en_US.lang index 12ce30e9..6e3258c0 100644 --- a/src/main/resources/assets/nei/lang/en_US.lang +++ b/src/main/resources/assets/nei/lang/en_US.lang @@ -520,6 +520,13 @@ nei.options.inventory.itemzoom.neiOnly.tip=Zoom items only from the JEI ingredie nei.options.inventory.itemzoom.onlySolid=Show Only Solid Items nei.options.inventory.itemzoom.onlySolid.true=Enabled nei.options.inventory.itemzoom.onlySolid.false=Disabled +nei.options.inventory.itemzoom.preferredSide=Preferred Side +nei.options.inventory.itemzoom.preferredSide.0=Auto +nei.options.inventory.itemzoom.preferredSide.1=Left +nei.options.inventory.itemzoom.preferredSide.2=Right +nei.options.inventory.itemzoom.preferredSide.0.tip=Prefer whichever side currently has fewer items in its panel. +nei.options.inventory.itemzoom.preferredSide.1.tip=Always prefer the left side, unless the cursor is there. +nei.options.inventory.itemzoom.preferredSide.2.tip=Always prefer the right side, unless the cursor is there. nei.options.inventory.itemzoom.helpText=Display Help Text nei.options.inventory.itemzoom.helpText.true=Enabled nei.options.inventory.itemzoom.helpText.false=Disabled diff --git a/src/main/resources/assets/nei/lang/ru_RU.lang b/src/main/resources/assets/nei/lang/ru_RU.lang index 6e2add71..552c2de9 100644 --- a/src/main/resources/assets/nei/lang/ru_RU.lang +++ b/src/main/resources/assets/nei/lang/ru_RU.lang @@ -335,6 +335,13 @@ nei.options.inventory.itemzoom.neiOnly.tip=Увеличивать предмет nei.options.inventory.itemzoom.onlySolid=Показывать только твердые предметы nei.options.inventory.itemzoom.onlySolid.true=Включено nei.options.inventory.itemzoom.onlySolid.false=Отключено +nei.options.inventory.itemzoom.preferredSide=Предпочитаемая сторона +nei.options.inventory.itemzoom.preferredSide.0=Авто +nei.options.inventory.itemzoom.preferredSide.1=Слева +nei.options.inventory.itemzoom.preferredSide.2=Справа +nei.options.inventory.itemzoom.preferredSide.0.tip=Выбирать сторону, где сейчас меньше предметов в панели. +nei.options.inventory.itemzoom.preferredSide.1.tip=Всегда предпочитать левую сторону, если там нет курсора. +nei.options.inventory.itemzoom.preferredSide.2.tip=Всегда предпочитать правую сторону, если там нет курсора. nei.options.inventory.itemzoom.helpText=Показывать текст помощи nei.options.inventory.itemzoom.helpText.true=Включено nei.options.inventory.itemzoom.helpText.false=Отключено