From 2105489be107cf214e7c7bbfb72942988b2288ac Mon Sep 17 00:00:00 2001 From: Save14 <93542339+Save14@users.noreply.github.com> Date: Mon, 17 Oct 2022 14:22:47 +0200 Subject: [PATCH 1/5] Update HUDConfigScreen.java --- HUDConfigScreen.java | 57 +++++++++++++++++--------------------------- 1 file changed, 22 insertions(+), 35 deletions(-) diff --git a/HUDConfigScreen.java b/HUDConfigScreen.java index 7f25824..f8f9b08 100644 --- a/HUDConfigScreen.java +++ b/HUDConfigScreen.java @@ -29,26 +29,20 @@ public class HUDConfigScreen extends GuiScreen { - int i = 0; - // ADDED FOR SMOOTH DRAGGING - private int smX, smY; - private boolean dragged = false; protected boolean hovered; - private final HashMap renderers = new HashMap(); private Optional selectedRenderer = Optional.empty(); - private int prevX, prevY; + private int offsetX, offsetY; @Override public void initGui() { - // modified to add your own buttons <3 super.initGui(); @@ -56,14 +50,16 @@ public void initGui() { @Override protected void actionPerformed(GuiButton button) throws IOException { + switch(button.id) { + case /*id of the button*/: + //do something + break; + } super.actionPerformed(button); } public HUDConfigScreen(HUDManager api) { - - Collection registeredRenderers = api.getRegisteredRenderers(); - - for (IRenderer ren : registeredRenderers) { + for (IRenderer ren : api.getRegisteredRenderers()) { if (!ren.isEnabled()) { continue; } @@ -81,14 +77,12 @@ public HUDConfigScreen(HUDManager api) { @Override public void drawScreen(int mouseX, int mouseY, float partialTicks) { - super.drawDefaultBackground(); final float zBackup = this.zLevel; this.zLevel = 200; for (IRenderer renderer : renderers.keySet()) { - ScreenPosition pos = renderers.get(renderer); Gui.drawRect(pos.getAbsoluteX(), pos.getAbsoluteY(), pos.getAbsoluteX() + renderer.getWidth(), pos.getAbsoluteY() + renderer.getHeight(), 0x33FFFFFF); @@ -107,36 +101,31 @@ public void drawScreen(int mouseX, int mouseY, float partialTicks) { if (this.hovered) { if (dragged) { - pos.setAbsolute(pos.getAbsoluteX() + mouseX - this.prevX, pos.getAbsoluteY() + mouseY - this.prevY); + pos.setAbsolute(pos.getAbsoluteX() + mouseX - this.offsetX, pos.getAbsoluteY() + mouseY - this.offsetY); adjustBounds(renderer, pos); - this.prevX = mouseX; - this.prevY = mouseY; + this.offsetX = mouseX; + this.offsetY = mouseY; } } // END OF SMOOTH DRAGGING - } - this.smX = mouseX; - this.smY = mouseY; - this.zLevel = zBackup; super.drawScreen(mouseX, mouseY, partialTicks); } private void drawHollowRect(int x, int y, int w, int h, int color) { - this.drawHorizontalLine(x, x + w, y, color); this.drawHorizontalLine(x, x + w, y + h, color); this.drawVerticalLine(x, y + h, y, color); this.drawVerticalLine(x + w, y + h, y, color); - } + /* @Override protected void keyTyped(char typedChar, int keyCode) throws IOException { if (keyCode == Keyboard.KEY_ESCAPE) { @@ -145,16 +134,16 @@ protected void keyTyped(char typedChar, int keyCode) throws IOException { }); this.mc.displayGuiScreen(null); } - } + }*/ //No need, if you are wondering why, it automatically saves the position when the gui is closed, so you won't need to save the position twice @Override protected void mouseClickMove(int x, int y, int button, long time) { if (selectedRenderer.isPresent()) { - moveSelectedRenderBy(x - prevX, y - prevY); + moveSelectedRenderBy(x - offsetX, y - offsetY); } - this.prevX = x; - this.prevY = y; + this.offsetX = x; + this.offsetY = y; } private void moveSelectedRenderBy(int offsetX, int offsetY) { @@ -163,11 +152,11 @@ private void moveSelectedRenderBy(int offsetX, int offsetY) { pos.setAbsolute(pos.getAbsoluteX() + offsetX, pos.getAbsoluteY() + offsetY); - if (pos.getAbsoluteX() == 0 << 1) { + if (pos.getAbsoluteX() == 0 /*simplified*/) { pos.setAbsolute(1, pos.getAbsoluteY()); } - if (pos.getAbsoluteY() == 0 << 1) { + if (pos.getAbsoluteY() == 0 /*simplified*/) { pos.setAbsolute(pos.getAbsoluteX(), 1); } @@ -176,19 +165,18 @@ private void moveSelectedRenderBy(int offsetX, int offsetY) { @Override public void onGuiClosed() { - - for (IRenderer renderer : renderers.keySet()) { + /*for (IRenderer renderer : renderers.keySet()) { renderer.save(renderers.get(renderer)); - } + }*/ + renderers.forEach(IRendererConfig::save); //Lambda is avaible from Java 8 and up, if you use older versions of Java 8 you won't be able to use it, so you have to use the normal for loop } - @Override + /*@Override public boolean doesGuiPauseGame() { return true; - } + }*/ //We don't really need it, the "doesGuiPauseGame" function is by default true private void adjustBounds(IRenderer renderer, ScreenPosition pos) { - ScaledResolution res = new ScaledResolution(Minecraft.getMinecraft()); int screenWidth = res.getScaledWidth(); @@ -214,7 +202,6 @@ protected void mouseClicked(int x, int y, int button) throws IOException { @Override protected void mouseReleased(int mouseX, int mouseY, int state) { - // NEEDED FOR SMOOTH DRAGGING dragged = false; From 1ec7186f355932787514ca562c468b3ac6b3c9e6 Mon Sep 17 00:00:00 2001 From: Save14 <93542339+Save14@users.noreply.github.com> Date: Mon, 17 Oct 2022 14:28:47 +0200 Subject: [PATCH 2/5] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 11217de..bca16ab 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ Smooth dragging for Eric Golde's drag system. Original drag system created by OrangeMarshall. Modified by Eric Golde to properly work in a client. Edited by Mason#8979 and UghItsIsaac#6037 to smoothen out the dragging. +Now simplified by Save14_#7156. How did we manage this? From e8c72d0336e0c80c20f7f322de5302fb89406cd7 Mon Sep 17 00:00:00 2001 From: Save14 <93542339+Save14@users.noreply.github.com> Date: Mon, 17 Oct 2022 16:20:10 +0200 Subject: [PATCH 3/5] Update README.md --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index bca16ab..237ed56 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,7 @@ Smooth dragging for Eric Golde's drag system. Original drag system created by OrangeMarshall. Modified by Eric Golde to properly work in a client. -Edited by Mason#8979 and UghItsIsaac#6037 to smoothen out the dragging. -Now simplified by Save14_#7156. +Edited by Mason#8979 and UghItsIsaac#6037 to smoothen out the dragging. Save14_(#7156) Made some changes to simplify the code How did we manage this? From 63625acd338cd9c078b447ceba48baa7ee6dd65d Mon Sep 17 00:00:00 2001 From: Save14 <93542339+Save14@users.noreply.github.com> Date: Mon, 17 Oct 2022 16:21:08 +0200 Subject: [PATCH 4/5] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 237ed56..dbdcd1e 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Smooth dragging for Eric Golde's drag system. Original drag system created by OrangeMarshall. Modified by Eric Golde to properly work in a client. -Edited by Mason#8979 and UghItsIsaac#6037 to smoothen out the dragging. Save14_(#7156) Made some changes to simplify the code +Edited by Mason#8979 and UghItsIsaac#6037 to smoothen out the dragging. Save14_#7156 Made some changes to simplify the code How did we manage this? From 977f7cc18c5133f5561b2e53251237cf78fc4cd6 Mon Sep 17 00:00:00 2001 From: Save14 <93542339+Save14@users.noreply.github.com> Date: Thu, 8 Dec 2022 20:25:11 +0100 Subject: [PATCH 5/5] Update HUDConfigScreen.java --- HUDConfigScreen.java | 135 +++++++++++-------------------------------- 1 file changed, 35 insertions(+), 100 deletions(-) diff --git a/HUDConfigScreen.java b/HUDConfigScreen.java index f8f9b08..0b574f9 100644 --- a/HUDConfigScreen.java +++ b/HUDConfigScreen.java @@ -29,23 +29,17 @@ public class HUDConfigScreen extends GuiScreen { - // ADDED FOR SMOOTH DRAGGING - - private boolean dragged = false; - - protected boolean hovered; - private final HashMap renderers = new HashMap(); - private Optional selectedRenderer = Optional.empty(); - - private int offsetX, offsetY; + + private int prevX, prevY; + + private boolean dragged; + protected boolean hovered; @Override public void initGui() { // modified to add your own buttons <3 - - super.initGui(); } @Override @@ -55,65 +49,51 @@ protected void actionPerformed(GuiButton button) throws IOException { //do something break; } - super.actionPerformed(button); } public HUDConfigScreen(HUDManager api) { for (IRenderer ren : api.getRegisteredRenderers()) { - if (!ren.isEnabled()) { - continue; - } + if (!ren.isEnabled()) continue; ScreenPosition pos = ren.load(); - if (pos == null) { - pos = ScreenPosition.fromRelativePosition(0.5, 0.5); - } + if (pos == null) pos = ScreenPosition.fromRelativePosition(0.5, 0.5); adjustBounds(ren, pos); this.renderers.put(ren, pos); } - } @Override public void drawScreen(int mouseX, int mouseY, float partialTicks) { super.drawDefaultBackground(); - - final float zBackup = this.zLevel; - this.zLevel = 200; - + for (IRenderer renderer : renderers.keySet()) { ScreenPosition pos = renderers.get(renderer); Gui.drawRect(pos.getAbsoluteX(), pos.getAbsoluteY(), pos.getAbsoluteX() + renderer.getWidth(), pos.getAbsoluteY() + renderer.getHeight(), 0x33FFFFFF); this.drawHollowRect(pos.getAbsoluteX(), pos.getAbsoluteY(), renderer.getWidth(), renderer.getHeight(), 0x88FFFFFF); - - + renderer.renderDummy(pos); + + int x = pos.getAbsoluteX(); + int y = pos.getAbsoluteY(); - // START OF SMOOTH DRAGGING - - // Thanks ESS_Si1kn#0481 for pointing out that I forgot to add these back. - int absoluteX = pos.getAbsoluteX(); - int absoluteY = pos.getAbsoluteY(); - - this.hovered = mouseX >= absoluteX && mouseX <= absoluteX + renderer.getWidth() && mouseY >= absoluteY && mouseY <= absoluteY + renderer.getHeight(); - + this.hovered = mouseX >= x && mouseX <= x + renderer.getWidth() && mouseY >= y && mouseY <= y + renderer.getHeight(); if (this.hovered) { - if (dragged) { - pos.setAbsolute(pos.getAbsoluteX() + mouseX - this.offsetX, pos.getAbsoluteY() + mouseY - this.offsetY); - - adjustBounds(renderer, pos); - - this.offsetX = mouseX; - this.offsetY = mouseY; + Gui.drawRect(pos.getAbsoluteX(), pos.getAbsoluteY(), ren.getWidth() + pos.getAbsoluteX(), ren.getHeight() + pos.getAbsoluteY(), 0x43000000); + if (selectedRenderer.isPresent() && selectedRenderer.get() == ren && renderers.get(selectedRenderer.get()) == pos) { + pos.setAbsolute(pos.getAbsoluteX() + mouseX - this.prevX, pos.getAbsoluteY() + mouseY - this.prevY); + + adjustBounds(ren, pos); + + this.drawHollowRect(x, y, ren.getWidth(), ren.getHeight(), new Color(70, 0, 70, 230).getRGB()); + + this.prevX = mouseX; + this.prevY = mouseY; } } - - // END OF SMOOTH DRAGGING } - - this.zLevel = zBackup; + super.drawScreen(mouseX, mouseY, partialTicks); } @@ -125,25 +105,12 @@ private void drawHollowRect(int x, int y, int w, int h, int color) { this.drawVerticalLine(x + w, y + h, y, color); } - /* - @Override - protected void keyTyped(char typedChar, int keyCode) throws IOException { - if (keyCode == Keyboard.KEY_ESCAPE) { - renderers.entrySet().forEach((entry) -> { - entry.getKey().save(entry.getValue()); - }); - this.mc.displayGuiScreen(null); - } - }*/ //No need, if you are wondering why, it automatically saves the position when the gui is closed, so you won't need to save the position twice - @Override protected void mouseClickMove(int x, int y, int button, long time) { - if (selectedRenderer.isPresent()) { - moveSelectedRenderBy(x - offsetX, y - offsetY); - } + if (selectedRenderer.isPresent()) moveSelectedRenderBy(x - prevX, y - prevY); - this.offsetX = x; - this.offsetY = y; + this.prevX = x; + this.prevY = y; } private void moveSelectedRenderBy(int offsetX, int offsetY) { @@ -152,14 +119,6 @@ private void moveSelectedRenderBy(int offsetX, int offsetY) { pos.setAbsolute(pos.getAbsoluteX() + offsetX, pos.getAbsoluteY() + offsetY); - if (pos.getAbsoluteX() == 0 /*simplified*/) { - pos.setAbsolute(1, pos.getAbsoluteY()); - } - - if (pos.getAbsoluteY() == 0 /*simplified*/) { - pos.setAbsolute(pos.getAbsoluteX(), 1); - } - adjustBounds(renderer, pos); } @@ -171,21 +130,13 @@ public void onGuiClosed() { renderers.forEach(IRendererConfig::save); //Lambda is avaible from Java 8 and up, if you use older versions of Java 8 you won't be able to use it, so you have to use the normal for loop } - /*@Override - public boolean doesGuiPauseGame() { - return true; - }*/ //We don't really need it, the "doesGuiPauseGame" function is by default true - private void adjustBounds(IRenderer renderer, ScreenPosition pos) { - ScaledResolution res = new ScaledResolution(Minecraft.getMinecraft()); + ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft()); - int screenWidth = res.getScaledWidth(); - int screenHeight = res.getScaledHeight(); + int x = Math.max(0, Math.min(pos.getAbsoluteX(), Math.max(sr.getScaledWidth() - renderer.getWidth(), 0))); + int y = Math.max(0, Math.min(pos.getAbsoluteY(), Math.max(sr.getScaledHeight() - renderer.getHeight(), 0))); - int absoluteX = Math.max(0, Math.min(pos.getAbsoluteX(), Math.max(screenWidth - renderer.getWidth(), 0))); - int absoluteY = Math.max(0, Math.min(pos.getAbsoluteY(), Math.max(screenHeight - renderer.getHeight(), 0))); - - pos.setAbsolute(absoluteX, absoluteY); + pos.setAbsolute(x, y); } @Override @@ -193,17 +144,13 @@ protected void mouseClicked(int x, int y, int button) throws IOException { this.prevX = x; this.prevY = y; - // NEEDED FOR SMOOTH DRAGGING - dragged = true; - loadMouseOver(x, y); super.mouseClicked(x, y, button); } @Override protected void mouseReleased(int mouseX, int mouseY, int state) { - // NEEDED FOR SMOOTH DRAGGING - dragged = false; + this.selectedRenderer = Optional.empty(); super.mouseReleased(mouseX, mouseY, state); } @@ -213,7 +160,6 @@ private void loadMouseOver(int x, int y) { } private class MouseOverFinder implements Predicate { - private int mouseX, mouseY; public MouseOverFinder(int x, int y) { @@ -223,23 +169,12 @@ public MouseOverFinder(int x, int y) { @Override public boolean test(IRenderer renderer) { - ScreenPosition pos = renderers.get(renderer); - int absoluteX = pos.getAbsoluteX(); - int absoluteY = pos.getAbsoluteY(); - - if (mouseX >= absoluteX && mouseX <= absoluteX + renderer.getWidth()) { - - if (mouseY >= absoluteY && mouseY <= absoluteY + renderer.getHeight()) { - - return true; - - } - - } + int x = pos.getAbsoluteX(); + int y = pos.getAbsoluteY(); - return false; + return (mouseX >= x && mouseX <= x + renderer.getWidth()) && (mouseY >= y && mouseY <= y + renderer.getHeight()); } }