diff --git a/src/main/java/codechicken/nei/BookmarkPanel.java b/src/main/java/codechicken/nei/BookmarkPanel.java index 216c286d..a58a61db 100644 --- a/src/main/java/codechicken/nei/BookmarkPanel.java +++ b/src/main/java/codechicken/nei/BookmarkPanel.java @@ -435,7 +435,7 @@ public class BookmarkPanel extends PanelWidget { protected int resizeHeader(GuiContainer gui) { final LayoutStyleMinecraft layout = (LayoutStyleMinecraft) LayoutManager.getLayoutStyle(); final int rows = (int) Math.ceil((double) layout.buttonCount / layout.numButtons); - final int diff = rows * 19 + getMarginTop(gui) - y; + final int diff = rows * 19 + PADDING - y; if (diff > 0) { y += diff; @@ -493,24 +493,31 @@ public class BookmarkPanel extends PanelWidget { } } - protected String getPositioningSettingName() { - return "world.panels.bookmarks"; - } + public Rectangle4i calculateBounds() { + final GuiContainer gui = NEIClientUtils.getGuiContainer(); + final int width = (gui.width - gui.xSize) / 2 - PADDING * 2; + final Rectangle4i bounds = new Rectangle4i( + PADDING, + PADDING, + (gui.width - 176) / 2 - PADDING * 2, + gui.height - PADDING * 2); - public int getMarginLeft(GuiContainer gui) { - return PADDING; - } + int paddingLeft = (int) Math + .ceil(bounds.w * NEIClientConfig.getSetting("world.panels.bookmarks.left").getIntValue() / 100000.0); + int paddingTop = (int) Math + .ceil(bounds.h * NEIClientConfig.getSetting("world.panels.bookmarks.top").getIntValue() / 100000.0); + int paddingRight = (int) Math + .ceil(bounds.w * NEIClientConfig.getSetting("world.panels.bookmarks.right").getIntValue() / 100000.0); + int paddingBottom = (int) Math + .ceil(bounds.h * NEIClientConfig.getSetting("world.panels.bookmarks.bottom").getIntValue() / 100000.0); - public int getMarginTop(GuiContainer gui) { - return PADDING; - } + bounds.h = Math.max(ItemsGrid.SLOT_SIZE, bounds.h - paddingTop - paddingBottom); + bounds.y = bounds.y + Math.min(paddingTop, bounds.h - ItemsGrid.SLOT_SIZE); - public int getWidth(GuiContainer gui) { - return gui.width - (gui.xSize + gui.width) / 2 - PADDING * 2; - } + bounds.w = Math.max(ItemsGrid.SLOT_SIZE, Math.min(bounds.w - paddingLeft - paddingRight, width - paddingLeft)); + bounds.x = bounds.x + Math.min(paddingLeft, bounds.w - ItemsGrid.SLOT_SIZE); - public int getHeight(GuiContainer gui) { - return gui.height - getMarginTop(gui) - PADDING; + return bounds; } protected ItemStack getDraggedStackWithQuantity(ItemStack itemStack) { diff --git a/src/main/java/codechicken/nei/ItemPanel.java b/src/main/java/codechicken/nei/ItemPanel.java index 8450fd5d..f7f5cb48 100644 --- a/src/main/java/codechicken/nei/ItemPanel.java +++ b/src/main/java/codechicken/nei/ItemPanel.java @@ -8,6 +8,7 @@ import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; import codechicken.lib.gui.GuiDraw; +import codechicken.lib.vec.Rectangle4i; import codechicken.nei.ItemsPanelGrid.ItemsPanelGridSlot; import codechicken.nei.util.NEIMouseUtils; @@ -114,24 +115,31 @@ public class ItemPanel extends PanelWidget { return String.format("%d/%d", getPage(), Math.max(1, getNumPages())); } - protected String getPositioningSettingName() { - return "world.panels.items"; - } + public Rectangle4i calculateBounds() { + final GuiContainer gui = NEIClientUtils.getGuiContainer(); + final int width = (gui.width - gui.xSize) / 2 - PADDING * 2; + final Rectangle4i bounds = new Rectangle4i( + (gui.width + gui.xSize) / 2 + PADDING, + PADDING, + (gui.width - 176) / 2 - PADDING * 2, + gui.height - PADDING * 2); - public int getMarginLeft(GuiContainer gui) { - return (gui.width + gui.xSize) / 2 + PADDING; - } + int paddingLeft = (int) Math + .ceil(bounds.w * NEIClientConfig.getSetting("world.panels.items.left").getIntValue() / 100000.0); + int paddingTop = (int) Math + .ceil(bounds.h * NEIClientConfig.getSetting("world.panels.items.top").getIntValue() / 100000.0); + int paddingRight = (int) Math + .ceil(bounds.w * NEIClientConfig.getSetting("world.panels.items.right").getIntValue() / 100000.0); + int paddingBottom = (int) Math + .ceil(bounds.h * NEIClientConfig.getSetting("world.panels.items.bottom").getIntValue() / 100000.0); - public int getMarginTop(GuiContainer gui) { - return PADDING; - } + bounds.h = Math.max(ItemsGrid.SLOT_SIZE, bounds.h - paddingTop - paddingBottom); + bounds.y = bounds.y + Math.min(paddingTop, bounds.h - ItemsGrid.SLOT_SIZE); - public int getWidth(GuiContainer gui) { - return gui.width - (gui.xSize + gui.width) / 2 - PADDING * 2; - } + bounds.w = Math.max(ItemsGrid.SLOT_SIZE, Math.min(bounds.w - paddingLeft - paddingRight, width - paddingRight)); + bounds.x = bounds.x + Math.max(0, width - bounds.w - paddingRight); - public int getHeight(GuiContainer gui) { - return gui.height - getMarginTop(gui) - PADDING; + return bounds; } @Override diff --git a/src/main/java/codechicken/nei/LayoutStyleMinecraft.java b/src/main/java/codechicken/nei/LayoutStyleMinecraft.java index fd50a708..0c0f1bdf 100644 --- a/src/main/java/codechicken/nei/LayoutStyleMinecraft.java +++ b/src/main/java/codechicken/nei/LayoutStyleMinecraft.java @@ -52,7 +52,7 @@ public class LayoutStyleMinecraft extends LayoutStyle { public void layout(GuiContainer gui, VisiblityData visiblity) { reset(); - leftSize = ItemPanels.bookmarkPanel.getWidth(gui); + leftSize = (gui.width - gui.xSize) / 2 - 4; numButtons = Math.max(leftSize / 20, 1); LayoutManager.delete.state = 0x4; diff --git a/src/main/java/codechicken/nei/PanelWidget.java b/src/main/java/codechicken/nei/PanelWidget.java index aab9aceb..04dd661f 100644 --- a/src/main/java/codechicken/nei/PanelWidget.java +++ b/src/main/java/codechicken/nei/PanelWidget.java @@ -84,44 +84,15 @@ public abstract class PanelWidget items = ItemPanels.itemPanel.getItems(); if (items.isEmpty()) return;