From 9db037f2508ce99f51f6b9fee54a8e1ad12fe566 Mon Sep 17 00:00:00 2001 From: Arslaan Pathan Date: Sun, 5 Oct 2025 21:05:21 +1300 Subject: there is too much shit to mention here. --- .../arslaansmagichax/ArslaansMagicHaxClient.java | 6 +- .../arslaansmagichax/commands/HackSetblock.java | 2 +- .../mixin/SplashTextResourceSupplierMixin.java | 22 +++++ .../arslaansmagichax/modules/Category.java | 9 ++ .../arslaansmagichax/modules/Module.java | 14 +++- .../arslaansmagichax/modules/ModuleManager.java | 40 ++++++++- .../arslaansmagichax/modules/impl/ClickGUI.java | 23 +++++ .../arslaansmagichax/modules/impl/FakeSneak.java | 20 +++++ .../arslaansmagichax/modules/impl/Flight.java | 4 +- .../modules/impl/GhostScaffold.java | 3 +- .../modules/impl/NoAttackCooldown.java | 3 +- .../arslaansmagichax/modules/impl/NoFall.java | 3 +- .../arslaansmagichax/modules/impl/Waterwalk.java | 3 +- .../arslaansmagichax/screens/ClickGUIFrame.java | 97 ++++++++++++++++++++++ .../screens/ClickGUIModuleButton.java | 45 ++++++++++ .../arslaansmagichax/screens/ClickGUIScreen.java | 59 +++++++++++++ 16 files changed, 342 insertions(+), 11 deletions(-) create mode 100644 src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/SplashTextResourceSupplierMixin.java create mode 100644 src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/Category.java create mode 100644 src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/ClickGUI.java create mode 100644 src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/FakeSneak.java create mode 100644 src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/ClickGUIFrame.java create mode 100644 src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/ClickGUIModuleButton.java create mode 100644 src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/ClickGUIScreen.java (limited to 'src/main/java') diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/ArslaansMagicHaxClient.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/ArslaansMagicHaxClient.java index 4cf4d16..3253fd5 100644 --- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/ArslaansMagicHaxClient.java +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/ArslaansMagicHaxClient.java @@ -13,6 +13,8 @@ public class ArslaansMagicHaxClient implements ClientModInitializer { public static Waterwalk waterwalk = new Waterwalk(); public static NoAttackCooldown noAttackCooldown = new NoAttackCooldown(); public static GhostScaffold ghostScaffold = new GhostScaffold(); + public static ClickGUI clickGUI = new ClickGUI(); + public static FakeSneak fakeSneak = new FakeSneak(); @Override public void onInitializeClient() { @@ -21,13 +23,15 @@ public class ArslaansMagicHaxClient implements ClientModInitializer { ClientCommandRegistrationCallback.EVENT.register(HackXP::register); ClientCommandRegistrationCallback.EVENT.register(HackSetblock::register); ClientCommandRegistrationCallback.EVENT.register(HackGive::register); - ClientCommandRegistrationCallback.EVENT.register(CrashCommand::register); // crashes the game for the funni + ClientCommandRegistrationCallback.EVENT.register(CrashCommand::register); // crashes the game for the funny ModuleManager.INSTANCE.register(flight); ModuleManager.INSTANCE.register(noFall); ModuleManager.INSTANCE.register(waterwalk); ModuleManager.INSTANCE.register(noAttackCooldown); ModuleManager.INSTANCE.register(ghostScaffold); + ModuleManager.INSTANCE.register(clickGUI); + ModuleManager.INSTANCE.register(fakeSneak); ModuleManager.INSTANCE.registerHUD(); diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/commands/HackSetblock.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/commands/HackSetblock.java index 2dde32b..cbca4f7 100644 --- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/commands/HackSetblock.java +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/commands/HackSetblock.java @@ -45,7 +45,7 @@ public class HackSetblock { return 0; } - BlockPos pos = client.player.getBlockPos().down(); + BlockPos pos = client.player.getBlockPos(); BlockState blockState = block.getDefaultState(); client.world.setBlockState(pos, blockState); diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/SplashTextResourceSupplierMixin.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/SplashTextResourceSupplierMixin.java new file mode 100644 index 0000000..1f11f14 --- /dev/null +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/SplashTextResourceSupplierMixin.java @@ -0,0 +1,22 @@ +package net.justlearning.arslaan3102.arslaansmagichax.mixin; + +import net.minecraft.client.gui.screen.SplashTextRenderer; +import net.minecraft.client.resource.SplashTextResourceSupplier; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import java.util.Random; + +@Mixin(SplashTextResourceSupplier.class) +public class SplashTextResourceSupplierMixin { + private static final Random RANDOM = new Random(); + + @Inject(method = "get", at = @At("HEAD"), cancellable = true) + public void onGet(CallbackInfoReturnable cir) { + String[] splashes = {"\"one can only hope.\"", "hackerman approved", "Cheater!", "totally not malware", "cheats for block game", "dont use /surprise"}; + String selected = splashes[RANDOM.nextInt(splashes.length)]; + cir.setReturnValue(new SplashTextRenderer(selected)); + } +} diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/Category.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/Category.java new file mode 100644 index 0000000..29950e4 --- /dev/null +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/Category.java @@ -0,0 +1,9 @@ +package net.justlearning.arslaan3102.arslaansmagichax.modules; + +public enum Category { + COMBAT, + MOVEMENT, + RENDER, + PLAYER, + MISC +} \ No newline at end of file diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/Module.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/Module.java index 8982f49..9334a53 100644 --- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/Module.java +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/Module.java @@ -5,14 +5,18 @@ import net.minecraft.client.MinecraftClient; public abstract class Module { private final String name; private final String description; + private final Category category; public MinecraftClient mc; + private final int glfwKeybinding; private boolean enabled = false; - public Module(String name, String description) { + public Module(String name, String description, int glfwKeybinding, Category category) { this.name = name; this.description = description; this.mc = MinecraftClient.getInstance(); + this.glfwKeybinding = glfwKeybinding; + this.category = category; } public String getName() { @@ -23,6 +27,14 @@ public abstract class Module { return description; } + public int getGlfwKeybinding() { + return glfwKeybinding; + } + + public Category getCategory() { + return category; + } + public boolean isEnabled() { return enabled; } diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/ModuleManager.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/ModuleManager.java index 5a69e0b..24c24ae 100644 --- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/ModuleManager.java +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/ModuleManager.java @@ -5,16 +5,43 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.render.RenderTickCounter; +import net.minecraft.client.util.InputUtil; import net.minecraft.text.Text; import net.minecraft.util.math.MathHelper; -import java.util.ArrayList; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; public class ModuleManager { private boolean hudRegistered = false; + private static Map previousKeyState = new HashMap<>(); + + public static void handleKeyPresses() { + MinecraftClient client = MinecraftClient.getInstance(); + if (client.player == null || client.currentScreen != null) return; + + for (Module module : modules) { + int key = module.getGlfwKeybinding(); + if (key == -1) continue; + + boolean isPressed = InputUtil.isKeyPressed(client.getWindow().getHandle(), key); + boolean wasPressed = previousKeyState.getOrDefault(module, false); + + // Only toggle on **key down** event (edge detection) + if (isPressed && !wasPressed) { + module.toggle(); + if (!Objects.equals(module.getName(), "ClickGUI")) { + client.player.sendMessage(Text.literal( + "Toggled module " + module.getName() + " to " + (module.isEnabled() ? "ON" : "OFF") + ), false); + } + } + + previousKeyState.put(module, isPressed); + } + } + private static List modules = new ArrayList<>(); public static ModuleManager INSTANCE = new ModuleManager(); public void register(Module module) { @@ -29,10 +56,17 @@ public class ModuleManager { return modules.stream().filter(Module::isEnabled).collect(Collectors.toList()); } + public List getModulesWithCategory(Category category) { + return modules.stream() + .filter(module -> module.getCategory() == category) + .collect(Collectors.toList()); + } + public static void tick() { for (Module module : modules) { module.tick(); } + handleKeyPresses(); } public void registerHUD() { @@ -52,7 +86,7 @@ public class ModuleManager { int titleColor = 16568909 | i; // weird magic drawContext.drawTextWithBackground(textRenderer, Text.literal("Arslaan's Magic Hax"), x, y, 50, titleColor); - y += textRenderer.fontHeight + 2; + y += textRenderer.fontHeight + 4; for (Module module : ModuleManager.getEnabledModules()) { int color = 16777215 | i; // more magic I don't understand diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/ClickGUI.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/ClickGUI.java new file mode 100644 index 0000000..f5f3a4f --- /dev/null +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/ClickGUI.java @@ -0,0 +1,23 @@ +package net.justlearning.arslaan3102.arslaansmagichax.modules.impl; + +import net.justlearning.arslaan3102.arslaansmagichax.modules.Category; +import net.justlearning.arslaan3102.arslaansmagichax.modules.Module; +import net.justlearning.arslaan3102.arslaansmagichax.screens.ClickGUIScreen; +import net.minecraft.client.MinecraftClient; +import org.lwjgl.glfw.GLFW; + +public class ClickGUI extends Module { + public ClickGUI() { + super("ClickGUI", "GUI to manage modules.", GLFW.GLFW_KEY_RIGHT_SHIFT, Category.MISC); + } + + @Override + protected void onEnable() { + MinecraftClient.getInstance().setScreen(ClickGUIScreen.INSTANCE); + } + + @Override + protected void onDisable() { + MinecraftClient.getInstance().setScreen(null); + } +} diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/FakeSneak.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/FakeSneak.java new file mode 100644 index 0000000..011504c --- /dev/null +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/FakeSneak.java @@ -0,0 +1,20 @@ +package net.justlearning.arslaan3102.arslaansmagichax.modules.impl; + +import net.justlearning.arslaan3102.arslaansmagichax.modules.Category; +import net.justlearning.arslaan3102.arslaansmagichax.modules.Module; +import net.minecraft.client.gui.screen.TitleScreen; +import net.minecraft.network.packet.c2s.play.PlayerInputC2SPacket; +import net.minecraft.util.PlayerInput; + +public class FakeSneak extends Module { + public FakeSneak() { + super("Fake Sneak", "Makes you appear as sneaking to the server when you're not. Can be used to hide nametags.", -1, Category.MOVEMENT); + } + + @Override + public void tick() { + if (!this.isEnabled() || mc.player == null) return; + PlayerInput fakeSneak = new PlayerInput(false, false, false, false, false, true, false); + mc.player.networkHandler.sendPacket(new PlayerInputC2SPacket(fakeSneak)); + } +} diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Flight.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Flight.java index 4c49a26..63c4a8f 100644 --- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Flight.java +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Flight.java @@ -1,10 +1,12 @@ package net.justlearning.arslaan3102.arslaansmagichax.modules.impl; +import net.justlearning.arslaan3102.arslaansmagichax.modules.Category; import net.justlearning.arslaan3102.arslaansmagichax.modules.Module; +import org.lwjgl.glfw.GLFW; public class Flight extends Module { public Flight() { - super("Flight", "Enables creative flight in survival."); + super("Flight", "Enables creative flight in survival.", GLFW.GLFW_KEY_G, Category.MOVEMENT); } @Override diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/GhostScaffold.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/GhostScaffold.java index 156243e..453c0e0 100644 --- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/GhostScaffold.java +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/GhostScaffold.java @@ -1,5 +1,6 @@ package net.justlearning.arslaan3102.arslaansmagichax.modules.impl; +import net.justlearning.arslaan3102.arslaansmagichax.modules.Category; import net.justlearning.arslaan3102.arslaansmagichax.modules.Module; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; @@ -7,7 +8,7 @@ import net.minecraft.util.math.BlockPos; public class GhostScaffold extends Module { public GhostScaffold() { - super("GhostScaffold", "Allows you to scaffold but with ghost blocks"); + super("GhostScaffold", "Allows you to scaffold but with ghost blocks", -1, Category.MOVEMENT); } @Override diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/NoAttackCooldown.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/NoAttackCooldown.java index 6e36667..b8b471c 100644 --- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/NoAttackCooldown.java +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/NoAttackCooldown.java @@ -1,10 +1,11 @@ package net.justlearning.arslaan3102.arslaansmagichax.modules.impl; +import net.justlearning.arslaan3102.arslaansmagichax.modules.Category; import net.justlearning.arslaan3102.arslaansmagichax.modules.Module; public class NoAttackCooldown extends Module { public NoAttackCooldown() { - super("NoAttackCooldown", "Removes attack cooldown"); + super("NoAttackCooldown", "Removes attack cooldown", -1, Category.COMBAT); } // removing cooldown handled in PlayerEntityMixin diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/NoFall.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/NoFall.java index 9fe8725..38cfc15 100644 --- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/NoFall.java +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/NoFall.java @@ -1,11 +1,12 @@ package net.justlearning.arslaan3102.arslaansmagichax.modules.impl; +import net.justlearning.arslaan3102.arslaansmagichax.modules.Category; import net.justlearning.arslaan3102.arslaansmagichax.modules.Module; import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; public class NoFall extends Module { public NoFall() { - super("NoFall", "Negates fall damage."); + super("NoFall", "Negates fall damage.", -1, Category.PLAYER); } @Override diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Waterwalk.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Waterwalk.java index 43ab16e..d1541b2 100644 --- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Waterwalk.java +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Waterwalk.java @@ -1,12 +1,13 @@ package net.justlearning.arslaan3102.arslaansmagichax.modules.impl; +import net.justlearning.arslaan3102.arslaansmagichax.modules.Category; import net.justlearning.arslaan3102.arslaansmagichax.modules.Module; import net.minecraft.block.Blocks; import net.minecraft.util.math.BlockPos; public class Waterwalk extends Module { public Waterwalk() { - super("Waterwalk", "Allows you to walk on water."); + super("Waterwalk", "Allows you to walk on water.", -1, Category.MOVEMENT); } @Override diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/ClickGUIFrame.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/ClickGUIFrame.java new file mode 100644 index 0000000..0958162 --- /dev/null +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/ClickGUIFrame.java @@ -0,0 +1,97 @@ +package net.justlearning.arslaan3102.arslaansmagichax.screens; + +import net.justlearning.arslaan3102.arslaansmagichax.modules.Category; +import net.justlearning.arslaan3102.arslaansmagichax.modules.Module; +import net.justlearning.arslaan3102.arslaansmagichax.modules.ModuleManager; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.text.Text; + +import java.awt.Color; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +public class ClickGUIFrame { + public int x, y, width, height, dragX, dragY; + public Category category; + + public boolean dragging; + + public boolean isOpen = false; + + private List buttons; + + protected MinecraftClient mc = MinecraftClient.getInstance(); + + public ClickGUIFrame(Category category, int x, int y, int width, int height) { + this.category = category; + this.x = x; + this.y = y; + this.width = width; + this.height = height; + this.dragging = false; + + buttons = new ArrayList<>(); + + int offset = height; + for (Module module : ModuleManager.INSTANCE.getModulesWithCategory(category)) { + if (!Objects.equals(module.getName(), "ClickGUI")) { + buttons.add(new ClickGUIModuleButton(module, this, offset)); + offset += height; + } + } + } + + public void render(DrawContext context, int mouseX, int mouseY, float deltaTicks) { + context.fill(x, y, x + width, y + height, new Color(252, 210, 77, 255).getRGB()); + + String text = category.name(); + int textWidth = mc.textRenderer.getWidth(text); + int textX = x + (width - textWidth) / 2; + int textY = y + (height - mc.textRenderer.fontHeight) / 2; + + context.drawText(mc.textRenderer, Text.literal(text), textX, textY, new Color(30, 30, 47, 255).getRGB(), false); + + if (isOpen) { + for (ClickGUIModuleButton button : buttons) { + button.render(context, mouseX, mouseY, deltaTicks); + } + } + } + + public void mouseClicked(double mouseX, double mouseY, int button) { + if (isHovered(mouseX, mouseY)) { + if (button == 0) { + dragging = true; + dragX = (int) (mouseX - x); + dragY = (int) (mouseY - y); + } else { + isOpen = !isOpen; + } + } + + if (isOpen) { + for (ClickGUIModuleButton moduleButton : buttons) { + moduleButton.mouseClicked(mouseX, mouseY, button); + } + } + } + + public void mouseReleased(double mouseX, double mouseY, int button) { + if (button == 0 && dragging) { + dragging = false; + } + } + + public boolean isHovered(double mouseX, double mouseY) { + return mouseX > x && mouseX < x + width && mouseY > y && mouseY < y + height; + } + + public void updatePosition(double mouseX, double mouseY) { + if (dragging) { + x = (int) (mouseX - dragX); + y = (int) (mouseY - dragY); + } + } +} diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/ClickGUIModuleButton.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/ClickGUIModuleButton.java new file mode 100644 index 0000000..a1090a5 --- /dev/null +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/ClickGUIModuleButton.java @@ -0,0 +1,45 @@ +package net.justlearning.arslaan3102.arslaansmagichax.screens; + +import net.justlearning.arslaan3102.arslaansmagichax.modules.Module; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.text.Text; + +import java.awt.Color; + +public class ClickGUIModuleButton { + + public Module module; + public ClickGUIFrame parent; + public int offset; + + public ClickGUIModuleButton(Module module, ClickGUIFrame parent, int offset) { + this.module = module; + this.parent = parent; + this.offset = offset; + } + + public void render(DrawContext context, int mouseX, int mouseY, float deltaTicks) { + int alpha = isHovered(mouseX, mouseY) ? 230 : 160; + context.fill(parent.x, parent.y + offset, parent.x + parent.width, parent.y + offset + parent.height, new Color(30, 30, 47, alpha).getRGB()); + + String text = module.getName(); + + int textX = parent.x + 5; + int textY = parent.y + offset + (parent.height - parent.mc.textRenderer.fontHeight) / 2; + + int textColor = module.isEnabled() ? new Color(252, 210, 77, 255).getRGB() : Color.white.getRGB(); + + context.drawTextWithShadow(parent.mc.textRenderer, Text.literal(text), textX, textY, textColor); + } + + public void mouseClicked(double mouseX, double mouseY, int button) { + if (isHovered(mouseX, mouseY) && button == 0) { + module.toggle(); + } + } + + public boolean isHovered(double mouseX, double mouseY) { + return mouseX > parent.x && mouseX < parent.x + parent.width && mouseY > parent.y + offset && mouseY < parent.y + offset + parent.height; + } +} diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/ClickGUIScreen.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/ClickGUIScreen.java new file mode 100644 index 0000000..0e33107 --- /dev/null +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/ClickGUIScreen.java @@ -0,0 +1,59 @@ +package net.justlearning.arslaan3102.arslaansmagichax.screens; + +import net.justlearning.arslaan3102.arslaansmagichax.ArslaansMagicHaxClient; +import net.justlearning.arslaan3102.arslaansmagichax.modules.Category; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.text.Text; + +import java.util.ArrayList; +import java.util.List; + +public class ClickGUIScreen extends Screen { + public static final ClickGUIScreen INSTANCE = new ClickGUIScreen(); + + private List frames; + + private ClickGUIScreen() { + super(Text.literal("ClickGUI")); + + frames = new ArrayList<>(); + + int offset = 20; + for (Category category : Category.values()) { + frames.add(new ClickGUIFrame(category, offset, 30, 100, 30)); + offset += 120; + } + } + + @Override + public void render(DrawContext context, int mouseX, int mouseY, float deltaTicks) { + for (ClickGUIFrame frame : frames) { + frame.render(context, mouseX, mouseY, deltaTicks); + frame.updatePosition(mouseX, mouseY); + } + super.render(context, mouseX, mouseY, deltaTicks); + } + + @Override + public boolean mouseClicked(double mouseX, double mouseY, int button) { + for (ClickGUIFrame frame : frames) { + frame.mouseClicked(mouseX, mouseY, button); + } + return super.mouseClicked(mouseX, mouseY, button); + } + + @Override + public boolean mouseReleased(double mouseX, double mouseY, int button) { + for (ClickGUIFrame frame : frames) { + frame.mouseReleased(mouseX, mouseY, button); + } + return super.mouseReleased(mouseX, mouseY, button); + } + + @Override + public void close() { + super.close(); + ArslaansMagicHaxClient.clickGUI.setEnabled(false); + } +} -- cgit v1.2.3