From 3c4a9f4ec6c261eae8d1e467eb62429b681be5d0 Mon Sep 17 00:00:00 2001
From: DonKisser <itsmetomtom@protonmail.com>
Date: Thu, 26 Dec 2024 14:37:32 +0100
Subject: [PATCH] Added new module AttributeSwap.java made from the description
 by this video https://youtu.be/q99eqD_fBqo

---
 .../java/pwn/noobs/trouserstreak/Trouser.java |  1 +
 .../trouserstreak/modules/AttributeSwap.java  | 45 +++++++++++++++++++
 2 files changed, 46 insertions(+)
 create mode 100644 src/main/java/pwn/noobs/trouserstreak/modules/AttributeSwap.java

diff --git a/src/main/java/pwn/noobs/trouserstreak/Trouser.java b/src/main/java/pwn/noobs/trouserstreak/Trouser.java
index 92587691..d8b34ce7 100644
--- a/src/main/java/pwn/noobs/trouserstreak/Trouser.java
+++ b/src/main/java/pwn/noobs/trouserstreak/Trouser.java
@@ -68,6 +68,7 @@ public void onInitialize() {
                 Modules.get().add(new BoatKill());
                 Modules.get().add(new InstantKill());
                 Modules.get().add(new LecternCrash());
+                Modules.get().add(new AttributeSwap());
 
                 //Modules.get().add(new -----> And much more <-----());
                 Modules.get().add(new BookAndQuillDupe());
diff --git a/src/main/java/pwn/noobs/trouserstreak/modules/AttributeSwap.java b/src/main/java/pwn/noobs/trouserstreak/modules/AttributeSwap.java
new file mode 100644
index 00000000..0f22a536
--- /dev/null
+++ b/src/main/java/pwn/noobs/trouserstreak/modules/AttributeSwap.java
@@ -0,0 +1,45 @@
+package pwn.noobs.trouserstreak.modules;
+
+import pwn.noobs.trouserstreak.Trouser;
+import meteordevelopment.meteorclient.events.entity.player.AttackEntityEvent;
+import meteordevelopment.meteorclient.events.world.TickEvent;
+import meteordevelopment.meteorclient.settings.BoolSetting;
+import meteordevelopment.meteorclient.settings.IntSetting;
+import meteordevelopment.meteorclient.settings.Setting;
+import meteordevelopment.meteorclient.settings.SettingGroup;
+import meteordevelopment.meteorclient.systems.modules.Module;
+import meteordevelopment.meteorclient.utils.player.InvUtils;
+import meteordevelopment.orbit.EventHandler;
+
+public class AttributeSwap extends Module {
+    private final SettingGroup sgGeneral = settings.getDefaultGroup();
+    private final Setting<Integer> targetSlot = sgGeneral.add(new IntSetting.Builder().name("target-slot").description("The hotbar slot to swap to when attacking.").sliderRange(0, 8).defaultValue(0).build());
+    private final Setting<Boolean> swapBack = sgGeneral.add(new BoolSetting.Builder().name("swap-back").description("Swap back to the original slot after a short delay.").defaultValue(true).build());
+    private final Setting<Integer> delay = sgGeneral.add(new IntSetting.Builder().name("swap-back-delay").description("Delay in ticks before swapping back to the previous slot.").sliderRange(1, 20).defaultValue(1).visible(swapBack::get).build());
+    private int prevSlot = -1;
+    private int dDelay = 0;
+    public AttributeSwap() {
+        super(Trouser.Main, "Attribute Swap", "Tries the Atrribute Swap bug");
+    }
+    @EventHandler
+    private void onAttack(AttackEntityEvent event) {
+        if (mc.player == null || mc.world == null) return;
+        if (swapBack.get()) {
+            prevSlot = mc.player.getInventory().selectedSlot;
+        }
+        InvUtils.swap(targetSlot.get(), false);
+        if (swapBack.get() && prevSlot != -1) {
+            dDelay = delay.get();
+        }
+    }
+    @EventHandler
+    private void onTick(TickEvent.Pre event) {
+        if (dDelay > 0) {
+            dDelay--;
+            if (dDelay == 0 && prevSlot != -1) {
+                InvUtils.swap(prevSlot, false);
+                prevSlot = -1;
+            }
+        }
+    }
+}