From 6eebfc2a7d6a9c59295ebbab572aff91c0ac7051 Mon Sep 17 00:00:00 2001 From: Arslaan Pathan Date: Thu, 9 Oct 2025 09:49:40 +1300 Subject: some clickgui improvements, bump version number --- .../screens/clickgui/ClickGUIScreen.java | 16 +++++ .../arslaansmagichax/screens/clickgui/Frame.java | 11 +++- .../screens/clickgui/ModuleButton.java | 7 +- .../clickgui/setting/KeybindingSelector.java | 74 ++++++++++++++++++++++ .../screens/clickgui/setting/Slider.java | 2 +- 5 files changed, 104 insertions(+), 6 deletions(-) create mode 100644 src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/clickgui/setting/KeybindingSelector.java (limited to 'src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens') diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/clickgui/ClickGUIScreen.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/clickgui/ClickGUIScreen.java index 85458c0..7c66877 100644 --- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/clickgui/ClickGUIScreen.java +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/clickgui/ClickGUIScreen.java @@ -2,6 +2,8 @@ package net.justlearning.arslaan3102.arslaansmagichax.screens.clickgui; import net.justlearning.arslaan3102.arslaansmagichax.ArslaansMagicHaxClient; import net.justlearning.arslaan3102.arslaansmagichax.modules.Category; +import net.justlearning.arslaan3102.arslaansmagichax.screens.clickgui.setting.Component; +import net.justlearning.arslaan3102.arslaansmagichax.screens.clickgui.setting.KeybindingSelector; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; import net.minecraft.text.Text; @@ -51,6 +53,20 @@ public class ClickGUIScreen extends Screen { return super.mouseReleased(mouseX, mouseY, button); } + @Override + public boolean keyPressed(int keyCode, int scanCode, int modifiers) { + for (Frame frame : frames) { + for (ModuleButton button : frame.getButtons()) { + for (Component comp : button.components) { + if (comp instanceof KeybindingSelector keybindingSelector) { + keybindingSelector.onKeyPressed(keyCode); + } + } + } + } + return super.keyPressed(keyCode, scanCode, modifiers); + } + @Override public void close() { super.close(); diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/clickgui/Frame.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/clickgui/Frame.java index a959ffc..81960ab 100644 --- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/clickgui/Frame.java +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/clickgui/Frame.java @@ -98,6 +98,10 @@ public class Frame { } } + public List getButtons() { + return buttons; + } + public void updateButtons() { int offset = height; @@ -107,7 +111,12 @@ public class Frame { if (button.extended) { for (Component component : button.components) { - if (component.setting.isVisible()) { + if (component.setting != null) { + if (component.setting.isVisible()) { + offset += height; + } + } else { + // this is 99.99% the keybinding thing, just add offset anyway and hope it works i guess offset += height; } } diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/clickgui/ModuleButton.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/clickgui/ModuleButton.java index 979b81d..016d68c 100644 --- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/clickgui/ModuleButton.java +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/clickgui/ModuleButton.java @@ -5,10 +5,7 @@ import net.justlearning.arslaan3102.arslaansmagichax.modules.settings.BooleanSet import net.justlearning.arslaan3102.arslaansmagichax.modules.settings.ModeSetting; import net.justlearning.arslaan3102.arslaansmagichax.modules.settings.NumberSetting; import net.justlearning.arslaan3102.arslaansmagichax.modules.settings.Setting; -import net.justlearning.arslaan3102.arslaansmagichax.screens.clickgui.setting.CheckBox; -import net.justlearning.arslaan3102.arslaansmagichax.screens.clickgui.setting.Component; -import net.justlearning.arslaan3102.arslaansmagichax.screens.clickgui.setting.ModeBox; -import net.justlearning.arslaan3102.arslaansmagichax.screens.clickgui.setting.Slider; +import net.justlearning.arslaan3102.arslaansmagichax.screens.clickgui.setting.*; import net.minecraft.client.gui.DrawContext; import net.minecraft.text.Text; @@ -32,6 +29,8 @@ public class ModuleButton { this.components = new ArrayList<>(); int setOffset = parent.height; + components.add(new KeybindingSelector(this, setOffset)); + setOffset += parent.height; for (Setting setting : module.getSettings()) { if (setting instanceof BooleanSetting) { components.add(new CheckBox(setting, this, setOffset)); diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/clickgui/setting/KeybindingSelector.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/clickgui/setting/KeybindingSelector.java new file mode 100644 index 0000000..32c3ce5 --- /dev/null +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/clickgui/setting/KeybindingSelector.java @@ -0,0 +1,74 @@ +package net.justlearning.arslaan3102.arslaansmagichax.screens.clickgui.setting; + +import net.justlearning.arslaan3102.arslaansmagichax.screens.clickgui.ModuleButton; +import net.minecraft.client.gui.DrawContext; +import org.lwjgl.glfw.GLFW; + +import java.awt.*; + +public class KeybindingSelector extends Component { + + private boolean listening = false; + + public KeybindingSelector(ModuleButton parent, int offset) { + super(null, parent, offset); + } + + @Override + public void render(DrawContext context, int mouseX, int mouseY, float deltaTicks) { + int alpha = isHovered(mouseX, mouseY) ? 230 : 160; + context.fill(parent.parent.x, parent.parent.y + parent.offset + offset, parent.parent.x + parent.parent.width, parent.parent.y + parent.offset + offset + parent.parent.height, new Color(30, 30, 47, alpha).getRGB()); + + if (listening) { + context.fill(parent.parent.x, parent.parent.y + parent.offset + offset, parent.parent.x + parent.parent.width, parent.parent.y + parent.offset + offset + parent.parent.height, new Color(252, 210, 77, 255).getRGB()); + } + + String displayText = listening ? "Press a key..." : "Keybind: " + getKeyName(parent.module.getGlfwKeybinding()); + context.drawTextWithShadow(mc.textRenderer, displayText, parent.parent.x + 5, parent.parent.y + parent.offset + offset + (parent.parent.height - mc.textRenderer.fontHeight) / 2, Color.white.getRGB()); + } + + @Override + public void mouseClicked(double mouseX, double mouseY, int button) { + if (isHovered(mouseX, mouseY) && button == 0) { + listening = !listening; + } + } + + public void onKeyPressed(int keyCode) { + if (!listening) return; + + listening = false; + + if (keyCode == GLFW.GLFW_KEY_ESCAPE || keyCode == GLFW.GLFW_KEY_DELETE || keyCode == GLFW.GLFW_KEY_BACKSPACE) { + // remove bingdingd AHH I CANT SPELL + parent.module.setGlfwKeybinding(-1); + return; + } + + parent.module.setGlfwKeybinding(keyCode); + } + + private String getKeyName(int key) { + if (key == -1) return "NONE"; + String name = GLFW.glfwGetKeyName(key, 0); + + if (name != null) return name.toUpperCase(); + + return switch (key) { + case GLFW.GLFW_KEY_LEFT_SHIFT -> "LSHIFT"; + case GLFW.GLFW_KEY_RIGHT_SHIFT -> "RSHIFT"; + case GLFW.GLFW_KEY_LEFT_CONTROL -> "LCTRL"; + case GLFW.GLFW_KEY_RIGHT_CONTROL -> "RCTRL"; + case GLFW.GLFW_KEY_LEFT_ALT -> "LALT"; + case GLFW.GLFW_KEY_RIGHT_ALT -> "RALT"; + case GLFW.GLFW_KEY_SPACE -> "SPACE"; + case GLFW.GLFW_KEY_TAB -> "TAB"; + case GLFW.GLFW_KEY_ENTER -> "ENTER"; + case GLFW.GLFW_KEY_UP -> "UP"; + case GLFW.GLFW_KEY_DOWN -> "DOWN"; + case GLFW.GLFW_KEY_LEFT -> "LEFT"; + case GLFW.GLFW_KEY_RIGHT -> "RIGHT"; + default -> "KEY_" + key; + }; + } +} diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/clickgui/setting/Slider.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/clickgui/setting/Slider.java index bf002e3..ea39ac6 100644 --- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/clickgui/setting/Slider.java +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/clickgui/setting/Slider.java @@ -27,7 +27,7 @@ public class Slider extends Component { context.fill(parent.parent.x, parent.parent.y + parent.offset + offset, parent.parent.x + parent.parent.width, parent.parent.y + parent.offset + offset + parent.parent.height, new Color(30, 30, 47, alpha).getRGB()); double diff = Math.min(parent.parent.width, Math.max(0, mouseX - parent.parent.x)); - int renderWidth = (int) (parent.parent.width * (numberSetting.getValue() - numberSetting.getMin()) / (numberSetting.getMax()) - numberSetting.getMin()); + int renderWidth = (int) (parent.parent.width * (numberSetting.getValue() - numberSetting.getMin()) / (numberSetting.getMax() - numberSetting.getMin())); context.fill(parent.parent.x, parent.parent.y + parent.offset + offset, parent.parent.x + renderWidth, parent.parent.y + parent.offset + offset + parent.parent.height, new Color(252, 210, 77, 255).getRGB()); -- cgit v1.2.3