From 9c6cb4b9d90587386a2ed1f39d66ac7cea44b457 Mon Sep 17 00:00:00 2001 From: ididitforthefun <800Yenn@gmail.com> Date: Sun, 14 Dec 2025 14:41:42 -0500 Subject: [PATCH 01/21] Update AntiObfuscate.java --- src/main/java/myau/module/modules/AntiObfuscate.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/myau/module/modules/AntiObfuscate.java b/src/main/java/myau/module/modules/AntiObfuscate.java index 52fbd883..e0906e1f 100644 --- a/src/main/java/myau/module/modules/AntiObfuscate.java +++ b/src/main/java/myau/module/modules/AntiObfuscate.java @@ -8,6 +8,9 @@ public AntiObfuscate() { } public String stripObfuscated(String input) { + if (input == null) { + return null; + } return input.replaceAll("§k", ""); } } From 4bf543d7d9beb11fa4201d7cbb8251e63e2ae3f5 Mon Sep 17 00:00:00 2001 From: ididitforthefun <800Yenn@gmail.com> Date: Sat, 27 Dec 2025 02:03:59 -0500 Subject: [PATCH 02/21] Fix Longjump and Added Slow Diagonal + Fixed Longjumps rots locking when using Freeze + Added Slowed Diagonal for Tower Telly --- src/main/java/myau/module/modules/Freeze.java | 28 ++++++++++++------- .../java/myau/module/modules/LongJump.java | 14 ++++++++-- .../java/myau/module/modules/Scaffold.java | 24 ++++++++++++++-- 3 files changed, 52 insertions(+), 14 deletions(-) diff --git a/src/main/java/myau/module/modules/Freeze.java b/src/main/java/myau/module/modules/Freeze.java index 7a9002c8..81b64f29 100644 --- a/src/main/java/myau/module/modules/Freeze.java +++ b/src/main/java/myau/module/modules/Freeze.java @@ -16,6 +16,7 @@ import net.minecraft.client.gui.ScaledResolution; import net.minecraft.network.Packet; import net.minecraft.network.play.INetHandlerPlayClient; +import net.minecraft.network.play.client.C03PacketPlayer; import net.minecraft.network.play.server.S08PacketPlayerPosLook; import net.minecraft.network.play.server.S12PacketEntityVelocity; import net.minecraft.network.play.server.S19PacketEntityStatus; @@ -43,9 +44,13 @@ public Freeze() { super("Freeze", false); } + public void ignoreNextVelocity() { + + } + @EventTarget(Priority.HIGHEST) public void onPacket(PacketEvent event) { - if (!this.isEnabled() || event.getType() != EventType.RECEIVE || event.isCancelled()) { + if (!this.isEnabled() || event.isCancelled()) { return; } @@ -55,36 +60,41 @@ public void onPacket(PacketEvent event) { Packet packet = event.getPacket(); - // Check for S08 flag (teleport packet) + if (event.getType() == EventType.SEND && this.delaying && packet instanceof C03PacketPlayer) { + C03PacketPlayer c03 = (C03PacketPlayer) packet; + if (c03.getRotating()) { + return; + } + } + + if (event.getType() != EventType.RECEIVE) { + return; + } + if (!this.delaying && packet instanceof S08PacketPlayerPosLook) { this.s08 = true; } - // Check for velocity packet targeting player if (packet instanceof S12PacketEntityVelocity) { S12PacketEntityVelocity s12 = (S12PacketEntityVelocity) packet; if (s12.getEntityID() == mc.thePlayer.getEntityId()) { - // Ignore velocity right after teleport if (this.s08) { this.s08 = false; return; } - // Start delaying this.delaying = true; } } - // Check for damage (entity status packet with hurt animation) if (packet instanceof S19PacketEntityStatus) { S19PacketEntityStatus s19 = (S19PacketEntityStatus) packet; if (s19.getEntity(mc.theWorld) != null && s19.getEntity(mc.theWorld).equals(mc.thePlayer) && - s19.getOpCode() == 2) { // OpCode 2 = hurt animation + s19.getOpCode() == 2) { this.delaying = true; } } - // Buffer relevant packets when delaying if (this.delaying && (packet instanceof S12PacketEntityVelocity || packet instanceof S32PacketConfirmTransaction || packet instanceof S08PacketPlayerPosLook)) { @@ -106,13 +116,11 @@ public void onTick(TickEvent event) { } if (event.getType() == EventType.POST) { - // Check timeout if (this.delaying && ++this.timeout >= this.maxTimeout.getValue()) { this.flush(); ChatUtil.sendFormatted(Myau.clientName + "&cFreeze timed out."); } - // Reset S08 flag this.s08 = false; } } diff --git a/src/main/java/myau/module/modules/LongJump.java b/src/main/java/myau/module/modules/LongJump.java index 3ce6eb02..04544ab2 100644 --- a/src/main/java/myau/module/modules/LongJump.java +++ b/src/main/java/myau/module/modules/LongJump.java @@ -97,6 +97,11 @@ public void onTick(TickEvent event) { if (this.isAutoMode() && !this.fireballLaunched && this.readyToUseFireball) { int slot = this.findFireballInHotbar(); if (slot != -1) { + Module freezeModule = Myau.moduleManager.getModule("Freeze"); + if (freezeModule != null && freezeModule.isEnabled()) { + ((Freeze) freezeModule).ignoreNextVelocity(); + } + this.savedHotbarSlot = mc.thePlayer.inventory.currentItem; mc.thePlayer.inventory.currentItem = slot; ((IAccessorPlayerControllerMP) mc.playerController).callSyncCurrentPlayItem(); @@ -166,7 +171,7 @@ public void onUpdate(UpdateEvent event) { return; } } - if (this.isAutoMode() && !this.isJumping) { + if (this.isAutoMode() && !this.isJumping && !this.fireballLaunched) { if (this.jumpTimer.hasTimeElapsed(1500L)) { this.setEnabled(false); return; @@ -214,6 +219,11 @@ public void onKey(KeyEvent event) { if (event.getKey() == mc.gameSettings.keyBindUseItem.getKeyCode()) { ItemStack stack = mc.thePlayer.inventory.getCurrentItem(); if (stack != null && stack.getItem() instanceof ItemFireball) { + Module freezeModule = Myau.moduleManager.getModule("Freeze"); + if (freezeModule != null && freezeModule.isEnabled()) { + ((Freeze) freezeModule).ignoreNextVelocity(); + } + this.fireballTimer.reset(); } } @@ -256,4 +266,4 @@ public String[] getSuffix() { String mode = this.mode.getModeString(); return mode.contains("FIREBALL") ? new String[]{"Fireball"} : new String[]{CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, mode)}; } -} +} \ No newline at end of file diff --git a/src/main/java/myau/module/modules/Scaffold.java b/src/main/java/myau/module/modules/Scaffold.java index 06b9489a..e8121757 100644 --- a/src/main/java/myau/module/modules/Scaffold.java +++ b/src/main/java/myau/module/modules/Scaffold.java @@ -72,6 +72,7 @@ public class Scaffold extends Module { public final ModeProperty keepY = new ModeProperty("keep-y", 0, new String[]{"NONE", "VANILLA", "EXTRA", "TELLY"}); public final BooleanProperty keepYonPress = new BooleanProperty("keep-y-on-press", false, () -> this.keepY.getValue() != 0); public final BooleanProperty disableWhileJumpActive = new BooleanProperty("no-keep-y-on-jump-potion", false, () -> this.keepY.getValue() != 0); + public final BooleanProperty tellyDiagonalSlowed = new BooleanProperty("telly-diagonal-slowed", true, () -> this.tower.getValue() == 3); public final BooleanProperty multiplace = new BooleanProperty("multi-place", true); public final BooleanProperty safeWalk = new BooleanProperty("safe-walk", true); public final BooleanProperty swing = new BooleanProperty("swing", true); @@ -232,7 +233,15 @@ private boolean isTowering() { if (mc.thePlayer.onGround && MoveUtil.isForwardPressed() && !PlayerUtil.isAirAbove()) { boolean keepY = this.keepY.getValue() == 3; boolean tower = this.tower.getValue() == 3; - return keepY && this.stage > 0 || tower && mc.gameSettings.keyBindJump.isKeyDown(); + + if (tower && mc.gameSettings.keyBindJump.isKeyDown()) { + if (this.tellyDiagonalSlowed.getValue() && this.isDiagonal(this.getCurrentYaw())) { + return false; + } + return true; + } + + return keepY && this.stage > 0; } else { return false; } @@ -481,6 +490,7 @@ public void onStrafe(StrafeEvent event) { && mc.gameSettings.keyBindJump.isKeyDown() && ItemUtil.isHoldingBlock()) { int yState = (int) (mc.thePlayer.posY % 1.0 * 100.0); + switch (this.tower.getValue()) { case 1: switch (this.towerTick) { @@ -602,6 +612,15 @@ public void onStrafe(StrafeEvent event) { this.towerDelay = 0; return; } + case 3: + if (this.tellyDiagonalSlowed.getValue() && this.isDiagonal(this.getCurrentYaw())) { + this.towerTick = 0; + this.towerDelay = 0; + return; + } + this.towerTick = 0; + this.towerDelay = 0; + return; default: this.towerTick = 0; this.towerDelay = 0; @@ -632,6 +651,7 @@ public void onMoveInput(MoveInputEvent event) { public void onLivingUpdate(LivingUpdateEvent event) { if (this.isEnabled()) { float speed = this.getSpeed(); + if (speed != 1.0F) { if (mc.thePlayer.movementInput.moveForward != 0.0F && mc.thePlayer.movementInput.moveStrafe != 0.0F) { mc.thePlayer.movementInput.moveForward = mc.thePlayer.movementInput.moveForward * (1.0F / (float) Math.sqrt(2.0)); @@ -764,4 +784,4 @@ public EnumFacing facing() { return this.facing; } } -} +} \ No newline at end of file From 14718a5fe696c0ec6a2cc40bcfa1a0f397adc530 Mon Sep 17 00:00:00 2001 From: ididitforthefun <800Yenn@gmail.com> Date: Mon, 29 Dec 2025 02:46:13 -0500 Subject: [PATCH 03/21] Made legit AB more legit. Now works for another servers such as MMC --- src/main/java/myau/module/modules/KillAura.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/myau/module/modules/KillAura.java b/src/main/java/myau/module/modules/KillAura.java index a6c7a3c0..6089cf18 100644 --- a/src/main/java/myau/module/modules/KillAura.java +++ b/src/main/java/myau/module/modules/KillAura.java @@ -635,12 +635,15 @@ public void onUpdate(UpdateEvent event) { this.blockTick = 1; break; case 1: - if (this.isPlayerBlocking()) { + if (this.isPlayerBlocking() && this.attackDelayMS <= 100L) { this.stopBlock(); - attack = false; + this.blockTick = 2; } - if (this.attackDelayMS <= 50L) { - this.blockTick = 0; + break; + case 2: + if (!this.isPlayerBlocking() && this.attackDelayMS <= 50L) { + swap = true; + this.blockTick = 1; } break; default: @@ -654,6 +657,7 @@ public void onUpdate(UpdateEvent event) { Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); this.isBlocking = false; this.fakeBlockState = false; + this.blockTick = 0; } break; case 8: // FAKE From 45896c79ba79c7b368f1a019594e7141ba5f9819 Mon Sep 17 00:00:00 2001 From: ididitforthefun <800Yenn@gmail.com> Date: Wed, 31 Dec 2025 22:00:31 -0500 Subject: [PATCH 04/21] Added "right click only" as an option. --- src/main/java/myau/module/modules/Eagle.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/myau/module/modules/Eagle.java b/src/main/java/myau/module/modules/Eagle.java index dc6c99b9..98b5ee09 100644 --- a/src/main/java/myau/module/modules/Eagle.java +++ b/src/main/java/myau/module/modules/Eagle.java @@ -26,6 +26,7 @@ public class Eagle extends Module { public final BooleanProperty pitchCheck = new BooleanProperty("pitch-check", true); public final BooleanProperty blocksOnly = new BooleanProperty("blocks-only", true); public final BooleanProperty sneakOnly = new BooleanProperty("sneaking-only", false); + public final BooleanProperty rightOnly = new BooleanProperty("right-click-only", false); private boolean canMoveSafely() { double[] offset = MoveUtil.predictMovement(); @@ -39,6 +40,8 @@ private boolean shouldSneak() { return false; } else if(sneakOnly.getValue() && !Keyboard.isKeyDown(mc.gameSettings.keyBindSneak.getKeyCode())){ return false; + } else if(rightOnly.getValue() && !mc.gameSettings.keyBindUseItem.isKeyDown()){ + return false; } else { return (!this.blocksOnly.getValue() || ItemUtil.isHoldingBlock()) && mc.thePlayer.onGround; } @@ -106,4 +109,4 @@ public String[] getSuffix() { ? new String[]{this.minDelay.getValue().toString()} : new String[]{String.format("%d-%d", this.minDelay.getValue(), this.maxDelay.getValue())}; } -} +} \ No newline at end of file From cbf2bf83fa1fea9a6cdd297ba9ad51a97babaeb8 Mon Sep 17 00:00:00 2001 From: ididitforthefun <800Yenn@gmail.com> Date: Thu, 1 Jan 2026 21:04:09 -0500 Subject: [PATCH 05/21] Updated shit Added Adv features for lag range, added tick-delay for blink AB, added a noslow check for killaura. --- .../java/myau/module/modules/KillAura.java | 22 +++-- .../java/myau/module/modules/LagRange.java | 91 +++++++++++++++++-- src/main/java/myau/module/modules/NoSlow.java | 11 ++- 3 files changed, 106 insertions(+), 18 deletions(-) diff --git a/src/main/java/myau/module/modules/KillAura.java b/src/main/java/myau/module/modules/KillAura.java index 6089cf18..62969e9f 100644 --- a/src/main/java/myau/module/modules/KillAura.java +++ b/src/main/java/myau/module/modules/KillAura.java @@ -71,6 +71,7 @@ public class KillAura extends Module { public final FloatProperty autoBlockMinCPS; public final FloatProperty autoBlockMaxCPS; public final FloatProperty autoBlockRange; + public final IntProperty blinkTicks; public final FloatProperty swingRange; public final FloatProperty attackRange; public final IntProperty fov; @@ -333,6 +334,7 @@ public KillAura() { this.autoBlockMinCPS = new FloatProperty("auto-block-min-aps", 8.0F, 1.0F, 20.0F); this.autoBlockMaxCPS = new FloatProperty("auto-block-max-aps", 10.0F, 1.0F, 20.0F); this.autoBlockRange = new FloatProperty("auto-block-range", 6.0F, 3.0F, 8.0F); + this.blinkTicks = new IntProperty("blink-ticks", 1, 1, 10, () -> this.autoBlock.getValue() == 4); this.swingRange = new FloatProperty("swing-range", 3.5F, 3.0F, 6.0F); this.attackRange = new FloatProperty("attack-range", 3.0F, 3.0F, 6.0F); this.fov = new IntProperty("fov", 360, 30, 360); @@ -527,17 +529,19 @@ public void onUpdate(UpdateEvent event) { this.blinkReset = true; this.blockTick = 1; break; - case 1: - if (this.isPlayerBlocking()) { - this.stopBlock(); - attack = false; - } - if (this.attackDelayMS <= 50L) { - this.blockTick = 0; + default: + if (this.blockTick >= this.blinkTicks.getValue()) { + if (this.isPlayerBlocking()) { + this.stopBlock(); + attack = false; + } + if (this.attackDelayMS <= 50L) { + this.blockTick = 0; + } + } else { + this.blockTick++; } break; - default: - this.blockTick = 0; } } this.isBlocking = true; diff --git a/src/main/java/myau/module/modules/LagRange.java b/src/main/java/myau/module/modules/LagRange.java index 7fc22ed0..c255d7d8 100644 --- a/src/main/java/myau/module/modules/LagRange.java +++ b/src/main/java/myau/module/modules/LagRange.java @@ -37,10 +37,20 @@ public class LagRange extends Module { private int tickIndex = -1; private long delayCounter = 0L; private boolean hasTarget = false; + private long maxTimeStarted = 0L; private Vec3 lastPosition = null; private Vec3 currentPosition = null; - public final IntProperty delay = new IntProperty("delay", 150, 0, 1000); - public final FloatProperty range = new FloatProperty("range", 10.0F, 3.0F, 100.0F); + + public final BooleanProperty advancedMode = new BooleanProperty("advanced-mode", false); + + public final IntProperty delay = new IntProperty("delay", 150, 0, 1000, () -> !this.advancedMode.getValue()); + public final FloatProperty range = new FloatProperty("range", 10.0F, 3.0F, 100.0F, () -> !this.advancedMode.getValue()); + + public final IntProperty maxTime = new IntProperty("max-time", 1000, 0, 5000, this.advancedMode::getValue); + public final FloatProperty closeRange = new FloatProperty("close-range", 6.0F, 3.0F, 100.0F, this.advancedMode::getValue); + public final FloatProperty farRange = new FloatProperty("far-range", 10.0F, 3.0F, 100.0F, this.advancedMode::getValue); + public final IntProperty delayClose = new IntProperty("packet-delay-close", 150, 0, 1000, this.advancedMode::getValue); + public final IntProperty delayFar = new IntProperty("packet-delay-far", 300, 0, 1000, this.advancedMode::getValue); public final BooleanProperty weaponsOnly = new BooleanProperty("weapons-only", true); public final BooleanProperty allowTools = new BooleanProperty("allow-tools", false, this.weaponsOnly::getValue); public final BooleanProperty botCheck = new BooleanProperty("bot-check", true); @@ -105,35 +115,83 @@ public void onTick(TickEvent event) { .collect(Collectors.toList()); if (players.isEmpty()) { this.tickIndex = -1; + this.maxTimeStarted = 0L; } else { double height = mc.thePlayer.getEyeHeight(); Vec3 eyePosition = Myau.lagManager.getLastPosition().addVector(0.0, height, 0.0); Vec3 targetEyePosition = new Vec3(mc.thePlayer.lastTickPosX, mc.thePlayer.lastTickPosY + height, mc.thePlayer.lastTickPosZ); Vec3 playerEyePosition = new Vec3(mc.thePlayer.posX, mc.thePlayer.posY + height, mc.thePlayer.posZ); + for (EntityPlayer player : players) { double distance = RotationUtil.distanceToBox(player, playerEyePosition); - if (!(distance > (double) this.range.getValue())) { + + // Determine which range to use + float maxRange = this.advancedMode.getValue() + ? Math.max(this.closeRange.getValue(), this.farRange.getValue()) + : this.range.getValue(); + + if (!(distance > (double) maxRange)) { double targetDist = RotationUtil.distanceToBox(player, targetEyePosition); double eyeDist = RotationUtil.distanceToBox(player, eyePosition); + if (distance < targetDist || distance < eyeDist) { + // Determine delay based on distance + int currentDelay; + boolean isInCloseRange = false; + + if (this.advancedMode.getValue()) { + isInCloseRange = distance <= (double) this.closeRange.getValue(); + + if (isInCloseRange) { + // Start timer when entering close range + if (this.maxTimeStarted == 0L) { + this.maxTimeStarted = System.currentTimeMillis(); + } + + // Check if max time has elapsed + long elapsed = System.currentTimeMillis() - this.maxTimeStarted; + if (elapsed >= this.maxTime.getValue()) { + // Max time reached, stop lagging + Myau.lagManager.setDelay(0); + this.tickIndex = -1; + return; + } + + currentDelay = this.delayClose.getValue(); + } else { + // In far range, reset timer + this.maxTimeStarted = 0L; + currentDelay = this.delayFar.getValue(); + } + } else { + currentDelay = this.delay.getValue(); + } + + // Apply delay using original flush logic if (this.tickIndex < 0) { this.tickIndex = 0; - for (this.delayCounter = this.delayCounter + (long) this.delay.getValue(); + for (this.delayCounter = this.delayCounter + (long) currentDelay; this.delayCounter > 0L; this.delayCounter = this.delayCounter - 50 ) { this.tickIndex++; } } + Myau.lagManager.setDelay(this.tickIndex); this.hasTarget = true; return; } } } + + // No valid targets found - reset + this.tickIndex = -1; + this.maxTimeStarted = 0L; } } else { this.tickIndex = -1; + this.maxTimeStarted = 0L; } break; case POST: @@ -154,6 +212,7 @@ public void onPacket(PacketEvent event) { if (this.shouldResetOnPacket(event.getPacket())) { Myau.lagManager.setDelay(0); this.tickIndex = -1; + this.maxTimeStarted = 0L; } } } @@ -205,12 +264,32 @@ public void onDisabled() { this.tickIndex = -1; this.delayCounter = 0L; this.hasTarget = false; + this.maxTimeStarted = 0L; this.lastPosition = null; this.currentPosition = null; } @Override public String[] getSuffix() { - return new String[]{String.format("%dms", this.delay.getValue())}; + if (this.advancedMode.getValue()) { + return new String[]{String.format("%dms", this.delayFar.getValue())}; + } else { + return new String[]{String.format("%dms", this.delay.getValue())}; + } + } + + @Override + public void verifyValue(String value) { + if (this.advancedMode.getValue()) { + if (this.closeRange.getName().equals(value)) { + if (this.closeRange.getValue() > this.farRange.getValue()) { + this.farRange.setValue(this.closeRange.getValue()); + } + } else if (this.farRange.getName().equals(value)) { + if (this.closeRange.getValue() > this.farRange.getValue()) { + this.closeRange.setValue(this.farRange.getValue()); + } + } + } } -} +} \ No newline at end of file diff --git a/src/main/java/myau/module/modules/NoSlow.java b/src/main/java/myau/module/modules/NoSlow.java index c3a588c8..ab28525f 100644 --- a/src/main/java/myau/module/modules/NoSlow.java +++ b/src/main/java/myau/module/modules/NoSlow.java @@ -38,8 +38,13 @@ public NoSlow() { super("NoSlow", false); } + private boolean isKillAuraEnabled() { + KillAura killAura = (KillAura) Myau.moduleManager.modules.get(KillAura.class); + return killAura != null && killAura.isEnabled(); + } + public boolean isSwordActive() { - return this.swordMode.getValue() != 0 && ItemUtil.isHoldingSword(); + return this.swordMode.getValue() != 0 && ItemUtil.isHoldingSword() && this.isKillAuraEnabled(); } public boolean isFoodActive() { @@ -66,7 +71,7 @@ public boolean canSprint() { } public int getMotionMultiplier() { - if (ItemUtil.isHoldingSword()) { + if (ItemUtil.isHoldingSword() && this.isKillAuraEnabled()) { return this.swordMotion.getValue(); } else if (ItemUtil.isEating()) { return this.foodMotion.getValue(); @@ -128,4 +133,4 @@ public void onRightClick(RightClickMouseEvent event) { } } } -} +} \ No newline at end of file From a7d3b6f6790da40c10887c1d5187ff7819237af1 Mon Sep 17 00:00:00 2001 From: ididitforthefun <800Yenn@gmail.com> Date: Sat, 3 Jan 2026 05:29:01 -0500 Subject: [PATCH 06/21] Add files via upload --- src/main/java/myau/Myau.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/myau/Myau.java b/src/main/java/myau/Myau.java index a9301345..2387f54e 100644 --- a/src/main/java/myau/Myau.java +++ b/src/main/java/myau/Myau.java @@ -69,6 +69,7 @@ public void init() { moduleManager.modules.put(AutoAnduril.class, new AutoAnduril()); moduleManager.modules.put(AutoHeal.class, new AutoHeal()); moduleManager.modules.put(AutoTool.class, new AutoTool()); + moduleManager.modules.put(BackTrack.class, new BackTrack()); moduleManager.modules.put(BedNuker.class, new BedNuker()); moduleManager.modules.put(BedESP.class, new BedESP()); moduleManager.modules.put(BedTracker.class, new BedTracker()); @@ -78,6 +79,7 @@ public void init() { moduleManager.modules.put(ChestStealer.class, new ChestStealer()); moduleManager.modules.put(Eagle.class, new Eagle()); moduleManager.modules.put(ESP.class, new ESP()); + moduleManager.modules.put(FakeLag.class, new FakeLag()); moduleManager.modules.put(FastPlace.class, new FastPlace()); moduleManager.modules.put(Freeze.class, new Freeze()); moduleManager.modules.put(Fly.class, new Fly()); From eb4241cc16c9f71a5efddc55319dfa8b84294a6b Mon Sep 17 00:00:00 2001 From: ididitforthefun <800Yenn@gmail.com> Date: Sat, 3 Jan 2026 05:29:11 -0500 Subject: [PATCH 07/21] Add files via upload --- src/main/java/myau/ui/ClickGui.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/myau/ui/ClickGui.java b/src/main/java/myau/ui/ClickGui.java index 071632fd..c5bd3e6d 100644 --- a/src/main/java/myau/ui/ClickGui.java +++ b/src/main/java/myau/ui/ClickGui.java @@ -35,6 +35,7 @@ public ClickGui() { combatModules.add(Myau.moduleManager.getModule(Velocity.class)); combatModules.add(Myau.moduleManager.getModule(Freeze.class)); combatModules.add(Myau.moduleManager.getModule(Reach.class)); + combatModules.add(Myau.moduleManager.getModule(BackTrack.class)); combatModules.add(Myau.moduleManager.getModule(TargetStrafe.class)); combatModules.add(Myau.moduleManager.getModule(NoHitDelay.class)); combatModules.add(Myau.moduleManager.getModule(AntiFireball.class)); @@ -53,6 +54,7 @@ public ClickGui() { movementModules.add(Myau.moduleManager.getModule(SafeWalk.class)); movementModules.add(Myau.moduleManager.getModule(Jesus.class)); movementModules.add(Myau.moduleManager.getModule(Blink.class)); + movementModules.add(Myau.moduleManager.getModule(FakeLag.class)); movementModules.add(Myau.moduleManager.getModule(NoFall.class)); movementModules.add(Myau.moduleManager.getModule(NoSlow.class)); movementModules.add(Myau.moduleManager.getModule(KeepSprint.class)); From 67308c61cdfb7aeb385e02d88a30590024709d99 Mon Sep 17 00:00:00 2001 From: ididitforthefun <800Yenn@gmail.com> Date: Sat, 3 Jan 2026 05:31:38 -0500 Subject: [PATCH 08/21] Added backtrack, FakeLag, and updated blink AB --- .../java/myau/module/modules/BackTrack.java | 436 ++++ .../java/myau/module/modules/FakeLag.java | 99 + .../java/myau/module/modules/KillAura.java | 2080 +++++++++-------- 3 files changed, 1581 insertions(+), 1034 deletions(-) create mode 100644 src/main/java/myau/module/modules/BackTrack.java create mode 100644 src/main/java/myau/module/modules/FakeLag.java diff --git a/src/main/java/myau/module/modules/BackTrack.java b/src/main/java/myau/module/modules/BackTrack.java new file mode 100644 index 00000000..0f781586 --- /dev/null +++ b/src/main/java/myau/module/modules/BackTrack.java @@ -0,0 +1,436 @@ +package myau.module.modules; + +import myau.Myau; +import myau.event.EventTarget; +import myau.event.types.EventType; +import myau.event.types.Priority; +import myau.events.PacketEvent; +import myau.events.Render3DEvent; +import myau.events.TickEvent; +import myau.mixin.IAccessorRenderManager; +import myau.module.Module; +import myau.module.modules.KillAura; +import myau.module.modules.Scaffold; +import myau.module.modules.HUD; +import myau.property.properties.BooleanProperty; +import myau.property.properties.FloatProperty; +import myau.property.properties.IntProperty; +import myau.property.properties.ModeProperty; +import myau.util.PacketUtil; +import myau.util.RenderUtil; +import myau.util.TeamUtil; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.network.Packet; +import net.minecraft.network.play.client.*; +import net.minecraft.network.play.server.*; +import net.minecraft.network.status.client.C01PacketPing; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.Vec3; + +import java.awt.*; +import java.util.*; + +public class BackTrack extends Module { + private static final Minecraft mc = Minecraft.getMinecraft(); + + public final BooleanProperty legit = new BooleanProperty("legit", false); + public final BooleanProperty releaseOnHit = new BooleanProperty("release-on-hit", true, this.legit::getValue); + public final IntProperty delay = new IntProperty("delay", 400, 0, 1000); + public final FloatProperty hitRange = new FloatProperty("range", 3.0F, 3.0F, 10.0F); + public final BooleanProperty adaptive = new BooleanProperty("adaptive", true); + public final BooleanProperty useKillAura = new BooleanProperty("use-killaura", true); + public final BooleanProperty botCheck = new BooleanProperty("bot-check", true); + public final BooleanProperty teams = new BooleanProperty("teams", true); + public final ModeProperty showPosition = new ModeProperty("show-position", 1, new String[]{"NONE", "DEFAULT", "HUD"}); + + private final Queue incomingPackets = new LinkedList<>(); + private final Queue outgoingPackets = new LinkedList<>(); + private final Map realPositions = new HashMap<>(); + + private KillAura killAura; + private EntityLivingBase target; + private Vec3 lastRealPos; + private Vec3 currentRealPos; + private long lastReleaseTime; + + public BackTrack() { + super("BackTrack", false); + } + + private boolean isValidTarget(EntityLivingBase entityLivingBase) { + if (entityLivingBase == mc.thePlayer || entityLivingBase == mc.thePlayer.ridingEntity) { + return false; + } else if (entityLivingBase == mc.getRenderViewEntity() || entityLivingBase == mc.getRenderViewEntity().ridingEntity) { + return false; + } else if (entityLivingBase.deathTime > 0) { + return false; + } else if (entityLivingBase instanceof EntityPlayer) { + EntityPlayer player = (EntityPlayer) entityLivingBase; + + if (TeamUtil.isFriend(player)) { + return false; + } else { + return (!this.teams.getValue() || !TeamUtil.isSameTeam(player)) + && (!this.botCheck.getValue() || !TeamUtil.isBot(player)); + } + } else { + return true; + } + } + + private EntityLivingBase getTargetEntity() { + if (this.useKillAura.getValue() && this.killAura != null) { + return this.killAura.getTarget(); + } + + EntityLivingBase closest = null; + double closestDist = this.hitRange.getValue(); + + for (Object obj : mc.theWorld.loadedEntityList) { + if (!(obj instanceof EntityLivingBase)) { + continue; + } + + EntityLivingBase entity = (EntityLivingBase) obj; + + if (!this.isValidTarget(entity)) { + continue; + } + + double dist = mc.thePlayer.getDistanceToEntity(entity); + if (dist < closestDist) { + closest = entity; + closestDist = dist; + } + } + + return closest; + } + + private boolean shouldQueue() { + if (this.target == null) { + return false; + } + + Vec3 real = this.realPositions.get(this.target.getEntityId()); + if (real == null) { + return false; + } + + if (!this.adaptive.getValue()) { + double distReal = mc.thePlayer.getDistance( + real.xCoord, real.yCoord, real.zCoord); + double distCurrent = mc.thePlayer.getDistanceToEntity(this.target); + + return distReal + 0.15 < distCurrent + && System.currentTimeMillis() - this.lastReleaseTime <= this.delay.getValue(); + } + + double distReal = mc.thePlayer.getDistance( + real.xCoord, real.yCoord, real.zCoord + ); + double distCurrent = mc.thePlayer.getDistanceToEntity(this.target); + + return distReal < distCurrent; + } + + private void releaseIncoming() { + if (mc.getNetHandler() == null) { + return; + } + + while (!this.incomingPackets.isEmpty()) { + this.incomingPackets.poll().processPacket(mc.getNetHandler()); + } + this.lastReleaseTime = System.currentTimeMillis(); + } + + private void releaseOutgoing() { + while (!this.outgoingPackets.isEmpty()) { + PacketUtil.sendPacketNoEvent(this.outgoingPackets.poll()); + } + this.lastReleaseTime = System.currentTimeMillis(); + } + + private void releaseAll() { + this.releaseIncoming(); + this.releaseOutgoing(); + } + + private boolean blockIncoming(Packet p) { + if (!this.adaptive.getValue()) { + if (p instanceof S12PacketEntityVelocity + || p instanceof S27PacketExplosion) { + return false; + } + + return p instanceof S14PacketEntity + || p instanceof S18PacketEntityTeleport + || p instanceof S19PacketEntityHeadLook + || p instanceof S0FPacketSpawnMob; + } + + return p instanceof S12PacketEntityVelocity + || p instanceof S27PacketExplosion + || p instanceof S14PacketEntity + || p instanceof S18PacketEntityTeleport + || p instanceof S19PacketEntityHeadLook + || p instanceof S0FPacketSpawnMob; + } + + private boolean blockOutgoing(Packet p) { + return p instanceof C03PacketPlayer + || p instanceof C02PacketUseEntity + || p instanceof C0APacketAnimation + || p instanceof C0BPacketEntityAction + || p instanceof C08PacketPlayerBlockPlacement + || p instanceof C07PacketPlayerDigging + || p instanceof C09PacketHeldItemChange + || p instanceof C00PacketKeepAlive + || p instanceof C01PacketPing; + } + + private void handleIncoming(PacketEvent event) { + Packet packet = event.getPacket(); + + if (packet instanceof S14PacketEntity) { + S14PacketEntity p = (S14PacketEntity) packet; + Entity e = p.getEntity(mc.theWorld); + if (e == null) { + return; + } + + int id = e.getEntityId(); + Vec3 pos = this.realPositions.getOrDefault(id, new Vec3(0, 0, 0)); + + this.realPositions.put( + id, + pos.addVector( + p.func_149062_c() / 32.0, + p.func_149061_d() / 32.0, + p.func_149064_e() / 32.0 + ) + ); + } + + if (packet instanceof S18PacketEntityTeleport) { + S18PacketEntityTeleport p = (S18PacketEntityTeleport) packet; + this.realPositions.put( + p.getEntityId(), + new Vec3(p.getX() / 32.0, p.getY() / 32.0, p.getZ() / 32.0) + ); + } + + if (this.shouldQueue()) { + if (this.blockIncoming(packet)) { + this.incomingPackets.add(packet); + event.setCancelled(true); + } + } else { + this.releaseIncoming(); + } + } + + private void handleOutgoing(PacketEvent event) { + Packet packet = event.getPacket(); + + if (!this.legit.getValue()) { + return; + } + + if (this.shouldQueue()) { + if (this.blockOutgoing(packet)) { + this.outgoingPackets.add(packet); + event.setCancelled(true); + } + } else { + this.releaseOutgoing(); + } + } + + @Override + public void onEnabled() { + Module m = Myau.moduleManager.getModule(KillAura.class); + if (m instanceof KillAura) { + this.killAura = (KillAura) m; + } + + this.incomingPackets.clear(); + this.outgoingPackets.clear(); + this.realPositions.clear(); + this.lastRealPos = null; + this.currentRealPos = null; + this.lastReleaseTime = System.currentTimeMillis(); + } + + @Override + public void onDisabled() { + this.releaseAll(); + this.incomingPackets.clear(); + this.outgoingPackets.clear(); + this.realPositions.clear(); + this.lastRealPos = null; + this.currentRealPos = null; + } + + @EventTarget + public void onPacket(PacketEvent event) { + if (!this.isEnabled() || mc.thePlayer == null || mc.theWorld == null) { + return; + } + + Module scaffold = Myau.moduleManager.getModule(Scaffold.class); + if (scaffold != null && scaffold.isEnabled()) { + this.releaseAll(); + this.incomingPackets.clear(); + this.outgoingPackets.clear(); + return; + } + + if (this.useKillAura.getValue() && this.killAura != null) { + this.target = this.killAura.getTarget(); + } + + if (event.getType() == EventType.RECEIVE) { + this.handleIncoming(event); + } else if (event.getType() == EventType.SEND) { + this.handleOutgoing(event); + } + } + + @EventTarget(Priority.LOW) + public void onTick(TickEvent event) { + if (!this.isEnabled() || mc.thePlayer == null) { + return; + } + + switch (event.getType()) { + case PRE: + EntityLivingBase newTarget = this.getTargetEntity(); + + if (this.target != newTarget) { + this.releaseAll(); + this.lastRealPos = null; + this.currentRealPos = null; + } + + this.target = newTarget; + + if (this.target == null) { + return; + } + + Vec3 real = this.realPositions.get(this.target.getEntityId()); + if (real == null) { + return; + } + + double distReal = mc.thePlayer.getDistance(real.xCoord, real.yCoord, real.zCoord); + double distCurrent = mc.thePlayer.getDistanceToEntity(this.target); + + if (mc.thePlayer.maxHurtTime > 0 && mc.thePlayer.hurtTime == mc.thePlayer.maxHurtTime) { + this.releaseAll(); + } + + if (distReal > this.hitRange.getValue() || System.currentTimeMillis() - this.lastReleaseTime > this.delay.getValue()) { + this.releaseAll(); + } + + if (this.adaptive.getValue()) { + if (distCurrent <= distReal) { + this.releaseAll(); + } + + if (this.lastRealPos != null) { + double lastDist = mc.thePlayer.getDistance( + this.lastRealPos.xCoord, + this.lastRealPos.yCoord, + this.lastRealPos.zCoord + ); + + if (distReal < lastDist) { + this.releaseAll(); + } + } + } + + if (this.legit.getValue() && this.releaseOnHit.getValue() && this.target.hurtTime == 1) { + this.releaseAll(); + } + break; + case POST: + Vec3 savedPosition = this.realPositions.get(this.target != null ? this.target.getEntityId() : -1); + if (this.currentRealPos == null) { + this.lastRealPos = savedPosition; + } else { + this.lastRealPos = this.currentRealPos; + } + this.currentRealPos = savedPosition; + } + } + + @EventTarget(Priority.HIGH) + public void onRender3D(Render3DEvent event) { + if (!this.isEnabled()) { + return; + } + + if (this.showPosition.getValue() == 0) { + return; + } + + if (this.target == null) { + return; + } + + Vec3 real = this.realPositions.get(this.target.getEntityId()); + if (real == null || this.lastRealPos == null || this.currentRealPos == null) { + return; + } + + Color color = new Color(-1); + switch (this.showPosition.getValue()) { + case 1: + if (this.target instanceof EntityPlayer) { + color = TeamUtil.getTeamColor((EntityPlayer) this.target, 1.0F); + } else { + color = new Color(255, 0, 0); + } + break; + case 2: + color = ((HUD) Myau.moduleManager.modules.get(HUD.class)).getColor(System.currentTimeMillis()); + } + + double x = RenderUtil.lerpDouble(this.currentRealPos.xCoord, this.lastRealPos.xCoord, event.getPartialTicks()); + double y = RenderUtil.lerpDouble(this.currentRealPos.yCoord, this.lastRealPos.yCoord, event.getPartialTicks()); + double z = RenderUtil.lerpDouble(this.currentRealPos.zCoord, this.lastRealPos.zCoord, event.getPartialTicks()); + + float size = this.target.getCollisionBorderSize(); + AxisAlignedBB aabb = new AxisAlignedBB( + x - (double) this.target.width / 2.0, + y, + z - (double) this.target.width / 2.0, + x + (double) this.target.width / 2.0, + y + (double) this.target.height, + z + (double) this.target.width / 2.0 + ) + .expand(size, size, size) + .offset( + -((IAccessorRenderManager) mc.getRenderManager()).getRenderPosX(), + -((IAccessorRenderManager) mc.getRenderManager()).getRenderPosY(), + -((IAccessorRenderManager) mc.getRenderManager()).getRenderPosZ() + ); + + RenderUtil.enableRenderState(); + RenderUtil.drawFilledBox(aabb, color.getRed(), color.getGreen(), color.getBlue()); + RenderUtil.disableRenderState(); + } + + @Override + public String[] getSuffix() { + return new String[]{String.format("%dms", this.delay.getValue())}; + } +} \ No newline at end of file diff --git a/src/main/java/myau/module/modules/FakeLag.java b/src/main/java/myau/module/modules/FakeLag.java new file mode 100644 index 00000000..96b7c725 --- /dev/null +++ b/src/main/java/myau/module/modules/FakeLag.java @@ -0,0 +1,99 @@ +package myau.module.modules; + +import myau.Myau; +import myau.event.EventTarget; +import myau.event.types.EventType; +import myau.events.PacketEvent; +import myau.events.UpdateEvent; +import myau.module.Module; +import myau.property.properties.IntProperty; +import myau.util.PacketUtil; +import net.minecraft.client.Minecraft; +import net.minecraft.network.Packet; + +import java.util.concurrent.ConcurrentLinkedQueue; + +public class FakeLag extends Module { + + private static final Minecraft mc = Minecraft.getMinecraft(); + + public final IntProperty delay = new IntProperty("delay-ms", 200, 50, 5000); + + private final ConcurrentLinkedQueue packetQueue = new ConcurrentLinkedQueue<>(); + private boolean isDispatching = false; + + public FakeLag() { + super("FakeLag", false); + } + + @Override + public void onEnabled() { + packetQueue.clear(); + this.isDispatching = false; + } + + @Override + public void onDisabled() { + this.isDispatching = true; + while (!packetQueue.isEmpty()) { + PacketUtil.sendPacket(packetQueue.poll().packet); + } + this.isDispatching = false; + } + + @EventTarget + public void onPacket(PacketEvent event) { + if(!this.enabled) return; + if (event.getType() == EventType.SEND) { + if (this.isDispatching) { + return; + } + + if (mc.thePlayer == null || mc.theWorld == null) { + return; + } + + Packet packet = event.getPacket(); + + event.setCancelled(true); + + packetQueue.add(new PacketData(packet, System.currentTimeMillis())); + } + } + + @EventTarget + public void onUpdate(UpdateEvent event) { + if (event.getType() == EventType.PRE) { + if (mc.thePlayer == null) return; + + long currentTime = System.currentTimeMillis(); + long delayTime = this.delay.getValue(); + + if (packetQueue.isEmpty()) return; + + while (!packetQueue.isEmpty()) { + PacketData data = packetQueue.peek(); + + if (currentTime - data.timestamp >= delayTime) { + packetQueue.poll(); + + this.isDispatching = true; + PacketUtil.sendPacket(data.packet); + this.isDispatching = false; + } else { + break; + } + } + } + } + + private static class PacketData { + private final Packet packet; + private final long timestamp; + + public PacketData(Packet packet, long timestamp) { + this.packet = packet; + this.timestamp = timestamp; + } + } +} \ No newline at end of file diff --git a/src/main/java/myau/module/modules/KillAura.java b/src/main/java/myau/module/modules/KillAura.java index 62969e9f..44ebb456 100644 --- a/src/main/java/myau/module/modules/KillAura.java +++ b/src/main/java/myau/module/modules/KillAura.java @@ -1,1034 +1,1046 @@ -package myau.module.modules; - -import com.google.common.base.CaseFormat; -import myau.Myau; -import myau.enums.BlinkModules; -import myau.event.EventManager; -import myau.event.EventTarget; -import myau.event.types.EventType; -import myau.event.types.Priority; -import myau.events.*; -import myau.management.RotationState; -import myau.mixin.IAccessorPlayerControllerMP; -import myau.module.Module; -import myau.property.properties.*; -import myau.util.*; -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.EntityOtherPlayerMP; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.entity.DataWatcher.WatchableObject; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.boss.EntityDragon; -import net.minecraft.entity.boss.EntityWither; -import net.minecraft.entity.monster.EntityIronGolem; -import net.minecraft.entity.monster.EntityMob; -import net.minecraft.entity.monster.EntitySilverfish; -import net.minecraft.entity.monster.EntitySlime; -import net.minecraft.entity.passive.EntityAnimal; -import net.minecraft.entity.passive.EntityBat; -import net.minecraft.entity.passive.EntitySquid; -import net.minecraft.entity.passive.EntityVillager; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemSword; -import net.minecraft.network.play.client.C02PacketUseEntity; -import net.minecraft.network.play.client.C02PacketUseEntity.Action; -import net.minecraft.network.play.client.C07PacketPlayerDigging; -import net.minecraft.network.play.client.C08PacketPlayerBlockPlacement; -import net.minecraft.network.play.client.C09PacketHeldItemChange; -import net.minecraft.network.play.server.S06PacketUpdateHealth; -import net.minecraft.network.play.server.S1CPacketEntityMetadata; -import net.minecraft.util.*; -import net.minecraft.util.MovingObjectPosition.MovingObjectType; -import net.minecraft.world.WorldSettings.GameType; - -import java.awt.*; -import java.text.DecimalFormat; -import java.text.DecimalFormatSymbols; -import java.util.ArrayList; -import java.util.Locale; -import java.util.Random; - -public class KillAura extends Module { - private static final Minecraft mc = Minecraft.getMinecraft(); - private static final DecimalFormat df = new DecimalFormat("+0.0;-0.0", new DecimalFormatSymbols(Locale.US)); - private final TimerUtil timer = new TimerUtil(); - private AttackData target = null; - private int switchTick = 0; - private boolean hitRegistered = false; - private boolean blockingState = false; - private boolean isBlocking = false; - private boolean fakeBlockState = false; - private boolean blinkReset = false; - private long attackDelayMS = 0L; - private int blockTick = 0; - private int lastTickProcessed; - public final ModeProperty mode; - public final ModeProperty sort; - public final ModeProperty autoBlock; - public final BooleanProperty autoBlockRequirePress; - public final FloatProperty autoBlockMinCPS; - public final FloatProperty autoBlockMaxCPS; - public final FloatProperty autoBlockRange; - public final IntProperty blinkTicks; - public final FloatProperty swingRange; - public final FloatProperty attackRange; - public final IntProperty fov; - public final IntProperty minCPS; - public final IntProperty maxCPS; - public final IntProperty switchDelay; - public final ModeProperty rotations; - public final ModeProperty moveFix; - public final PercentProperty smoothing; - public final IntProperty angleStep; - public final BooleanProperty throughWalls; - public final BooleanProperty requirePress; - public final BooleanProperty allowMining; - public final BooleanProperty weaponsOnly; - public final BooleanProperty allowTools; - public final BooleanProperty inventoryCheck; - public final BooleanProperty botCheck; - public final BooleanProperty players; - public final BooleanProperty bosses; - public final BooleanProperty mobs; - public final BooleanProperty animals; - public final BooleanProperty golems; - public final BooleanProperty silverfish; - public final BooleanProperty teams; - public final ModeProperty showTarget; - public final ModeProperty debugLog; - - private long getAttackDelay() { - return this.isBlocking ? (long) (1000.0F / RandomUtil.nextLong(this.autoBlockMinCPS.getValue().longValue(), this.autoBlockMaxCPS.getValue().longValue())) : 1000L / RandomUtil.nextLong(this.minCPS.getValue(), this.maxCPS.getValue()); - } - - private boolean performAttack(float yaw, float pitch) { - if (!Myau.playerStateManager.digging && !Myau.playerStateManager.placing) { - if (this.isPlayerBlocking() && this.autoBlock.getValue() != 1) { - return false; - } else if (this.attackDelayMS > 0L) { - return false; - } else { - this.attackDelayMS = this.attackDelayMS + this.getAttackDelay(); - mc.thePlayer.swingItem(); - if ((this.rotations.getValue() != 0 || !this.isBoxInAttackRange(this.target.getBox())) - && RotationUtil.rayTrace(this.target.getBox(), yaw, pitch, this.attackRange.getValue()) == null) { - return false; - } else { - AttackEvent event = new AttackEvent(this.target.getEntity()); - EventManager.call(event); - ((IAccessorPlayerControllerMP) mc.playerController).callSyncCurrentPlayItem(); - PacketUtil.sendPacket(new C02PacketUseEntity(this.target.getEntity(), Action.ATTACK)); - if (mc.playerController.getCurrentGameType() != GameType.SPECTATOR) { - PlayerUtil.attackEntity(this.target.getEntity()); - } - this.hitRegistered = true; - return true; - } - } - } else { - return false; - } - } - - private void sendUseItem() { - ((IAccessorPlayerControllerMP) mc.playerController).callSyncCurrentPlayItem(); - this.startBlock(mc.thePlayer.getHeldItem()); - } - - private void startBlock(ItemStack itemStack) { - PacketUtil.sendPacket(new C08PacketPlayerBlockPlacement(itemStack)); - mc.thePlayer.setItemInUse(itemStack, itemStack.getMaxItemUseDuration()); - this.blockingState = true; - } - - private void stopBlock() { - PacketUtil.sendPacket(new C07PacketPlayerDigging(C07PacketPlayerDigging.Action.RELEASE_USE_ITEM, BlockPos.ORIGIN, EnumFacing.DOWN)); - mc.thePlayer.stopUsingItem(); - this.blockingState = false; - } - - private void interactAttack(float yaw, float pitch) { - if (this.target != null) { - MovingObjectPosition mop = RotationUtil.rayTrace(this.target.getBox(), yaw, pitch, 8.0); - if (mop != null) { - ((IAccessorPlayerControllerMP) mc.playerController).callSyncCurrentPlayItem(); - PacketUtil.sendPacket( - new C02PacketUseEntity( - this.target.getEntity(), - new Vec3(mop.hitVec.xCoord - this.target.getX(), mop.hitVec.yCoord - this.target.getY(), mop.hitVec.zCoord - this.target.getZ()) - ) - ); - PacketUtil.sendPacket(new C02PacketUseEntity(this.target.getEntity(), Action.INTERACT)); - PacketUtil.sendPacket(new C08PacketPlayerBlockPlacement(mc.thePlayer.getHeldItem())); - mc.thePlayer.setItemInUse(mc.thePlayer.getHeldItem(), mc.thePlayer.getHeldItem().getMaxItemUseDuration()); - this.blockingState = true; - } - } - } - - private boolean canAttack() { - if (this.inventoryCheck.getValue() && mc.currentScreen instanceof GuiContainer) { - return false; - } else if (!(Boolean) this.weaponsOnly.getValue() - || ItemUtil.hasRawUnbreakingEnchant() - || this.allowTools.getValue() && ItemUtil.isHoldingTool()) { - if (((IAccessorPlayerControllerMP) mc.playerController).getIsHittingBlock()) { - return false; - } else if ((ItemUtil.isEating() || ItemUtil.isUsingBow()) && PlayerUtil.isUsingItem()) { - return false; - } else { - AutoHeal autoHeal = (AutoHeal) Myau.moduleManager.modules.get(AutoHeal.class); - if (autoHeal.isEnabled() && autoHeal.isSwitching()) { - return false; - } else { - BedNuker bedNuker = (BedNuker) Myau.moduleManager.modules.get(BedNuker.class); - AutoBlockIn autoBlockIn = (AutoBlockIn) Myau.moduleManager.modules.get(AutoBlockIn.class); - if (bedNuker.isEnabled() && bedNuker.isReady()) { - return false; - } else if (Myau.moduleManager.modules.get(Scaffold.class).isEnabled()) { - return false; - } else if (autoBlockIn.isEnabled()) { - return false; - } else if (this.requirePress.getValue()) { - return PlayerUtil.isAttacking(); - } else { - return !this.allowMining.getValue() || !mc.objectMouseOver.typeOfHit.equals(MovingObjectType.BLOCK) || !PlayerUtil.isAttacking(); - } - } - } - } else { - return false; - } - } - - private boolean canAutoBlock() { - if (!ItemUtil.isHoldingSword()) { - return false; - } else { - return !this.autoBlockRequirePress.getValue() || PlayerUtil.isUsingItem(); - } - } - - private boolean hasValidTarget() { - return mc.theWorld - .loadedEntityList - .stream() - .anyMatch( - entity -> entity instanceof EntityLivingBase - && this.isValidTarget((EntityLivingBase) entity) - && this.isInBlockRange((EntityLivingBase) entity) - ); - } - - private boolean isValidTarget(EntityLivingBase entityLivingBase) { - if (!mc.theWorld.loadedEntityList.contains(entityLivingBase)) { - return false; - } else if (entityLivingBase != mc.thePlayer && entityLivingBase != mc.thePlayer.ridingEntity) { - if (entityLivingBase == mc.getRenderViewEntity() || entityLivingBase == mc.getRenderViewEntity().ridingEntity) { - return false; - } else if (entityLivingBase.deathTime > 0) { - return false; - } else if (RotationUtil.angleToEntity(entityLivingBase) > this.fov.getValue().floatValue()) { - return false; - } else if (!this.throughWalls.getValue() && RotationUtil.rayTrace(entityLivingBase) != null) { - return false; - } else if (entityLivingBase instanceof EntityOtherPlayerMP) { - if (!this.players.getValue()) { - return false; - } else if (TeamUtil.isFriend((EntityPlayer) entityLivingBase)) { - return false; - } else { - return (!this.teams.getValue() || !TeamUtil.isSameTeam((EntityPlayer) entityLivingBase)) && (!this.botCheck.getValue() || !TeamUtil.isBot((EntityPlayer) entityLivingBase)); - } - } else if (entityLivingBase instanceof EntityDragon || entityLivingBase instanceof EntityWither) { - return this.bosses.getValue(); - } else if (!(entityLivingBase instanceof EntityMob) && !(entityLivingBase instanceof EntitySlime)) { - if (entityLivingBase instanceof EntityAnimal - || entityLivingBase instanceof EntityBat - || entityLivingBase instanceof EntitySquid - || entityLivingBase instanceof EntityVillager) { - return this.animals.getValue(); - } else if (!(entityLivingBase instanceof EntityIronGolem)) { - return false; - } else { - return this.golems.getValue() && (!this.teams.getValue() || !TeamUtil.hasTeamColor(entityLivingBase)); - } - } else if (!(entityLivingBase instanceof EntitySilverfish)) { - return this.mobs.getValue(); - } else { - return this.silverfish.getValue() && (!this.teams.getValue() || !TeamUtil.hasTeamColor(entityLivingBase)); - } - } else { - return false; - } - } - - private boolean isInRange(EntityLivingBase entityLivingBase) { - return this.isInBlockRange(entityLivingBase) || this.isInSwingRange(entityLivingBase) || this.isInAttackRange(entityLivingBase); - } - - private boolean isInBlockRange(EntityLivingBase entityLivingBase) { - return RotationUtil.distanceToEntity(entityLivingBase) <= (double) this.autoBlockRange.getValue(); - } - - private boolean isInSwingRange(EntityLivingBase entityLivingBase) { - return RotationUtil.distanceToEntity(entityLivingBase) <= (double) this.swingRange.getValue(); - } - - private boolean isBoxInSwingRange(AxisAlignedBB axisAlignedBB) { - return RotationUtil.distanceToBox(axisAlignedBB) <= (double) this.swingRange.getValue(); - } - - private boolean isInAttackRange(EntityLivingBase entityLivingBase) { - return RotationUtil.distanceToEntity(entityLivingBase) <= (double) this.attackRange.getValue(); - } - - private boolean isBoxInAttackRange(AxisAlignedBB axisAlignedBB) { - return RotationUtil.distanceToBox(axisAlignedBB) <= (double) this.attackRange.getValue(); - } - - private boolean isPlayerTarget(EntityLivingBase entityLivingBase) { - return entityLivingBase instanceof EntityPlayer && TeamUtil.isTarget((EntityPlayer) entityLivingBase); - } - - private int findEmptySlot(int currentSlot) { - for (int i = 0; i < 9; i++) { - if (i != currentSlot && mc.thePlayer.inventory.getStackInSlot(i) == null) { - return i; - } - } - for (int i = 0; i < 9; i++) { - if (i != currentSlot) { - ItemStack stack = mc.thePlayer.inventory.getStackInSlot(i); - if (stack != null && !stack.hasDisplayName()) { - return i; - } - } - } - return Math.floorMod(currentSlot - 1, 9); - } - - private int findSwordSlot(int currentSlot) { - for (int i = 0; i < 9; i++) { - if (i != currentSlot) { - ItemStack item = mc.thePlayer.inventory.getStackInSlot(i); - if (item != null && item.getItem() instanceof ItemSword) { - return i; - } - } - } - return -1; - } - - public KillAura() { - super("KillAura", false); - this.lastTickProcessed = 0; - this.mode = new ModeProperty("mode", 0, new String[]{"SINGLE", "SWITCH"}); - this.sort = new ModeProperty("sort", 0, new String[]{"DISTANCE", "HEALTH", "HURT_TIME", "FOV"}); - this.autoBlock = new ModeProperty( - "auto-block", 2, new String[]{"NONE", "VANILLA", "SPOOF", "HYPIXEL", "BLINK", "INTERACT", "SWAP", "LEGIT", "FAKE"} - ); - this.autoBlockRequirePress = new BooleanProperty("auto-block-require-press", false); - this.autoBlockMinCPS = new FloatProperty("auto-block-min-aps", 8.0F, 1.0F, 20.0F); - this.autoBlockMaxCPS = new FloatProperty("auto-block-max-aps", 10.0F, 1.0F, 20.0F); - this.autoBlockRange = new FloatProperty("auto-block-range", 6.0F, 3.0F, 8.0F); - this.blinkTicks = new IntProperty("blink-ticks", 1, 1, 10, () -> this.autoBlock.getValue() == 4); - this.swingRange = new FloatProperty("swing-range", 3.5F, 3.0F, 6.0F); - this.attackRange = new FloatProperty("attack-range", 3.0F, 3.0F, 6.0F); - this.fov = new IntProperty("fov", 360, 30, 360); - this.minCPS = new IntProperty("min-aps", 14, 1, 20); - this.maxCPS = new IntProperty("max-aps", 14, 1, 20); - this.switchDelay = new IntProperty("switch-delay", 150, 0, 1000); - this.rotations = new ModeProperty("rotations", 2, new String[]{"NONE", "LEGIT", "SILENT", "LOCK_VIEW"}); - this.moveFix = new ModeProperty("move-fix", 1, new String[]{"NONE", "SILENT", "STRICT"}); - this.smoothing = new PercentProperty("smoothing", 0); - this.angleStep = new IntProperty("angle-step", 90, 30, 180); - this.throughWalls = new BooleanProperty("through-walls", true); - this.requirePress = new BooleanProperty("require-press", false); - this.allowMining = new BooleanProperty("allow-mining", true); - this.weaponsOnly = new BooleanProperty("weapons-only", true); - this.allowTools = new BooleanProperty("allow-tools", false, this.weaponsOnly::getValue); - this.inventoryCheck = new BooleanProperty("inventory-check", true); - this.botCheck = new BooleanProperty("bot-check", true); - this.players = new BooleanProperty("players", true); - this.bosses = new BooleanProperty("bosses", false); - this.mobs = new BooleanProperty("mobs", false); - this.animals = new BooleanProperty("animals", false); - this.golems = new BooleanProperty("golems", false); - this.silverfish = new BooleanProperty("silverfish", false); - this.teams = new BooleanProperty("teams", true); - this.showTarget = new ModeProperty("show-target", 0, new String[]{"NONE", "DEFAULT", "HUD"}); - this.debugLog = new ModeProperty("debug-log", 0, new String[]{"NONE", "HEALTH"}); - } - - public EntityLivingBase getTarget() { - return this.target != null ? this.target.getEntity() : null; - } - - public boolean isAttackAllowed() { - Scaffold scaffold = (Scaffold) Myau.moduleManager.modules.get(Scaffold.class); - if (scaffold.isEnabled()) { - return false; - } else if (!this.weaponsOnly.getValue() - || ItemUtil.hasRawUnbreakingEnchant() - || this.allowTools.getValue() && ItemUtil.isHoldingTool()) { - return !this.requirePress.getValue() || KeyBindUtil.isKeyDown(mc.gameSettings.keyBindAttack.getKeyCode()); - } else { - return false; - } - } - - public boolean shouldAutoBlock() { - if (this.isPlayerBlocking() && this.isBlocking) { - return !mc.thePlayer.isInWater() && !mc.thePlayer.isInLava() && (this.autoBlock.getValue() == 3 // HYPIXEL - || this.autoBlock.getValue() == 4 // BLINK - || this.autoBlock.getValue() == 5 // INTERACT - || this.autoBlock.getValue() == 6 // SWAP - || this.autoBlock.getValue() == 7); // LEGIT - } else { - return false; - } - } - - public boolean isBlocking() { - return this.fakeBlockState && ItemUtil.isHoldingSword(); - } - - public boolean isPlayerBlocking() { - return (mc.thePlayer.isUsingItem() || this.blockingState) && ItemUtil.isHoldingSword(); - } - - @EventTarget(Priority.LOW) - public void onUpdate(UpdateEvent event) { - if (event.getType() == EventType.POST && this.blinkReset) { - this.blinkReset = false; - Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); - Myau.blinkManager.setBlinkState(true, BlinkModules.AUTO_BLOCK); - } - if (this.isEnabled() && event.getType() == EventType.PRE) { - if (this.attackDelayMS > 0L) { - this.attackDelayMS -= 50L; - } - boolean attack = this.target != null && this.canAttack(); - boolean block = attack && this.canAutoBlock(); - if (!block) { - Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); - this.isBlocking = false; - this.fakeBlockState = false; - this.blockTick = 0; - } - if (attack) { - boolean swap = false; - boolean blocked = false; - if (block) { - switch (this.autoBlock.getValue()) { - case 0: // NONE - if (PlayerUtil.isUsingItem()) { - this.isBlocking = true; - if (!this.isPlayerBlocking() && !Myau.playerStateManager.digging && !Myau.playerStateManager.placing) { - swap = true; - } - } else { - this.isBlocking = false; - if (this.isPlayerBlocking() && !Myau.playerStateManager.digging && !Myau.playerStateManager.placing) { - this.stopBlock(); - } - } - Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); - this.fakeBlockState = false; - break; - case 1: // VANILLA - if (this.hasValidTarget()) { - if (!this.isPlayerBlocking() && !Myau.playerStateManager.digging && !Myau.playerStateManager.placing) { - swap = true; - } - Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); - this.isBlocking = true; - this.fakeBlockState = false; - } else { - Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); - this.isBlocking = false; - this.fakeBlockState = false; - } - break; - case 2: // SPOOF - if (this.hasValidTarget()) { - int item = ((IAccessorPlayerControllerMP) mc.playerController).getCurrentPlayerItem(); - if (Myau.playerStateManager.digging - || Myau.playerStateManager.placing - || mc.thePlayer.inventory.currentItem != item - || this.isPlayerBlocking() && this.blockTick != 0 - || this.attackDelayMS > 0L && this.attackDelayMS <= 50L) { - this.blockTick = 0; - } else { - int slot = this.findEmptySlot(item); - PacketUtil.sendPacket(new C09PacketHeldItemChange(slot)); - PacketUtil.sendPacket(new C09PacketHeldItemChange(item)); - swap = true; - this.blockTick = 1; - } - Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); - this.isBlocking = true; - this.fakeBlockState = false; - } else { - Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); - this.isBlocking = false; - this.fakeBlockState = false; - } - break; - case 3: // HYPIXEL - if (this.hasValidTarget()) { - if (!Myau.playerStateManager.digging && !Myau.playerStateManager.placing) { - switch (this.blockTick) { - case 0: - if (!this.isPlayerBlocking()) { - swap = true; - } - blocked = true; - this.blockTick = 1; - break; - case 1: - if (this.isPlayerBlocking()) { - if(Myau.moduleManager.modules.get(NoSlow.class).isEnabled()){ - int randomSlot = new Random().nextInt(9); - while (randomSlot == mc.thePlayer.inventory.currentItem) { - randomSlot = new Random().nextInt(9); - } - PacketUtil.sendPacket(new C09PacketHeldItemChange(randomSlot)); - PacketUtil.sendPacket(new C09PacketHeldItemChange(mc.thePlayer.inventory.currentItem)); - } - this.stopBlock(); - attack = false; - } - if (this.attackDelayMS <= 50L) { - this.blockTick = 0; - } - break; - default: - this.blockTick = 0; - } - } - this.isBlocking = true; - this.fakeBlockState = true; - } else { - Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); - this.isBlocking = false; - this.fakeBlockState = false; - } - break; - case 4: // BLINK - if (this.hasValidTarget()) { - if (!Myau.playerStateManager.digging && !Myau.playerStateManager.placing) { - switch (this.blockTick) { - case 0: - if (!this.isPlayerBlocking()) { - swap = true; - } - this.blinkReset = true; - this.blockTick = 1; - break; - default: - if (this.blockTick >= this.blinkTicks.getValue()) { - if (this.isPlayerBlocking()) { - this.stopBlock(); - attack = false; - } - if (this.attackDelayMS <= 50L) { - this.blockTick = 0; - } - } else { - this.blockTick++; - } - break; - } - } - this.isBlocking = true; - this.fakeBlockState = true; - } else { - Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); - this.isBlocking = false; - this.fakeBlockState = false; - } - break; - case 5: // INTERACT - if (this.hasValidTarget()) { - int item = ((IAccessorPlayerControllerMP) mc.playerController).getCurrentPlayerItem(); - if (mc.thePlayer.inventory.currentItem == item && !Myau.playerStateManager.digging && !Myau.playerStateManager.placing) { - switch (this.blockTick) { - case 0: - if (!this.isPlayerBlocking()) { - swap = true; - } - this.blinkReset = true; - this.blockTick = 1; - break; - case 1: - if (this.isPlayerBlocking()) { - int slot = this.findEmptySlot(item); - PacketUtil.sendPacket(new C09PacketHeldItemChange(slot)); - ((IAccessorPlayerControllerMP) mc.playerController).setCurrentPlayerItem(slot); - attack = false; - } - if (this.attackDelayMS <= 50L) { - this.blockTick = 0; - } - break; - default: - this.blockTick = 0; - } - } - this.isBlocking = true; - this.fakeBlockState = true; - } else { - Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); - this.isBlocking = false; - this.fakeBlockState = false; - } - break; - case 6: // SWAP - if (this.hasValidTarget()) { - int item = ((IAccessorPlayerControllerMP) mc.playerController).getCurrentPlayerItem(); - if (mc.thePlayer.inventory.currentItem == item && !Myau.playerStateManager.digging && !Myau.playerStateManager.placing) { - switch (this.blockTick) { - case 0: - int slot = this.findSwordSlot(item); - if (slot != -1) { - if (!this.isPlayerBlocking()) { - swap = true; - } - this.blockTick = 1; - } - break; - case 1: - int swordsSlot = this.findSwordSlot(item); - if (swordsSlot == -1) { - this.blockTick = 0; - } else if (!this.isPlayerBlocking()) { - swap = true; - } else if (this.attackDelayMS <= 50L) { - PacketUtil.sendPacket(new C09PacketHeldItemChange(swordsSlot)); - ((IAccessorPlayerControllerMP) mc.playerController).setCurrentPlayerItem(swordsSlot); - this.startBlock(mc.thePlayer.inventory.getStackInSlot(swordsSlot)); - attack = false; - this.blockTick = 0; - } - break; - default: - this.blockTick = 0; - } - Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); - this.isBlocking = true; - this.fakeBlockState = true; - break; - } - } - Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); - this.isBlocking = false; - this.fakeBlockState = false; - break; - case 7: // LEGIT - if (this.hasValidTarget()) { - if (!Myau.playerStateManager.digging && !Myau.playerStateManager.placing) { - switch (this.blockTick) { - case 0: - if (!this.isPlayerBlocking()) { - swap = true; - } - this.blockTick = 1; - break; - case 1: - if (this.isPlayerBlocking() && this.attackDelayMS <= 100L) { - this.stopBlock(); - this.blockTick = 2; - } - break; - case 2: - if (!this.isPlayerBlocking() && this.attackDelayMS <= 50L) { - swap = true; - this.blockTick = 1; - } - break; - default: - this.blockTick = 0; - } - } - Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); - this.isBlocking = true; - this.fakeBlockState = false; - } else { - Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); - this.isBlocking = false; - this.fakeBlockState = false; - this.blockTick = 0; - } - break; - case 8: // FAKE - Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); - this.isBlocking = false; - this.fakeBlockState = this.hasValidTarget(); - if (PlayerUtil.isUsingItem() - && !this.isPlayerBlocking() - && !Myau.playerStateManager.digging - && !Myau.playerStateManager.placing) { - swap = true; - } - } - } - boolean attacked = false; - if (this.isBoxInSwingRange(this.target.getBox())) { - if (this.rotations.getValue() == 2 || this.rotations.getValue() == 3) { - float[] rotations = RotationUtil.getRotationsToBox( - this.target.getBox(), - event.getYaw(), - event.getPitch(), - (float) this.angleStep.getValue() + RandomUtil.nextFloat(-5.0F, 5.0F), - (float) this.smoothing.getValue() / 100.0F - ); - event.setRotation(rotations[0], rotations[1], 1); - if (this.rotations.getValue() == 3) { - Myau.rotationManager.setRotation(rotations[0], rotations[1], 1, true); - } - if (this.moveFix.getValue() != 0 || this.rotations.getValue() == 3) { - event.setPervRotation(rotations[0], 1); - } - } - if (attack) { - attacked = this.performAttack(event.getNewYaw(), event.getNewPitch()); - } - } - if (swap) { - if (attacked) { - this.interactAttack(event.getNewYaw(), event.getNewPitch()); - } else { - this.sendUseItem(); - } - } - if (blocked) { - Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); - Myau.blinkManager.setBlinkState(true, BlinkModules.AUTO_BLOCK); - } - } - } - } - - @EventTarget - public void onTick(TickEvent event) { - if (this.isEnabled()) { - switch (event.getType()) { - case PRE: - if (this.target == null - || !this.isValidTarget(this.target.getEntity()) - || !this.isBoxInAttackRange(this.target.getBox()) - || !this.isBoxInSwingRange(this.target.getBox()) - || this.timer.hasTimeElapsed(this.switchDelay.getValue().longValue())) { - this.timer.reset(); - ArrayList targets = new ArrayList<>(); - for (Entity entity : mc.theWorld.loadedEntityList) { - if (entity instanceof EntityLivingBase - && this.isValidTarget((EntityLivingBase) entity) - && this.isInRange((EntityLivingBase) entity)) { - targets.add((EntityLivingBase) entity); - } - } - if (targets.isEmpty()) { - this.target = null; - } else { - if (targets.stream().anyMatch(this::isInSwingRange)) { - targets.removeIf(entityLivingBase -> !this.isInSwingRange(entityLivingBase)); - } - if (targets.stream().anyMatch(this::isInAttackRange)) { - targets.removeIf(entityLivingBase -> !this.isInAttackRange(entityLivingBase)); - } - if (targets.stream().anyMatch(this::isPlayerTarget)) { - targets.removeIf(entityLivingBase -> !this.isPlayerTarget(entityLivingBase)); - } - targets.sort( - (entityLivingBase1, entityLivingBase2) -> { - int sortBase = 0; - switch (this.sort.getValue()) { - case 1: - sortBase = Float.compare(TeamUtil.getHealthScore(entityLivingBase1), TeamUtil.getHealthScore(entityLivingBase2)); - break; - case 2: - sortBase = Integer.compare(entityLivingBase1.hurtResistantTime, entityLivingBase2.hurtResistantTime); - break; - case 3: - sortBase = Float.compare( - RotationUtil.angleToEntity(entityLivingBase1), - RotationUtil.angleToEntity(entityLivingBase2) - ); - } - return sortBase != 0 - ? sortBase - : Double.compare(RotationUtil.distanceToEntity(entityLivingBase1), RotationUtil.distanceToEntity(entityLivingBase2)); - } - ); - if (this.mode.getValue() == 1 && this.hitRegistered) { - this.hitRegistered = false; - this.switchTick++; - } - if (this.mode.getValue() == 0 || this.switchTick >= targets.size()) { - this.switchTick = 0; - } - this.target = new AttackData(targets.get(this.switchTick)); - } - } - if (this.target != null) { - this.target = new AttackData(this.target.getEntity()); - } - break; - case POST: - if (this.isPlayerBlocking() && !mc.thePlayer.isBlocking()) { - mc.thePlayer.setItemInUse(mc.thePlayer.getHeldItem(), mc.thePlayer.getHeldItem().getMaxItemUseDuration()); - } - } - } - } - - @EventTarget(Priority.LOWEST) - public void onPacket(PacketEvent event) { - if (this.isEnabled() && !event.isCancelled() && mc.thePlayer != null && mc.theWorld != null) { - if (event.getPacket() instanceof C07PacketPlayerDigging) { - C07PacketPlayerDigging packet = (C07PacketPlayerDigging) event.getPacket(); - if (packet.getStatus() == C07PacketPlayerDigging.Action.RELEASE_USE_ITEM) { - this.blockingState = false; - } - } - if (event.getPacket() instanceof C09PacketHeldItemChange) { - this.blockingState = false; - if (this.isBlocking) { - mc.thePlayer.stopUsingItem(); - } - } - if (this.debugLog.getValue() == 1 && this.isAttackAllowed()) { - if (event.getPacket() instanceof S06PacketUpdateHealth) { - float packet = ((S06PacketUpdateHealth) event.getPacket()).getHealth() - mc.thePlayer.getHealth(); - if (packet != 0.0F && this.lastTickProcessed != mc.thePlayer.ticksExisted) { - this.lastTickProcessed = mc.thePlayer.ticksExisted; - ChatUtil.sendFormatted( - String.format( - "%sHealth: %s&l%s&r (&otick: %d&r)&r", - Myau.clientName, - packet > 0.0F ? "&a" : "&c", - df.format(packet), - mc.thePlayer.ticksExisted - ) - ); - } - } - if (event.getPacket() instanceof S1CPacketEntityMetadata) { - S1CPacketEntityMetadata packet = (S1CPacketEntityMetadata) event.getPacket(); - if (packet.getEntityId() == mc.thePlayer.getEntityId()) { - for (WatchableObject watchableObject : packet.func_149376_c()) { - if (watchableObject.getDataValueId() == 6) { - float diff = (Float) watchableObject.getObject() - mc.thePlayer.getHealth(); - if (diff != 0.0F && this.lastTickProcessed != mc.thePlayer.ticksExisted) { - this.lastTickProcessed = mc.thePlayer.ticksExisted; - ChatUtil.sendFormatted( - String.format( - "%sHealth: %s&l%s&r (&otick: %d&r)&r", - Myau.clientName, - diff > 0.0F ? "&a" : "&c", - df.format(diff), - mc.thePlayer.ticksExisted - ) - ); - } - } - } - } - } - } - } - } - - @EventTarget - public void onMove(MoveInputEvent event) { - if (this.isEnabled()) { - if (this.moveFix.getValue() == 1 - && this.rotations.getValue() != 3 - && RotationState.isActived() - && RotationState.getPriority() == 1.0F - && MoveUtil.isForwardPressed()) { - MoveUtil.fixStrafe(RotationState.getSmoothedYaw()); - } - if (this.shouldAutoBlock()) { - mc.thePlayer.movementInput.jump = false; - } - } - } - - @EventTarget - public void onRender(Render3DEvent event) { - if (this.isEnabled() && target != null) { - if (this.showTarget.getValue() != 0 - && TeamUtil.isEntityLoaded(this.target.getEntity()) - && this.isAttackAllowed()) { - Color color = new Color(-1); - switch (this.showTarget.getValue()) { - case 1: - if (this.target.getEntity().hurtTime > 0) { - color = new Color(16733525); - } else { - color = new Color(5635925); - } - break; - case 2: - color = ((HUD) Myau.moduleManager.modules.get(HUD.class)).getColor(System.currentTimeMillis()); - } - RenderUtil.enableRenderState(); - RenderUtil.drawEntityBox(this.target.getEntity(), color.getRed(), color.getGreen(), color.getBlue()); - RenderUtil.disableRenderState(); - } - } - } - - @EventTarget - public void onLeftClick(LeftClickMouseEvent event) { - if (this.isBlocking) { - event.setCancelled(true); - } else { - if (this.isEnabled() && this.target != null && this.canAttack()) { - event.setCancelled(true); - } - } - } - - @EventTarget - public void onRightClick(RightClickMouseEvent event) { - if (this.isBlocking) { - event.setCancelled(true); - } else { - if (this.isEnabled() && this.target != null && this.canAttack()) { - event.setCancelled(true); - } - } - } - - @EventTarget - public void onHitBlock(HitBlockEvent event) { - if (this.isBlocking) { - event.setCancelled(true); - } else { - if (this.isEnabled() && this.target != null && this.canAttack()) { - event.setCancelled(true); - } - } - } - - @EventTarget - public void onCancelUse(CancelUseEvent event) { - if (this.isBlocking) { - event.setCancelled(true); - } - } - - @Override - public void onEnabled() { - this.target = null; - this.switchTick = 0; - this.hitRegistered = false; - this.attackDelayMS = 0L; - this.blockTick = 0; - } - - @Override - public void onDisabled() { - Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); - this.blockingState = false; - this.isBlocking = false; - this.fakeBlockState = false; - } - - @Override - public void verifyValue(String value) { - boolean badCps = this.autoBlock.getValue() == 2 - || this.autoBlock.getValue() == 3 - || this.autoBlock.getValue() == 4 - || this.autoBlock.getValue() == 5 - || this.autoBlock.getValue() == 6 - || this.autoBlock.getValue() == 7; - if (!this.autoBlock.getName().equals(value)) { - if (this.swingRange.getName().equals(value)) { - if (this.swingRange.getValue() < this.attackRange.getValue()) { - this.attackRange.setValue(this.swingRange.getValue()); - } - } else if (this.attackRange.getName().equals(value)) { - if (this.swingRange.getValue() < this.attackRange.getValue()) { - this.swingRange.setValue(this.attackRange.getValue()); - } - } else if (this.minCPS.getName().equals(value)) { - if (this.minCPS.getValue() > this.maxCPS.getValue()) { - this.maxCPS.setValue(this.minCPS.getValue()); - } - } else if (this.autoBlockMinCPS.getName().equals(value)) { - if (this.autoBlockMinCPS.getValue() > this.autoBlockMaxCPS.getValue()) { - this.autoBlockMaxCPS.setValue(this.autoBlockMinCPS.getValue()); - } - if(autoBlockMinCPS.getValue() > 10.0F && badCps){ - autoBlockMinCPS.setValue(10.0F); - } - } else if (this.autoBlockMaxCPS.getName().equals(value)) { - if (this.autoBlockMinCPS.getValue() > this.autoBlockMaxCPS.getValue()) { - this.autoBlockMinCPS.setValue(this.autoBlockMaxCPS.getValue()); - } - if(autoBlockMaxCPS.getValue() > 10.0F && badCps){ - autoBlockMaxCPS.setValue(10.0F); - } - } else { - if (this.maxCPS.getName().equals(value) && this.minCPS.getValue() > this.maxCPS.getValue()) { - this.minCPS.setValue(this.maxCPS.getValue()); - } - } - } else { - if (badCps && (this.autoBlockMinCPS.getValue() > 10.0F || this.autoBlockMaxCPS.getValue() > 10.0F)) { - this.autoBlockMinCPS.setValue(8.0F); - this.autoBlockMaxCPS.setValue(10.0F); - } - } - } - - @Override - public String[] getSuffix() { - return new String[]{CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, this.mode.getModeString())}; - } - - public static class AttackData { - private final EntityLivingBase entity; - private final AxisAlignedBB box; - private final double x; - private final double y; - private final double z; - - public AttackData(EntityLivingBase entityLivingBase) { - this.entity = entityLivingBase; - double collisionBorderSize = entityLivingBase.getCollisionBorderSize(); - this.box = entityLivingBase.getEntityBoundingBox().expand(collisionBorderSize, collisionBorderSize, collisionBorderSize); - this.x = entityLivingBase.posX; - this.y = entityLivingBase.posY; - this.z = entityLivingBase.posZ; - } - - public EntityLivingBase getEntity() { - return this.entity; - } - - public AxisAlignedBB getBox() { - return this.box; - } - - public double getX() { - return this.x; - } - - public double getY() { - return this.y; - } - - public double getZ() { - return this.z; - } - } -} +package myau.module.modules; + +import com.google.common.base.CaseFormat; +import myau.Myau; +import myau.enums.BlinkModules; +import myau.event.EventManager; +import myau.event.EventTarget; +import myau.event.types.EventType; +import myau.event.types.Priority; +import myau.events.*; +import myau.management.RotationState; +import myau.mixin.IAccessorPlayerControllerMP; +import myau.module.Module; +import myau.property.properties.*; +import myau.util.*; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityOtherPlayerMP; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.entity.DataWatcher.WatchableObject; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.boss.EntityDragon; +import net.minecraft.entity.boss.EntityWither; +import net.minecraft.entity.monster.EntityIronGolem; +import net.minecraft.entity.monster.EntityMob; +import net.minecraft.entity.monster.EntitySilverfish; +import net.minecraft.entity.monster.EntitySlime; +import net.minecraft.entity.passive.EntityAnimal; +import net.minecraft.entity.passive.EntityBat; +import net.minecraft.entity.passive.EntitySquid; +import net.minecraft.entity.passive.EntityVillager; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemSword; +import net.minecraft.network.play.client.C02PacketUseEntity; +import net.minecraft.network.play.client.C02PacketUseEntity.Action; +import net.minecraft.network.play.client.C07PacketPlayerDigging; +import net.minecraft.network.play.client.C08PacketPlayerBlockPlacement; +import net.minecraft.network.play.client.C09PacketHeldItemChange; +import net.minecraft.network.play.server.S06PacketUpdateHealth; +import net.minecraft.network.play.server.S1CPacketEntityMetadata; +import net.minecraft.util.*; +import net.minecraft.util.MovingObjectPosition.MovingObjectType; +import net.minecraft.world.WorldSettings.GameType; + +import java.awt.*; +import java.text.DecimalFormat; +import java.text.DecimalFormatSymbols; +import java.util.ArrayList; +import java.util.Locale; +import java.util.Random; + +public class KillAura extends Module { + private static final Minecraft mc = Minecraft.getMinecraft(); + private static final DecimalFormat df = new DecimalFormat("+0.0;-0.0", new DecimalFormatSymbols(Locale.US)); + private final TimerUtil timer = new TimerUtil(); + private AttackData target = null; + private int switchTick = 0; + private boolean hitRegistered = false; + private boolean blockingState = false; + private boolean isBlocking = false; + private boolean fakeBlockState = false; + private boolean blinkReset = false; + private long attackDelayMS = 0L; + private int blockTick = 0; + private int lastTickProcessed; + public final ModeProperty mode; + public final ModeProperty sort; + public final ModeProperty autoBlock; + public final BooleanProperty autoBlockRequirePress; + public final FloatProperty autoBlockMinCPS; + public final FloatProperty autoBlockMaxCPS; + public final FloatProperty autoBlockRange; + public final IntProperty maxHurtTime; + public final IntProperty blinkTicks; + public final IntProperty holdTicks; + public final BooleanProperty preventDelay; + public final FloatProperty swingRange; + public final FloatProperty attackRange; + public final IntProperty fov; + public final IntProperty minCPS; + public final IntProperty maxCPS; + public final IntProperty switchDelay; + public final ModeProperty rotations; + public final ModeProperty moveFix; + public final PercentProperty smoothing; + public final IntProperty angleStep; + public final BooleanProperty throughWalls; + public final BooleanProperty requirePress; + public final BooleanProperty allowMining; + public final BooleanProperty weaponsOnly; + public final BooleanProperty allowTools; + public final BooleanProperty inventoryCheck; + public final BooleanProperty botCheck; + public final BooleanProperty players; + public final BooleanProperty bosses; + public final BooleanProperty mobs; + public final BooleanProperty animals; + public final BooleanProperty golems; + public final BooleanProperty silverfish; + public final BooleanProperty teams; + public final ModeProperty showTarget; + public final ModeProperty debugLog; + + private long getAttackDelay() { + return this.isBlocking ? (long) (1000.0F / RandomUtil.nextLong(this.autoBlockMinCPS.getValue().longValue(), this.autoBlockMaxCPS.getValue().longValue())) : 1000L / RandomUtil.nextLong(this.minCPS.getValue(), this.maxCPS.getValue()); + } + + private boolean performAttack(float yaw, float pitch) { + if (!Myau.playerStateManager.digging && !Myau.playerStateManager.placing) { + if (this.isPlayerBlocking() && this.autoBlock.getValue() != 1) { + return false; + } else if (this.attackDelayMS > 0L) { + return false; + } else { + this.attackDelayMS = this.attackDelayMS + this.getAttackDelay(); + mc.thePlayer.swingItem(); + if ((this.rotations.getValue() != 0 || !this.isBoxInAttackRange(this.target.getBox())) + && RotationUtil.rayTrace(this.target.getBox(), yaw, pitch, this.attackRange.getValue()) == null) { + return false; + } else { + AttackEvent event = new AttackEvent(this.target.getEntity()); + EventManager.call(event); + ((IAccessorPlayerControllerMP) mc.playerController).callSyncCurrentPlayItem(); + PacketUtil.sendPacket(new C02PacketUseEntity(this.target.getEntity(), Action.ATTACK)); + if (mc.playerController.getCurrentGameType() != GameType.SPECTATOR) { + PlayerUtil.attackEntity(this.target.getEntity()); + } + this.hitRegistered = true; + + // Prevent Delaying Attacks logic: stop blinking immediately upon attack + if (this.autoBlock.getValue() == 4 && this.preventDelay.getValue()) { + this.blockTick = 0; + } + + return true; + } + } + } else { + return false; + } + } + + private void sendUseItem() { + ((IAccessorPlayerControllerMP) mc.playerController).callSyncCurrentPlayItem(); + this.startBlock(mc.thePlayer.getHeldItem()); + } + + private void startBlock(ItemStack itemStack) { + PacketUtil.sendPacket(new C08PacketPlayerBlockPlacement(itemStack)); + mc.thePlayer.setItemInUse(itemStack, itemStack.getMaxItemUseDuration()); + this.blockingState = true; + } + + private void stopBlock() { + PacketUtil.sendPacket(new C07PacketPlayerDigging(C07PacketPlayerDigging.Action.RELEASE_USE_ITEM, BlockPos.ORIGIN, EnumFacing.DOWN)); + mc.thePlayer.stopUsingItem(); + this.blockingState = false; + } + + private void interactAttack(float yaw, float pitch) { + if (this.target != null) { + MovingObjectPosition mop = RotationUtil.rayTrace(this.target.getBox(), yaw, pitch, 8.0); + if (mop != null) { + ((IAccessorPlayerControllerMP) mc.playerController).callSyncCurrentPlayItem(); + PacketUtil.sendPacket( + new C02PacketUseEntity( + this.target.getEntity(), + new Vec3(mop.hitVec.xCoord - this.target.getX(), mop.hitVec.yCoord - this.target.getY(), mop.hitVec.zCoord - this.target.getZ()) + ) + ); + PacketUtil.sendPacket(new C02PacketUseEntity(this.target.getEntity(), Action.INTERACT)); + PacketUtil.sendPacket(new C08PacketPlayerBlockPlacement(mc.thePlayer.getHeldItem())); + mc.thePlayer.setItemInUse(mc.thePlayer.getHeldItem(), mc.thePlayer.getHeldItem().getMaxItemUseDuration()); + this.blockingState = true; + } + } + } + + private boolean canAttack() { + if (this.inventoryCheck.getValue() && mc.currentScreen instanceof GuiContainer) { + return false; + } else if (!(Boolean) this.weaponsOnly.getValue() + || ItemUtil.hasRawUnbreakingEnchant() + || this.allowTools.getValue() && ItemUtil.isHoldingTool()) { + if (((IAccessorPlayerControllerMP) mc.playerController).getIsHittingBlock()) { + return false; + } else if ((ItemUtil.isEating() || ItemUtil.isUsingBow()) && PlayerUtil.isUsingItem()) { + return false; + } else { + AutoHeal autoHeal = (AutoHeal) Myau.moduleManager.modules.get(AutoHeal.class); + if (autoHeal.isEnabled() && autoHeal.isSwitching()) { + return false; + } else { + BedNuker bedNuker = (BedNuker) Myau.moduleManager.modules.get(BedNuker.class); + AutoBlockIn autoBlockIn = (AutoBlockIn) Myau.moduleManager.modules.get(AutoBlockIn.class); + if (bedNuker.isEnabled() && bedNuker.isReady()) { + return false; + } else if (Myau.moduleManager.modules.get(Scaffold.class).isEnabled()) { + return false; + } else if (autoBlockIn.isEnabled()) { + return false; + } else if (this.requirePress.getValue()) { + return PlayerUtil.isAttacking(); + } else { + return !this.allowMining.getValue() || !mc.objectMouseOver.typeOfHit.equals(MovingObjectType.BLOCK) || !PlayerUtil.isAttacking(); + } + } + } + } else { + return false; + } + } + + private boolean canAutoBlock() { + if (!ItemUtil.isHoldingSword()) { + return false; + } else if (this.autoBlockRequirePress.getValue() && !PlayerUtil.isUsingItem()) { + return false; + } else { + // CORRECTED: Check the PLAYER'S hurtResistantTime + if (this.maxHurtTime.getValue() > 0) { + // If our invulnerability is about to run out, stop blocking to prepare an attack + if (mc.thePlayer.hurtResistantTime <= this.maxHurtTime.getValue() / 50) { + return false; + } + } + return true; + } + } + + private boolean hasValidTarget() { + return mc.theWorld + .loadedEntityList + .stream() + .anyMatch( + entity -> entity instanceof EntityLivingBase + && this.isValidTarget((EntityLivingBase) entity) + && this.isInBlockRange((EntityLivingBase) entity) + ); + } + + private boolean isValidTarget(EntityLivingBase entityLivingBase) { + if (!mc.theWorld.loadedEntityList.contains(entityLivingBase)) { + return false; + } else if (entityLivingBase != mc.thePlayer && entityLivingBase != mc.thePlayer.ridingEntity) { + if (entityLivingBase == mc.getRenderViewEntity() || entityLivingBase == mc.getRenderViewEntity().ridingEntity) { + return false; + } else if (entityLivingBase.deathTime > 0) { + return false; + } else if (RotationUtil.angleToEntity(entityLivingBase) > this.fov.getValue().floatValue()) { + return false; + } else if (!this.throughWalls.getValue() && RotationUtil.rayTrace(entityLivingBase) != null) { + return false; + } else if (entityLivingBase instanceof EntityOtherPlayerMP) { + if (!this.players.getValue()) { + return false; + } else if (TeamUtil.isFriend((EntityPlayer) entityLivingBase)) { + return false; + } else { + return (!this.teams.getValue() || !TeamUtil.isSameTeam((EntityPlayer) entityLivingBase)) && (!this.botCheck.getValue() || !TeamUtil.isBot((EntityPlayer) entityLivingBase)); + } + } else if (entityLivingBase instanceof EntityDragon || entityLivingBase instanceof EntityWither) { + return this.bosses.getValue(); + } else if (!(entityLivingBase instanceof EntityMob) && !(entityLivingBase instanceof EntitySlime)) { + if (entityLivingBase instanceof EntityAnimal + || entityLivingBase instanceof EntityBat + || entityLivingBase instanceof EntitySquid + || entityLivingBase instanceof EntityVillager) { + return this.animals.getValue(); + } else if (!(entityLivingBase instanceof EntityIronGolem)) { + return false; + } else { + return this.golems.getValue() && (!this.teams.getValue() || !TeamUtil.hasTeamColor(entityLivingBase)); + } + } else if (!(entityLivingBase instanceof EntitySilverfish)) { + return this.mobs.getValue(); + } else { + return this.silverfish.getValue() && (!this.teams.getValue() || !TeamUtil.hasTeamColor(entityLivingBase)); + } + } else { + return false; + } + } + + private boolean isInRange(EntityLivingBase entityLivingBase) { + return this.isInBlockRange(entityLivingBase) || this.isInSwingRange(entityLivingBase) || this.isInAttackRange(entityLivingBase); + } + + private boolean isInBlockRange(EntityLivingBase entityLivingBase) { + return RotationUtil.distanceToEntity(entityLivingBase) <= (double) this.autoBlockRange.getValue(); + } + + private boolean isInSwingRange(EntityLivingBase entityLivingBase) { + return RotationUtil.distanceToEntity(entityLivingBase) <= (double) this.swingRange.getValue(); + } + + private boolean isBoxInSwingRange(AxisAlignedBB axisAlignedBB) { + return RotationUtil.distanceToBox(axisAlignedBB) <= (double) this.swingRange.getValue(); + } + + private boolean isInAttackRange(EntityLivingBase entityLivingBase) { + return RotationUtil.distanceToEntity(entityLivingBase) <= (double) this.attackRange.getValue(); + } + + private boolean isBoxInAttackRange(AxisAlignedBB axisAlignedBB) { + return RotationUtil.distanceToBox(axisAlignedBB) <= (double) this.attackRange.getValue(); + } + + private boolean isPlayerTarget(EntityLivingBase entityLivingBase) { + return entityLivingBase instanceof EntityPlayer && TeamUtil.isTarget((EntityPlayer) entityLivingBase); + } + + private int findEmptySlot(int currentSlot) { + for (int i = 0; i < 9; i++) { + if (i != currentSlot && mc.thePlayer.inventory.getStackInSlot(i) == null) { + return i; + } + } + for (int i = 0; i < 9; i++) { + if (i != currentSlot) { + ItemStack stack = mc.thePlayer.inventory.getStackInSlot(i); + if (stack != null && !stack.hasDisplayName()) { + return i; + } + } + } + return Math.floorMod(currentSlot - 1, 9); + } + + private int findSwordSlot(int currentSlot) { + for (int i = 0; i < 9; i++) { + if (i != currentSlot) { + ItemStack item = mc.thePlayer.inventory.getStackInSlot(i); + if (item != null && item.getItem() instanceof ItemSword) { + return i; + } + } + } + return -1; + } + + public KillAura() { + super("KillAura", false); + this.lastTickProcessed = 0; + this.mode = new ModeProperty("mode", 0, new String[]{"SINGLE", "SWITCH"}); + this.sort = new ModeProperty("sort", 0, new String[]{"DISTANCE", "HEALTH", "HURT_TIME", "FOV"}); + this.autoBlock = new ModeProperty( + "auto-block", 2, new String[]{"NONE", "VANILLA", "SPOOF", "HYPIXEL", "BLINK", "INTERACT", "SWAP", "LEGIT", "FAKE"} + ); + this.autoBlockRequirePress = new BooleanProperty("auto-block-require-press", false); + this.autoBlockMinCPS = new FloatProperty("auto-block-min-aps", 8.0F, 1.0F, 20.0F); + this.autoBlockMaxCPS = new FloatProperty("auto-block-max-aps", 10.0F, 1.0F, 20.0F); + this.autoBlockRange = new FloatProperty("auto-block-range", 6.0F, 3.0F, 8.0F); + this.maxHurtTime = new IntProperty("max-hurt-time", 0, 0, 1000); + this.holdTicks = new IntProperty("hold-ticks", 1, 1, 10, () -> this.autoBlock.getValue() == 4); + this.blinkTicks = new IntProperty("blink-ticks", 2, 1, 10, () -> this.autoBlock.getValue() == 4); + this.preventDelay = new BooleanProperty("prevent-delay", true, () -> this.autoBlock.getValue() == 4); + this.swingRange = new FloatProperty("swing-range", 3.5F, 3.0F, 6.0F); + this.attackRange = new FloatProperty("attack-range", 3.0F, 3.0F, 6.0F); + this.fov = new IntProperty("fov", 360, 30, 360); + this.minCPS = new IntProperty("min-aps", 14, 1, 20); + this.maxCPS = new IntProperty("max-aps", 14, 1, 20); + this.switchDelay = new IntProperty("switch-delay", 150, 0, 1000); + this.rotations = new ModeProperty("rotations", 2, new String[]{"NONE", "LEGIT", "SILENT", "LOCK_VIEW"}); + this.moveFix = new ModeProperty("move-fix", 1, new String[]{"NONE", "SILENT", "STRICT"}); + this.smoothing = new PercentProperty("smoothing", 0); + this.angleStep = new IntProperty("angle-step", 90, 30, 180); + this.throughWalls = new BooleanProperty("through-walls", true); + this.requirePress = new BooleanProperty("require-press", false); + this.allowMining = new BooleanProperty("allow-mining", true); + this.weaponsOnly = new BooleanProperty("weapons-only", true); + this.allowTools = new BooleanProperty("allow-tools", false, this.weaponsOnly::getValue); + this.inventoryCheck = new BooleanProperty("inventory-check", true); + this.botCheck = new BooleanProperty("bot-check", true); + this.players = new BooleanProperty("players", true); + this.bosses = new BooleanProperty("bosses", false); + this.mobs = new BooleanProperty("mobs", false); + this.animals = new BooleanProperty("animals", false); + this.golems = new BooleanProperty("golems", false); + this.silverfish = new BooleanProperty("silverfish", false); + this.teams = new BooleanProperty("teams", true); + this.showTarget = new ModeProperty("show-target", 0, new String[]{"NONE", "DEFAULT", "HUD"}); + this.debugLog = new ModeProperty("debug-log", 0, new String[]{"NONE", "HEALTH"}); + } + + public EntityLivingBase getTarget() { + return this.target != null ? this.target.getEntity() : null; + } + + public boolean isAttackAllowed() { + Scaffold scaffold = (Scaffold) Myau.moduleManager.modules.get(Scaffold.class); + if (scaffold.isEnabled()) { + return false; + } else if (!this.weaponsOnly.getValue() + || ItemUtil.hasRawUnbreakingEnchant() + || this.allowTools.getValue() && ItemUtil.isHoldingTool()) { + return !this.requirePress.getValue() || KeyBindUtil.isKeyDown(mc.gameSettings.keyBindAttack.getKeyCode()); + } else { + return false; + } + } + + public boolean shouldAutoBlock() { + if (this.isPlayerBlocking() && this.isBlocking) { + return !mc.thePlayer.isInWater() && !mc.thePlayer.isInLava() && (this.autoBlock.getValue() == 3 // HYPIXEL + || this.autoBlock.getValue() == 4 // BLINK + || this.autoBlock.getValue() == 5 // INTERACT + || this.autoBlock.getValue() == 6 // SWAP + || this.autoBlock.getValue() == 7); // LEGIT + } else { + return false; + } + } + + public boolean isBlocking() { + return this.fakeBlockState && ItemUtil.isHoldingSword(); + } + + public boolean isPlayerBlocking() { + return (mc.thePlayer.isUsingItem() || this.blockingState) && ItemUtil.isHoldingSword(); + } + + @EventTarget(Priority.LOW) + public void onUpdate(UpdateEvent event) { + if (event.getType() == EventType.POST && this.blinkReset) { + this.blinkReset = false; + Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); + Myau.blinkManager.setBlinkState(true, BlinkModules.AUTO_BLOCK); + } + if (this.isEnabled() && event.getType() == EventType.PRE) { + if (this.attackDelayMS > 0L) { + this.attackDelayMS -= 50L; + } + boolean attack = this.target != null && this.canAttack(); + boolean block = attack && this.canAutoBlock(); + if (!block) { + Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); + this.isBlocking = false; + this.fakeBlockState = false; + this.blockTick = 0; + } + if (attack) { + boolean swap = false; + boolean blocked = false; + if (block) { + switch (this.autoBlock.getValue()) { + case 0: // NONE + if (PlayerUtil.isUsingItem()) { + this.isBlocking = true; + if (!this.isPlayerBlocking() && !Myau.playerStateManager.digging && !Myau.playerStateManager.placing) { + swap = true; + } + } else { + this.isBlocking = false; + if (this.isPlayerBlocking() && !Myau.playerStateManager.digging && !Myau.playerStateManager.placing) { + this.stopBlock(); + } + } + Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); + this.fakeBlockState = false; + break; + case 1: // VANILLA + if (this.hasValidTarget()) { + if (!this.isPlayerBlocking() && !Myau.playerStateManager.digging && !Myau.playerStateManager.placing) { + swap = true; + } + Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); + this.isBlocking = true; + this.fakeBlockState = false; + } else { + Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); + this.isBlocking = false; + this.fakeBlockState = false; + } + break; + case 2: // SPOOF + if (this.hasValidTarget()) { + int item = ((IAccessorPlayerControllerMP) mc.playerController).getCurrentPlayerItem(); + if (Myau.playerStateManager.digging + || Myau.playerStateManager.placing + || mc.thePlayer.inventory.currentItem != item + || this.isPlayerBlocking() && this.blockTick != 0 + || this.attackDelayMS > 0L && this.attackDelayMS <= 50L) { + this.blockTick = 0; + } else { + int slot = this.findEmptySlot(item); + PacketUtil.sendPacket(new C09PacketHeldItemChange(slot)); + PacketUtil.sendPacket(new C09PacketHeldItemChange(item)); + swap = true; + this.blockTick = 1; + } + Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); + this.isBlocking = true; + this.fakeBlockState = false; + } else { + Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); + this.isBlocking = false; + this.fakeBlockState = false; + } + break; + case 3: // HYPIXEL + if (this.hasValidTarget()) { + if (!Myau.playerStateManager.digging && !Myau.playerStateManager.placing) { + switch (this.blockTick) { + case 0: + if (!this.isPlayerBlocking()) { + swap = true; + } + blocked = true; + this.blockTick = 1; + break; + case 1: + if (this.isPlayerBlocking()) { + if(Myau.moduleManager.modules.get(NoSlow.class).isEnabled()){ + int randomSlot = new Random().nextInt(9); + while (randomSlot == mc.thePlayer.inventory.currentItem) { + randomSlot = new Random().nextInt(9); + } + PacketUtil.sendPacket(new C09PacketHeldItemChange(randomSlot)); + PacketUtil.sendPacket(new C09PacketHeldItemChange(mc.thePlayer.inventory.currentItem)); + } + this.stopBlock(); + attack = false; + } + if (this.attackDelayMS <= 50L) { + this.blockTick = 0; + } + break; + default: + this.blockTick = 0; + } + } + this.isBlocking = true; + this.fakeBlockState = true; + } else { + Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); + this.isBlocking = false; + this.fakeBlockState = false; + } + break; + case 4: // BLINK + if (this.hasValidTarget()) { + if (!Myau.playerStateManager.digging && !Myau.playerStateManager.placing) { + if (this.blockTick == 0) { + if (!this.isPlayerBlocking()) swap = true; + this.blinkReset = true; + this.blockTick = 1; + } else { + if (this.blockTick >= this.holdTicks.getValue()) { + if (this.isPlayerBlocking()) { + this.stopBlock(); + } + } + + if (this.blockTick >= (this.holdTicks.getValue() + this.blinkTicks.getValue()) || this.blockTick == 0) { + Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); + this.blockTick = 0; + } else { + this.blockTick++; + } + } + } + this.isBlocking = true; + this.fakeBlockState = true; + } + case 5: // INTERACT + if (this.hasValidTarget()) { + int item = ((IAccessorPlayerControllerMP) mc.playerController).getCurrentPlayerItem(); + if (mc.thePlayer.inventory.currentItem == item && !Myau.playerStateManager.digging && !Myau.playerStateManager.placing) { + switch (this.blockTick) { + case 0: + if (!this.isPlayerBlocking()) { + swap = true; + } + this.blinkReset = true; + this.blockTick = 1; + break; + case 1: + if (this.isPlayerBlocking()) { + int slot = this.findEmptySlot(item); + PacketUtil.sendPacket(new C09PacketHeldItemChange(slot)); + ((IAccessorPlayerControllerMP) mc.playerController).setCurrentPlayerItem(slot); + attack = false; + } + if (this.attackDelayMS <= 50L) { + this.blockTick = 0; + } + break; + default: + this.blockTick = 0; + } + } + this.isBlocking = true; + this.fakeBlockState = true; + } else { + Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); + this.isBlocking = false; + this.fakeBlockState = false; + } + break; + case 6: // SWAP + if (this.hasValidTarget()) { + int item = ((IAccessorPlayerControllerMP) mc.playerController).getCurrentPlayerItem(); + if (mc.thePlayer.inventory.currentItem == item && !Myau.playerStateManager.digging && !Myau.playerStateManager.placing) { + switch (this.blockTick) { + case 0: + int slot = this.findSwordSlot(item); + if (slot != -1) { + if (!this.isPlayerBlocking()) { + swap = true; + } + this.blockTick = 1; + } + break; + case 1: + int swordsSlot = this.findSwordSlot(item); + if (swordsSlot == -1) { + this.blockTick = 0; + } else if (!this.isPlayerBlocking()) { + swap = true; + } else if (this.attackDelayMS <= 50L) { + PacketUtil.sendPacket(new C09PacketHeldItemChange(swordsSlot)); + ((IAccessorPlayerControllerMP) mc.playerController).setCurrentPlayerItem(swordsSlot); + this.startBlock(mc.thePlayer.inventory.getStackInSlot(swordsSlot)); + attack = false; + this.blockTick = 0; + } + break; + default: + this.blockTick = 0; + } + Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); + this.isBlocking = true; + this.fakeBlockState = true; + break; + } + } + Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); + this.isBlocking = false; + this.fakeBlockState = false; + break; + case 7: // LEGIT + if (this.hasValidTarget()) { + if (!Myau.playerStateManager.digging && !Myau.playerStateManager.placing) { + switch (this.blockTick) { + case 0: + if (!this.isPlayerBlocking()) { + swap = true; + } + this.blockTick = 1; + break; + case 1: + if (this.isPlayerBlocking() && this.attackDelayMS <= 100L) { + this.stopBlock(); + this.blockTick = 2; + } + break; + case 2: + if (!this.isPlayerBlocking() && this.attackDelayMS <= 50L) { + swap = true; + this.blockTick = 1; + } + break; + default: + this.blockTick = 0; + } + } + Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); + this.isBlocking = true; + this.fakeBlockState = false; + } else { + Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); + this.isBlocking = false; + this.fakeBlockState = false; + this.blockTick = 0; + } + break; + case 8: // FAKE + Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); + this.isBlocking = false; + this.fakeBlockState = this.hasValidTarget(); + if (PlayerUtil.isUsingItem() + && !this.isPlayerBlocking() + && !Myau.playerStateManager.digging + && !Myau.playerStateManager.placing) { + swap = true; + } + } + } + boolean attacked = false; + if (this.isBoxInSwingRange(this.target.getBox())) { + if (this.rotations.getValue() == 2 || this.rotations.getValue() == 3) { + float[] rotations = RotationUtil.getRotationsToBox( + this.target.getBox(), + event.getYaw(), + event.getPitch(), + (float) this.angleStep.getValue() + RandomUtil.nextFloat(-5.0F, 5.0F), + (float) this.smoothing.getValue() / 100.0F + ); + event.setRotation(rotations[0], rotations[1], 1); + if (this.rotations.getValue() == 3) { + Myau.rotationManager.setRotation(rotations[0], rotations[1], 1, true); + } + if (this.moveFix.getValue() != 0 || this.rotations.getValue() == 3) { + event.setPervRotation(rotations[0], 1); + } + } + if (attack) { + attacked = this.performAttack(event.getNewYaw(), event.getNewPitch()); + } + } + if (swap) { + if (attacked) { + this.interactAttack(event.getNewYaw(), event.getNewPitch()); + } else { + this.sendUseItem(); + } + } + if (blocked) { + Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); + Myau.blinkManager.setBlinkState(true, BlinkModules.AUTO_BLOCK); + } + } + } + } + + @EventTarget + public void onTick(TickEvent event) { + if (this.isEnabled()) { + switch (event.getType()) { + case PRE: + if (this.target == null + || !this.isValidTarget(this.target.getEntity()) + || !this.isBoxInAttackRange(this.target.getBox()) + || !this.isBoxInSwingRange(this.target.getBox()) + || this.timer.hasTimeElapsed(this.switchDelay.getValue().longValue())) { + this.timer.reset(); + ArrayList targets = new ArrayList<>(); + for (Entity entity : mc.theWorld.loadedEntityList) { + if (entity instanceof EntityLivingBase + && this.isValidTarget((EntityLivingBase) entity) + && this.isInRange((EntityLivingBase) entity)) { + targets.add((EntityLivingBase) entity); + } + } + if (targets.isEmpty()) { + this.target = null; + } else { + if (targets.stream().anyMatch(this::isInSwingRange)) { + targets.removeIf(entityLivingBase -> !this.isInSwingRange(entityLivingBase)); + } + if (targets.stream().anyMatch(this::isInAttackRange)) { + targets.removeIf(entityLivingBase -> !this.isInAttackRange(entityLivingBase)); + } + if (targets.stream().anyMatch(this::isPlayerTarget)) { + targets.removeIf(entityLivingBase -> !this.isPlayerTarget(entityLivingBase)); + } + targets.sort( + (entityLivingBase1, entityLivingBase2) -> { + int sortBase = 0; + switch (this.sort.getValue()) { + case 1: + sortBase = Float.compare(TeamUtil.getHealthScore(entityLivingBase1), TeamUtil.getHealthScore(entityLivingBase2)); + break; + case 2: + sortBase = Integer.compare(entityLivingBase1.hurtResistantTime, entityLivingBase2.hurtResistantTime); + break; + case 3: + sortBase = Float.compare( + RotationUtil.angleToEntity(entityLivingBase1), + RotationUtil.angleToEntity(entityLivingBase2) + ); + } + return sortBase != 0 + ? sortBase + : Double.compare(RotationUtil.distanceToEntity(entityLivingBase1), RotationUtil.distanceToEntity(entityLivingBase2)); + } + ); + if (this.mode.getValue() == 1 && this.hitRegistered) { + this.hitRegistered = false; + this.switchTick++; + } + if (this.mode.getValue() == 0 || this.switchTick >= targets.size()) { + this.switchTick = 0; + } + this.target = new AttackData(targets.get(this.switchTick)); + } + } + if (this.target != null) { + this.target = new AttackData(this.target.getEntity()); + } + break; + case POST: + if (this.isPlayerBlocking() && !mc.thePlayer.isBlocking()) { + mc.thePlayer.setItemInUse(mc.thePlayer.getHeldItem(), mc.thePlayer.getHeldItem().getMaxItemUseDuration()); + } + } + } + } + + @EventTarget(Priority.LOWEST) + public void onPacket(PacketEvent event) { + if (this.isEnabled() && !event.isCancelled() && mc.thePlayer != null && mc.theWorld != null) { + if (event.getPacket() instanceof C07PacketPlayerDigging) { + C07PacketPlayerDigging packet = (C07PacketPlayerDigging) event.getPacket(); + if (packet.getStatus() == C07PacketPlayerDigging.Action.RELEASE_USE_ITEM) { + this.blockingState = false; + } + } + if (event.getPacket() instanceof C09PacketHeldItemChange) { + this.blockingState = false; + if (this.isBlocking) { + mc.thePlayer.stopUsingItem(); + } + } + if (this.debugLog.getValue() == 1 && this.isAttackAllowed()) { + if (event.getPacket() instanceof S06PacketUpdateHealth) { + float packet = ((S06PacketUpdateHealth) event.getPacket()).getHealth() - mc.thePlayer.getHealth(); + if (packet != 0.0F && this.lastTickProcessed != mc.thePlayer.ticksExisted) { + this.lastTickProcessed = mc.thePlayer.ticksExisted; + ChatUtil.sendFormatted( + String.format( + "%sHealth: %s&l%s&r (&otick: %d&r)&r", + Myau.clientName, + packet > 0.0F ? "&a" : "&c", + df.format(packet), + mc.thePlayer.ticksExisted + ) + ); + } + } + if (event.getPacket() instanceof S1CPacketEntityMetadata) { + S1CPacketEntityMetadata packet = (S1CPacketEntityMetadata) event.getPacket(); + if (packet.getEntityId() == mc.thePlayer.getEntityId()) { + for (WatchableObject watchableObject : packet.func_149376_c()) { + if (watchableObject.getDataValueId() == 6) { + float diff = (Float) watchableObject.getObject() - mc.thePlayer.getHealth(); + if (diff != 0.0F && this.lastTickProcessed != mc.thePlayer.ticksExisted) { + this.lastTickProcessed = mc.thePlayer.ticksExisted; + ChatUtil.sendFormatted( + String.format( + "%sHealth: %s&l%s&r (&otick: %d&r)&r", + Myau.clientName, + diff > 0.0F ? "&a" : "&c", + df.format(diff), + mc.thePlayer.ticksExisted + ) + ); + } + } + } + } + } + } + } + } + + @EventTarget + public void onMove(MoveInputEvent event) { + if (this.isEnabled()) { + if (this.moveFix.getValue() == 1 + && this.rotations.getValue() != 3 + && RotationState.isActived() + && RotationState.getPriority() == 1.0F + && MoveUtil.isForwardPressed()) { + MoveUtil.fixStrafe(RotationState.getSmoothedYaw()); + } + if (this.shouldAutoBlock()) { + mc.thePlayer.movementInput.jump = false; + } + } + } + + @EventTarget + public void onRender(Render3DEvent event) { + if (this.isEnabled() && target != null) { + if (this.showTarget.getValue() != 0 + && TeamUtil.isEntityLoaded(this.target.getEntity()) + && this.isAttackAllowed()) { + Color color = new Color(-1); + switch (this.showTarget.getValue()) { + case 1: + if (this.target.getEntity().hurtTime > 0) { + color = new Color(16733525); + } else { + color = new Color(5635925); + } + break; + case 2: + color = ((HUD) Myau.moduleManager.modules.get(HUD.class)).getColor(System.currentTimeMillis()); + } + RenderUtil.enableRenderState(); + RenderUtil.drawEntityBox(this.target.getEntity(), color.getRed(), color.getGreen(), color.getBlue()); + RenderUtil.disableRenderState(); + } + } + } + + @EventTarget + public void onLeftClick(LeftClickMouseEvent event) { + if (this.isBlocking) { + event.setCancelled(true); + } else { + if (this.isEnabled() && this.target != null && this.canAttack()) { + event.setCancelled(true); + } + } + } + + @EventTarget + public void onRightClick(RightClickMouseEvent event) { + if (this.isBlocking) { + event.setCancelled(true); + } else { + if (this.isEnabled() && this.target != null && this.canAttack()) { + event.setCancelled(true); + } + } + } + + @EventTarget + public void onHitBlock(HitBlockEvent event) { + if (this.isBlocking) { + event.setCancelled(true); + } else { + if (this.isEnabled() && this.target != null && this.canAttack()) { + event.setCancelled(true); + } + } + } + + @EventTarget + public void onCancelUse(CancelUseEvent event) { + if (this.isBlocking) { + event.setCancelled(true); + } + } + + @Override + public void onEnabled() { + this.target = null; + this.switchTick = 0; + this.hitRegistered = false; + this.attackDelayMS = 0L; + this.blockTick = 0; + } + + @Override + public void onDisabled() { + Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); + this.blockingState = false; + this.isBlocking = false; + this.fakeBlockState = false; + } + + @Override + public void verifyValue(String value) { + boolean badCps = this.autoBlock.getValue() == 2 + || this.autoBlock.getValue() == 3 + || this.autoBlock.getValue() == 4 + || this.autoBlock.getValue() == 5 + || this.autoBlock.getValue() == 6 + || this.autoBlock.getValue() == 7; + if (!this.autoBlock.getName().equals(value)) { + if (this.swingRange.getName().equals(value)) { + if (this.swingRange.getValue() < this.attackRange.getValue()) { + this.attackRange.setValue(this.swingRange.getValue()); + } + } else if (this.attackRange.getName().equals(value)) { + if (this.swingRange.getValue() < this.attackRange.getValue()) { + this.swingRange.setValue(this.attackRange.getValue()); + } + } else if (this.minCPS.getName().equals(value)) { + if (this.minCPS.getValue() > this.maxCPS.getValue()) { + this.maxCPS.setValue(this.minCPS.getValue()); + } + } else if (this.autoBlockMinCPS.getName().equals(value)) { + if (this.autoBlockMinCPS.getValue() > this.autoBlockMaxCPS.getValue()) { + this.autoBlockMaxCPS.setValue(this.autoBlockMinCPS.getValue()); + } + if(autoBlockMinCPS.getValue() > 10.0F && badCps){ + autoBlockMinCPS.setValue(10.0F); + } + } else if (this.autoBlockMaxCPS.getName().equals(value)) { + if (this.autoBlockMinCPS.getValue() > this.autoBlockMaxCPS.getValue()) { + this.autoBlockMinCPS.setValue(this.autoBlockMaxCPS.getValue()); + } + if(autoBlockMaxCPS.getValue() > 10.0F && badCps){ + autoBlockMaxCPS.setValue(10.0F); + } + } else { + if (this.maxCPS.getName().equals(value) && this.minCPS.getValue() > this.maxCPS.getValue()) { + this.minCPS.setValue(this.maxCPS.getValue()); + } + } + } else { + if (badCps && (this.autoBlockMinCPS.getValue() > 10.0F || this.autoBlockMaxCPS.getValue() > 10.0F)) { + this.autoBlockMinCPS.setValue(8.0F); + this.autoBlockMaxCPS.setValue(10.0F); + } + } + } + + @Override + public String[] getSuffix() { + return new String[]{CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, this.mode.getModeString())}; + } + + public static class AttackData { + private final EntityLivingBase entity; + private final AxisAlignedBB box; + private final double x; + private final double y; + private final double z; + + public AttackData(EntityLivingBase entityLivingBase) { + this.entity = entityLivingBase; + double collisionBorderSize = entityLivingBase.getCollisionBorderSize(); + this.box = entityLivingBase.getEntityBoundingBox().expand(collisionBorderSize, collisionBorderSize, collisionBorderSize); + this.x = entityLivingBase.posX; + this.y = entityLivingBase.posY; + this.z = entityLivingBase.posZ; + } + + public EntityLivingBase getEntity() { + return this.entity; + } + + public AxisAlignedBB getBox() { + return this.box; + } + + public double getX() { + return this.x; + } + + public double getY() { + return this.y; + } + + public double getZ() { + return this.z; + } + } +} \ No newline at end of file From 18ac6f2923dd2f96c7f8b2940aac7251b9d9a0c2 Mon Sep 17 00:00:00 2001 From: ididitforfun <800Yenn@gmail.com> Date: Tue, 13 Jan 2026 00:45:37 -0500 Subject: [PATCH 09/21] Add Timer --- src/main/java/myau/Myau.java | 1 + .../java/myau/mixin/IAccessorMinecraft.java | 2 +- src/main/java/myau/module/modules/Timer.java | 45 +++++++++++++++++++ src/main/java/myau/ui/ClickGui.java | 1 + 4 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 src/main/java/myau/module/modules/Timer.java diff --git a/src/main/java/myau/Myau.java b/src/main/java/myau/Myau.java index 2387f54e..261f1b4b 100644 --- a/src/main/java/myau/Myau.java +++ b/src/main/java/myau/Myau.java @@ -122,6 +122,7 @@ public void init() { moduleManager.modules.put(Sprint.class, new Sprint()); moduleManager.modules.put(TargetHUD.class, new TargetHUD()); moduleManager.modules.put(TargetStrafe.class, new TargetStrafe()); + moduleManager.modules.put(Timer.class, new Timer()); moduleManager.modules.put(Tracers.class, new Tracers()); moduleManager.modules.put(Trajectories.class, new Trajectories()); moduleManager.modules.put(Velocity.class, new Velocity()); diff --git a/src/main/java/myau/mixin/IAccessorMinecraft.java b/src/main/java/myau/mixin/IAccessorMinecraft.java index 87b1f9c1..6a0561b8 100644 --- a/src/main/java/myau/mixin/IAccessorMinecraft.java +++ b/src/main/java/myau/mixin/IAccessorMinecraft.java @@ -22,4 +22,4 @@ public interface IAccessorMinecraft { @Accessor("rightClickDelayTimer") void setRightClickDelayTimer(int integer); -} +} \ No newline at end of file diff --git a/src/main/java/myau/module/modules/Timer.java b/src/main/java/myau/module/modules/Timer.java new file mode 100644 index 00000000..9f373813 --- /dev/null +++ b/src/main/java/myau/module/modules/Timer.java @@ -0,0 +1,45 @@ +package myau.module.modules; + +import myau.event.EventTarget; +import myau.event.types.EventType; +import myau.event.types.Priority; +import myau.events.UpdateEvent; +import myau.mixin.IAccessorMinecraft; +import myau.module.Module; +import myau.property.properties.FloatProperty; +import net.minecraft.client.Minecraft; + +public class Timer extends Module { + private static final Minecraft mc = Minecraft.getMinecraft(); + + public final FloatProperty speed = new FloatProperty("speed", 1.0F, 0.01F, 10.0F); + + public Timer() { + super("Timer", false); + } + + @Override + public void onDisabled() { + net.minecraft.util.Timer timer = ((IAccessorMinecraft) mc).getTimer(); + if (timer != null) { + timer.timerSpeed = 1.0F; + } + } + + @EventTarget(Priority.HIGHEST) + public void onUpdate(UpdateEvent event) { + if (!this.isEnabled() || event.getType() != EventType.PRE) { + return; + } + + net.minecraft.util.Timer timer = ((IAccessorMinecraft) mc).getTimer(); + if (timer != null) { + timer.timerSpeed = this.speed.getValue(); + } + } + + @Override + public String[] getSuffix() { + return new String[]{String.format("%.1fx", this.speed.getValue())}; + } +} \ No newline at end of file diff --git a/src/main/java/myau/ui/ClickGui.java b/src/main/java/myau/ui/ClickGui.java index c5bd3e6d..fdc1a06c 100644 --- a/src/main/java/myau/ui/ClickGui.java +++ b/src/main/java/myau/ui/ClickGui.java @@ -49,6 +49,7 @@ public ClickGui() { movementModules.add(Myau.moduleManager.getModule(AntiAFK.class)); movementModules.add(Myau.moduleManager.getModule(Fly.class)); movementModules.add(Myau.moduleManager.getModule(Speed.class)); + movementModules.add(Myau.moduleManager.getModule(myau.module.modules.Timer.class)); movementModules.add(Myau.moduleManager.getModule(LongJump.class)); movementModules.add(Myau.moduleManager.getModule(Sprint.class)); movementModules.add(Myau.moduleManager.getModule(SafeWalk.class)); From dfd20479f9dc1699ea000eedb9d2182ded356a67 Mon Sep 17 00:00:00 2001 From: ididitforfun <800Yenn@gmail.com> Date: Sat, 17 Jan 2026 00:13:41 -0500 Subject: [PATCH 10/21] Fixed Lagrange (timer) + limited to 20secs Added suffix to FakeLag Added DoubleClicker (doesnt work yet) --- src/main/java/myau/Myau.java | 1 + .../myau/module/modules/DoubleClicker.java | 236 ++++++++++++++++++ .../java/myau/module/modules/FakeLag.java | 5 + .../java/myau/module/modules/LagRange.java | 112 ++++++--- src/main/java/myau/ui/ClickGui.java | 1 + 5 files changed, 322 insertions(+), 33 deletions(-) create mode 100644 src/main/java/myau/module/modules/DoubleClicker.java diff --git a/src/main/java/myau/Myau.java b/src/main/java/myau/Myau.java index 261f1b4b..67fc42db 100644 --- a/src/main/java/myau/Myau.java +++ b/src/main/java/myau/Myau.java @@ -77,6 +77,7 @@ public void init() { moduleManager.modules.put(Chams.class, new Chams()); moduleManager.modules.put(ChestESP.class, new ChestESP()); moduleManager.modules.put(ChestStealer.class, new ChestStealer()); + moduleManager.modules.put(DoubleClicker.class, new DoubleClicker()); moduleManager.modules.put(Eagle.class, new Eagle()); moduleManager.modules.put(ESP.class, new ESP()); moduleManager.modules.put(FakeLag.class, new FakeLag()); diff --git a/src/main/java/myau/module/modules/DoubleClicker.java b/src/main/java/myau/module/modules/DoubleClicker.java new file mode 100644 index 00000000..ecb35752 --- /dev/null +++ b/src/main/java/myau/module/modules/DoubleClicker.java @@ -0,0 +1,236 @@ +package myau.module.modules; + +import myau.event.EventTarget; +import myau.event.types.EventType; +import myau.event.types.Priority; +import myau.events.LeftClickMouseEvent; +import myau.events.RightClickMouseEvent; +import myau.events.TickEvent; +import myau.module.Module; +import myau.util.ItemUtil; +import myau.property.properties.BooleanProperty; +import myau.property.properties.FloatProperty; +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.world.WorldSettings.GameType; +import org.lwjgl.input.Mouse; + +import java.awt.AWTException; +import java.awt.Robot; +import java.util.LinkedList; + +public class DoubleClicker extends Module { + private static final Minecraft mc = Minecraft.getMinecraft(); + + private Robot bot; + private boolean ignoreNextLeft = false; + private boolean ignoreNextRight = false; + + private final LinkedList leftClicks = new LinkedList<>(); + private final LinkedList rightClicks = new LinkedList<>(); + + public final BooleanProperty leftClick = new BooleanProperty("left-click", true); + public final FloatProperty chanceLeft = new FloatProperty("chance-left", 80.0F, 0.0F, 100.0F, this.leftClick::getValue); + public final BooleanProperty weaponOnly = new BooleanProperty("weapon-only", true, this.leftClick::getValue); + public final BooleanProperty onlyWhileTargeting = new BooleanProperty("only-while-targeting", false, this.leftClick::getValue); + public final BooleanProperty aboveCPSLeft = new BooleanProperty("above-5-cps-left", false, this.leftClick::getValue); + + public final BooleanProperty rightClick = new BooleanProperty("right-click", false); + public final FloatProperty chanceRight = new FloatProperty("chance-right", 80.0F, 0.0F, 100.0F, this.rightClick::getValue); + public final BooleanProperty blocksOnly = new BooleanProperty("blocks-only", true, this.rightClick::getValue); + public final BooleanProperty aboveCPSRight = new BooleanProperty("above-5-cps-right", false, this.rightClick::getValue); + + public final BooleanProperty disableInCreative = new BooleanProperty("disable-in-creative", true); + + public DoubleClicker() { + super("DoubleClicker", false); + } + + private int getLeftCPS() { + long currentTime = System.currentTimeMillis(); + this.leftClicks.removeIf(time -> currentTime - time > 1000L); + return this.leftClicks.size(); + } + + private int getRightCPS() { + long currentTime = System.currentTimeMillis(); + this.rightClicks.removeIf(time -> currentTime - time > 1000L); + return this.rightClicks.size(); + } + + private boolean shouldDoubleClickLeft() { + if (!this.leftClick.getValue()) { + return false; + } + + if (this.chanceLeft.getValue() == 0.0F) { + return false; + } + + if (this.aboveCPSLeft.getValue() && this.getLeftCPS() <= 5) { + return false; + } + + if (this.weaponOnly.getValue() && !ItemUtil.isHoldingSword()) { + return false; + } + + if (this.onlyWhileTargeting.getValue()) { + if (mc.objectMouseOver == null || mc.objectMouseOver.entityHit == null) { + return false; + } + } + + if (this.chanceLeft.getValue() < 100.0F) { + double chance = Math.random(); + if (chance >= this.chanceLeft.getValue() / 100.0F) { + return false; + } + } + + return true; + } + + private boolean shouldDoubleClickRight() { + if (!this.rightClick.getValue()) { + return false; + } + + if (this.chanceRight.getValue() == 0.0F) { + return false; + } + + if (this.aboveCPSRight.getValue() && this.getRightCPS() <= 5) { + return false; + } + + if (this.blocksOnly.getValue()) { + ItemStack item = mc.thePlayer.getHeldItem(); + if (item == null || !(item.getItem() instanceof ItemBlock)) { + return false; + } + } + + if (this.chanceRight.getValue() < 100.0F) { + double chance = Math.random(); + if (chance >= this.chanceRight.getValue() / 100.0F) { + return false; + } + } + + return true; + } + + private void fixLeftButton() { + if (this.ignoreNextLeft && !Mouse.isButtonDown(0)) { + this.bot.mouseRelease(16); + this.ignoreNextLeft = false; + } + } + + private void fixRightButton() { + if (this.ignoreNextRight && !Mouse.isButtonDown(1)) { + this.bot.mouseRelease(4); + this.ignoreNextRight = false; + } + } + + @EventTarget + public void onTick(TickEvent event) { + if (event.getType() == EventType.PRE) { + this.fixLeftButton(); + this.fixRightButton(); + } + } + + @EventTarget(Priority.HIGH) + public void onLeftClick(LeftClickMouseEvent event) { + if (this.disableInCreative.getValue() && mc.playerController.getCurrentGameType() == GameType.CREATIVE) { + return; + } + + if (mc.currentScreen != null) { + this.fixLeftButton(); + this.fixRightButton(); + return; + } + + // Track for CPS if needed + if (this.aboveCPSLeft.getValue()) { + this.leftClicks.add(System.currentTimeMillis()); + } + + if (!this.isEnabled() || event.isCancelled()) { + return; + } + + // If this is the extra click we injected, ignore it + if (this.ignoreNextLeft) { + this.ignoreNextLeft = false; + return; + } + + // Check if we should inject an extra click + if (this.shouldDoubleClickLeft()) { + this.bot.mouseRelease(16); + this.bot.mousePress(16); + this.ignoreNextLeft = true; + } + } + + @EventTarget(Priority.HIGH) + public void onRightClick(RightClickMouseEvent event) { + if (this.disableInCreative.getValue() && mc.playerController.getCurrentGameType() == GameType.CREATIVE) { + return; + } + + if (mc.currentScreen != null) { + this.fixLeftButton(); + this.fixRightButton(); + return; + } + + // Track for CPS if needed + if (this.aboveCPSRight.getValue()) { + this.rightClicks.add(System.currentTimeMillis()); + } + + if (!this.isEnabled() || event.isCancelled()) { + return; + } + + // If this is the extra click we injected, ignore it + if (this.ignoreNextRight) { + this.ignoreNextRight = false; + return; + } + + // Check if we should inject an extra click + if (this.shouldDoubleClickRight()) { + this.bot.mouseRelease(4); + this.bot.mousePress(4); + this.ignoreNextRight = true; + } + } + + public void onEnable() { + try { + this.bot = new Robot(); + } catch (AWTException e) { + this.setEnabled(false); + } + this.ignoreNextLeft = false; + this.ignoreNextRight = false; + this.leftClicks.clear(); + this.rightClicks.clear(); + } + + public void onDisable() { + this.ignoreNextLeft = false; + this.ignoreNextRight = false; + this.leftClicks.clear(); + this.rightClicks.clear(); + this.bot = null; + } +} \ No newline at end of file diff --git a/src/main/java/myau/module/modules/FakeLag.java b/src/main/java/myau/module/modules/FakeLag.java index 96b7c725..0a3fb4b3 100644 --- a/src/main/java/myau/module/modules/FakeLag.java +++ b/src/main/java/myau/module/modules/FakeLag.java @@ -96,4 +96,9 @@ public PacketData(Packet packet, long timestamp) { this.timestamp = timestamp; } } + + @Override + public String[] getSuffix() { + return new String[]{String.format("%dms", this.delay.getValue())}; + } } \ No newline at end of file diff --git a/src/main/java/myau/module/modules/LagRange.java b/src/main/java/myau/module/modules/LagRange.java index c255d7d8..1da3cc85 100644 --- a/src/main/java/myau/module/modules/LagRange.java +++ b/src/main/java/myau/module/modules/LagRange.java @@ -9,6 +9,7 @@ import myau.mixin.IAccessorPlayerControllerMP; import myau.mixin.IAccessorRenderManager; import myau.module.Module; +import myau.util.ChatUtil; import myau.util.ItemUtil; import myau.util.RenderUtil; import myau.util.RotationUtil; @@ -37,16 +38,19 @@ public class LagRange extends Module { private int tickIndex = -1; private long delayCounter = 0L; private boolean hasTarget = false; - private long maxTimeStarted = 0L; + private long lagStartTime = 0L; + private boolean timerExpired = false; private Vec3 lastPosition = null; private Vec3 currentPosition = null; + private boolean isLagging = false; + private boolean wasLagging = false; public final BooleanProperty advancedMode = new BooleanProperty("advanced-mode", false); public final IntProperty delay = new IntProperty("delay", 150, 0, 1000, () -> !this.advancedMode.getValue()); public final FloatProperty range = new FloatProperty("range", 10.0F, 3.0F, 100.0F, () -> !this.advancedMode.getValue()); - public final IntProperty maxTime = new IntProperty("max-time", 1000, 0, 5000, this.advancedMode::getValue); + public final FloatProperty maxTime = new FloatProperty("max-time", 0.0F, 0.0F, 20.0F, this.advancedMode::getValue); public final FloatProperty closeRange = new FloatProperty("close-range", 6.0F, 3.0F, 100.0F, this.advancedMode::getValue); public final FloatProperty farRange = new FloatProperty("far-range", 10.0F, 3.0F, 100.0F, this.advancedMode::getValue); public final IntProperty delayClose = new IntProperty("packet-delay-close", 150, 0, 1000, this.advancedMode::getValue); @@ -56,6 +60,7 @@ public class LagRange extends Module { public final BooleanProperty botCheck = new BooleanProperty("bot-check", true); public final BooleanProperty teams = new BooleanProperty("teams", true); public final ModeProperty showPosition = new ModeProperty("show-position", 0, new String[]{"NONE", "DEFAULT", "HUD"}); + public final BooleanProperty debugLog = new BooleanProperty("debug-log", false); private boolean isValidTarget(EntityPlayer entityPlayer) { if (entityPlayer != mc.thePlayer && entityPlayer != mc.thePlayer.ridingEntity) { @@ -97,6 +102,8 @@ public void onTick(TickEvent event) { case PRE: Myau.lagManager.setDelay(0); this.hasTarget = false; + this.isLagging = false; + BedNuker bedNuker = (BedNuker) Myau.moduleManager.modules.get(BedNuker.class); if ((!bedNuker.isEnabled() || !bedNuker.isReady()) && !((IAccessorPlayerControllerMP) mc.playerController).getIsHittingBlock() @@ -115,17 +122,41 @@ public void onTick(TickEvent event) { .collect(Collectors.toList()); if (players.isEmpty()) { this.tickIndex = -1; - this.maxTimeStarted = 0L; + this.lagStartTime = 0L; + this.timerExpired = false; } else { double height = mc.thePlayer.getEyeHeight(); Vec3 eyePosition = Myau.lagManager.getLastPosition().addVector(0.0, height, 0.0); Vec3 targetEyePosition = new Vec3(mc.thePlayer.lastTickPosX, mc.thePlayer.lastTickPosY + height, mc.thePlayer.lastTickPosZ); Vec3 playerEyePosition = new Vec3(mc.thePlayer.posX, mc.thePlayer.posY + height, mc.thePlayer.posZ); + boolean timerEnabled = this.advancedMode.getValue() && this.maxTime.getValue() > 0.0F; + boolean anyPlayerInCloseRange = false; + + if (timerEnabled) { + for (EntityPlayer player : players) { + double distance = RotationUtil.distanceToBox(player, playerEyePosition); + if (distance <= (double) this.closeRange.getValue()) { + anyPlayerInCloseRange = true; + break; + } + } + } + + if (timerEnabled && this.timerExpired && anyPlayerInCloseRange) { + this.tickIndex = -1; + this.logDebugState(); + break; + } + + if (timerEnabled && this.timerExpired && !anyPlayerInCloseRange) { + this.timerExpired = false; + this.lagStartTime = 0L; + } + for (EntityPlayer player : players) { double distance = RotationUtil.distanceToBox(player, playerEyePosition); - // Determine which range to use float maxRange = this.advancedMode.getValue() ? Math.max(this.closeRange.getValue(), this.farRange.getValue()) : this.range.getValue(); @@ -135,39 +166,33 @@ public void onTick(TickEvent event) { double eyeDist = RotationUtil.distanceToBox(player, eyePosition); if (distance < targetDist || distance < eyeDist) { - // Determine delay based on distance + if (timerEnabled) { + if (this.lagStartTime == 0L) { + this.lagStartTime = System.currentTimeMillis(); + } + + long elapsed = System.currentTimeMillis() - this.lagStartTime; + long maxTimeMs = (long) (this.maxTime.getValue() * 1000.0F); + if (elapsed >= maxTimeMs) { + this.timerExpired = true; + Myau.lagManager.setDelay(0); + this.tickIndex = -1; + this.isLagging = false; + this.logDebugState(); + return; + } + } + int currentDelay; boolean isInCloseRange = false; if (this.advancedMode.getValue()) { isInCloseRange = distance <= (double) this.closeRange.getValue(); - - if (isInCloseRange) { - // Start timer when entering close range - if (this.maxTimeStarted == 0L) { - this.maxTimeStarted = System.currentTimeMillis(); - } - - // Check if max time has elapsed - long elapsed = System.currentTimeMillis() - this.maxTimeStarted; - if (elapsed >= this.maxTime.getValue()) { - // Max time reached, stop lagging - Myau.lagManager.setDelay(0); - this.tickIndex = -1; - return; - } - - currentDelay = this.delayClose.getValue(); - } else { - // In far range, reset timer - this.maxTimeStarted = 0L; - currentDelay = this.delayFar.getValue(); - } + currentDelay = isInCloseRange ? this.delayClose.getValue() : this.delayFar.getValue(); } else { currentDelay = this.delay.getValue(); } - // Apply delay using original flush logic if (this.tickIndex < 0) { this.tickIndex = 0; for (this.delayCounter = this.delayCounter + (long) currentDelay; @@ -180,19 +205,22 @@ public void onTick(TickEvent event) { Myau.lagManager.setDelay(this.tickIndex); this.hasTarget = true; + this.isLagging = true; + this.logDebugState(); return; } } } - // No valid targets found - reset this.tickIndex = -1; - this.maxTimeStarted = 0L; } } else { this.tickIndex = -1; - this.maxTimeStarted = 0L; + this.lagStartTime = 0L; + this.timerExpired = false; } + + this.logDebugState(); break; case POST: Vec3 savedPosition = Myau.lagManager.getLastPosition(); @@ -206,13 +234,28 @@ public void onTick(TickEvent event) { } } + private void logDebugState() { + if (this.debugLog.getValue() && this.isLagging != this.wasLagging) { + ChatUtil.sendFormatted( + String.format( + "%sLagRange (&ostate: %d&r)&r", + Myau.clientName, + this.isLagging ? 1 : 0 + ) + ); + this.wasLagging = this.isLagging; + } + } + @EventTarget public void onPacket(PacketEvent event) { if (this.isEnabled()) { if (this.shouldResetOnPacket(event.getPacket())) { Myau.lagManager.setDelay(0); this.tickIndex = -1; - this.maxTimeStarted = 0L; + this.lagStartTime = 0L; + this.isLagging = false; + this.logDebugState(); } } } @@ -264,9 +307,12 @@ public void onDisabled() { this.tickIndex = -1; this.delayCounter = 0L; this.hasTarget = false; - this.maxTimeStarted = 0L; + this.lagStartTime = 0L; + this.timerExpired = false; this.lastPosition = null; this.currentPosition = null; + this.isLagging = false; + this.wasLagging = false; } @Override diff --git a/src/main/java/myau/ui/ClickGui.java b/src/main/java/myau/ui/ClickGui.java index fdc1a06c..f47cb15c 100644 --- a/src/main/java/myau/ui/ClickGui.java +++ b/src/main/java/myau/ui/ClickGui.java @@ -30,6 +30,7 @@ public ClickGui() { List combatModules = new ArrayList<>(); combatModules.add(Myau.moduleManager.getModule(AimAssist.class)); combatModules.add(Myau.moduleManager.getModule(AutoClicker.class)); + combatModules.add(Myau.moduleManager.getModule(DoubleClicker.class)); combatModules.add(Myau.moduleManager.getModule(KillAura.class)); combatModules.add(Myau.moduleManager.getModule(Wtap.class)); combatModules.add(Myau.moduleManager.getModule(Velocity.class)); From bce34c8899128704fe127ba6a9b4dbf406622d9f Mon Sep 17 00:00:00 2001 From: ididitforfun <800Yenn@gmail.com> Date: Sat, 7 Feb 2026 20:47:57 -0500 Subject: [PATCH 11/21] Reverted BlinkAB Added Expose and Outline width to BedESP Added Sneak to NameTags --- src/main/java/myau/module/modules/BedESP.java | 73 +++++++++++++++---- .../java/myau/module/modules/KillAura.java | 52 ++++++------- .../java/myau/module/modules/NameTags.java | 12 ++- 3 files changed, 89 insertions(+), 48 deletions(-) diff --git a/src/main/java/myau/module/modules/BedESP.java b/src/main/java/myau/module/modules/BedESP.java index 1a417241..a31e66c6 100644 --- a/src/main/java/myau/module/modules/BedESP.java +++ b/src/main/java/myau/module/modules/BedESP.java @@ -9,9 +9,8 @@ import myau.property.properties.*; import myau.property.properties.BooleanProperty; import myau.property.properties.ModeProperty; -import net.minecraft.block.BlockBed; +import net.minecraft.block.*; import net.minecraft.block.BlockBed.EnumPartType; -import net.minecraft.block.BlockObsidian; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; import net.minecraft.util.AxisAlignedBB; @@ -30,6 +29,9 @@ public class BedESP extends Module { public final ColorProperty customColor; public final PercentProperty opacity; public final BooleanProperty outline; + public final FloatProperty outlineWidth; + public final BooleanProperty expose; + public final ColorProperty exposeColor; public final BooleanProperty obsidian; private Color getColor() { @@ -44,26 +46,51 @@ private Color getColor() { } private void drawObsidianBox(AxisAlignedBB axisAlignedBB) { + int red = 170; + int green = 0; + int blue = 170; + if (this.outline.getValue()) { - RenderUtil.drawBoundingBox(axisAlignedBB, 170, 0, 170, 255, 1.5F); + RenderUtil.drawBoundingBox(axisAlignedBB, red, green, blue, 255, this.outlineWidth.getValue()); } - RenderUtil.drawFilledBox(axisAlignedBB, 170, 0, 170); + RenderUtil.drawFilledBox(axisAlignedBB, red, green, blue); } private void drawObsidian(BlockPos blockPos) { + int red = 170; + int green = 0; + int blue = 170; + if (this.outline.getValue()) { - RenderUtil.drawBlockBoundingBox(blockPos, 1.0, 170, 0, 170, 255, 1.5F); + RenderUtil.drawBlockBoundingBox(blockPos, 1.0, red, green, blue, 255, this.outlineWidth.getValue()); } - RenderUtil.drawBlockBox( - blockPos, 1.0, 170, 0, 170 - ); + RenderUtil.drawBlockBox(blockPos, 1.0, red, green, blue); } + private boolean isBlockExposed(BlockPos headPos, BlockPos footPos) { + for (EnumFacing facing : Arrays.asList(EnumFacing.NORTH, EnumFacing.EAST, EnumFacing.SOUTH, EnumFacing.WEST)) { + BlockPos headOffset = headPos.offset(facing); + BlockPos footOffset = footPos.offset(facing); + + if (mc.theWorld.isAirBlock(headOffset) || mc.theWorld.isAirBlock(footOffset)) { + return true; + } + } + if (mc.theWorld.isAirBlock(headPos.up()) || mc.theWorld.isAirBlock(footPos.up())) { + return true; + } + return false; + } + + public BedESP() { super("BedESP", false); this.customColor = new ColorProperty("custom-color", (int) 8085714755840333141L, () -> this.color.getValue() == 0); this.opacity = new PercentProperty("opacity", 25); this.outline = new BooleanProperty("outline", false); + this.outlineWidth = new FloatProperty("outline-width", 1.5F, 0.5F, 5.0F, () -> this.outline.getValue()); + this.expose = new BooleanProperty("expose", false, () -> this.outline.getValue()); + this.exposeColor = new ColorProperty("expose-color", 0x00D1A4, () -> this.outline.getValue() && this.expose.getValue()); this.obsidian = new BooleanProperty("obsidian", true); } @@ -81,12 +108,17 @@ public void onRender3D(Render3DEvent event) { BlockPos opposite = blockPos.offset(state.getValue(BlockBed.FACING).getOpposite()); IBlockState oppositeState = mc.theWorld.getBlockState(opposite); if (oppositeState.getBlock() instanceof BlockBed && oppositeState.getValue(BlockBed.PART) == EnumPartType.FOOT) { + boolean bedExposed = this.expose.getValue() && this.isBlockExposed(blockPos, opposite); + if (this.obsidian.getValue()) { for (EnumFacing facing : Arrays.asList(EnumFacing.UP, EnumFacing.NORTH, EnumFacing.EAST, EnumFacing.SOUTH, EnumFacing.WEST)) { BlockPos offsetX = blockPos.offset(facing); BlockPos offsetZ = opposite.offset(facing); - boolean xObsidian = mc.theWorld.getBlockState(offsetX).getBlock() instanceof BlockObsidian; - boolean zObsidian = mc.theWorld.getBlockState(offsetZ).getBlock() instanceof BlockObsidian; + IBlockState stateX = mc.theWorld.getBlockState(offsetX); + IBlockState stateZ = mc.theWorld.getBlockState(offsetZ); + boolean xObsidian = stateX.getBlock() instanceof BlockObsidian; + boolean zObsidian = stateZ.getBlock() instanceof BlockObsidian; + if (xObsidian && zObsidian) { this.drawObsidianBox( new AxisAlignedBB( @@ -123,15 +155,24 @@ public void onRender3D(Render3DEvent event) { -((IAccessorRenderManager) mc.getRenderManager()).getRenderPosY(), -((IAccessorRenderManager) mc.getRenderManager()).getRenderPosZ() ); - Color color = this.getColor(); + + Color fillColor = this.getColor(); + if (this.outline.getValue()) { - RenderUtil.drawBoundingBox(aabb, color.getRed(), color.getGreen(), color.getBlue(), 255, 1.5F); + Color outlineColor; + if (bedExposed) { + outlineColor = new Color(this.exposeColor.getValue()); + } else { + outlineColor = ((HUD) Myau.moduleManager.modules.get(HUD.class)).getColor(System.currentTimeMillis()); + } + RenderUtil.drawBoundingBox(aabb, outlineColor.getRed(), outlineColor.getGreen(), outlineColor.getBlue(), 255, this.outlineWidth.getValue()); } + RenderUtil.drawFilledBox( aabb, - color.getRed(), - color.getGreen(), - color.getBlue() + fillColor.getRed(), + fillColor.getGreen(), + fillColor.getBlue() ); } } else { @@ -148,4 +189,4 @@ public void onEnabled() { mc.renderGlobal.loadRenderers(); } } -} +} \ No newline at end of file diff --git a/src/main/java/myau/module/modules/KillAura.java b/src/main/java/myau/module/modules/KillAura.java index 44ebb456..262e1e2a 100644 --- a/src/main/java/myau/module/modules/KillAura.java +++ b/src/main/java/myau/module/modules/KillAura.java @@ -72,9 +72,6 @@ public class KillAura extends Module { public final FloatProperty autoBlockMaxCPS; public final FloatProperty autoBlockRange; public final IntProperty maxHurtTime; - public final IntProperty blinkTicks; - public final IntProperty holdTicks; - public final BooleanProperty preventDelay; public final FloatProperty swingRange; public final FloatProperty attackRange; public final IntProperty fov; @@ -126,13 +123,6 @@ private boolean performAttack(float yaw, float pitch) { if (mc.playerController.getCurrentGameType() != GameType.SPECTATOR) { PlayerUtil.attackEntity(this.target.getEntity()); } - this.hitRegistered = true; - - // Prevent Delaying Attacks logic: stop blinking immediately upon attack - if (this.autoBlock.getValue() == 4 && this.preventDelay.getValue()) { - this.blockTick = 0; - } - return true; } } @@ -218,9 +208,7 @@ private boolean canAutoBlock() { } else if (this.autoBlockRequirePress.getValue() && !PlayerUtil.isUsingItem()) { return false; } else { - // CORRECTED: Check the PLAYER'S hurtResistantTime if (this.maxHurtTime.getValue() > 0) { - // If our invulnerability is about to run out, stop blocking to prepare an attack if (mc.thePlayer.hurtResistantTime <= this.maxHurtTime.getValue() / 50) { return false; } @@ -352,10 +340,7 @@ public KillAura() { this.autoBlockMinCPS = new FloatProperty("auto-block-min-aps", 8.0F, 1.0F, 20.0F); this.autoBlockMaxCPS = new FloatProperty("auto-block-max-aps", 10.0F, 1.0F, 20.0F); this.autoBlockRange = new FloatProperty("auto-block-range", 6.0F, 3.0F, 8.0F); - this.maxHurtTime = new IntProperty("max-hurt-time", 0, 0, 1000); - this.holdTicks = new IntProperty("hold-ticks", 1, 1, 10, () -> this.autoBlock.getValue() == 4); - this.blinkTicks = new IntProperty("blink-ticks", 2, 1, 10, () -> this.autoBlock.getValue() == 4); - this.preventDelay = new BooleanProperty("prevent-delay", true, () -> this.autoBlock.getValue() == 4); + this.maxHurtTime = new IntProperty("max-hurt-time", 0, 0, 100); this.swingRange = new FloatProperty("swing-range", 3.5F, 3.0F, 6.0F); this.attackRange = new FloatProperty("attack-range", 3.0F, 3.0F, 6.0F); this.fov = new IntProperty("fov", 360, 30, 360); @@ -542,28 +527,35 @@ public void onUpdate(UpdateEvent event) { case 4: // BLINK if (this.hasValidTarget()) { if (!Myau.playerStateManager.digging && !Myau.playerStateManager.placing) { - if (this.blockTick == 0) { - if (!this.isPlayerBlocking()) swap = true; - this.blinkReset = true; - this.blockTick = 1; - } else { - if (this.blockTick >= this.holdTicks.getValue()) { + switch (this.blockTick) { + case 0: + if (!this.isPlayerBlocking()) { + swap = true; + } + this.blinkReset = true; + this.blockTick = 1; + break; + case 1: if (this.isPlayerBlocking()) { - this.stopBlock(); + this.stopBlock(); + attack = false; } - } - - if (this.blockTick >= (this.holdTicks.getValue() + this.blinkTicks.getValue()) || this.blockTick == 0) { - Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); + if (this.attackDelayMS <= 50L) { + this.blockTick = 0; + } + break; + default: this.blockTick = 0; - } else { - this.blockTick++; - } } } this.isBlocking = true; this.fakeBlockState = true; + } else { + Myau.blinkManager.setBlinkState(false, BlinkModules.AUTO_BLOCK); + this.isBlocking = false; + this.fakeBlockState = false; } + break; case 5: // INTERACT if (this.hasValidTarget()) { int item = ((IAccessorPlayerControllerMP) mc.playerController).getCurrentPlayerItem(); diff --git a/src/main/java/myau/module/modules/NameTags.java b/src/main/java/myau/module/modules/NameTags.java index c48d86d9..45af9829 100644 --- a/src/main/java/myau/module/modules/NameTags.java +++ b/src/main/java/myau/module/modules/NameTags.java @@ -51,6 +51,7 @@ public class NameTags extends Module { public final ModeProperty distanceMode = new ModeProperty("distance", 0, new String[]{"NONE", "DEFAULT", "VAPE"}); public final ModeProperty healthMode = new ModeProperty("health", 2, new String[]{"NONE", "HP", "HEARTS", "TAB"}); public final BooleanProperty armor = new BooleanProperty("armor", true); + public final BooleanProperty sneak = new BooleanProperty("sneak", true); public final BooleanProperty effects = new BooleanProperty("effects", true); public final BooleanProperty players = new BooleanProperty("players", true); public final BooleanProperty friends = new BooleanProperty("friends", true); @@ -133,6 +134,13 @@ public void onRender(Render3DEvent event) { case 2: distanceText = String.format("&a[&f%d&a]&r ", (int) distance); } + + // Add sneak indicator + String sneakText = ""; + if (this.sneak.getValue() && entity.isSneaking()) { + sneakText = "&cS&r "; + } + float health = ((EntityLivingBase) entity).getHealth(); float absorption = ((EntityLivingBase) entity).getAbsorptionAmount(); float max = ((EntityLivingBase) entity).getMaxHealth(); @@ -163,7 +171,7 @@ public void onRender(Render3DEvent event) { } } } - String color = ChatColors.formatColor(String.format("%s&f%s&r%s", distanceText, teamName, healText)); + String color = ChatColors.formatColor(String.format("%s%s&f%s&r%s", distanceText, sneakText, teamName, healText)); int width = mc.fontRendererObj.getStringWidth(color); if (this.backgroundOpacity.getValue() > 0) { Color textColor = !entity.isSneaking() && !entity.isInvisible() @@ -254,4 +262,4 @@ public void onRender(Render3DEvent event) { } } } -} +} \ No newline at end of file From a7fe90749cb57a3724b7749876158e2b3cd1971d Mon Sep 17 00:00:00 2001 From: ididitforfun <800Yenn@gmail.com> Date: Sat, 21 Feb 2026 13:35:01 -0500 Subject: [PATCH 12/21] Legit QOL Added/Fixed DoubleClicker Add Swing through Made the S (sneak) in nametags yellow. --- .../java/myau/mixin/IAccessorMinecraft.java | 7 + src/main/java/myau/mixin/MixinMinecraft.java | 31 ++- .../myau/module/modules/DoubleClicker.java | 263 ++++++------------ .../java/myau/module/modules/KillAura.java | 50 +++- .../java/myau/module/modules/NameTags.java | 7 +- 5 files changed, 164 insertions(+), 194 deletions(-) diff --git a/src/main/java/myau/mixin/IAccessorMinecraft.java b/src/main/java/myau/mixin/IAccessorMinecraft.java index 6a0561b8..bdce9e32 100644 --- a/src/main/java/myau/mixin/IAccessorMinecraft.java +++ b/src/main/java/myau/mixin/IAccessorMinecraft.java @@ -7,6 +7,7 @@ import org.apache.logging.log4j.Logger; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; +import org.spongepowered.asm.mixin.gen.Invoker; @SideOnly(Side.CLIENT) @Mixin({Minecraft.class}) @@ -22,4 +23,10 @@ public interface IAccessorMinecraft { @Accessor("rightClickDelayTimer") void setRightClickDelayTimer(int integer); + + @Invoker("clickMouse") + void callClickMouse(); + + @Invoker("rightClickMouse") + void callRightClickMouse(); } \ No newline at end of file diff --git a/src/main/java/myau/mixin/MixinMinecraft.java b/src/main/java/myau/mixin/MixinMinecraft.java index f6fa618a..e612334e 100644 --- a/src/main/java/myau/mixin/MixinMinecraft.java +++ b/src/main/java/myau/mixin/MixinMinecraft.java @@ -94,13 +94,16 @@ private void updateFramebufferSize(CallbackInfo callbackInfo) { cancellable = true ) private void clickMouse(CallbackInfo callbackInfo) { - if (Myau.moduleManager != null && Myau.moduleManager.modules.get(NoHitDelay.class).isEnabled()) { - this.leftClickCounter = 0; - } - LeftClickMouseEvent event = new LeftClickMouseEvent(); - EventManager.call(event); - if (event.isCancelled()) { - callbackInfo.cancel(); + // Only fire event when actually clicking (not on cooldown) + if (this.leftClickCounter <= 0) { + if (Myau.moduleManager != null && Myau.moduleManager.modules.get(NoHitDelay.class).isEnabled()) { + this.leftClickCounter = 0; + } + LeftClickMouseEvent event = new LeftClickMouseEvent(); + EventManager.call(event); + if (event.isCancelled()) { + callbackInfo.cancel(); + } } } @@ -110,10 +113,14 @@ private void clickMouse(CallbackInfo callbackInfo) { cancellable = true ) private void rightClickMouse(CallbackInfo callbackInfo) { - RightClickMouseEvent event = new RightClickMouseEvent(); - EventManager.call(event); - if (event.isCancelled()) { - callbackInfo.cancel(); + // Only fire event when actually clicking (not on cooldown) + IAccessorMinecraft accessor = (IAccessorMinecraft) this; + if (accessor.getRightClickDelayTimer() <= 0) { + RightClickMouseEvent event = new RightClickMouseEvent(); + EventManager.call(event); + if (event.isCancelled()) { + callbackInfo.cancel(); + } } } @@ -159,4 +166,4 @@ private void changeCurrentItem(InventoryPlayer inventoryPlayer, int slot) { inventoryPlayer.changeCurrentItem(slot); } } -} +} \ No newline at end of file diff --git a/src/main/java/myau/module/modules/DoubleClicker.java b/src/main/java/myau/module/modules/DoubleClicker.java index ecb35752..93922ab5 100644 --- a/src/main/java/myau/module/modules/DoubleClicker.java +++ b/src/main/java/myau/module/modules/DoubleClicker.java @@ -1,11 +1,9 @@ package myau.module.modules; import myau.event.EventTarget; -import myau.event.types.EventType; import myau.event.types.Priority; import myau.events.LeftClickMouseEvent; import myau.events.RightClickMouseEvent; -import myau.events.TickEvent; import myau.module.Module; import myau.util.ItemUtil; import myau.property.properties.BooleanProperty; @@ -14,33 +12,33 @@ import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.world.WorldSettings.GameType; -import org.lwjgl.input.Mouse; import java.awt.AWTException; import java.awt.Robot; +import java.awt.event.InputEvent; import java.util.LinkedList; public class DoubleClicker extends Module { private static final Minecraft mc = Minecraft.getMinecraft(); - + private Robot bot; - private boolean ignoreNextLeft = false; - private boolean ignoreNextRight = false; - - private final LinkedList leftClicks = new LinkedList<>(); - private final LinkedList rightClicks = new LinkedList<>(); - + private boolean ignNL = false; + private boolean ignNR = false; + + private final LinkedList leftClickTimes = new LinkedList<>(); + private final LinkedList rightClickTimes = new LinkedList<>(); + public final BooleanProperty leftClick = new BooleanProperty("left-click", true); public final FloatProperty chanceLeft = new FloatProperty("chance-left", 80.0F, 0.0F, 100.0F, this.leftClick::getValue); public final BooleanProperty weaponOnly = new BooleanProperty("weapon-only", true, this.leftClick::getValue); public final BooleanProperty onlyWhileTargeting = new BooleanProperty("only-while-targeting", false, this.leftClick::getValue); - public final BooleanProperty aboveCPSLeft = new BooleanProperty("above-5-cps-left", false, this.leftClick::getValue); - + public final BooleanProperty aboveCPSLeft = new BooleanProperty("above-5-cps", false, this.leftClick::getValue); + public final BooleanProperty rightClick = new BooleanProperty("right-click", false); public final FloatProperty chanceRight = new FloatProperty("chance-right", 80.0F, 0.0F, 100.0F, this.rightClick::getValue); public final BooleanProperty blocksOnly = new BooleanProperty("blocks-only", true, this.rightClick::getValue); public final BooleanProperty aboveCPSRight = new BooleanProperty("above-5-cps-right", false, this.rightClick::getValue); - + public final BooleanProperty disableInCreative = new BooleanProperty("disable-in-creative", true); public DoubleClicker() { @@ -48,189 +46,110 @@ public DoubleClicker() { } private int getLeftCPS() { - long currentTime = System.currentTimeMillis(); - this.leftClicks.removeIf(time -> currentTime - time > 1000L); - return this.leftClicks.size(); + long now = System.currentTimeMillis(); + leftClickTimes.removeIf(t -> now - t > 1000L); + return leftClickTimes.size(); } private int getRightCPS() { - long currentTime = System.currentTimeMillis(); - this.rightClicks.removeIf(time -> currentTime - time > 1000L); - return this.rightClicks.size(); - } - - private boolean shouldDoubleClickLeft() { - if (!this.leftClick.getValue()) { - return false; - } - - if (this.chanceLeft.getValue() == 0.0F) { - return false; - } - - if (this.aboveCPSLeft.getValue() && this.getLeftCPS() <= 5) { - return false; - } - - if (this.weaponOnly.getValue() && !ItemUtil.isHoldingSword()) { - return false; - } - - if (this.onlyWhileTargeting.getValue()) { - if (mc.objectMouseOver == null || mc.objectMouseOver.entityHit == null) { - return false; - } - } - - if (this.chanceLeft.getValue() < 100.0F) { - double chance = Math.random(); - if (chance >= this.chanceLeft.getValue() / 100.0F) { - return false; - } - } - - return true; - } - - private boolean shouldDoubleClickRight() { - if (!this.rightClick.getValue()) { - return false; - } - - if (this.chanceRight.getValue() == 0.0F) { - return false; - } - - if (this.aboveCPSRight.getValue() && this.getRightCPS() <= 5) { - return false; - } - - if (this.blocksOnly.getValue()) { - ItemStack item = mc.thePlayer.getHeldItem(); - if (item == null || !(item.getItem() instanceof ItemBlock)) { - return false; - } - } - - if (this.chanceRight.getValue() < 100.0F) { - double chance = Math.random(); - if (chance >= this.chanceRight.getValue() / 100.0F) { - return false; - } - } - - return true; + long now = System.currentTimeMillis(); + rightClickTimes.removeIf(t -> now - t > 1000L); + return rightClickTimes.size(); } - private void fixLeftButton() { - if (this.ignoreNextLeft && !Mouse.isButtonDown(0)) { - this.bot.mouseRelease(16); - this.ignoreNextLeft = false; - } - } - - private void fixRightButton() { - if (this.ignoreNextRight && !Mouse.isButtonDown(1)) { - this.bot.mouseRelease(4); - this.ignoreNextRight = false; + @Override + public void onEnabled() { + try { + this.bot = new Robot(); + } catch (AWTException e) { + this.bot = null; } + this.ignNL = false; + this.ignNR = false; + this.leftClickTimes.clear(); + this.rightClickTimes.clear(); } - @EventTarget - public void onTick(TickEvent event) { - if (event.getType() == EventType.PRE) { - this.fixLeftButton(); - this.fixRightButton(); - } + @Override + public void onDisabled() { + this.ignNL = false; + this.ignNR = false; + this.bot = null; + this.leftClickTimes.clear(); + this.rightClickTimes.clear(); } @EventTarget(Priority.HIGH) public void onLeftClick(LeftClickMouseEvent event) { - if (this.disableInCreative.getValue() && mc.playerController.getCurrentGameType() == GameType.CREATIVE) { - return; - } - - if (mc.currentScreen != null) { - this.fixLeftButton(); - this.fixRightButton(); - return; - } - - // Track for CPS if needed - if (this.aboveCPSLeft.getValue()) { - this.leftClicks.add(System.currentTimeMillis()); - } - - if (!this.isEnabled() || event.isCancelled()) { - return; - } - - // If this is the extra click we injected, ignore it - if (this.ignoreNextLeft) { - this.ignoreNextLeft = false; + if (!this.isEnabled() || this.bot == null) return; + if (this.disableInCreative.getValue() && mc.playerController.getCurrentGameType() == GameType.CREATIVE) return; + if (mc.currentScreen != null) return; + + if (this.ignNL) { + this.ignNL = false; return; } - - // Check if we should inject an extra click - if (this.shouldDoubleClickLeft()) { - this.bot.mouseRelease(16); - this.bot.mousePress(16); - this.ignoreNextLeft = true; + + leftClickTimes.add(System.currentTimeMillis()); + + if (!this.leftClick.getValue() || this.chanceLeft.getValue() == 0.0F) return; + if (this.weaponOnly.getValue() && !ItemUtil.isHoldingSword()) return; + if (this.onlyWhileTargeting.getValue() && (mc.objectMouseOver == null || mc.objectMouseOver.entityHit == null)) return; + + if (this.aboveCPSLeft.getValue() && getLeftCPS() <= 5) return; + + if (this.chanceLeft.getValue() < 100.0F) { + if (Math.random() >= this.chanceLeft.getValue() / 100.0F) { + if (!org.lwjgl.input.Mouse.isButtonDown(0)) { + this.bot.mouseRelease(InputEvent.BUTTON1_MASK); + } + return; + } } + + this.bot.mouseRelease(InputEvent.BUTTON1_MASK); + this.bot.mousePress(InputEvent.BUTTON1_MASK); + this.ignNL = true; } @EventTarget(Priority.HIGH) public void onRightClick(RightClickMouseEvent event) { - if (this.disableInCreative.getValue() && mc.playerController.getCurrentGameType() == GameType.CREATIVE) { - return; - } - - if (mc.currentScreen != null) { - this.fixLeftButton(); - this.fixRightButton(); - return; - } - - // Track for CPS if needed - if (this.aboveCPSRight.getValue()) { - this.rightClicks.add(System.currentTimeMillis()); - } - - if (!this.isEnabled() || event.isCancelled()) { - return; - } - - // If this is the extra click we injected, ignore it - if (this.ignoreNextRight) { - this.ignoreNextRight = false; + if (!this.isEnabled() || this.bot == null) return; + if (this.disableInCreative.getValue() && mc.playerController.getCurrentGameType() == GameType.CREATIVE) return; + if (mc.currentScreen != null) return; + + if (this.ignNR) { + this.ignNR = false; return; } - - // Check if we should inject an extra click - if (this.shouldDoubleClickRight()) { - this.bot.mouseRelease(4); - this.bot.mousePress(4); - this.ignoreNextRight = true; + + rightClickTimes.add(System.currentTimeMillis()); + + if (!this.rightClick.getValue() || this.chanceRight.getValue() == 0.0F) return; + + if (this.blocksOnly.getValue()) { + ItemStack item = mc.thePlayer.getHeldItem(); + if (item == null || !(item.getItem() instanceof ItemBlock)) { + if (!org.lwjgl.input.Mouse.isButtonDown(1)) { + this.bot.mouseRelease(InputEvent.BUTTON3_MASK); + } + return; + } } - } - public void onEnable() { - try { - this.bot = new Robot(); - } catch (AWTException e) { - this.setEnabled(false); + if (this.aboveCPSRight.getValue() && getRightCPS() <= 5) return; + + if (this.chanceRight.getValue() < 100.0F) { + if (Math.random() >= this.chanceRight.getValue() / 100.0F) { + if (!org.lwjgl.input.Mouse.isButtonDown(1)) { + this.bot.mouseRelease(InputEvent.BUTTON3_MASK); + } + return; + } } - this.ignoreNextLeft = false; - this.ignoreNextRight = false; - this.leftClicks.clear(); - this.rightClicks.clear(); - } - public void onDisable() { - this.ignoreNextLeft = false; - this.ignoreNextRight = false; - this.leftClicks.clear(); - this.rightClicks.clear(); - this.bot = null; + this.bot.mouseRelease(InputEvent.BUTTON3_MASK); + this.bot.mousePress(InputEvent.BUTTON3_MASK); + this.ignNR = true; } } \ No newline at end of file diff --git a/src/main/java/myau/module/modules/KillAura.java b/src/main/java/myau/module/modules/KillAura.java index 262e1e2a..1ec92848 100644 --- a/src/main/java/myau/module/modules/KillAura.java +++ b/src/main/java/myau/module/modules/KillAura.java @@ -83,6 +83,7 @@ public class KillAura extends Module { public final PercentProperty smoothing; public final IntProperty angleStep; public final BooleanProperty throughWalls; + public final BooleanProperty swingThrough; public final BooleanProperty requirePress; public final BooleanProperty allowMining; public final BooleanProperty weaponsOnly; @@ -131,6 +132,22 @@ private boolean performAttack(float yaw, float pitch) { } } + private boolean performSwing() { + if (!Myau.playerStateManager.digging && !Myau.playerStateManager.placing) { + if (this.isPlayerBlocking() && this.autoBlock.getValue() != 1) { + return false; + } else if (this.attackDelayMS > 0L) { + return false; + } else { + this.attackDelayMS = this.attackDelayMS + this.getAttackDelay(); + mc.thePlayer.swingItem(); + return true; + } + } else { + return false; + } + } + private void sendUseItem() { ((IAccessorPlayerControllerMP) mc.playerController).callSyncCurrentPlayItem(); this.startBlock(mc.thePlayer.getHeldItem()); @@ -238,7 +255,7 @@ private boolean isValidTarget(EntityLivingBase entityLivingBase) { return false; } else if (RotationUtil.angleToEntity(entityLivingBase) > this.fov.getValue().floatValue()) { return false; - } else if (!this.throughWalls.getValue() && RotationUtil.rayTrace(entityLivingBase) != null) { + } else if (!this.throughWalls.getValue() && !this.swingThrough.getValue() && RotationUtil.rayTrace(entityLivingBase) != null) { return false; } else if (entityLivingBase instanceof EntityOtherPlayerMP) { if (!this.players.getValue()) { @@ -352,6 +369,7 @@ public KillAura() { this.smoothing = new PercentProperty("smoothing", 0); this.angleStep = new IntProperty("angle-step", 90, 30, 180); this.throughWalls = new BooleanProperty("through-walls", true); + this.swingThrough = new BooleanProperty("swing-through", false); this.requirePress = new BooleanProperty("require-press", false); this.allowMining = new BooleanProperty("allow-mining", true); this.weaponsOnly = new BooleanProperty("weapons-only", true); @@ -681,7 +699,12 @@ public void onUpdate(UpdateEvent event) { } } boolean attacked = false; - if (this.isBoxInSwingRange(this.target.getBox())) { + // For swingThrough, a wall target is still a valid target to aim and swing at + boolean behindWall = this.swingThrough.getValue() + && RotationUtil.rayTrace(this.target.getEntity()) != null; + boolean inSwingOrWall = this.isBoxInSwingRange(this.target.getBox()) || behindWall; + + if (inSwingOrWall) { if (this.rotations.getValue() == 2 || this.rotations.getValue() == 3) { float[] rotations = RotationUtil.getRotationsToBox( this.target.getBox(), @@ -698,8 +721,15 @@ public void onUpdate(UpdateEvent event) { event.setPervRotation(rotations[0], 1); } } + if (attack) { - attacked = this.performAttack(event.getNewYaw(), event.getNewPitch()); + if (behindWall) { + // Target is behind a wall — swing animation only, no attack packet sent. + // Looks exactly like a legit player clicking on someone through geometry. + attacked = this.performSwing(); + } else { + attacked = this.performAttack(event.getNewYaw(), event.getNewPitch()); + } } } if (swap) { @@ -722,9 +752,14 @@ public void onTick(TickEvent event) { if (this.isEnabled()) { switch (event.getType()) { case PRE: + // When swingThrough is on, a wall target is still valid — don't force rescan just + // because it's behind geometry. Only rescan if truly out of swing range or invalid. + boolean currentTargetBehindWall = this.swingThrough.getValue() + && this.target != null + && RotationUtil.rayTrace(this.target.getEntity()) != null; if (this.target == null || !this.isValidTarget(this.target.getEntity()) - || !this.isBoxInAttackRange(this.target.getBox()) + || (!currentTargetBehindWall && !this.isBoxInAttackRange(this.target.getBox())) || !this.isBoxInSwingRange(this.target.getBox()) || this.timer.hasTimeElapsed(this.switchDelay.getValue().longValue())) { this.timer.reset(); @@ -742,8 +777,11 @@ public void onTick(TickEvent event) { if (targets.stream().anyMatch(this::isInSwingRange)) { targets.removeIf(entityLivingBase -> !this.isInSwingRange(entityLivingBase)); } - if (targets.stream().anyMatch(this::isInAttackRange)) { - targets.removeIf(entityLivingBase -> !this.isInAttackRange(entityLivingBase)); + // When swingThrough is on, keep wall targets in the list even if outside + // strict attack range — they are valid swing targets + if (targets.stream().anyMatch(e -> this.isInAttackRange(e) || (this.swingThrough.getValue() && RotationUtil.rayTrace(e) != null))) { + targets.removeIf(entityLivingBase -> !this.isInAttackRange(entityLivingBase) + && !(this.swingThrough.getValue() && RotationUtil.rayTrace(entityLivingBase) != null)); } if (targets.stream().anyMatch(this::isPlayerTarget)) { targets.removeIf(entityLivingBase -> !this.isPlayerTarget(entityLivingBase)); diff --git a/src/main/java/myau/module/modules/NameTags.java b/src/main/java/myau/module/modules/NameTags.java index 45af9829..6ae7f4f0 100644 --- a/src/main/java/myau/module/modules/NameTags.java +++ b/src/main/java/myau/module/modules/NameTags.java @@ -134,13 +134,12 @@ public void onRender(Render3DEvent event) { case 2: distanceText = String.format("&a[&f%d&a]&r ", (int) distance); } - - // Add sneak indicator + String sneakText = ""; if (this.sneak.getValue() && entity.isSneaking()) { - sneakText = "&cS&r "; + sneakText = "&eS&r "; } - + float health = ((EntityLivingBase) entity).getHealth(); float absorption = ((EntityLivingBase) entity).getAbsorptionAmount(); float max = ((EntityLivingBase) entity).getMaxHealth(); From d53f3dfc4eb56c6139b403a49b918268c82a7389 Mon Sep 17 00:00:00 2001 From: ididitforfun <800Yenn@gmail.com> Date: Sat, 21 Feb 2026 13:36:20 -0500 Subject: [PATCH 13/21] removed notes --- src/main/java/myau/module/modules/KillAura.java | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/main/java/myau/module/modules/KillAura.java b/src/main/java/myau/module/modules/KillAura.java index 1ec92848..5e866258 100644 --- a/src/main/java/myau/module/modules/KillAura.java +++ b/src/main/java/myau/module/modules/KillAura.java @@ -699,7 +699,6 @@ public void onUpdate(UpdateEvent event) { } } boolean attacked = false; - // For swingThrough, a wall target is still a valid target to aim and swing at boolean behindWall = this.swingThrough.getValue() && RotationUtil.rayTrace(this.target.getEntity()) != null; boolean inSwingOrWall = this.isBoxInSwingRange(this.target.getBox()) || behindWall; @@ -724,8 +723,6 @@ public void onUpdate(UpdateEvent event) { if (attack) { if (behindWall) { - // Target is behind a wall — swing animation only, no attack packet sent. - // Looks exactly like a legit player clicking on someone through geometry. attacked = this.performSwing(); } else { attacked = this.performAttack(event.getNewYaw(), event.getNewPitch()); @@ -752,8 +749,6 @@ public void onTick(TickEvent event) { if (this.isEnabled()) { switch (event.getType()) { case PRE: - // When swingThrough is on, a wall target is still valid — don't force rescan just - // because it's behind geometry. Only rescan if truly out of swing range or invalid. boolean currentTargetBehindWall = this.swingThrough.getValue() && this.target != null && RotationUtil.rayTrace(this.target.getEntity()) != null; @@ -777,8 +772,6 @@ public void onTick(TickEvent event) { if (targets.stream().anyMatch(this::isInSwingRange)) { targets.removeIf(entityLivingBase -> !this.isInSwingRange(entityLivingBase)); } - // When swingThrough is on, keep wall targets in the list even if outside - // strict attack range — they are valid swing targets if (targets.stream().anyMatch(e -> this.isInAttackRange(e) || (this.swingThrough.getValue() && RotationUtil.rayTrace(e) != null))) { targets.removeIf(entityLivingBase -> !this.isInAttackRange(entityLivingBase) && !(this.swingThrough.getValue() && RotationUtil.rayTrace(entityLivingBase) != null)); From c6fd55f2e4f76e19de006cf8fbe7dc4570b7da45 Mon Sep 17 00:00:00 2001 From: ididitforfun <800Yenn@gmail.com> Date: Sun, 1 Mar 2026 03:14:58 -0500 Subject: [PATCH 14/21] Added Clutch DoubleClicker is somewhat fixed ish Rework timer --- src/main/java/myau/Myau.java | 1 + src/main/java/myau/mixin/MixinTimer.java | 26 + src/main/java/myau/module/modules/Clutch.java | 499 ++++++++++++++++++ .../myau/module/modules/DoubleClicker.java | 20 +- src/main/java/myau/module/modules/Timer.java | 75 ++- src/main/java/myau/ui/ClickGui.java | 1 + 6 files changed, 587 insertions(+), 35 deletions(-) create mode 100644 src/main/java/myau/mixin/MixinTimer.java create mode 100644 src/main/java/myau/module/modules/Clutch.java diff --git a/src/main/java/myau/Myau.java b/src/main/java/myau/Myau.java index 67fc42db..828cb15a 100644 --- a/src/main/java/myau/Myau.java +++ b/src/main/java/myau/Myau.java @@ -77,6 +77,7 @@ public void init() { moduleManager.modules.put(Chams.class, new Chams()); moduleManager.modules.put(ChestESP.class, new ChestESP()); moduleManager.modules.put(ChestStealer.class, new ChestStealer()); + moduleManager.modules.put(Clutch.class, new Clutch()); moduleManager.modules.put(DoubleClicker.class, new DoubleClicker()); moduleManager.modules.put(Eagle.class, new Eagle()); moduleManager.modules.put(ESP.class, new ESP()); diff --git a/src/main/java/myau/mixin/MixinTimer.java b/src/main/java/myau/mixin/MixinTimer.java new file mode 100644 index 00000000..e7061ea4 --- /dev/null +++ b/src/main/java/myau/mixin/MixinTimer.java @@ -0,0 +1,26 @@ +package myau.mixin; + +import net.minecraft.util.Timer; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@SideOnly(Side.CLIENT) +@Mixin(value = {Timer.class}, priority = 9999) +public abstract class MixinTimer { + + @Shadow + public float timerSpeed; + + @Inject( + method = {"updateTimer"}, + at = @At("HEAD") + ) + private void updateTimer(CallbackInfo ci) { + this.timerSpeed = myau.module.modules.Timer.getRequestedSpeed(); + } +} \ No newline at end of file diff --git a/src/main/java/myau/module/modules/Clutch.java b/src/main/java/myau/module/modules/Clutch.java new file mode 100644 index 00000000..12dd092e --- /dev/null +++ b/src/main/java/myau/module/modules/Clutch.java @@ -0,0 +1,499 @@ +package myau.module.modules; + +import myau.event.EventTarget; +import myau.event.types.EventType; +import myau.event.types.Priority; +import myau.events.*; +import myau.management.RotationState; +import myau.module.Module; +import myau.property.properties.BooleanProperty; +import myau.property.properties.FloatProperty; +import myau.property.properties.IntProperty; +import myau.property.properties.ModeProperty; +import myau.util.MoveUtil; +import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.util.*; + +import java.util.*; + +public class Clutch extends Module { + private static final Minecraft mc = Minecraft.getMinecraft(); + private final Map BLOCK_SCORE = new HashMap<>(); + + private float serverYaw; + private float serverPitch; + private float aimYaw; + private float aimPitch; + private boolean hasAim; + private boolean resetting; + private BlockPos targetBlock; + private EnumFacing targetFacing; + private Vec3 targetHitVec; + private boolean placeQueued; + private int lastSlot = -1; + private int plannedSlot = -1; + private boolean slotSwapped = false; + private int clutchBlocksPlaced = 0; + private int lastPlacedX = Integer.MIN_VALUE; + private int lastPlacedY = Integer.MIN_VALUE; + private int lastPlacedZ = Integer.MIN_VALUE; + private BlockPos lockedBlock = null; + private EnumFacing lockedFacing = null; + private float lockedAimYaw; + private float lockedAimPitch; + + private static final double HW = 0.3; + private static final double[][] CORNERS = {{-HW, -HW}, {HW, -HW}, {-HW, HW}, {HW, HW}}; + private static final double INSET = 0.05; + private static final double STEP = 0.2; + private static final double JIT = STEP * 0.1; + + public final FloatProperty reach = new FloatProperty("reach", 4.5f, 0.5f, 6.0f); + public final IntProperty speed = new IntProperty("speed", 8, 1, 100); + public final IntProperty snapbackSpeed = new IntProperty("snapback-speed", 12, 1, 100); + public final IntProperty maxBlocks = new IntProperty("max-blocks", 10, 0, 50); + public final IntProperty rotationTolerance = new IntProperty("rotation-tolerance", 25, 5, 100); + public final BooleanProperty simulateFuture = new BooleanProperty("simulate-future-pos", true); + public final ModeProperty moveFix = new ModeProperty("move-fix", 1, new String[]{"NONE", "SILENT"}); + + public Clutch() { + super("Clutch", false); + BLOCK_SCORE.put("obsidian", 0); + BLOCK_SCORE.put("end_stone", 1); + BLOCK_SCORE.put("planks", 2); + BLOCK_SCORE.put("log", 2); + BLOCK_SCORE.put("log2", 2); + BLOCK_SCORE.put("glass", 3); + BLOCK_SCORE.put("stained_glass", 3); + BLOCK_SCORE.put("stainedGlass", 3); + BLOCK_SCORE.put("hardened_clay", 4); + BLOCK_SCORE.put("stained_hardened_clay", 4); + BLOCK_SCORE.put("hardenedClay", 4); + BLOCK_SCORE.put("stainedHardenedClay", 4); + BLOCK_SCORE.put("clay", 4); + BLOCK_SCORE.put("stone", 5); + BLOCK_SCORE.put("cloth", 5); + } + + @Override + public void onEnabled() { + if (mc.thePlayer == null) return; + serverYaw = mc.thePlayer.rotationYaw; + serverPitch = mc.thePlayer.rotationPitch; + aimYaw = serverYaw; + aimPitch = serverPitch; + hasAim = false; + resetting = false; + clutchBlocksPlaced = 0; + lastSlot = mc.thePlayer.inventory.currentItem; + targetBlock = null; + targetFacing = null; + targetHitVec = null; + placeQueued = false; + slotSwapped = false; + plannedSlot = -1; + lockedBlock = null; + lockedFacing = null; + } + + @Override + public void onDisabled() { + if (mc.thePlayer == null) return; + restoreSlot(); + targetBlock = null; + targetFacing = null; + targetHitVec = null; + hasAim = false; + resetting = false; + lockedBlock = null; + lockedFacing = null; + } + + @EventTarget(Priority.HIGH) + public void onUpdate(UpdateEvent event) { + if (!isEnabled()) return; + if (event.getType() != EventType.PRE) return; + if (mc.thePlayer == null || mc.theWorld == null) return; + if (mc.currentScreen != null) return; + + serverYaw = event.getYaw(); + serverPitch = event.getPitch(); + + if (mc.thePlayer.onGround) clutchBlocksPlaced = 0; + + BlockPos belowFeet = new BlockPos( + MathHelper.floor_double(mc.thePlayer.posX), + MathHelper.floor_double(mc.thePlayer.posY) - 1, + MathHelper.floor_double(mc.thePlayer.posZ) + ); + + if (!isReplaceable(belowFeet)) { + clearAim(); + return; + } + + plannedSlot = findBestBlockSlot(); + if (plannedSlot == -1) { + clearAim(); + return; + } + + if (mc.thePlayer.inventory.currentItem != plannedSlot) { + if (!slotSwapped) lastSlot = mc.thePlayer.inventory.currentItem; + mc.thePlayer.inventory.currentItem = plannedSlot; + slotSwapped = true; + } + + ItemStack held = mc.thePlayer.inventory.getCurrentItem(); + if (held == null || !(held.getItem() instanceof ItemBlock)) { + clearAim(); + return; + } + + // Validate existing lock before searching for a new one + boolean lockValid = lockedBlock != null && lockedFacing != null && isLockedTargetValid(); + if (!lockValid) { + lockedBlock = null; + lockedFacing = null; + findClutchTarget(); + } + + if (targetBlock != null && targetHitVec != null) { + aimYaw = lockedAimYaw; + aimPitch = lockedAimPitch; + hasAim = true; + resetting = false; + } + + if (resetting) { + float[] sm = smoothStep(mc.thePlayer.rotationYaw, mc.thePlayer.rotationPitch, true); + if (Math.abs(sm[0] - mc.thePlayer.rotationYaw) < 0.5f && Math.abs(sm[1] - mc.thePlayer.rotationPitch) < 0.5f) { + resetting = false; + } else { + event.setRotation(sm[0], sm[1], 4); + if (moveFix.getValue() != 0) event.setPervRotation(sm[0], 4); + } + return; + } + + if (hasAim && targetBlock != null) { + float[] sm = smoothStep(aimYaw, aimPitch, false); + event.setRotation(sm[0], sm[1], 4); + if (moveFix.getValue() != 0) event.setPervRotation(sm[0], 4); + + if (withinTolerance(sm[0], sm[1])) { + int max = maxBlocks.getValue(); + if (max == 0 || clutchBlocksPlaced < max) { + MovingObjectPosition mop = rayTrace(sm[0], sm[1], reach.getValue()); + if (mop != null + && mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK + && mop.getBlockPos().equals(targetBlock) + && mop.sideHit == targetFacing) { + targetHitVec = mop.hitVec; + placeQueued = true; + } + } + } + } + + if (placeQueued) { + placeQueued = false; + doPlace(); + } + } + + @EventTarget + public void onMoveInput(MoveInputEvent event) { + if (!isEnabled()) return; + if (moveFix.getValue() == 1 + && RotationState.isActived() + && RotationState.getPriority() == 4 + && MoveUtil.isForwardPressed()) { + MoveUtil.fixStrafe(RotationState.getSmoothedYaw()); + } + } + + @EventTarget + public void onSwap(SwapItemEvent event) { + if (isEnabled()) { + lastSlot = event.setSlot(lastSlot); + event.setCancelled(true); + } + } + + private boolean isLockedTargetValid() { + if (isReplaceable(lockedBlock)) return false; + MovingObjectPosition mop = rayTrace(lockedAimYaw, lockedAimPitch, reach.getValue()); + if (mop == null || mop.typeOfHit != MovingObjectPosition.MovingObjectType.BLOCK) return false; + if (!mop.getBlockPos().equals(lockedBlock)) return false; + if (mop.sideHit != lockedFacing) return false; + targetHitVec = mop.hitVec; + targetBlock = lockedBlock; + targetFacing = lockedFacing; + return true; + } + + private void findClutchTarget() { + double px = mc.thePlayer.posX, py = mc.thePlayer.posY, pz = mc.thePlayer.posZ; + Vec3 eye = mc.thePlayer.getPositionEyes(1.0f); + double reachD = reach.getValue(); + + double futureX = px, futureY = py, futureZ = pz; + if (simulateFuture.getValue()) { + double mx = mc.thePlayer.motionX, my = mc.thePlayer.motionY, mz = mc.thePlayer.motionZ; + for (int t = 0; t < 20; t++) { + my = (my - 0.08) * 0.98; + futureY += my; + futureX += mx * 0.91; + futureZ += mz * 0.91; + if (futureY < py - 2 || my >= 0) break; + } + } + + int feetX = MathHelper.floor_double(px); + int feetY = MathHelper.floor_double(py); + int feetZ = MathHelper.floor_double(pz); + + List candidates = new ArrayList<>(); + for (int y = feetY - 1; y >= feetY - 4; y--) { + for (int x = feetX - 5; x <= feetX + 4; x++) { + for (int z = feetZ - 5; z <= feetZ + 4; z++) { + BlockPos bp = new BlockPos(x, y, z); + if (isReplaceable(bp)) continue; + + double curDist = dist2AABB(px, py, pz, x, y, z); + double futureDist = dist2AABB(futureX, futureY, futureZ, x, y, z); + double score = simulateFuture.getValue() ? curDist * 0.3 + futureDist * 0.7 : curDist; + + if (x == lastPlacedX && y == lastPlacedY && z == lastPlacedZ) score *= 0.95; + + candidates.add(new Object[]{score, bp}); + } + } + } + + candidates.sort(Comparator.comparingDouble(o -> (Double) o[0])); + + for (Object[] cand : candidates) { + BlockPos bp = (BlockPos) cand[1]; + boolean underPlayer = isUnderPlayer(bp, px, py, pz); + if (tryAimAtBlock(bp, eye, reachD, underPlayer)) return; + } + + targetBlock = null; + targetFacing = null; + targetHitVec = null; + } + + private boolean tryAimAtBlock(BlockPos bp, Vec3 eye, double reachD, boolean underPlayer) { + boolean faceSouth = Math.abs(eye.zCoord - (bp.getZ() + 1)) < Math.abs(eye.zCoord - bp.getZ()); + boolean faceEast = Math.abs(eye.xCoord - (bp.getX() + 1)) < Math.abs(eye.xCoord - bp.getX()); + float baseYaw = serverYaw, basePit = serverPitch; + + int n = (int) Math.round(1.0 / STEP); + List rotCands = new ArrayList<>(); + rotCands.add(new float[]{0f, baseYaw, basePit}); + + for (int r = 0; r <= n; r++) { + double v = clamp(r * STEP + randJit(), 0, 1); + for (int c = 0; c <= n; c++) { + double u = clamp(c * STEP + randJit(), 0, 1); + + if (underPlayer) { + float[] rv = getRotationsWrapped(eye, bp.getX() + u, bp.getY() + 1 - INSET, bp.getZ() + v); + rotCands.add(new float[]{angCost(rv[0], rv[1], baseYaw, basePit), rv[0], rv[1]}); + } + + float[] rZ = getRotationsWrapped(eye, bp.getX() + u, bp.getY() + v, faceSouth ? bp.getZ() + 1 - INSET : bp.getZ() + INSET); + rotCands.add(new float[]{angCost(rZ[0], rZ[1], baseYaw, basePit), rZ[0], rZ[1]}); + + float[] rX = getRotationsWrapped(eye, faceEast ? bp.getX() + 1 - INSET : bp.getX() + INSET, bp.getY() + v, bp.getZ() + u); + rotCands.add(new float[]{angCost(rX[0], rX[1], baseYaw, basePit), rX[0], rX[1]}); + } + } + + rotCands.sort(Comparator.comparingDouble(a -> a[0])); + + for (float[] rc : rotCands) { + float yawTest = unwrapYaw(rc[1], serverYaw); + float pitTest = rc[2]; + + MovingObjectPosition mop = rayTrace(yawTest, pitTest, reachD); + if (mop == null || mop.typeOfHit != MovingObjectPosition.MovingObjectType.BLOCK) continue; + if (!mop.getBlockPos().equals(bp)) continue; + if (mop.sideHit == EnumFacing.DOWN) continue; + if (mop.sideHit == EnumFacing.UP && !underPlayer) continue; + + targetBlock = bp; + targetFacing = mop.sideHit; + targetHitVec = mop.hitVec; + lockedBlock = bp; + lockedFacing = mop.sideHit; + lockedAimYaw = yawTest; + lockedAimPitch = pitTest; + aimYaw = yawTest; + aimPitch = pitTest; + return true; + } + + return false; + } + + private void doPlace() { + if (targetBlock == null || targetFacing == null || targetHitVec == null) return; + ItemStack held = mc.thePlayer.inventory.getCurrentItem(); + if (held == null || !(held.getItem() instanceof ItemBlock)) return; + + boolean placed = mc.playerController.onPlayerRightClick(mc.thePlayer, mc.theWorld, held, targetBlock, targetFacing, targetHitVec); + + if (placed) { + if (targetFacing != EnumFacing.UP) clutchBlocksPlaced++; + lastPlacedX = targetBlock.getX(); + lastPlacedY = targetBlock.getY(); + lastPlacedZ = targetBlock.getZ(); + mc.thePlayer.swingItem(); + } + } + + private int findBestBlockSlot() { + int best = -1, bestScore = Integer.MIN_VALUE; + for (int slot = 8; slot >= 0; slot--) { + ItemStack s = mc.thePlayer.inventory.getStackInSlot(slot); + if (s == null || s.stackSize == 0) continue; + if (!(s.getItem() instanceof ItemBlock)) continue; + Block block = ((ItemBlock) s.getItem()).getBlock(); + String name = block.getUnlocalizedName().replace("tile.", "").replace("block.", ""); + Integer score = BLOCK_SCORE.get(name); + if (score == null) { + String lower = name.toLowerCase(); + if (lower.contains("clay")) score = 4; + else if (lower.contains("stone") || lower.contains("brick")) score = 5; + else if (lower.contains("plank") || lower.contains("log")) score = 2; + else if (lower.contains("glass")) score = 3; + else if (lower.contains("wool") || lower.contains("cloth")) score = 5; + else continue; + } + if (score > bestScore) { + bestScore = score; + best = slot; + } + } + return best; + } + + private void restoreSlot() { + if (slotSwapped && lastSlot != -1 && mc.thePlayer != null && mc.thePlayer.inventory.currentItem != lastSlot) { + mc.thePlayer.inventory.currentItem = lastSlot; + } + slotSwapped = false; + } + + private void clearAim() { + if (hasAim) resetting = true; + hasAim = false; + targetBlock = null; + targetFacing = null; + targetHitVec = null; + lockedBlock = null; + lockedFacing = null; + lastPlacedX = lastPlacedY = lastPlacedZ = Integer.MIN_VALUE; + clutchBlocksPlaced = 0; + restoreSlot(); + } + + private float[] smoothStep(float targetYaw, float targetPitch, boolean snapback) { + float curYaw = serverYaw, curPit = serverPitch; + float dYaw = targetYaw - curYaw, dPit = targetPitch - curPit; + + if (Math.abs(dYaw) < 0.1f) curYaw = targetYaw; + if (Math.abs(dPit) < 0.1f) curPit = targetPitch; + if (curYaw == targetYaw && curPit == targetPitch) return new float[]{curYaw, curPit}; + + float maxStep = snapback ? snapbackSpeed.getValue() : speed.getValue(); + maxStep *= (float) (1.0 - Math.random() * 0.2); + + float total = Math.abs(dYaw) + Math.abs(dPit); + if (total <= maxStep) return new float[]{targetYaw, targetPitch}; + + float scale = maxStep / total; + return new float[]{curYaw + dYaw * scale, curPit + dPit * scale}; + } + + private boolean withinTolerance(float yaw, float pitch) { + float dy = Math.abs(MathHelper.wrapAngleTo180_float(yaw - serverYaw)); + float dp = Math.abs(MathHelper.wrapAngleTo180_float(pitch - serverPitch)); + return dy <= rotationTolerance.getValue() && dp <= rotationTolerance.getValue(); + } + + private boolean isUnderPlayer(BlockPos bp, double px, double py, double pz) { + if (bp.getY() >= MathHelper.floor_double(py)) return false; + for (double[] c : CORNERS) { + if (bp.getX() == MathHelper.floor_double(px + c[0]) && bp.getZ() == MathHelper.floor_double(pz + c[1])) + return true; + } + return false; + } + + private boolean isReplaceable(BlockPos pos) { + Block b = mc.theWorld.getBlockState(pos).getBlock(); + return b == Blocks.air || b == Blocks.water || b == Blocks.flowing_water || b == Blocks.lava || b == Blocks.flowing_lava || b == Blocks.fire; + } + + private double dist2AABB(double px, double py, double pz, int bx, int by, int bz) { + double cx = clamp(px, bx, bx + 1); + double cy = clamp(py, by, by + 1); + double cz = clamp(pz, bz, bz + 1); + double dx = px - cx, dy = py - cy, dz = pz - cz; + return dx * dx + dy * dy + dz * dz; + } + + private float[] getRotationsWrapped(Vec3 eye, double tx, double ty, double tz) { + double dx = tx - eye.xCoord, dy = ty - eye.yCoord, dz = tz - eye.zCoord; + double hd = Math.sqrt(dx * dx + dz * dz); + float yaw = normYaw((float) Math.toDegrees(Math.atan2(dz, dx)) - 90f); + float pitch = (float) Math.toDegrees(-Math.atan2(dy, hd)); + return new float[]{yaw, pitch}; + } + + private MovingObjectPosition rayTrace(float yaw, float pitch, double range) { + double yr = Math.toRadians(yaw), pr = Math.toRadians(pitch); + double dirX = -Math.sin(yr) * Math.cos(pr); + double dirY = -Math.sin(pr); + double dirZ = Math.cos(yr) * Math.cos(pr); + Vec3 start = mc.thePlayer.getPositionEyes(1.0f); + Vec3 end = start.addVector(dirX * range, dirY * range, dirZ * range); + return mc.theWorld.rayTraceBlocks(start, end); + } + + private float normYaw(float y) { + y = ((y % 360f) + 360f) % 360f; + return y > 180f ? y - 360f : y; + } + + private float unwrapYaw(float yaw, float prev) { + return prev + ((((yaw - prev + 180f) % 360f) + 360f) % 360f - 180f); + } + + private float angCost(float y, float p, float baseY, float baseP) { + float dy = y - baseY; + while (dy <= -180f) dy += 360f; + while (dy > 180f) dy -= 360f; + return Math.abs(dy) + Math.abs(p - baseP); + } + + private double clamp(double v, double lo, double hi) { + return v < lo ? lo : Math.min(v, hi); + } + + private double randJit() { + return Math.random() * JIT * 2 - JIT; + } + + public int getSlot() { + return lastSlot; + } +} \ No newline at end of file diff --git a/src/main/java/myau/module/modules/DoubleClicker.java b/src/main/java/myau/module/modules/DoubleClicker.java index 93922ab5..9dbedeba 100644 --- a/src/main/java/myau/module/modules/DoubleClicker.java +++ b/src/main/java/myau/module/modules/DoubleClicker.java @@ -4,6 +4,7 @@ import myau.event.types.Priority; import myau.events.LeftClickMouseEvent; import myau.events.RightClickMouseEvent; +import myau.mixin.IAccessorMinecraft; import myau.module.Module; import myau.util.ItemUtil; import myau.property.properties.BooleanProperty; @@ -114,7 +115,7 @@ public void onLeftClick(LeftClickMouseEvent event) { @EventTarget(Priority.HIGH) public void onRightClick(RightClickMouseEvent event) { - if (!this.isEnabled() || this.bot == null) return; + if (!this.isEnabled()) return; if (this.disableInCreative.getValue() && mc.playerController.getCurrentGameType() == GameType.CREATIVE) return; if (mc.currentScreen != null) return; @@ -129,27 +130,16 @@ public void onRightClick(RightClickMouseEvent event) { if (this.blocksOnly.getValue()) { ItemStack item = mc.thePlayer.getHeldItem(); - if (item == null || !(item.getItem() instanceof ItemBlock)) { - if (!org.lwjgl.input.Mouse.isButtonDown(1)) { - this.bot.mouseRelease(InputEvent.BUTTON3_MASK); - } - return; - } + if (item == null || !(item.getItem() instanceof ItemBlock)) return; } if (this.aboveCPSRight.getValue() && getRightCPS() <= 5) return; if (this.chanceRight.getValue() < 100.0F) { - if (Math.random() >= this.chanceRight.getValue() / 100.0F) { - if (!org.lwjgl.input.Mouse.isButtonDown(1)) { - this.bot.mouseRelease(InputEvent.BUTTON3_MASK); - } - return; - } + if (Math.random() >= this.chanceRight.getValue() / 100.0F) return; } - this.bot.mouseRelease(InputEvent.BUTTON3_MASK); - this.bot.mousePress(InputEvent.BUTTON3_MASK); this.ignNR = true; + ((IAccessorMinecraft) mc).callRightClickMouse(); } } \ No newline at end of file diff --git a/src/main/java/myau/module/modules/Timer.java b/src/main/java/myau/module/modules/Timer.java index 9f373813..1e6a819a 100644 --- a/src/main/java/myau/module/modules/Timer.java +++ b/src/main/java/myau/module/modules/Timer.java @@ -1,45 +1,80 @@ package myau.module.modules; +import myau.Myau; import myau.event.EventTarget; -import myau.event.types.EventType; import myau.event.types.Priority; -import myau.events.UpdateEvent; -import myau.mixin.IAccessorMinecraft; +import myau.events.LivingUpdateEvent; import myau.module.Module; import myau.property.properties.FloatProperty; -import net.minecraft.client.Minecraft; + +import java.util.Comparator; +import java.util.concurrent.CopyOnWriteArrayList; public class Timer extends Module { - private static final Minecraft mc = Minecraft.getMinecraft(); - + + private static final CopyOnWriteArrayList requests = new CopyOnWriteArrayList<>(); + public final FloatProperty speed = new FloatProperty("speed", 1.0F, 0.01F, 10.0F); public Timer() { super("Timer", false); } - @Override - public void onDisabled() { - net.minecraft.util.Timer timer = ((IAccessorMinecraft) mc).getTimer(); - if (timer != null) { - timer.timerSpeed = 1.0F; + public static float getRequestedSpeed() { + float requestSpeed = requests.stream() + .max(Comparator.comparingInt(r -> r.priority)) + .map(r -> r.speed) + .orElse(-1f); + + if (requestSpeed > 0) return requestSpeed; + + Timer instance = Myau.moduleManager != null + ? (Timer) Myau.moduleManager.modules.get(Timer.class) + : null; + + if (instance != null && instance.isEnabled()) { + return instance.speed.getValue(); } + + return 1.0f; + } + + public static void requestTimerSpeed(float speed, int priority, Object provider, int resetAfterTicks) { + requests.removeIf(r -> r.provider == provider); + requests.add(new TimerRequest(speed, priority, provider, resetAfterTicks + 1)); + } + + public static void cancelRequest(Object provider) { + requests.removeIf(r -> r.provider == provider); } @EventTarget(Priority.HIGHEST) - public void onUpdate(UpdateEvent event) { - if (!this.isEnabled() || event.getType() != EventType.PRE) { - return; - } - - net.minecraft.util.Timer timer = ((IAccessorMinecraft) mc).getTimer(); - if (timer != null) { - timer.timerSpeed = this.speed.getValue(); - } + public void onLivingUpdate(LivingUpdateEvent event) { + requests.forEach(r -> r.ticksLeft--); + requests.removeIf(r -> r.ticksLeft <= 0); + } + + @Override + public void onDisabled() { + requests.clear(); } @Override public String[] getSuffix() { return new String[]{String.format("%.1fx", this.speed.getValue())}; } + + private static class TimerRequest { + float speed; + int priority; + Object provider; + int ticksLeft; + + TimerRequest(float speed, int priority, Object provider, int ticksLeft) { + this.speed = speed; + this.priority = priority; + this.provider = provider; + this.ticksLeft = ticksLeft; + } + } } \ No newline at end of file diff --git a/src/main/java/myau/ui/ClickGui.java b/src/main/java/myau/ui/ClickGui.java index f47cb15c..6a6ef694 100644 --- a/src/main/java/myau/ui/ClickGui.java +++ b/src/main/java/myau/ui/ClickGui.java @@ -90,6 +90,7 @@ public ClickGui() { playerModules.add(Myau.moduleManager.getModule(InvManager.class)); playerModules.add(Myau.moduleManager.getModule(InvWalk.class)); playerModules.add(Myau.moduleManager.getModule(Scaffold.class)); + playerModules.add(Myau.moduleManager.getModule(Clutch.class)); playerModules.add(Myau.moduleManager.getModule(AutoBlockIn.class)); playerModules.add(Myau.moduleManager.getModule(SpeedMine.class)); playerModules.add(Myau.moduleManager.getModule(FastPlace.class)); From 743440a09524e154da5577b05efd951ea6bd33ff Mon Sep 17 00:00:00 2001 From: ididitforfun <800Yenn@gmail.com> Date: Mon, 9 Mar 2026 16:41:47 -0400 Subject: [PATCH 15/21] Overall of Backtrack InvManager bug fixed DoubleClicker removed (too lazy to fix) Fix chestESP (stole it from another git) --- src/main/java/myau/Myau.java | 3 +- .../java/myau/mixin/IAccessorMinecraft.java | 5 +- .../java/myau/module/modules/BackTrack.java | 580 ++++++++---------- .../myau/module/modules/DoubleClicker.java | 145 ----- .../java/myau/module/modules/InvManager.java | 346 ++++++----- src/main/java/myau/module/modules/Radar.java | 9 +- .../property/properties/ColorProperty.java | 30 +- src/main/java/myau/ui/ClickGui.java | 3 +- 8 files changed, 461 insertions(+), 660 deletions(-) delete mode 100644 src/main/java/myau/module/modules/DoubleClicker.java diff --git a/src/main/java/myau/Myau.java b/src/main/java/myau/Myau.java index 828cb15a..6cbeac9e 100644 --- a/src/main/java/myau/Myau.java +++ b/src/main/java/myau/Myau.java @@ -69,7 +69,7 @@ public void init() { moduleManager.modules.put(AutoAnduril.class, new AutoAnduril()); moduleManager.modules.put(AutoHeal.class, new AutoHeal()); moduleManager.modules.put(AutoTool.class, new AutoTool()); - moduleManager.modules.put(BackTrack.class, new BackTrack()); + moduleManager.modules.put(Backtrack.class, new Backtrack()); moduleManager.modules.put(BedNuker.class, new BedNuker()); moduleManager.modules.put(BedESP.class, new BedESP()); moduleManager.modules.put(BedTracker.class, new BedTracker()); @@ -78,7 +78,6 @@ public void init() { moduleManager.modules.put(ChestESP.class, new ChestESP()); moduleManager.modules.put(ChestStealer.class, new ChestStealer()); moduleManager.modules.put(Clutch.class, new Clutch()); - moduleManager.modules.put(DoubleClicker.class, new DoubleClicker()); moduleManager.modules.put(Eagle.class, new Eagle()); moduleManager.modules.put(ESP.class, new ESP()); moduleManager.modules.put(FakeLag.class, new FakeLag()); diff --git a/src/main/java/myau/mixin/IAccessorMinecraft.java b/src/main/java/myau/mixin/IAccessorMinecraft.java index bdce9e32..1c373fbb 100644 --- a/src/main/java/myau/mixin/IAccessorMinecraft.java +++ b/src/main/java/myau/mixin/IAccessorMinecraft.java @@ -23,7 +23,10 @@ public interface IAccessorMinecraft { @Accessor("rightClickDelayTimer") void setRightClickDelayTimer(int integer); - + + @Accessor("leftClickCounter") + void setLeftClickCounter(int value); + @Invoker("clickMouse") void callClickMouse(); diff --git a/src/main/java/myau/module/modules/BackTrack.java b/src/main/java/myau/module/modules/BackTrack.java index 0f781586..42854d9d 100644 --- a/src/main/java/myau/module/modules/BackTrack.java +++ b/src/main/java/myau/module/modules/BackTrack.java @@ -4,433 +4,345 @@ import myau.event.EventTarget; import myau.event.types.EventType; import myau.event.types.Priority; +import myau.events.AttackEvent; import myau.events.PacketEvent; import myau.events.Render3DEvent; import myau.events.TickEvent; import myau.mixin.IAccessorRenderManager; import myau.module.Module; -import myau.module.modules.KillAura; -import myau.module.modules.Scaffold; -import myau.module.modules.HUD; import myau.property.properties.BooleanProperty; import myau.property.properties.FloatProperty; import myau.property.properties.IntProperty; -import myau.property.properties.ModeProperty; -import myau.util.PacketUtil; import myau.util.RenderUtil; +import myau.util.RotationUtil; import myau.util.TeamUtil; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.network.Packet; -import net.minecraft.network.play.client.*; -import net.minecraft.network.play.server.*; -import net.minecraft.network.status.client.C01PacketPing; +import net.minecraft.network.play.server.S12PacketEntityVelocity; +import net.minecraft.network.play.server.S14PacketEntity; +import net.minecraft.network.play.server.S18PacketEntityTeleport; +import net.minecraft.network.play.server.S19PacketEntityHeadLook; +import net.minecraft.network.play.server.S0FPacketSpawnMob; +import net.minecraft.network.play.server.S27PacketExplosion; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.Vec3; import java.awt.*; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ConcurrentLinkedQueue; + +public class Backtrack extends Module { -public class BackTrack extends Module { private static final Minecraft mc = Minecraft.getMinecraft(); - public final BooleanProperty legit = new BooleanProperty("legit", false); - public final BooleanProperty releaseOnHit = new BooleanProperty("release-on-hit", true, this.legit::getValue); - public final IntProperty delay = new IntProperty("delay", 400, 0, 1000); - public final FloatProperty hitRange = new FloatProperty("range", 3.0F, 3.0F, 10.0F); - public final BooleanProperty adaptive = new BooleanProperty("adaptive", true); - public final BooleanProperty useKillAura = new BooleanProperty("use-killaura", true); - public final BooleanProperty botCheck = new BooleanProperty("bot-check", true); - public final BooleanProperty teams = new BooleanProperty("teams", true); - public final ModeProperty showPosition = new ModeProperty("show-position", 1, new String[]{"NONE", "DEFAULT", "HUD"}); - - private final Queue incomingPackets = new LinkedList<>(); - private final Queue outgoingPackets = new LinkedList<>(); + public final FloatProperty range; + public final BooleanProperty adaptive; + public final IntProperty normalDelay; + public final IntProperty adaptiveDelay; + public final BooleanProperty releaseOnHit; + public final BooleanProperty interruptLagRange; + public final BooleanProperty players; + public final BooleanProperty teams; + public final BooleanProperty botCheck; + public final BooleanProperty esp; + + private final ConcurrentLinkedQueue> incomingQueue = new ConcurrentLinkedQueue<>(); private final Map realPositions = new HashMap<>(); - private KillAura killAura; private EntityLivingBase target; - private Vec3 lastRealPos; - private Vec3 currentRealPos; - private long lastReleaseTime; - - public BackTrack() { - super("BackTrack", false); + private EntityLivingBase lastAttacked; + private long lastAttackTime = 0L; + private static final long COMBAT_LOCK_MS = 3000L; + private AxisAlignedBB realAABB; + private long backtrackStartTime = 0L; + private boolean lagRangeInterrupted = false; + + public Backtrack() { + super("Backtrack", false); + this.range = new FloatProperty("range", 3.5F, 1.0F, 8.0F); + this.adaptive = new BooleanProperty("adaptive", true); + this.normalDelay = new IntProperty("normal-delay", 100, 50, 1000, () -> !this.adaptive.getValue()); + this.adaptiveDelay = new IntProperty("adaptive-delay", 100, 50, 1000, this.adaptive::getValue); + this.releaseOnHit = new BooleanProperty("release-on-hit", true); + this.interruptLagRange = new BooleanProperty("interrupt-lagrange", true); + this.players = new BooleanProperty("players", true); + this.teams = new BooleanProperty("teams", true); + this.botCheck = new BooleanProperty("bot-check", true); + this.esp = new BooleanProperty("esp", true); } - private boolean isValidTarget(EntityLivingBase entityLivingBase) { - if (entityLivingBase == mc.thePlayer || entityLivingBase == mc.thePlayer.ridingEntity) { - return false; - } else if (entityLivingBase == mc.getRenderViewEntity() || entityLivingBase == mc.getRenderViewEntity().ridingEntity) { - return false; - } else if (entityLivingBase.deathTime > 0) { - return false; - } else if (entityLivingBase instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer) entityLivingBase; - - if (TeamUtil.isFriend(player)) { - return false; - } else { - return (!this.teams.getValue() || !TeamUtil.isSameTeam(player)) - && (!this.botCheck.getValue() || !TeamUtil.isBot(player)); - } - } else { - return true; - } + @Override + public void onEnabled() { + incomingQueue.clear(); + realPositions.clear(); + realAABB = null; + backtrackStartTime = 0L; + target = null; + lastAttacked = null; + lastAttackTime = 0L; + lagRangeInterrupted = false; } - private EntityLivingBase getTargetEntity() { - if (this.useKillAura.getValue() && this.killAura != null) { - return this.killAura.getTarget(); - } - - EntityLivingBase closest = null; - double closestDist = this.hitRange.getValue(); - - for (Object obj : mc.theWorld.loadedEntityList) { - if (!(obj instanceof EntityLivingBase)) { - continue; - } - - EntityLivingBase entity = (EntityLivingBase) obj; - - if (!this.isValidTarget(entity)) { - continue; - } - - double dist = mc.thePlayer.getDistanceToEntity(entity); - if (dist < closestDist) { - closest = entity; - closestDist = dist; - } - } - - return closest; + @Override + public void onDisabled() { + setLagRangeEnabled(true); + releaseIncoming(); + incomingQueue.clear(); + realPositions.clear(); + realAABB = null; + target = null; + lastAttacked = null; + lastAttackTime = 0L; } - private boolean shouldQueue() { - if (this.target == null) { - return false; - } - - Vec3 real = this.realPositions.get(this.target.getEntityId()); - if (real == null) { - return false; - } - - if (!this.adaptive.getValue()) { - double distReal = mc.thePlayer.getDistance( - real.xCoord, real.yCoord, real.zCoord); - double distCurrent = mc.thePlayer.getDistanceToEntity(this.target); - - return distReal + 0.15 < distCurrent - && System.currentTimeMillis() - this.lastReleaseTime <= this.delay.getValue(); - } - - double distReal = mc.thePlayer.getDistance( - real.xCoord, real.yCoord, real.zCoord - ); - double distCurrent = mc.thePlayer.getDistanceToEntity(this.target); - - return distReal < distCurrent; + private int currentMaxDelay() { + return adaptive.getValue() ? adaptiveDelay.getValue() : normalDelay.getValue(); } - private void releaseIncoming() { - if (mc.getNetHandler() == null) { - return; - } - - while (!this.incomingPackets.isEmpty()) { - this.incomingPackets.poll().processPacket(mc.getNetHandler()); - } - this.lastReleaseTime = System.currentTimeMillis(); + private LagRange getLagRange() { + Module m = Myau.moduleManager.getModule(LagRange.class); + return (m instanceof LagRange) ? (LagRange) m : null; } - private void releaseOutgoing() { - while (!this.outgoingPackets.isEmpty()) { - PacketUtil.sendPacketNoEvent(this.outgoingPackets.poll()); + private void setLagRangeEnabled(boolean enabled) { + if (!interruptLagRange.getValue()) return; + LagRange lr = getLagRange(); + if (lr == null) return; + if (enabled && lagRangeInterrupted) { + lagRangeInterrupted = false; + lr.setEnabled(true); + } else if (!enabled && !lagRangeInterrupted && lr.isEnabled()) { + lagRangeInterrupted = true; + lr.setEnabled(false); } - this.lastReleaseTime = System.currentTimeMillis(); } - private void releaseAll() { - this.releaseIncoming(); - this.releaseOutgoing(); + private boolean isInCombat() { + if (lastAttacked == null || lastAttacked != target || lastAttacked.isDead) return false; + return System.currentTimeMillis() - lastAttackTime <= COMBAT_LOCK_MS; } - private boolean blockIncoming(Packet p) { - if (!this.adaptive.getValue()) { - if (p instanceof S12PacketEntityVelocity - || p instanceof S27PacketExplosion) { - return false; - } + private boolean canBacktrack() { + if (target == null || target.isDead) return false; + Vec3 real = realPositions.get(target.getEntityId()); + if (real == null) return false; + if (distanceTo(real) > range.getValue()) return false; + if (backtrackStartTime > 0 && System.currentTimeMillis() - backtrackStartTime > currentMaxDelay()) return false; + double distReal = distanceTo(real); + double distCurrent = mc.thePlayer.getDistanceToEntity(target); + return adaptive.getValue() ? distReal > distCurrent : distReal > distCurrent + 0.1; + } - return p instanceof S14PacketEntity - || p instanceof S18PacketEntityTeleport - || p instanceof S19PacketEntityHeadLook - || p instanceof S0FPacketSpawnMob; + private boolean shouldQueueIncoming(Packet p) { + if (p instanceof S12PacketEntityVelocity) return false; + if (p instanceof S27PacketExplosion) return false; + if (p instanceof S0FPacketSpawnMob) return false; + if (p instanceof S14PacketEntity) { + Entity e = ((S14PacketEntity) p).getEntity(mc.theWorld); + return e != null && e == target; } + if (p instanceof S18PacketEntityTeleport) return ((S18PacketEntityTeleport) p).getEntityId() == target.getEntityId(); + if (p instanceof S19PacketEntityHeadLook) return ((S19PacketEntityHeadLook) p).getEntity(mc.theWorld) == target; + return false; + } - return p instanceof S12PacketEntityVelocity - || p instanceof S27PacketExplosion - || p instanceof S14PacketEntity - || p instanceof S18PacketEntityTeleport - || p instanceof S19PacketEntityHeadLook - || p instanceof S0FPacketSpawnMob; + private void releaseIncoming() { + if (mc.getNetHandler() == null) return; + Packet p; + while ((p = incomingQueue.poll()) != null) processPacketUnchecked(p); + backtrackStartTime = 0L; } - private boolean blockOutgoing(Packet p) { - return p instanceof C03PacketPlayer - || p instanceof C02PacketUseEntity - || p instanceof C0APacketAnimation - || p instanceof C0BPacketEntityAction - || p instanceof C08PacketPlayerBlockPlacement - || p instanceof C07PacketPlayerDigging - || p instanceof C09PacketHeldItemChange - || p instanceof C00PacketKeepAlive - || p instanceof C01PacketPing; + @SuppressWarnings("unchecked") + private static void processPacketUnchecked(Packet packet) { + packet.processPacket((T) Minecraft.getMinecraft().getNetHandler()); } - private void handleIncoming(PacketEvent event) { - Packet packet = event.getPacket(); + private void releaseAll() { + releaseIncoming(); + } + private void updateRealPosition(Packet packet) { if (packet instanceof S14PacketEntity) { S14PacketEntity p = (S14PacketEntity) packet; Entity e = p.getEntity(mc.theWorld); - if (e == null) { - return; - } - + if (e == null) return; int id = e.getEntityId(); - Vec3 pos = this.realPositions.getOrDefault(id, new Vec3(0, 0, 0)); - - this.realPositions.put( - id, - pos.addVector( - p.func_149062_c() / 32.0, - p.func_149061_d() / 32.0, - p.func_149064_e() / 32.0 - ) - ); - } - - if (packet instanceof S18PacketEntityTeleport) { - S18PacketEntityTeleport p = (S18PacketEntityTeleport) packet; - this.realPositions.put( - p.getEntityId(), - new Vec3(p.getX() / 32.0, p.getY() / 32.0, p.getZ() / 32.0) - ); - } - - if (this.shouldQueue()) { - if (this.blockIncoming(packet)) { - this.incomingPackets.add(packet); - event.setCancelled(true); + Vec3 base = realPositions.containsKey(id) + ? realPositions.get(id) + : new Vec3(e.posX, e.posY, e.posZ); + Vec3 updated = base.addVector( + p.func_149062_c() / 32.0, + p.func_149061_d() / 32.0, + p.func_149064_e() / 32.0); + realPositions.put(id, updated); + if (target != null && id == target.getEntityId()) { + double dx = p.func_149062_c() / 32.0; + double dy = p.func_149061_d() / 32.0; + double dz = p.func_149064_e() / 32.0; + if (realAABB != null) realAABB = realAABB.offset(dx, dy, dz); } - } else { - this.releaseIncoming(); - } - } - - private void handleOutgoing(PacketEvent event) { - Packet packet = event.getPacket(); - - if (!this.legit.getValue()) { - return; - } - - if (this.shouldQueue()) { - if (this.blockOutgoing(packet)) { - this.outgoingPackets.add(packet); - event.setCancelled(true); + } else if (packet instanceof S18PacketEntityTeleport) { + S18PacketEntityTeleport p = (S18PacketEntityTeleport) packet; + double x = p.getX() / 32.0; + double y = p.getY() / 32.0; + double z = p.getZ() / 32.0; + realPositions.put(p.getEntityId(), new Vec3(x, y, z)); + if (target != null && p.getEntityId() == target.getEntityId()) { + double hw = target.width / 2.0; + realAABB = new AxisAlignedBB(x - hw, y, z - hw, x + hw, y + target.height, z + hw); } - } else { - this.releaseOutgoing(); } } - @Override - public void onEnabled() { - Module m = Myau.moduleManager.getModule(KillAura.class); - if (m instanceof KillAura) { - this.killAura = (KillAura) m; + @EventTarget + public void onAttack(AttackEvent event) { + if (!isEnabled() || mc.thePlayer == null) return; + if (event.getTarget() instanceof EntityLivingBase) { + lastAttacked = (EntityLivingBase) event.getTarget(); + lastAttackTime = System.currentTimeMillis(); } - - this.incomingPackets.clear(); - this.outgoingPackets.clear(); - this.realPositions.clear(); - this.lastRealPos = null; - this.currentRealPos = null; - this.lastReleaseTime = System.currentTimeMillis(); - } - - @Override - public void onDisabled() { - this.releaseAll(); - this.incomingPackets.clear(); - this.outgoingPackets.clear(); - this.realPositions.clear(); - this.lastRealPos = null; - this.currentRealPos = null; } @EventTarget public void onPacket(PacketEvent event) { - if (!this.isEnabled() || mc.thePlayer == null || mc.theWorld == null) { - return; - } - + if (!isEnabled() || mc.thePlayer == null || mc.theWorld == null) return; Module scaffold = Myau.moduleManager.getModule(Scaffold.class); if (scaffold != null && scaffold.isEnabled()) { - this.releaseAll(); - this.incomingPackets.clear(); - this.outgoingPackets.clear(); + setLagRangeEnabled(true); + releaseAll(); + incomingQueue.clear(); return; } - - if (this.useKillAura.getValue() && this.killAura != null) { - this.target = this.killAura.getTarget(); + if (event.getType() == EventType.RECEIVE) { + handleIncoming(event); } + } - if (event.getType() == EventType.RECEIVE) { - this.handleIncoming(event); - } else if (event.getType() == EventType.SEND) { - this.handleOutgoing(event); + private void handleIncoming(PacketEvent event) { + Packet packet = event.getPacket(); + updateRealPosition(packet); + if (target == null) return; + if (canBacktrack() && shouldQueueIncoming(packet)) { + if (backtrackStartTime == 0L) backtrackStartTime = System.currentTimeMillis(); + incomingQueue.add(packet); + event.setCancelled(true); + } else if (!canBacktrack() && !incomingQueue.isEmpty()) { + releaseIncoming(); } } @EventTarget(Priority.LOW) public void onTick(TickEvent event) { - if (!this.isEnabled() || mc.thePlayer == null) { - return; - } - - switch (event.getType()) { - case PRE: - EntityLivingBase newTarget = this.getTargetEntity(); - - if (this.target != newTarget) { - this.releaseAll(); - this.lastRealPos = null; - this.currentRealPos = null; - } - - this.target = newTarget; - - if (this.target == null) { - return; - } - - Vec3 real = this.realPositions.get(this.target.getEntityId()); - if (real == null) { - return; - } - - double distReal = mc.thePlayer.getDistance(real.xCoord, real.yCoord, real.zCoord); - double distCurrent = mc.thePlayer.getDistanceToEntity(this.target); - - if (mc.thePlayer.maxHurtTime > 0 && mc.thePlayer.hurtTime == mc.thePlayer.maxHurtTime) { - this.releaseAll(); - } - - if (distReal > this.hitRange.getValue() || System.currentTimeMillis() - this.lastReleaseTime > this.delay.getValue()) { - this.releaseAll(); - } - - if (this.adaptive.getValue()) { - if (distCurrent <= distReal) { - this.releaseAll(); - } - - if (this.lastRealPos != null) { - double lastDist = mc.thePlayer.getDistance( - this.lastRealPos.xCoord, - this.lastRealPos.yCoord, - this.lastRealPos.zCoord - ); - - if (distReal < lastDist) { - this.releaseAll(); - } - } - } - - if (this.legit.getValue() && this.releaseOnHit.getValue() && this.target.hurtTime == 1) { - this.releaseAll(); - } - break; - case POST: - Vec3 savedPosition = this.realPositions.get(this.target != null ? this.target.getEntityId() : -1); - if (this.currentRealPos == null) { - this.lastRealPos = savedPosition; - } else { - this.lastRealPos = this.currentRealPos; - } - this.currentRealPos = savedPosition; - } + if (!isEnabled() || mc.thePlayer == null || mc.theWorld == null) return; + if (event.getType() == EventType.PRE) tickPre(); } - @EventTarget(Priority.HIGH) - public void onRender3D(Render3DEvent event) { - if (!this.isEnabled()) { - return; + private void tickPre() { + EntityLivingBase newTarget = resolveTarget(); + if (newTarget != target) { + setLagRangeEnabled(true); + releaseAll(); + realAABB = null; } + target = newTarget; - if (this.showPosition.getValue() == 0) { + if (target == null) { + setLagRangeEnabled(true); return; } - if (this.target == null) { - return; + if (!realPositions.containsKey(target.getEntityId())) { + realPositions.put(target.getEntityId(), new Vec3(target.posX, target.posY, target.posZ)); } + if (realAABB == null) { + realAABB = target.getEntityBoundingBox(); + } + + Vec3 real = realPositions.get(target.getEntityId()); + + boolean shouldRelease = false; + if (mc.thePlayer.hurtTime == mc.thePlayer.maxHurtTime && mc.thePlayer.maxHurtTime > 0) shouldRelease = true; + if (distanceTo(real) > range.getValue()) shouldRelease = true; + if (backtrackStartTime > 0 && System.currentTimeMillis() - backtrackStartTime > currentMaxDelay()) shouldRelease = true; + if (releaseOnHit.getValue() && target.hurtTime == 1) shouldRelease = true; - Vec3 real = this.realPositions.get(this.target.getEntityId()); - if (real == null || this.lastRealPos == null || this.currentRealPos == null) { + if (shouldRelease) { + setLagRangeEnabled(true); + releaseAll(); return; } - Color color = new Color(-1); - switch (this.showPosition.getValue()) { - case 1: - if (this.target instanceof EntityPlayer) { - color = TeamUtil.getTeamColor((EntityPlayer) this.target, 1.0F); - } else { - color = new Color(255, 0, 0); - } - break; - case 2: - color = ((HUD) Myau.moduleManager.modules.get(HUD.class)).getColor(System.currentTimeMillis()); + if (isInCombat() && !incomingQueue.isEmpty()) { + setLagRangeEnabled(false); + } else if (!isInCombat() || incomingQueue.isEmpty()) { + setLagRangeEnabled(true); } + } - double x = RenderUtil.lerpDouble(this.currentRealPos.xCoord, this.lastRealPos.xCoord, event.getPartialTicks()); - double y = RenderUtil.lerpDouble(this.currentRealPos.yCoord, this.lastRealPos.yCoord, event.getPartialTicks()); - double z = RenderUtil.lerpDouble(this.currentRealPos.zCoord, this.lastRealPos.zCoord, event.getPartialTicks()); - - float size = this.target.getCollisionBorderSize(); - AxisAlignedBB aabb = new AxisAlignedBB( - x - (double) this.target.width / 2.0, - y, - z - (double) this.target.width / 2.0, - x + (double) this.target.width / 2.0, - y + (double) this.target.height, - z + (double) this.target.width / 2.0 - ) - .expand(size, size, size) - .offset( - -((IAccessorRenderManager) mc.getRenderManager()).getRenderPosX(), - -((IAccessorRenderManager) mc.getRenderManager()).getRenderPosY(), - -((IAccessorRenderManager) mc.getRenderManager()).getRenderPosZ() - ); - + @EventTarget(Priority.HIGH) + public void onRender3D(Render3DEvent event) { + if (!isEnabled() || !esp.getValue()) return; + if (target == null || realAABB == null) return; + AxisAlignedBB visual = target.getEntityBoundingBox(); + double dx = Math.abs(realAABB.minX - visual.minX); + double dy = Math.abs(realAABB.minY - visual.minY); + double dz = Math.abs(realAABB.minZ - visual.minZ); + if (dx < 0.05 && dy < 0.05 && dz < 0.05) return; + Color color = (target instanceof EntityPlayer) ? TeamUtil.getTeamColor((EntityPlayer) target, 1.0F) : new Color(255, 60, 60); + IAccessorRenderManager rm = (IAccessorRenderManager) mc.getRenderManager(); + AxisAlignedBB aabb = realAABB.offset(-rm.getRenderPosX(), -rm.getRenderPosY(), -rm.getRenderPosZ()); RenderUtil.enableRenderState(); RenderUtil.drawFilledBox(aabb, color.getRed(), color.getGreen(), color.getBlue()); RenderUtil.disableRenderState(); } + private EntityLivingBase resolveTarget() { + KillAura ka = (KillAura) Myau.moduleManager.modules.get(KillAura.class); + if (ka != null && ka.isEnabled() && ka.getTarget() != null) return ka.getTarget(); + if (lastAttacked != null && !lastAttacked.isDead + && System.currentTimeMillis() - lastAttackTime <= COMBAT_LOCK_MS + && mc.thePlayer.getDistanceToEntity(lastAttacked) <= range.getValue() * 2.0F) { + return lastAttacked; + } + ArrayList candidates = new ArrayList<>(); + for (Entity entity : mc.theWorld.loadedEntityList) { + if (!(entity instanceof EntityLivingBase)) continue; + EntityLivingBase e = (EntityLivingBase) entity; + if (isValidTarget(e) && mc.thePlayer.getDistanceToEntity(e) <= range.getValue()) candidates.add(e); + } + if (candidates.isEmpty()) return null; + candidates.sort((a, b) -> Float.compare(RotationUtil.angleToEntity(a), RotationUtil.angleToEntity(b))); + return candidates.get(0); + } + + private boolean isValidTarget(EntityLivingBase e) { + if (!mc.theWorld.loadedEntityList.contains(e)) return false; + if (e == mc.thePlayer || e == mc.thePlayer.ridingEntity) return false; + if (e == mc.getRenderViewEntity() || e == mc.getRenderViewEntity().ridingEntity) return false; + if (e.deathTime > 0) return false; + if (e instanceof EntityPlayer) { + if (!players.getValue()) return false; + EntityPlayer p = (EntityPlayer) e; + if (TeamUtil.isFriend(p)) return false; + if (teams.getValue() && TeamUtil.isSameTeam(p)) return false; + if (botCheck.getValue() && TeamUtil.isBot(p)) return false; + return true; + } + return false; + } + + private double distanceTo(Vec3 v) { + return mc.thePlayer.getDistance(v.xCoord, v.yCoord, v.zCoord); + } + @Override public String[] getSuffix() { - return new String[]{String.format("%dms", this.delay.getValue())}; + return new String[]{ currentMaxDelay() + "ms" }; } } \ No newline at end of file diff --git a/src/main/java/myau/module/modules/DoubleClicker.java b/src/main/java/myau/module/modules/DoubleClicker.java deleted file mode 100644 index 9dbedeba..00000000 --- a/src/main/java/myau/module/modules/DoubleClicker.java +++ /dev/null @@ -1,145 +0,0 @@ -package myau.module.modules; - -import myau.event.EventTarget; -import myau.event.types.Priority; -import myau.events.LeftClickMouseEvent; -import myau.events.RightClickMouseEvent; -import myau.mixin.IAccessorMinecraft; -import myau.module.Module; -import myau.util.ItemUtil; -import myau.property.properties.BooleanProperty; -import myau.property.properties.FloatProperty; -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.world.WorldSettings.GameType; - -import java.awt.AWTException; -import java.awt.Robot; -import java.awt.event.InputEvent; -import java.util.LinkedList; - -public class DoubleClicker extends Module { - private static final Minecraft mc = Minecraft.getMinecraft(); - - private Robot bot; - private boolean ignNL = false; - private boolean ignNR = false; - - private final LinkedList leftClickTimes = new LinkedList<>(); - private final LinkedList rightClickTimes = new LinkedList<>(); - - public final BooleanProperty leftClick = new BooleanProperty("left-click", true); - public final FloatProperty chanceLeft = new FloatProperty("chance-left", 80.0F, 0.0F, 100.0F, this.leftClick::getValue); - public final BooleanProperty weaponOnly = new BooleanProperty("weapon-only", true, this.leftClick::getValue); - public final BooleanProperty onlyWhileTargeting = new BooleanProperty("only-while-targeting", false, this.leftClick::getValue); - public final BooleanProperty aboveCPSLeft = new BooleanProperty("above-5-cps", false, this.leftClick::getValue); - - public final BooleanProperty rightClick = new BooleanProperty("right-click", false); - public final FloatProperty chanceRight = new FloatProperty("chance-right", 80.0F, 0.0F, 100.0F, this.rightClick::getValue); - public final BooleanProperty blocksOnly = new BooleanProperty("blocks-only", true, this.rightClick::getValue); - public final BooleanProperty aboveCPSRight = new BooleanProperty("above-5-cps-right", false, this.rightClick::getValue); - - public final BooleanProperty disableInCreative = new BooleanProperty("disable-in-creative", true); - - public DoubleClicker() { - super("DoubleClicker", false); - } - - private int getLeftCPS() { - long now = System.currentTimeMillis(); - leftClickTimes.removeIf(t -> now - t > 1000L); - return leftClickTimes.size(); - } - - private int getRightCPS() { - long now = System.currentTimeMillis(); - rightClickTimes.removeIf(t -> now - t > 1000L); - return rightClickTimes.size(); - } - - @Override - public void onEnabled() { - try { - this.bot = new Robot(); - } catch (AWTException e) { - this.bot = null; - } - this.ignNL = false; - this.ignNR = false; - this.leftClickTimes.clear(); - this.rightClickTimes.clear(); - } - - @Override - public void onDisabled() { - this.ignNL = false; - this.ignNR = false; - this.bot = null; - this.leftClickTimes.clear(); - this.rightClickTimes.clear(); - } - - @EventTarget(Priority.HIGH) - public void onLeftClick(LeftClickMouseEvent event) { - if (!this.isEnabled() || this.bot == null) return; - if (this.disableInCreative.getValue() && mc.playerController.getCurrentGameType() == GameType.CREATIVE) return; - if (mc.currentScreen != null) return; - - if (this.ignNL) { - this.ignNL = false; - return; - } - - leftClickTimes.add(System.currentTimeMillis()); - - if (!this.leftClick.getValue() || this.chanceLeft.getValue() == 0.0F) return; - if (this.weaponOnly.getValue() && !ItemUtil.isHoldingSword()) return; - if (this.onlyWhileTargeting.getValue() && (mc.objectMouseOver == null || mc.objectMouseOver.entityHit == null)) return; - - if (this.aboveCPSLeft.getValue() && getLeftCPS() <= 5) return; - - if (this.chanceLeft.getValue() < 100.0F) { - if (Math.random() >= this.chanceLeft.getValue() / 100.0F) { - if (!org.lwjgl.input.Mouse.isButtonDown(0)) { - this.bot.mouseRelease(InputEvent.BUTTON1_MASK); - } - return; - } - } - - this.bot.mouseRelease(InputEvent.BUTTON1_MASK); - this.bot.mousePress(InputEvent.BUTTON1_MASK); - this.ignNL = true; - } - - @EventTarget(Priority.HIGH) - public void onRightClick(RightClickMouseEvent event) { - if (!this.isEnabled()) return; - if (this.disableInCreative.getValue() && mc.playerController.getCurrentGameType() == GameType.CREATIVE) return; - if (mc.currentScreen != null) return; - - if (this.ignNR) { - this.ignNR = false; - return; - } - - rightClickTimes.add(System.currentTimeMillis()); - - if (!this.rightClick.getValue() || this.chanceRight.getValue() == 0.0F) return; - - if (this.blocksOnly.getValue()) { - ItemStack item = mc.thePlayer.getHeldItem(); - if (item == null || !(item.getItem() instanceof ItemBlock)) return; - } - - if (this.aboveCPSRight.getValue() && getRightCPS() <= 5) return; - - if (this.chanceRight.getValue() < 100.0F) { - if (Math.random() >= this.chanceRight.getValue() / 100.0F) return; - } - - this.ignNR = true; - ((IAccessorMinecraft) mc).callRightClickMouse(); - } -} \ No newline at end of file diff --git a/src/main/java/myau/module/modules/InvManager.java b/src/main/java/myau/module/modules/InvManager.java index 12cdec67..5ee0cdd5 100644 --- a/src/main/java/myau/module/modules/InvManager.java +++ b/src/main/java/myau/module/modules/InvManager.java @@ -63,12 +63,9 @@ private void clickSlot(int windowId, int slotId, int mouseButtonClicked, int mod } private int getStackSize(int slot) { - if (slot == -1) { - return 0; - } else { - ItemStack stack = mc.thePlayer.inventory.getStackInSlot(slot); - return stack != null ? stack.stackSize : 0; - } + if (slot == -1) return 0; + ItemStack stack = mc.thePlayer.inventory.getStackInSlot(slot); + return stack != null ? stack.stackSize : 0; } public InvManager() { @@ -77,165 +74,190 @@ public InvManager() { @EventTarget public void onUpdate(UpdateEvent event) { - if (event.getType() == EventType.PRE) { - if (this.actionDelay > 0) { - this.actionDelay--; + if (event.getType() != EventType.PRE) return; + + if (this.actionDelay > 0) this.actionDelay--; + if (this.oDelay > 0) this.oDelay--; + + if (!(mc.currentScreen instanceof GuiInventory)) { + this.inventoryOpen = false; + } else if (!(((GuiInventory) mc.currentScreen).inventorySlots instanceof ContainerPlayer)) { + this.inventoryOpen = false; + } else { + if (!this.inventoryOpen) { + this.inventoryOpen = true; + this.oDelay = this.openDelay.getValue() + 1; + this.autoArmorTime.reset(); } - if (this.oDelay > 0) { - this.oDelay--; + + if (this.oDelay > 0 || this.actionDelay > 0) return; + if (!this.isEnabled() || !this.isValidGameMode()) return; + + ArrayList equippedArmorSlots = new ArrayList<>(Arrays.asList(-1, -1, -1, -1)); + ArrayList inventoryArmorSlots = new ArrayList<>(Arrays.asList(-1, -1, -1, -1)); + for (int i = 0; i < 4; i++) { + equippedArmorSlots.set(i, ItemUtil.findArmorInventorySlot(i, true)); + inventoryArmorSlots.set(i, ItemUtil.findArmorInventorySlot(i, false)); } - if (!(mc.currentScreen instanceof GuiInventory)) { - this.inventoryOpen = false; - } else if (!(((GuiInventory) mc.currentScreen).inventorySlots instanceof ContainerPlayer)) { - this.inventoryOpen = false; - } else { - if (!this.inventoryOpen) { - this.inventoryOpen = true; - this.oDelay = this.openDelay.getValue() + 1; + + int preferredSwordHotbarSlot = this.swordSlot.getValue() - 1; + int inventorySwordSlot = ItemUtil.findSwordInInventorySlot(preferredSwordHotbarSlot, this.checkDurability.getValue()); + if (inventorySwordSlot == -1) inventorySwordSlot = ItemUtil.findSwordInInventorySlot(preferredSwordHotbarSlot, false); + + int preferredPickaxeHotbarSlot = this.pickaxeSlot.getValue() - 1; + int inventoryPickaxeSlot = ItemUtil.findInventorySlot("pickaxe", preferredPickaxeHotbarSlot, this.checkDurability.getValue()); + if (inventoryPickaxeSlot == -1) inventoryPickaxeSlot = ItemUtil.findInventorySlot("pickaxe", preferredPickaxeHotbarSlot, false); + + int preferredShovelHotbarSlot = this.shovelSlot.getValue() - 1; + int inventoryShovelSlot = ItemUtil.findInventorySlot("shovel", preferredShovelHotbarSlot, this.checkDurability.getValue()); + if (inventoryShovelSlot == -1) inventoryShovelSlot = ItemUtil.findInventorySlot("shovel", preferredShovelHotbarSlot, false); + + int preferredAxeHotbarSlot = this.axeSlot.getValue() - 1; + int inventoryAxeSlot = ItemUtil.findInventorySlot("axe", preferredAxeHotbarSlot, this.checkDurability.getValue()); + if (inventoryAxeSlot == -1) inventoryAxeSlot = ItemUtil.findInventorySlot("axe", preferredAxeHotbarSlot, false); + + int preferredBlocksHotbarSlot = this.blocksSlot.getValue() - 1; + int inventoryBlocksSlot = ItemUtil.findInventorySlot(preferredBlocksHotbarSlot, ItemUtil.ItemType.Block); + + int preferredProjectileHotbarSlot = this.projectileSlot.getValue() - 1; + int inventoryProjectileSlot = ItemUtil.findInventorySlot(preferredProjectileHotbarSlot, ItemUtil.ItemType.Projectile); + if (inventoryProjectileSlot == -1) inventoryProjectileSlot = ItemUtil.findInventorySlot(preferredProjectileHotbarSlot, ItemUtil.ItemType.FishRod); + + int preferredGoldAppleHotbarSlot = this.goldAppleSlot.getValue() - 1; + int inventoryGoldAppleSlot = ItemUtil.findInventorySlot(preferredGoldAppleHotbarSlot, ItemUtil.ItemType.GoldApple); + + int preferredBowHotbarSlot = this.bowSlot.getValue() - 1; + int inventoryBowSlot = ItemUtil.findBowInventorySlot(preferredBowHotbarSlot, this.checkDurability.getValue()); + if (inventoryBowSlot == -1) inventoryBowSlot = ItemUtil.findBowInventorySlot(preferredBowHotbarSlot, false); + + if (this.autoArmor.getValue() && this.autoArmorTime.hasTimeElapsed(this.autoArmorInterval.getValue() * 50L)) { + for (int i = 0; i < 4; i++) { + int equippedSlot = equippedArmorSlots.get(i); + int inventorySlot = inventoryArmorSlots.get(i); + if (equippedSlot == -1 && inventorySlot == -1) continue; + int playerArmorSlot = 39 - i; + if (equippedSlot == playerArmorSlot || inventorySlot == playerArmorSlot) continue; + if (mc.thePlayer.inventory.getStackInSlot(playerArmorSlot) != null) { + if (mc.thePlayer.inventory.getFirstEmptyStack() != -1) { + this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(playerArmorSlot), 0, 1); + } else { + this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(playerArmorSlot), 1, 4); + } + return; + } + int armorToEquip = equippedSlot != -1 ? equippedSlot : inventorySlot; + this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(armorToEquip), 0, 1); this.autoArmorTime.reset(); + return; } - if (this.oDelay <= 0 && this.actionDelay <= 0) { - if (this.isEnabled() && this.isValidGameMode()) { - ArrayList equippedArmorSlots = new ArrayList<>(Arrays.asList(-1, -1, -1, -1)); - ArrayList inventoryArmorSlots = new ArrayList<>(Arrays.asList(-1, -1, -1, -1)); - for (int i = 0; i < 4; i++) { - equippedArmorSlots.set(i, ItemUtil.findArmorInventorySlot(i, true)); - inventoryArmorSlots.set(i, ItemUtil.findArmorInventorySlot(i, false)); - } - int preferredSwordHotbarSlot = this.swordSlot.getValue() - 1; - int inventorySwordSlot = ItemUtil.findSwordInInventorySlot(preferredSwordHotbarSlot, this.checkDurability.getValue()); - if (inventorySwordSlot == -1) inventorySwordSlot = ItemUtil.findSwordInInventorySlot(preferredSwordHotbarSlot, false); - int preferredPickaxeHotbarSlot = this.pickaxeSlot.getValue() - 1; - int inventoryPickaxeSlot = ItemUtil.findInventorySlot("pickaxe", preferredPickaxeHotbarSlot, this.checkDurability.getValue()); - if (inventoryPickaxeSlot == -1) inventoryPickaxeSlot = ItemUtil.findInventorySlot("pickaxe", preferredPickaxeHotbarSlot, false); - int preferredShovelHotbarSlot = this.shovelSlot.getValue() - 1; - int inventoryShovelSlot = ItemUtil.findInventorySlot("shovel", preferredShovelHotbarSlot, this.checkDurability.getValue()); - if (inventoryShovelSlot == -1) inventoryShovelSlot = ItemUtil.findInventorySlot("shovel", preferredShovelHotbarSlot, false); - int preferredAxeHotbarSlot = this.axeSlot.getValue() - 1; - int inventoryAxeSlot = ItemUtil.findInventorySlot("axe", preferredAxeHotbarSlot, this.checkDurability.getValue()); - if (inventoryAxeSlot == -1) inventoryAxeSlot = ItemUtil.findInventorySlot("axe", preferredAxeHotbarSlot, false); - int preferredBlocksHotbarSlot = this.blocksSlot.getValue() - 1; - int inventoryBlocksSlot = ItemUtil.findInventorySlot(preferredBlocksHotbarSlot, ItemUtil.ItemType.Block); - int preferredProjectileHotbarSlot = this.projectileSlot.getValue() - 1; - int inventoryProjectileSlot = ItemUtil.findInventorySlot(preferredProjectileHotbarSlot, ItemUtil.ItemType.Projectile); - if (inventoryProjectileSlot == -1) inventoryProjectileSlot = ItemUtil.findInventorySlot(preferredProjectileHotbarSlot, ItemUtil.ItemType.FishRod); - int preferredGoldAppleHotbarSlot = this.goldAppleSlot.getValue() - 1; - int inventoryGoldAppleSlot = ItemUtil.findInventorySlot(preferredGoldAppleHotbarSlot, ItemUtil.ItemType.GoldApple); - int preferredBowHotbarSlot = this.bowSlot.getValue() - 1; - int inventoryBowSlot = ItemUtil.findBowInventorySlot(preferredBowHotbarSlot, this.checkDurability.getValue()); - if (inventoryBowSlot == -1) inventoryBowSlot = ItemUtil.findBowInventorySlot(preferredBowHotbarSlot, false); - if (this.autoArmor.getValue() && this.autoArmorTime.hasTimeElapsed(this.autoArmorInterval.getValue() * 50L)) { - for (int i = 0; i < 4; i++) { - int equippedSlot = equippedArmorSlots.get(i); - int inventorySlot = inventoryArmorSlots.get(i); - if (equippedSlot != -1 || inventorySlot != -1) { - int playerArmorSlot = 39 - i; - if (equippedSlot != playerArmorSlot && inventorySlot != playerArmorSlot) { - if (mc.thePlayer.inventory.getStackInSlot(playerArmorSlot) != null) { - if (mc.thePlayer.inventory.getFirstEmptyStack() != -1) { - this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(playerArmorSlot), 0, 1); - } else { - this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(playerArmorSlot), 1, 4); - } - } else { - int armorToEquipSlot = equippedSlot != -1 ? equippedSlot : inventorySlot; - this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(armorToEquipSlot), 0, 1); - this.autoArmorTime.reset(); - } - return; - } - } - } - } - LinkedHashSet usedHotbarSlots = new LinkedHashSet<>(); - if (preferredSwordHotbarSlot >= 0 && preferredSwordHotbarSlot <= 8 && inventorySwordSlot != -1) { - usedHotbarSlots.add(preferredSwordHotbarSlot); - if (inventorySwordSlot != preferredSwordHotbarSlot) { - this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventorySwordSlot), preferredSwordHotbarSlot, 2); - return; - } - } - if (preferredPickaxeHotbarSlot >= 0 && preferredPickaxeHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredPickaxeHotbarSlot) && inventoryPickaxeSlot != -1) { - usedHotbarSlots.add(preferredPickaxeHotbarSlot); - if (inventoryPickaxeSlot != preferredPickaxeHotbarSlot) { - this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryPickaxeSlot), preferredPickaxeHotbarSlot, 2); - return; - } - } - if (preferredShovelHotbarSlot >= 0 && preferredShovelHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredShovelHotbarSlot) && inventoryShovelSlot != -1) { - usedHotbarSlots.add(preferredShovelHotbarSlot); - if (inventoryShovelSlot != preferredShovelHotbarSlot) { - this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryShovelSlot), preferredShovelHotbarSlot, 2); - return; - } - } - if (preferredAxeHotbarSlot >= 0 && preferredAxeHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredAxeHotbarSlot) && inventoryAxeSlot != -1) { - usedHotbarSlots.add(preferredAxeHotbarSlot); - if (inventoryAxeSlot != preferredAxeHotbarSlot) { - this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryAxeSlot), preferredAxeHotbarSlot, 2); - return; - } - } - if (preferredBlocksHotbarSlot >= 0 && preferredBlocksHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredBlocksHotbarSlot) && inventoryBlocksSlot != -1) { - usedHotbarSlots.add(preferredBlocksHotbarSlot); - if (inventoryBlocksSlot != preferredBlocksHotbarSlot) { - this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryBlocksSlot), preferredBlocksHotbarSlot, 2); - return; - } - } - if (preferredProjectileHotbarSlot >= 0 && preferredProjectileHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredProjectileHotbarSlot) && inventoryProjectileSlot != -1) { - usedHotbarSlots.add(preferredProjectileHotbarSlot); - if (inventoryProjectileSlot != preferredProjectileHotbarSlot) { - this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryProjectileSlot), preferredProjectileHotbarSlot, 2); - return; - } - } - if (preferredGoldAppleHotbarSlot >= 0 && preferredGoldAppleHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredGoldAppleHotbarSlot) && inventoryGoldAppleSlot != -1) { - usedHotbarSlots.add(preferredGoldAppleHotbarSlot); - if (inventoryGoldAppleSlot != preferredGoldAppleHotbarSlot) { - this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryGoldAppleSlot), preferredGoldAppleHotbarSlot, 2); - return; - } - } - if (preferredBowHotbarSlot >= 0 && preferredBowHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredBowHotbarSlot) && inventoryBowSlot != -1) { - usedHotbarSlots.add(preferredBowHotbarSlot); - if (inventoryBowSlot != preferredBowHotbarSlot) { - this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryBowSlot), preferredBowHotbarSlot, 2); - return; - } - } - if (this.dropTrash.getValue()) { - int currentBlockCount = this.getStackSize(inventoryBlocksSlot); - int currentProjectileCount = this.getStackSize(inventoryProjectileSlot); - for (int i = 0; i < 36; i++) { - if (!equippedArmorSlots.contains(i) - && !inventoryArmorSlots.contains(i) - && inventorySwordSlot != i - && inventoryPickaxeSlot != i - && inventoryShovelSlot != i - && inventoryAxeSlot != i - && inventoryBlocksSlot != i - && inventoryProjectileSlot != i - && inventoryGoldAppleSlot != i - && inventoryBowSlot != i) { - ItemStack stack = mc.thePlayer.inventory.getStackInSlot(i); - if (stack != null) { - boolean isBlock = ItemUtil.isBlock(stack); - boolean isProjectile = ItemUtil.isProjectile(stack); - if (isBlock) { - currentBlockCount += stack.stackSize; - } - if (isProjectile) { - currentProjectileCount += stack.stackSize; - } - if (ItemUtil.isNotSpecialItem(stack) &&( isBlock && currentBlockCount >= this.blocks.getValue() || isProjectile && currentProjectileCount >= this.projectiles.getValue())) { - this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(i), 1, 4); - return; - } - } - } - } - } + } + + LinkedHashSet usedHotbarSlots = new LinkedHashSet<>(); + + if (preferredSwordHotbarSlot >= 0 && preferredSwordHotbarSlot <= 8 && inventorySwordSlot != -1) { + usedHotbarSlots.add(preferredSwordHotbarSlot); + if (inventorySwordSlot != preferredSwordHotbarSlot) { + this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventorySwordSlot), preferredSwordHotbarSlot, 2); + return; + } + } + if (preferredPickaxeHotbarSlot >= 0 && preferredPickaxeHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredPickaxeHotbarSlot) && inventoryPickaxeSlot != -1) { + usedHotbarSlots.add(preferredPickaxeHotbarSlot); + if (inventoryPickaxeSlot != preferredPickaxeHotbarSlot) { + this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryPickaxeSlot), preferredPickaxeHotbarSlot, 2); + return; + } + } + if (preferredShovelHotbarSlot >= 0 && preferredShovelHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredShovelHotbarSlot) && inventoryShovelSlot != -1) { + usedHotbarSlots.add(preferredShovelHotbarSlot); + if (inventoryShovelSlot != preferredShovelHotbarSlot) { + this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryShovelSlot), preferredShovelHotbarSlot, 2); + return; + } + } + if (preferredAxeHotbarSlot >= 0 && preferredAxeHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredAxeHotbarSlot) && inventoryAxeSlot != -1) { + usedHotbarSlots.add(preferredAxeHotbarSlot); + if (inventoryAxeSlot != preferredAxeHotbarSlot) { + this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryAxeSlot), preferredAxeHotbarSlot, 2); + return; + } + } + if (preferredBlocksHotbarSlot >= 0 && preferredBlocksHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredBlocksHotbarSlot) && inventoryBlocksSlot != -1) { + usedHotbarSlots.add(preferredBlocksHotbarSlot); + if (inventoryBlocksSlot != preferredBlocksHotbarSlot) { + this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryBlocksSlot), preferredBlocksHotbarSlot, 2); + return; + } + } + if (preferredProjectileHotbarSlot >= 0 && preferredProjectileHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredProjectileHotbarSlot) && inventoryProjectileSlot != -1) { + usedHotbarSlots.add(preferredProjectileHotbarSlot); + if (inventoryProjectileSlot != preferredProjectileHotbarSlot) { + this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryProjectileSlot), preferredProjectileHotbarSlot, 2); + return; + } + } + if (preferredGoldAppleHotbarSlot >= 0 && preferredGoldAppleHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredGoldAppleHotbarSlot) && inventoryGoldAppleSlot != -1) { + usedHotbarSlots.add(preferredGoldAppleHotbarSlot); + if (inventoryGoldAppleSlot != preferredGoldAppleHotbarSlot) { + this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryGoldAppleSlot), preferredGoldAppleHotbarSlot, 2); + return; + } + } + if (preferredBowHotbarSlot >= 0 && preferredBowHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredBowHotbarSlot) && inventoryBowSlot != -1) { + usedHotbarSlots.add(preferredBowHotbarSlot); + if (inventoryBowSlot != preferredBowHotbarSlot) { + this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryBowSlot), preferredBowHotbarSlot, 2); + return; + } + } + + if (this.dropTrash.getValue()) { + LinkedHashSet keepSlots = new LinkedHashSet<>(); + keepSlots.addAll(equippedArmorSlots); + keepSlots.addAll(inventoryArmorSlots); + if (inventorySwordSlot != -1) keepSlots.add(inventorySwordSlot); + if (inventoryPickaxeSlot != -1) keepSlots.add(inventoryPickaxeSlot); + if (inventoryShovelSlot != -1) keepSlots.add(inventoryShovelSlot); + if (inventoryAxeSlot != -1) keepSlots.add(inventoryAxeSlot); + if (inventoryBlocksSlot != -1) keepSlots.add(inventoryBlocksSlot); + if (inventoryProjectileSlot != -1) keepSlots.add(inventoryProjectileSlot); + if (inventoryGoldAppleSlot != -1) keepSlots.add(inventoryGoldAppleSlot); + if (inventoryBowSlot != -1) keepSlots.add(inventoryBowSlot); + keepSlots.remove(-1); + + int totalBlocks = this.getStackSize(inventoryBlocksSlot); + int totalProjectiles = this.getStackSize(inventoryProjectileSlot); + + for (int i = 0; i < 36; i++) { + if (keepSlots.contains(i)) continue; + ItemStack stack = mc.thePlayer.inventory.getStackInSlot(i); + if (stack == null) continue; + if (ItemUtil.isBlock(stack)) totalBlocks += stack.stackSize; + if (ItemUtil.isProjectile(stack)) totalProjectiles += stack.stackSize; + } + + for (int i = 0; i < 36; i++) { + if (keepSlots.contains(i)) continue; + ItemStack stack = mc.thePlayer.inventory.getStackInSlot(i); + if (stack == null) continue; + + boolean isBlock = ItemUtil.isBlock(stack); + boolean isProjectile = ItemUtil.isProjectile(stack); + + boolean shouldDrop; + if (isBlock) { + shouldDrop = totalBlocks > this.blocks.getValue(); + if (shouldDrop) totalBlocks -= stack.stackSize; + } else if (isProjectile) { + shouldDrop = totalProjectiles > this.projectiles.getValue(); + if (shouldDrop) totalProjectiles -= stack.stackSize; + } else { + shouldDrop = ItemUtil.isNotSpecialItem(stack); + } + + if (shouldDrop) { + this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(i), 1, 4); + return; } } } @@ -261,4 +283,4 @@ public void verifyValue(String mode) { } } } -} +} \ No newline at end of file diff --git a/src/main/java/myau/module/modules/Radar.java b/src/main/java/myau/module/modules/Radar.java index 5a380916..5c9ab6d8 100644 --- a/src/main/java/myau/module/modules/Radar.java +++ b/src/main/java/myau/module/modules/Radar.java @@ -31,9 +31,9 @@ public class Radar extends Module { public final BooleanProperty showEnemies = new BooleanProperty("enemies", true); public final BooleanProperty showBots = new BooleanProperty("bots", false); public final BooleanProperty showPVP = new BooleanProperty("show-pvp", false); - public final ColorProperty fillColor = new ColorProperty("fill-color", Color.GRAY.getRGB()); + public final ColorProperty fillColor = new ColorProperty("fill-color", Color.GRAY.getRGB(), 0x40); public final ColorProperty outlineColor = new ColorProperty("outline-color", Color.DARK_GRAY.getRGB()); - public final ColorProperty crossColor = new ColorProperty("cross-color", Color.LIGHT_GRAY.getRGB()); + public final ColorProperty crossColor = new ColorProperty("cross-color", Color.LIGHT_GRAY.getRGB(), 0x80); public Radar() { super("Radar", false); } @@ -108,8 +108,7 @@ public void onRender(Render2DEvent event) { double cos = Math.cos(yaw); double sin = Math.sin(yaw); - Color fill = new Color(fillColor.getValue()); - this.drawRadarCircle(0.0, 0, yaw, radarRadius.getValue(), 64, new Color(fill.getRed(),fill.getGreen(),fill.getBlue(),100).getRGB(), outlineColor.getValue(), crossColor.getValue()); + this.drawRadarCircle(0.0, 0, yaw, radarRadius.getValue(), 64, fillColor.getValue(), outlineColor.getValue(), crossColor.getValue()); for (EntityPlayer player : TeamUtil.getLoadedEntitiesSorted().stream().filter(entity -> entity instanceof EntityPlayer && this.shouldRender((EntityPlayer) entity)).map(EntityPlayer.class::cast).collect(Collectors.toList())) { double dx = (player.lastTickPosX + (player.posX - player.lastTickPosX) * event.getPartialTicks()) - mc.thePlayer.posX; double dz = (player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * event.getPartialTicks()) - mc.thePlayer.posZ; @@ -240,4 +239,4 @@ public void drawRadarCircle(double x, double y, double angle, double radius, GlStateManager.disableBlend(); GlStateManager.resetColor(); } -} +} \ No newline at end of file diff --git a/src/main/java/myau/property/properties/ColorProperty.java b/src/main/java/myau/property/properties/ColorProperty.java index 0481d765..af8c76e4 100644 --- a/src/main/java/myau/property/properties/ColorProperty.java +++ b/src/main/java/myau/property/properties/ColorProperty.java @@ -3,40 +3,52 @@ import com.google.gson.JsonObject; import myau.property.Property; +import java.awt.*; import java.util.function.BooleanSupplier; public class ColorProperty extends Property { public ColorProperty(String name, Integer color) { - this(name, color, null); + this(name, color, (BooleanSupplier)null); + } + + public ColorProperty(String name, Integer color, Integer alpha) { + this(name, color, alpha, null); } public ColorProperty(String string, Integer color, BooleanSupplier check) { - super(string, color, rgb -> rgb <= 16777215, check); + super(string, color, check); + } + + public ColorProperty(String name, Integer color, Integer alpha, BooleanSupplier check) { + this(name, color & 0xFFFFFF | alpha << 24, check); } @Override public String getValuePrompt() { - return "RGB"; + return "ARGB"; } @Override public String formatValue() { - String hex = String.format("%06X", this.getValue()).substring(0,6); - return String.format("&c%s&a%s&9%s", hex.substring(0, 2), hex.substring(2, 4), hex.substring(4, 6)); + String hex = String.format("%08X", this.getValue()).substring(0,8); + return String.format("&r%s&c%s&a%s&9%s", hex.substring(0, 2), hex.substring(2, 4), hex.substring(4, 6), hex.substring(6, 8)); } @Override public boolean parseString(String string) { - return this.setValue(Integer.parseInt(string.replace("#", ""), 16)); + String s = string.replace("#", ""); + int i = Integer.parseUnsignedInt(s, 16); + return this.setValue(s.length() <= 6 ? i | 0xFF000000 : i); } @Override public boolean read(JsonObject jsonObject) { - return this.parseString(jsonObject.get(this.getName()).getAsString().substring(0,6)); + String s = jsonObject.get(this.getName()).getAsString(); + return this.parseString(s.length() > 8 ? s.substring(0, 8) : s); } @Override public void write(JsonObject jsonObject) { - jsonObject.addProperty(this.getName(), String.format("%06X", this.getValue())); + jsonObject.addProperty(this.getName(), String.format("%08X", this.getValue())); } -} +} \ No newline at end of file diff --git a/src/main/java/myau/ui/ClickGui.java b/src/main/java/myau/ui/ClickGui.java index 6a6ef694..c39832db 100644 --- a/src/main/java/myau/ui/ClickGui.java +++ b/src/main/java/myau/ui/ClickGui.java @@ -30,13 +30,12 @@ public ClickGui() { List combatModules = new ArrayList<>(); combatModules.add(Myau.moduleManager.getModule(AimAssist.class)); combatModules.add(Myau.moduleManager.getModule(AutoClicker.class)); - combatModules.add(Myau.moduleManager.getModule(DoubleClicker.class)); combatModules.add(Myau.moduleManager.getModule(KillAura.class)); combatModules.add(Myau.moduleManager.getModule(Wtap.class)); combatModules.add(Myau.moduleManager.getModule(Velocity.class)); combatModules.add(Myau.moduleManager.getModule(Freeze.class)); combatModules.add(Myau.moduleManager.getModule(Reach.class)); - combatModules.add(Myau.moduleManager.getModule(BackTrack.class)); + combatModules.add(Myau.moduleManager.getModule(Backtrack.class)); combatModules.add(Myau.moduleManager.getModule(TargetStrafe.class)); combatModules.add(Myau.moduleManager.getModule(NoHitDelay.class)); combatModules.add(Myau.moduleManager.getModule(AntiFireball.class)); From 21be674300656ba07d2e6e8c4986f2ef4a436cd6 Mon Sep 17 00:00:00 2001 From: ididitforfun <800Yenn@gmail.com> Date: Mon, 9 Mar 2026 16:45:52 -0400 Subject: [PATCH 16/21] Overhaul of Backtrack InvManager bug fixed DoubleClicker removed (too lazy to fix) Fix chestESP (stole it from another git) Fixed dog shit spelling --- src/main/java/myau/module/modules/BackTrack.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/myau/module/modules/BackTrack.java b/src/main/java/myau/module/modules/BackTrack.java index 42854d9d..f89e80e8 100644 --- a/src/main/java/myau/module/modules/BackTrack.java +++ b/src/main/java/myau/module/modules/BackTrack.java @@ -345,4 +345,4 @@ private double distanceTo(Vec3 v) { public String[] getSuffix() { return new String[]{ currentMaxDelay() + "ms" }; } -} \ No newline at end of file +} From 68d465959c92ca2f8bbe209cc8ff3cfc045e187d Mon Sep 17 00:00:00 2001 From: ididitforthefun <800Yenn@gmail.com> Date: Mon, 9 Mar 2026 17:20:48 -0400 Subject: [PATCH 17/21] =?UTF-8?q?name=20change=20that=20git=20should=20of?= =?UTF-8?q?=20done=20=F0=9F=98=A1=F0=9F=98=A1=F0=9F=98=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/myau/module/modules/{BackTrack.java => Backtrack.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/main/java/myau/module/modules/{BackTrack.java => Backtrack.java} (100%) diff --git a/src/main/java/myau/module/modules/BackTrack.java b/src/main/java/myau/module/modules/Backtrack.java similarity index 100% rename from src/main/java/myau/module/modules/BackTrack.java rename to src/main/java/myau/module/modules/Backtrack.java From 4f4584dcfe1a1c423333e5a5a3a248d6573d1d16 Mon Sep 17 00:00:00 2001 From: ididitforfun <800Yenn@gmail.com> Date: Mon, 9 Mar 2026 19:09:16 -0400 Subject: [PATCH 18/21] Fixed desync for the preview! <3 --- bin/main/callback.html | 44 ++++++++ bin/main/mcmod.info | 10 ++ bin/main/mixins.myau.json | 7 ++ bin/main/ssl.jks | Bin 0 -> 176903 bytes bin/main/version.json | 3 + .../java/myau/module/modules/Backtrack.java | 99 ++++++++++++------ 6 files changed, 133 insertions(+), 30 deletions(-) create mode 100644 bin/main/callback.html create mode 100644 bin/main/mcmod.info create mode 100644 bin/main/mixins.myau.json create mode 100644 bin/main/ssl.jks create mode 100644 bin/main/version.json diff --git a/bin/main/callback.html b/bin/main/callback.html new file mode 100644 index 00000000..ad541ea1 --- /dev/null +++ b/bin/main/callback.html @@ -0,0 +1,44 @@ + + + + + + + + Close this window and return to Minecraft! + + + + + +
+ Close this window and return to Minecraft! +
+ + + \ No newline at end of file diff --git a/bin/main/mcmod.info b/bin/main/mcmod.info new file mode 100644 index 00000000..7f2251d1 --- /dev/null +++ b/bin/main/mcmod.info @@ -0,0 +1,10 @@ +[ + { + "name": "Myau", + "version": "${version}", + "mcversion": "1.8.9", + "authorList": [ + "ksyz" + ] + } +] \ No newline at end of file diff --git a/bin/main/mixins.myau.json b/bin/main/mixins.myau.json new file mode 100644 index 00000000..e7993545 --- /dev/null +++ b/bin/main/mixins.myau.json @@ -0,0 +1,7 @@ +{ + "package": "${basePackage}.mixin", + "plugin": "${basePackage}.init.FMLLoadingPlugin", + "refmap": "mixins.${modid}.refmap.json", + "minVersion": "0.7", + "compatibilityLevel": "JAVA_8" +} diff --git a/bin/main/ssl.jks b/bin/main/ssl.jks new file mode 100644 index 0000000000000000000000000000000000000000..0286754ef586a1a54270cfa83bdda36b7199e50b GIT binary patch literal 176903 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�PW2HNXz{O?~qSP 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 literal 0 HcmV?d00001 diff --git a/bin/main/version.json b/bin/main/version.json new file mode 100644 index 00000000..3e640ab7 --- /dev/null +++ b/bin/main/version.json @@ -0,0 +1,3 @@ +{ + "version": "${version}" +} \ No newline at end of file diff --git a/src/main/java/myau/module/modules/Backtrack.java b/src/main/java/myau/module/modules/Backtrack.java index f89e80e8..5fd37b2f 100644 --- a/src/main/java/myau/module/modules/Backtrack.java +++ b/src/main/java/myau/module/modules/Backtrack.java @@ -52,7 +52,7 @@ public class Backtrack extends Module { public final BooleanProperty esp; private final ConcurrentLinkedQueue> incomingQueue = new ConcurrentLinkedQueue<>(); - private final Map realPositions = new HashMap<>(); + private final Map encodedPositions = new HashMap<>(); private EntityLivingBase target; private EntityLivingBase lastAttacked; @@ -79,7 +79,7 @@ public Backtrack() { @Override public void onEnabled() { incomingQueue.clear(); - realPositions.clear(); + encodedPositions.clear(); realAABB = null; backtrackStartTime = 0L; target = null; @@ -93,7 +93,7 @@ public void onDisabled() { setLagRangeEnabled(true); releaseIncoming(); incomingQueue.clear(); - realPositions.clear(); + encodedPositions.clear(); realAABB = null; target = null; lastAttacked = null; @@ -127,9 +127,15 @@ private boolean isInCombat() { return System.currentTimeMillis() - lastAttackTime <= COMBAT_LOCK_MS; } + private Vec3 getRealPosition(int entityId) { + long[] enc = encodedPositions.get(entityId); + if (enc == null) return null; + return new Vec3(enc[0] / 32.0, enc[1] / 32.0, enc[2] / 32.0); + } + private boolean canBacktrack() { if (target == null || target.isDead) return false; - Vec3 real = realPositions.get(target.getEntityId()); + Vec3 real = getRealPosition(target.getEntityId()); if (real == null) return false; if (distanceTo(real) > range.getValue()) return false; if (backtrackStartTime > 0 && System.currentTimeMillis() - backtrackStartTime > currentMaxDelay()) return false; @@ -156,6 +162,7 @@ private void releaseIncoming() { Packet p; while ((p = incomingQueue.poll()) != null) processPacketUnchecked(p); backtrackStartTime = 0L; + realAABB = null; } @SuppressWarnings("unchecked") @@ -173,27 +180,39 @@ private void updateRealPosition(Packet packet) { Entity e = p.getEntity(mc.theWorld); if (e == null) return; int id = e.getEntityId(); - Vec3 base = realPositions.containsKey(id) - ? realPositions.get(id) - : new Vec3(e.posX, e.posY, e.posZ); - Vec3 updated = base.addVector( - p.func_149062_c() / 32.0, - p.func_149061_d() / 32.0, - p.func_149064_e() / 32.0); - realPositions.put(id, updated); + + long[] base = encodedPositions.computeIfAbsent(id, k -> + new long[]{ + Math.round(e.posX * 32.0), + Math.round(e.posY * 32.0), + Math.round(e.posZ * 32.0) + }); + + base[0] += p.func_149062_c(); + base[1] += p.func_149061_d(); + base[2] += p.func_149064_e(); + if (target != null && id == target.getEntityId()) { - double dx = p.func_149062_c() / 32.0; - double dy = p.func_149061_d() / 32.0; - double dz = p.func_149064_e() / 32.0; - if (realAABB != null) realAABB = realAABB.offset(dx, dy, dz); + double x = base[0] / 32.0; + double y = base[1] / 32.0; + double z = base[2] / 32.0; + double hw = target.width / 2.0; + realAABB = new AxisAlignedBB(x - hw, y, z - hw, x + hw, y + target.height, z + hw); } + } else if (packet instanceof S18PacketEntityTeleport) { S18PacketEntityTeleport p = (S18PacketEntityTeleport) packet; - double x = p.getX() / 32.0; - double y = p.getY() / 32.0; - double z = p.getZ() / 32.0; - realPositions.put(p.getEntityId(), new Vec3(x, y, z)); - if (target != null && p.getEntityId() == target.getEntityId()) { + int id = p.getEntityId(); + + long encX = p.getX(); + long encY = p.getY(); + long encZ = p.getZ(); + encodedPositions.put(id, new long[]{encX, encY, encZ}); + + if (target != null && id == target.getEntityId()) { + double x = encX / 32.0; + double y = encY / 32.0; + double z = encZ / 32.0; double hw = target.width / 2.0; realAABB = new AxisAlignedBB(x - hw, y, z - hw, x + hw, y + target.height, z + hw); } @@ -248,7 +267,6 @@ private void tickPre() { if (newTarget != target) { setLagRangeEnabled(true); releaseAll(); - realAABB = null; } target = newTarget; @@ -257,14 +275,26 @@ private void tickPre() { return; } - if (!realPositions.containsKey(target.getEntityId())) { - realPositions.put(target.getEntityId(), new Vec3(target.posX, target.posY, target.posZ)); - } + encodedPositions.computeIfAbsent(target.getEntityId(), k -> + new long[]{ + Math.round(target.posX * 32.0), + Math.round(target.posY * 32.0), + Math.round(target.posZ * 32.0) + }); + if (realAABB == null) { - realAABB = target.getEntityBoundingBox(); + long[] enc = encodedPositions.get(target.getEntityId()); + if (enc != null) { + double x = enc[0] / 32.0; + double y = enc[1] / 32.0; + double z = enc[2] / 32.0; + double hw = target.width / 2.0; + realAABB = new AxisAlignedBB(x - hw, y, z - hw, x + hw, y + target.height, z + hw); + } } - Vec3 real = realPositions.get(target.getEntityId()); + Vec3 real = getRealPosition(target.getEntityId()); + if (real == null) return; boolean shouldRelease = false; if (mc.thePlayer.hurtTime == mc.thePlayer.maxHurtTime && mc.thePlayer.maxHurtTime > 0) shouldRelease = true; @@ -289,14 +319,23 @@ private void tickPre() { public void onRender3D(Render3DEvent event) { if (!isEnabled() || !esp.getValue()) return; if (target == null || realAABB == null) return; + AxisAlignedBB visual = target.getEntityBoundingBox(); double dx = Math.abs(realAABB.minX - visual.minX); double dy = Math.abs(realAABB.minY - visual.minY); double dz = Math.abs(realAABB.minZ - visual.minZ); if (dx < 0.05 && dy < 0.05 && dz < 0.05) return; - Color color = (target instanceof EntityPlayer) ? TeamUtil.getTeamColor((EntityPlayer) target, 1.0F) : new Color(255, 60, 60); + + Color color = (target instanceof EntityPlayer) + ? TeamUtil.getTeamColor((EntityPlayer) target, 1.0F) + : new Color(255, 60, 60); + IAccessorRenderManager rm = (IAccessorRenderManager) mc.getRenderManager(); - AxisAlignedBB aabb = realAABB.offset(-rm.getRenderPosX(), -rm.getRenderPosY(), -rm.getRenderPosZ()); + AxisAlignedBB aabb = realAABB.offset( + -rm.getRenderPosX(), + -rm.getRenderPosY(), + -rm.getRenderPosZ()); + RenderUtil.enableRenderState(); RenderUtil.drawFilledBox(aabb, color.getRed(), color.getGreen(), color.getBlue()); RenderUtil.disableRenderState(); @@ -345,4 +384,4 @@ private double distanceTo(Vec3 v) { public String[] getSuffix() { return new String[]{ currentMaxDelay() + "ms" }; } -} +} \ No newline at end of file From 6cfe08faef0cf240e61e3bbbf170b1e1da2a6972 Mon Sep 17 00:00:00 2001 From: ididitforfun <800Yenn@gmail.com> Date: Mon, 9 Mar 2026 19:10:14 -0400 Subject: [PATCH 19/21] ?? --- bin/main/callback.html | 44 -------------------------------------- bin/main/mcmod.info | 10 --------- bin/main/mixins.myau.json | 7 ------ bin/main/ssl.jks | Bin 176903 -> 0 bytes bin/main/version.json | 3 --- 5 files changed, 64 deletions(-) delete mode 100644 bin/main/callback.html delete mode 100644 bin/main/mcmod.info delete mode 100644 bin/main/mixins.myau.json delete mode 100644 bin/main/ssl.jks delete mode 100644 bin/main/version.json diff --git a/bin/main/callback.html b/bin/main/callback.html deleted file mode 100644 index ad541ea1..00000000 --- a/bin/main/callback.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - Close this window and return to Minecraft! - - - - - -
- Close this window and return to Minecraft! -
- - - \ No newline at end of file diff --git a/bin/main/mcmod.info b/bin/main/mcmod.info deleted file mode 100644 index 7f2251d1..00000000 --- a/bin/main/mcmod.info +++ /dev/null @@ -1,10 +0,0 @@ -[ - { - "name": "Myau", - "version": "${version}", - "mcversion": "1.8.9", - "authorList": [ - "ksyz" - ] - } -] \ No newline at end of file diff --git a/bin/main/mixins.myau.json b/bin/main/mixins.myau.json deleted file mode 100644 index e7993545..00000000 --- a/bin/main/mixins.myau.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "package": "${basePackage}.mixin", - "plugin": "${basePackage}.init.FMLLoadingPlugin", - "refmap": "mixins.${modid}.refmap.json", - "minVersion": "0.7", - "compatibilityLevel": "JAVA_8" -} diff --git a/bin/main/ssl.jks b/bin/main/ssl.jks deleted file mode 100644 index 0286754ef586a1a54270cfa83bdda36b7199e50b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176903 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�PW2HNXz{O?~qSP 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 diff --git a/bin/main/version.json b/bin/main/version.json deleted file mode 100644 index 3e640ab7..00000000 --- a/bin/main/version.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "version": "${version}" -} \ No newline at end of file From 92778ff2f2a46b1c866482e564b9d0aea09c42b6 Mon Sep 17 00:00:00 2001 From: ididitforfun <800Yenn@gmail.com> Date: Mon, 9 Mar 2026 20:35:04 -0400 Subject: [PATCH 20/21] This time fixed desync with backtrack --- bin/main/callback.html | 44 ++++++ bin/main/mcmod.info | 10 ++ bin/main/mixins.myau.json | 7 + bin/main/ssl.jks | Bin 0 -> 176903 bytes bin/main/version.json | 3 + .../java/myau/module/modules/Backtrack.java | 126 ++++++------------ 6 files changed, 108 insertions(+), 82 deletions(-) create mode 100644 bin/main/callback.html create mode 100644 bin/main/mcmod.info create mode 100644 bin/main/mixins.myau.json create mode 100644 bin/main/ssl.jks create mode 100644 bin/main/version.json diff --git a/bin/main/callback.html b/bin/main/callback.html new file mode 100644 index 00000000..ad541ea1 --- /dev/null +++ b/bin/main/callback.html @@ -0,0 +1,44 @@ + + + + + + + + Close this window and return to Minecraft! + + + + + +
+ Close this window and return to Minecraft! +
+ + + \ No newline at end of file diff --git a/bin/main/mcmod.info b/bin/main/mcmod.info new file mode 100644 index 00000000..7f2251d1 --- /dev/null +++ b/bin/main/mcmod.info @@ -0,0 +1,10 @@ +[ + { + "name": "Myau", + "version": "${version}", + "mcversion": "1.8.9", + "authorList": [ + "ksyz" + ] + } +] \ No newline at end of file diff --git a/bin/main/mixins.myau.json b/bin/main/mixins.myau.json new file mode 100644 index 00000000..e7993545 --- /dev/null +++ b/bin/main/mixins.myau.json @@ -0,0 +1,7 @@ +{ + "package": "${basePackage}.mixin", + "plugin": "${basePackage}.init.FMLLoadingPlugin", + "refmap": "mixins.${modid}.refmap.json", + "minVersion": "0.7", + "compatibilityLevel": "JAVA_8" +} diff --git a/bin/main/ssl.jks b/bin/main/ssl.jks new file mode 100644 index 0000000000000000000000000000000000000000..0286754ef586a1a54270cfa83bdda36b7199e50b GIT binary patch literal 176903 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�PW2HNXz{O?~qSP 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 literal 0 HcmV?d00001 diff --git a/bin/main/version.json b/bin/main/version.json new file mode 100644 index 00000000..3e640ab7 --- /dev/null +++ b/bin/main/version.json @@ -0,0 +1,3 @@ +{ + "version": "${version}" +} \ No newline at end of file diff --git a/src/main/java/myau/module/modules/Backtrack.java b/src/main/java/myau/module/modules/Backtrack.java index 5fd37b2f..53ae7e6b 100644 --- a/src/main/java/myau/module/modules/Backtrack.java +++ b/src/main/java/myau/module/modules/Backtrack.java @@ -32,8 +32,6 @@ import java.awt.*; import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; import java.util.concurrent.ConcurrentLinkedQueue; public class Backtrack extends Module { @@ -52,8 +50,8 @@ public class Backtrack extends Module { public final BooleanProperty esp; private final ConcurrentLinkedQueue> incomingQueue = new ConcurrentLinkedQueue<>(); - private final Map encodedPositions = new HashMap<>(); + private Vec3 trackedPosition = null; private EntityLivingBase target; private EntityLivingBase lastAttacked; private long lastAttackTime = 0L; @@ -79,7 +77,7 @@ public Backtrack() { @Override public void onEnabled() { incomingQueue.clear(); - encodedPositions.clear(); + trackedPosition = null; realAABB = null; backtrackStartTime = 0L; target = null; @@ -93,7 +91,7 @@ public void onDisabled() { setLagRangeEnabled(true); releaseIncoming(); incomingQueue.clear(); - encodedPositions.clear(); + trackedPosition = null; realAABB = null; target = null; lastAttacked = null; @@ -127,19 +125,12 @@ private boolean isInCombat() { return System.currentTimeMillis() - lastAttackTime <= COMBAT_LOCK_MS; } - private Vec3 getRealPosition(int entityId) { - long[] enc = encodedPositions.get(entityId); - if (enc == null) return null; - return new Vec3(enc[0] / 32.0, enc[1] / 32.0, enc[2] / 32.0); - } - private boolean canBacktrack() { if (target == null || target.isDead) return false; - Vec3 real = getRealPosition(target.getEntityId()); - if (real == null) return false; - if (distanceTo(real) > range.getValue()) return false; + if (trackedPosition == null) return false; + if (distanceTo(trackedPosition) > range.getValue()) return false; if (backtrackStartTime > 0 && System.currentTimeMillis() - backtrackStartTime > currentMaxDelay()) return false; - double distReal = distanceTo(real); + double distReal = distanceTo(trackedPosition); double distCurrent = mc.thePlayer.getDistanceToEntity(target); return adaptive.getValue() ? distReal > distCurrent : distReal > distCurrent + 0.1; } @@ -162,7 +153,6 @@ private void releaseIncoming() { Packet p; while ((p = incomingQueue.poll()) != null) processPacketUnchecked(p); backtrackStartTime = 0L; - realAABB = null; } @SuppressWarnings("unchecked") @@ -175,47 +165,36 @@ private void releaseAll() { } private void updateRealPosition(Packet packet) { + if (target == null) return; + if (packet instanceof S14PacketEntity) { S14PacketEntity p = (S14PacketEntity) packet; Entity e = p.getEntity(mc.theWorld); - if (e == null) return; - int id = e.getEntityId(); - - long[] base = encodedPositions.computeIfAbsent(id, k -> - new long[]{ - Math.round(e.posX * 32.0), - Math.round(e.posY * 32.0), - Math.round(e.posZ * 32.0) - }); - - base[0] += p.func_149062_c(); - base[1] += p.func_149061_d(); - base[2] += p.func_149064_e(); - - if (target != null && id == target.getEntityId()) { - double x = base[0] / 32.0; - double y = base[1] / 32.0; - double z = base[2] / 32.0; - double hw = target.width / 2.0; - realAABB = new AxisAlignedBB(x - hw, y, z - hw, x + hw, y + target.height, z + hw); - } + if (e == null || e != target) return; + + Vec3 base = (trackedPosition != null) ? trackedPosition + : new Vec3(target.posX, target.posY, target.posZ); + + double dx = p.func_149062_c() / 32.0; + double dy = p.func_149061_d() / 32.0; + double dz = p.func_149064_e() / 32.0; + trackedPosition = base.addVector(dx, dy, dz); } else if (packet instanceof S18PacketEntityTeleport) { S18PacketEntityTeleport p = (S18PacketEntityTeleport) packet; - int id = p.getEntityId(); - - long encX = p.getX(); - long encY = p.getY(); - long encZ = p.getZ(); - encodedPositions.put(id, new long[]{encX, encY, encZ}); - - if (target != null && id == target.getEntityId()) { - double x = encX / 32.0; - double y = encY / 32.0; - double z = encZ / 32.0; - double hw = target.width / 2.0; - realAABB = new AxisAlignedBB(x - hw, y, z - hw, x + hw, y + target.height, z + hw); - } + if (p.getEntityId() != target.getEntityId()) return; + + trackedPosition = new Vec3(p.getX() / 32.0, p.getY() / 32.0, p.getZ() / 32.0); + } + + if (trackedPosition != null) { + double hw = target.width / 2.0; + realAABB = new AxisAlignedBB( + trackedPosition.xCoord - hw, trackedPosition.yCoord, + trackedPosition.zCoord - hw, + trackedPosition.xCoord + hw, trackedPosition.yCoord + target.height, + trackedPosition.zCoord + hw + ); } } @@ -267,6 +246,8 @@ private void tickPre() { if (newTarget != target) { setLagRangeEnabled(true); releaseAll(); + realAABB = null; + trackedPosition = null; } target = newTarget; @@ -275,30 +256,20 @@ private void tickPre() { return; } - encodedPositions.computeIfAbsent(target.getEntityId(), k -> - new long[]{ - Math.round(target.posX * 32.0), - Math.round(target.posY * 32.0), - Math.round(target.posZ * 32.0) - }); - - if (realAABB == null) { - long[] enc = encodedPositions.get(target.getEntityId()); - if (enc != null) { - double x = enc[0] / 32.0; - double y = enc[1] / 32.0; - double z = enc[2] / 32.0; - double hw = target.width / 2.0; - realAABB = new AxisAlignedBB(x - hw, y, z - hw, x + hw, y + target.height, z + hw); - } + if (trackedPosition == null) { + trackedPosition = new Vec3(target.posX, target.posY, target.posZ); + double hw = target.width / 2.0; + realAABB = new AxisAlignedBB( + trackedPosition.xCoord - hw, trackedPosition.yCoord, + trackedPosition.zCoord - hw, + trackedPosition.xCoord + hw, trackedPosition.yCoord + target.height, + trackedPosition.zCoord + hw + ); } - Vec3 real = getRealPosition(target.getEntityId()); - if (real == null) return; - boolean shouldRelease = false; if (mc.thePlayer.hurtTime == mc.thePlayer.maxHurtTime && mc.thePlayer.maxHurtTime > 0) shouldRelease = true; - if (distanceTo(real) > range.getValue()) shouldRelease = true; + if (distanceTo(trackedPosition) > range.getValue()) shouldRelease = true; if (backtrackStartTime > 0 && System.currentTimeMillis() - backtrackStartTime > currentMaxDelay()) shouldRelease = true; if (releaseOnHit.getValue() && target.hurtTime == 1) shouldRelease = true; @@ -319,23 +290,14 @@ private void tickPre() { public void onRender3D(Render3DEvent event) { if (!isEnabled() || !esp.getValue()) return; if (target == null || realAABB == null) return; - AxisAlignedBB visual = target.getEntityBoundingBox(); double dx = Math.abs(realAABB.minX - visual.minX); double dy = Math.abs(realAABB.minY - visual.minY); double dz = Math.abs(realAABB.minZ - visual.minZ); if (dx < 0.05 && dy < 0.05 && dz < 0.05) return; - - Color color = (target instanceof EntityPlayer) - ? TeamUtil.getTeamColor((EntityPlayer) target, 1.0F) - : new Color(255, 60, 60); - + Color color = (target instanceof EntityPlayer) ? TeamUtil.getTeamColor((EntityPlayer) target, 1.0F) : new Color(255, 60, 60); IAccessorRenderManager rm = (IAccessorRenderManager) mc.getRenderManager(); - AxisAlignedBB aabb = realAABB.offset( - -rm.getRenderPosX(), - -rm.getRenderPosY(), - -rm.getRenderPosZ()); - + AxisAlignedBB aabb = realAABB.offset(-rm.getRenderPosX(), -rm.getRenderPosY(), -rm.getRenderPosZ()); RenderUtil.enableRenderState(); RenderUtil.drawFilledBox(aabb, color.getRed(), color.getGreen(), color.getBlue()); RenderUtil.disableRenderState(); From 9b14d2ee32f1c7edf4df1aec324c2fc777dc35ad Mon Sep 17 00:00:00 2001 From: ididitforfun <800Yenn@gmail.com> Date: Sun, 15 Mar 2026 20:38:05 -0400 Subject: [PATCH 21/21] Added all the changes from the main repo improved some stuff lol --- .../java/myau/mixin/MixinEntityPlayerSP.java | 17 +- .../java/myau/module/modules/Backtrack.java | 28 +- .../java/myau/module/modules/ChestESP.java | 11 +- src/main/java/myau/module/modules/Eagle.java | 11 +- .../java/myau/module/modules/InvManager.java | 352 +++++++++--------- src/main/java/myau/module/modules/Timer.java | 13 +- .../java/myau/module/modules/Tracers.java | 6 +- 7 files changed, 233 insertions(+), 205 deletions(-) diff --git a/src/main/java/myau/mixin/MixinEntityPlayerSP.java b/src/main/java/myau/mixin/MixinEntityPlayerSP.java index 4a39be73..00454e02 100644 --- a/src/main/java/myau/mixin/MixinEntityPlayerSP.java +++ b/src/main/java/myau/mixin/MixinEntityPlayerSP.java @@ -10,6 +10,7 @@ import myau.management.RotationState; import myau.module.modules.AntiDebuff; import myau.module.modules.NoSlow; +import myau.module.modules.Timer; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.potion.Potion; import net.minecraft.util.BlockPos; @@ -44,6 +45,20 @@ public abstract class MixinEntityPlayerSP extends MixinEntityPlayer { @Shadow public float prevRenderArmYaw; + @Inject( + method = {"onUpdate"}, + at = {@At("HEAD")}, + cancellable = true + ) + private void freezeUpdate(CallbackInfo callbackInfo) { + Timer timer = Myau.moduleManager != null + ? (Timer) Myau.moduleManager.modules.get(Timer.class) + : null; + if (timer != null && timer.isFreezing()) { + callbackInfo.cancel(); + } + } + @Inject( method = {"onUpdate"}, at = {@At("HEAD")} @@ -164,4 +179,4 @@ private boolean checkPotion(EntityPlayerSP entityPlayerSP, Potion potion) { } return ((IAccessorEntityLivingBase) entityPlayerSP).getActivePotionsMap().containsKey(potion.id); } -} +} \ No newline at end of file diff --git a/src/main/java/myau/module/modules/Backtrack.java b/src/main/java/myau/module/modules/Backtrack.java index 53ae7e6b..f3ae6cc7 100644 --- a/src/main/java/myau/module/modules/Backtrack.java +++ b/src/main/java/myau/module/modules/Backtrack.java @@ -28,6 +28,7 @@ import net.minecraft.network.play.server.S0FPacketSpawnMob; import net.minecraft.network.play.server.S27PacketExplosion; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import java.awt.*; @@ -257,7 +258,11 @@ private void tickPre() { } if (trackedPosition == null) { - trackedPosition = new Vec3(target.posX, target.posY, target.posZ); + trackedPosition = new Vec3( + MathHelper.floor_double(target.posX * 32.0) / 32.0, + MathHelper.floor_double(target.posY * 32.0) / 32.0, + MathHelper.floor_double(target.posZ * 32.0) / 32.0 + ); double hw = target.width / 2.0; realAABB = new AxisAlignedBB( trackedPosition.xCoord - hw, trackedPosition.yCoord, @@ -291,13 +296,22 @@ public void onRender3D(Render3DEvent event) { if (!isEnabled() || !esp.getValue()) return; if (target == null || realAABB == null) return; AxisAlignedBB visual = target.getEntityBoundingBox(); - double dx = Math.abs(realAABB.minX - visual.minX); - double dy = Math.abs(realAABB.minY - visual.minY); - double dz = Math.abs(realAABB.minZ - visual.minZ); - if (dx < 0.05 && dy < 0.05 && dz < 0.05) return; - Color color = (target instanceof EntityPlayer) ? TeamUtil.getTeamColor((EntityPlayer) target, 1.0F) : new Color(255, 60, 60); + double dx = realAABB.minX - visual.minX; + double dy = realAABB.minY - visual.minY; + double dz = realAABB.minZ - visual.minZ; + if (Math.abs(dx) < 0.01 && Math.abs(dy) < 0.01 && Math.abs(dz) < 0.01) return; + Color color = (target instanceof EntityPlayer) + ? TeamUtil.getTeamColor((EntityPlayer) target, 1.0F) + : new Color(255, 60, 60); IAccessorRenderManager rm = (IAccessorRenderManager) mc.getRenderManager(); - AxisAlignedBB aabb = realAABB.offset(-rm.getRenderPosX(), -rm.getRenderPosY(), -rm.getRenderPosZ()); + AxisAlignedBB aabb = new AxisAlignedBB( + realAABB.minX - rm.getRenderPosX(), + realAABB.minY - rm.getRenderPosY(), + realAABB.minZ - rm.getRenderPosZ(), + realAABB.maxX - rm.getRenderPosX(), + realAABB.maxY - rm.getRenderPosY(), + realAABB.maxZ - rm.getRenderPosZ() + ); RenderUtil.enableRenderState(); RenderUtil.drawFilledBox(aabb, color.getRed(), color.getGreen(), color.getBlue()); RenderUtil.disableRenderState(); diff --git a/src/main/java/myau/module/modules/ChestESP.java b/src/main/java/myau/module/modules/ChestESP.java index c25f4f50..4fe5fcfc 100644 --- a/src/main/java/myau/module/modules/ChestESP.java +++ b/src/main/java/myau/module/modules/ChestESP.java @@ -45,9 +45,9 @@ public void onRender(Render3DEvent event) { maxX = maxZ = 0.9375; if (block instanceof BlockChest) { if (block.canProvidePower()) { - color = new Color(this.trappedChest.getValue(), true); + color = new Color(this.trappedChest.getValue()); } else { - color = new Color(this.chest.getValue(), true); + color = new Color(this.chest.getValue()); } EnumFacing facing = mc.theWorld.getBlockState(chest.getPos()).getValue(BlockChest.FACING); switch (facing) { @@ -83,9 +83,8 @@ public void onRender(Render3DEvent event) { continue; } } else { - color = new Color(this.enderChest.getValue(), true); + color = new Color(this.enderChest.getValue()); } - if (color.getAlpha() == 0) continue; AxisAlignedBB aabb = new AxisAlignedBB( (double) chest.getPos().getX() + minX, (double) chest.getPos().getY() + 0.0, @@ -100,7 +99,7 @@ public void onRender(Render3DEvent event) { -((IAccessorRenderManager) mc.getRenderManager()).getRenderPosZ() ); RenderUtil.drawBoundingBox( - aabb, color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha(), 1.5F + aabb, color.getRed(), color.getGreen(), color.getBlue(), 255, 1.5F ); if (this.tracers.getValue()) { Vec3 vec; @@ -167,4 +166,4 @@ public void onRender(Render3DEvent event) { RenderUtil.disableRenderState(); } } -} +} \ No newline at end of file diff --git a/src/main/java/myau/module/modules/Eagle.java b/src/main/java/myau/module/modules/Eagle.java index 98b5ee09..ad7bafd1 100644 --- a/src/main/java/myau/module/modules/Eagle.java +++ b/src/main/java/myau/module/modules/Eagle.java @@ -23,6 +23,7 @@ public class Eagle extends Module { public final IntProperty minDelay = new IntProperty("min-delay", 2, 0, 10); public final IntProperty maxDelay = new IntProperty("max-delay", 3, 0, 10); public final BooleanProperty directionCheck = new BooleanProperty("direction-check", true); + public final BooleanProperty jumpCheck = new BooleanProperty("jump-check", true); public final BooleanProperty pitchCheck = new BooleanProperty("pitch-check", true); public final BooleanProperty blocksOnly = new BooleanProperty("blocks-only", true); public final BooleanProperty sneakOnly = new BooleanProperty("sneaking-only", false); @@ -36,11 +37,13 @@ private boolean canMoveSafely() { private boolean shouldSneak() { if (this.directionCheck.getValue() && mc.gameSettings.keyBindForward.isKeyDown()) { return false; + } else if (this.jumpCheck.getValue() && mc.gameSettings.keyBindJump.isKeyDown()) { + return false; } else if (this.pitchCheck.getValue() && mc.thePlayer.rotationPitch < 69.0F) { return false; - } else if(sneakOnly.getValue() && !Keyboard.isKeyDown(mc.gameSettings.keyBindSneak.getKeyCode())){ + } else if (sneakOnly.getValue() && !Keyboard.isKeyDown(mc.gameSettings.keyBindSneak.getKeyCode())) { return false; - } else if(rightOnly.getValue() && !mc.gameSettings.keyBindUseItem.isKeyDown()){ + } else if (rightOnly.getValue() && !mc.gameSettings.keyBindUseItem.isKeyDown()) { return false; } else { return (!this.blocksOnly.getValue() || ItemUtil.isHoldingBlock()) && mc.thePlayer.onGround; @@ -67,13 +70,13 @@ public void onTick(TickEvent event) { public void onMoveInput(MoveInputEvent event) { if (this.isEnabled() && mc.currentScreen == null) { - if(sneakOnly.getValue() && Keyboard.isKeyDown(mc.gameSettings.keyBindSneak.getKeyCode()) && shouldSneak()){ + if (sneakOnly.getValue() && Keyboard.isKeyDown(mc.gameSettings.keyBindSneak.getKeyCode()) && shouldSneak()) { mc.thePlayer.movementInput.sneak = false; mc.thePlayer.movementInput.moveForward /= 0.3F; mc.thePlayer.movementInput.moveStrafe /= 0.3F; } - if(!mc.thePlayer.movementInput.sneak) { + if (!mc.thePlayer.movementInput.sneak) { if (this.shouldSneak() && (this.sneakDelay > 0 || this.canMoveSafely())) { mc.thePlayer.movementInput.sneak = true; mc.thePlayer.movementInput.moveStrafe *= 0.3F; diff --git a/src/main/java/myau/module/modules/InvManager.java b/src/main/java/myau/module/modules/InvManager.java index 5ee0cdd5..aa442edf 100644 --- a/src/main/java/myau/module/modules/InvManager.java +++ b/src/main/java/myau/module/modules/InvManager.java @@ -63,9 +63,12 @@ private void clickSlot(int windowId, int slotId, int mouseButtonClicked, int mod } private int getStackSize(int slot) { - if (slot == -1) return 0; - ItemStack stack = mc.thePlayer.inventory.getStackInSlot(slot); - return stack != null ? stack.stackSize : 0; + if (slot == -1) { + return 0; + } else { + ItemStack stack = mc.thePlayer.inventory.getStackInSlot(slot); + return stack != null ? stack.stackSize : 0; + } } public InvManager() { @@ -74,190 +77,173 @@ public InvManager() { @EventTarget public void onUpdate(UpdateEvent event) { - if (event.getType() != EventType.PRE) return; - - if (this.actionDelay > 0) this.actionDelay--; - if (this.oDelay > 0) this.oDelay--; - - if (!(mc.currentScreen instanceof GuiInventory)) { - this.inventoryOpen = false; - } else if (!(((GuiInventory) mc.currentScreen).inventorySlots instanceof ContainerPlayer)) { - this.inventoryOpen = false; - } else { - if (!this.inventoryOpen) { - this.inventoryOpen = true; - this.oDelay = this.openDelay.getValue() + 1; - this.autoArmorTime.reset(); + if (event.getType() == EventType.PRE) { + if (this.actionDelay > 0) { + this.actionDelay--; } - - if (this.oDelay > 0 || this.actionDelay > 0) return; - if (!this.isEnabled() || !this.isValidGameMode()) return; - - ArrayList equippedArmorSlots = new ArrayList<>(Arrays.asList(-1, -1, -1, -1)); - ArrayList inventoryArmorSlots = new ArrayList<>(Arrays.asList(-1, -1, -1, -1)); - for (int i = 0; i < 4; i++) { - equippedArmorSlots.set(i, ItemUtil.findArmorInventorySlot(i, true)); - inventoryArmorSlots.set(i, ItemUtil.findArmorInventorySlot(i, false)); + if (this.oDelay > 0) { + this.oDelay--; } - - int preferredSwordHotbarSlot = this.swordSlot.getValue() - 1; - int inventorySwordSlot = ItemUtil.findSwordInInventorySlot(preferredSwordHotbarSlot, this.checkDurability.getValue()); - if (inventorySwordSlot == -1) inventorySwordSlot = ItemUtil.findSwordInInventorySlot(preferredSwordHotbarSlot, false); - - int preferredPickaxeHotbarSlot = this.pickaxeSlot.getValue() - 1; - int inventoryPickaxeSlot = ItemUtil.findInventorySlot("pickaxe", preferredPickaxeHotbarSlot, this.checkDurability.getValue()); - if (inventoryPickaxeSlot == -1) inventoryPickaxeSlot = ItemUtil.findInventorySlot("pickaxe", preferredPickaxeHotbarSlot, false); - - int preferredShovelHotbarSlot = this.shovelSlot.getValue() - 1; - int inventoryShovelSlot = ItemUtil.findInventorySlot("shovel", preferredShovelHotbarSlot, this.checkDurability.getValue()); - if (inventoryShovelSlot == -1) inventoryShovelSlot = ItemUtil.findInventorySlot("shovel", preferredShovelHotbarSlot, false); - - int preferredAxeHotbarSlot = this.axeSlot.getValue() - 1; - int inventoryAxeSlot = ItemUtil.findInventorySlot("axe", preferredAxeHotbarSlot, this.checkDurability.getValue()); - if (inventoryAxeSlot == -1) inventoryAxeSlot = ItemUtil.findInventorySlot("axe", preferredAxeHotbarSlot, false); - - int preferredBlocksHotbarSlot = this.blocksSlot.getValue() - 1; - int inventoryBlocksSlot = ItemUtil.findInventorySlot(preferredBlocksHotbarSlot, ItemUtil.ItemType.Block); - - int preferredProjectileHotbarSlot = this.projectileSlot.getValue() - 1; - int inventoryProjectileSlot = ItemUtil.findInventorySlot(preferredProjectileHotbarSlot, ItemUtil.ItemType.Projectile); - if (inventoryProjectileSlot == -1) inventoryProjectileSlot = ItemUtil.findInventorySlot(preferredProjectileHotbarSlot, ItemUtil.ItemType.FishRod); - - int preferredGoldAppleHotbarSlot = this.goldAppleSlot.getValue() - 1; - int inventoryGoldAppleSlot = ItemUtil.findInventorySlot(preferredGoldAppleHotbarSlot, ItemUtil.ItemType.GoldApple); - - int preferredBowHotbarSlot = this.bowSlot.getValue() - 1; - int inventoryBowSlot = ItemUtil.findBowInventorySlot(preferredBowHotbarSlot, this.checkDurability.getValue()); - if (inventoryBowSlot == -1) inventoryBowSlot = ItemUtil.findBowInventorySlot(preferredBowHotbarSlot, false); - - if (this.autoArmor.getValue() && this.autoArmorTime.hasTimeElapsed(this.autoArmorInterval.getValue() * 50L)) { - for (int i = 0; i < 4; i++) { - int equippedSlot = equippedArmorSlots.get(i); - int inventorySlot = inventoryArmorSlots.get(i); - if (equippedSlot == -1 && inventorySlot == -1) continue; - int playerArmorSlot = 39 - i; - if (equippedSlot == playerArmorSlot || inventorySlot == playerArmorSlot) continue; - if (mc.thePlayer.inventory.getStackInSlot(playerArmorSlot) != null) { - if (mc.thePlayer.inventory.getFirstEmptyStack() != -1) { - this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(playerArmorSlot), 0, 1); - } else { - this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(playerArmorSlot), 1, 4); - } - return; - } - int armorToEquip = equippedSlot != -1 ? equippedSlot : inventorySlot; - this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(armorToEquip), 0, 1); + if (!(mc.currentScreen instanceof GuiInventory)) { + this.inventoryOpen = false; + } else if (!(((GuiInventory) mc.currentScreen).inventorySlots instanceof ContainerPlayer)) { + this.inventoryOpen = false; + } else { + if (!this.inventoryOpen) { + this.inventoryOpen = true; + this.oDelay = this.openDelay.getValue() + 1; this.autoArmorTime.reset(); - return; - } - } - - LinkedHashSet usedHotbarSlots = new LinkedHashSet<>(); - - if (preferredSwordHotbarSlot >= 0 && preferredSwordHotbarSlot <= 8 && inventorySwordSlot != -1) { - usedHotbarSlots.add(preferredSwordHotbarSlot); - if (inventorySwordSlot != preferredSwordHotbarSlot) { - this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventorySwordSlot), preferredSwordHotbarSlot, 2); - return; } - } - if (preferredPickaxeHotbarSlot >= 0 && preferredPickaxeHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredPickaxeHotbarSlot) && inventoryPickaxeSlot != -1) { - usedHotbarSlots.add(preferredPickaxeHotbarSlot); - if (inventoryPickaxeSlot != preferredPickaxeHotbarSlot) { - this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryPickaxeSlot), preferredPickaxeHotbarSlot, 2); - return; - } - } - if (preferredShovelHotbarSlot >= 0 && preferredShovelHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredShovelHotbarSlot) && inventoryShovelSlot != -1) { - usedHotbarSlots.add(preferredShovelHotbarSlot); - if (inventoryShovelSlot != preferredShovelHotbarSlot) { - this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryShovelSlot), preferredShovelHotbarSlot, 2); - return; - } - } - if (preferredAxeHotbarSlot >= 0 && preferredAxeHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredAxeHotbarSlot) && inventoryAxeSlot != -1) { - usedHotbarSlots.add(preferredAxeHotbarSlot); - if (inventoryAxeSlot != preferredAxeHotbarSlot) { - this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryAxeSlot), preferredAxeHotbarSlot, 2); - return; - } - } - if (preferredBlocksHotbarSlot >= 0 && preferredBlocksHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredBlocksHotbarSlot) && inventoryBlocksSlot != -1) { - usedHotbarSlots.add(preferredBlocksHotbarSlot); - if (inventoryBlocksSlot != preferredBlocksHotbarSlot) { - this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryBlocksSlot), preferredBlocksHotbarSlot, 2); - return; - } - } - if (preferredProjectileHotbarSlot >= 0 && preferredProjectileHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredProjectileHotbarSlot) && inventoryProjectileSlot != -1) { - usedHotbarSlots.add(preferredProjectileHotbarSlot); - if (inventoryProjectileSlot != preferredProjectileHotbarSlot) { - this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryProjectileSlot), preferredProjectileHotbarSlot, 2); - return; - } - } - if (preferredGoldAppleHotbarSlot >= 0 && preferredGoldAppleHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredGoldAppleHotbarSlot) && inventoryGoldAppleSlot != -1) { - usedHotbarSlots.add(preferredGoldAppleHotbarSlot); - if (inventoryGoldAppleSlot != preferredGoldAppleHotbarSlot) { - this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryGoldAppleSlot), preferredGoldAppleHotbarSlot, 2); - return; - } - } - if (preferredBowHotbarSlot >= 0 && preferredBowHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredBowHotbarSlot) && inventoryBowSlot != -1) { - usedHotbarSlots.add(preferredBowHotbarSlot); - if (inventoryBowSlot != preferredBowHotbarSlot) { - this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryBowSlot), preferredBowHotbarSlot, 2); - return; - } - } - - if (this.dropTrash.getValue()) { - LinkedHashSet keepSlots = new LinkedHashSet<>(); - keepSlots.addAll(equippedArmorSlots); - keepSlots.addAll(inventoryArmorSlots); - if (inventorySwordSlot != -1) keepSlots.add(inventorySwordSlot); - if (inventoryPickaxeSlot != -1) keepSlots.add(inventoryPickaxeSlot); - if (inventoryShovelSlot != -1) keepSlots.add(inventoryShovelSlot); - if (inventoryAxeSlot != -1) keepSlots.add(inventoryAxeSlot); - if (inventoryBlocksSlot != -1) keepSlots.add(inventoryBlocksSlot); - if (inventoryProjectileSlot != -1) keepSlots.add(inventoryProjectileSlot); - if (inventoryGoldAppleSlot != -1) keepSlots.add(inventoryGoldAppleSlot); - if (inventoryBowSlot != -1) keepSlots.add(inventoryBowSlot); - keepSlots.remove(-1); - - int totalBlocks = this.getStackSize(inventoryBlocksSlot); - int totalProjectiles = this.getStackSize(inventoryProjectileSlot); - - for (int i = 0; i < 36; i++) { - if (keepSlots.contains(i)) continue; - ItemStack stack = mc.thePlayer.inventory.getStackInSlot(i); - if (stack == null) continue; - if (ItemUtil.isBlock(stack)) totalBlocks += stack.stackSize; - if (ItemUtil.isProjectile(stack)) totalProjectiles += stack.stackSize; - } - - for (int i = 0; i < 36; i++) { - if (keepSlots.contains(i)) continue; - ItemStack stack = mc.thePlayer.inventory.getStackInSlot(i); - if (stack == null) continue; - - boolean isBlock = ItemUtil.isBlock(stack); - boolean isProjectile = ItemUtil.isProjectile(stack); - - boolean shouldDrop; - if (isBlock) { - shouldDrop = totalBlocks > this.blocks.getValue(); - if (shouldDrop) totalBlocks -= stack.stackSize; - } else if (isProjectile) { - shouldDrop = totalProjectiles > this.projectiles.getValue(); - if (shouldDrop) totalProjectiles -= stack.stackSize; - } else { - shouldDrop = ItemUtil.isNotSpecialItem(stack); - } - - if (shouldDrop) { - this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(i), 1, 4); - return; + if (this.oDelay <= 0 && this.actionDelay <= 0) { + if (this.isEnabled() && this.isValidGameMode()) { + ArrayList equippedArmorSlots = new ArrayList<>(Arrays.asList(-1, -1, -1, -1)); + ArrayList inventoryArmorSlots = new ArrayList<>(Arrays.asList(-1, -1, -1, -1)); + for (int i = 0; i < 4; i++) { + equippedArmorSlots.set(i, ItemUtil.findArmorInventorySlot(i, true)); + inventoryArmorSlots.set(i, ItemUtil.findArmorInventorySlot(i, false)); + } + int preferredSwordHotbarSlot = this.swordSlot.getValue() - 1; + int inventorySwordSlot = ItemUtil.findSwordInInventorySlot(preferredSwordHotbarSlot, this.checkDurability.getValue()); + if (inventorySwordSlot == -1) + inventorySwordSlot = ItemUtil.findSwordInInventorySlot(preferredSwordHotbarSlot, false); + int preferredPickaxeHotbarSlot = this.pickaxeSlot.getValue() - 1; + int inventoryPickaxeSlot = ItemUtil.findInventorySlot("pickaxe", preferredPickaxeHotbarSlot, this.checkDurability.getValue()); + if (inventoryPickaxeSlot == -1) + inventoryPickaxeSlot = ItemUtil.findInventorySlot("pickaxe", preferredPickaxeHotbarSlot, false); + int preferredShovelHotbarSlot = this.shovelSlot.getValue() - 1; + int inventoryShovelSlot = ItemUtil.findInventorySlot("shovel", preferredShovelHotbarSlot, this.checkDurability.getValue()); + if (inventoryShovelSlot == -1) + inventoryShovelSlot = ItemUtil.findInventorySlot("shovel", preferredShovelHotbarSlot, false); + int preferredAxeHotbarSlot = this.axeSlot.getValue() - 1; + int inventoryAxeSlot = ItemUtil.findInventorySlot("axe", preferredAxeHotbarSlot, this.checkDurability.getValue()); + if (inventoryAxeSlot == -1) + inventoryAxeSlot = ItemUtil.findInventorySlot("axe", preferredAxeHotbarSlot, false); + int preferredBlocksHotbarSlot = this.blocksSlot.getValue() - 1; + int inventoryBlocksSlot = ItemUtil.findInventorySlot(preferredBlocksHotbarSlot, ItemUtil.ItemType.Block); + int preferredProjectileHotbarSlot = this.projectileSlot.getValue() - 1; + int inventoryProjectileSlot = ItemUtil.findInventorySlot(preferredProjectileHotbarSlot, ItemUtil.ItemType.Projectile); + if (inventoryProjectileSlot == -1) + inventoryProjectileSlot = ItemUtil.findInventorySlot(preferredProjectileHotbarSlot, ItemUtil.ItemType.FishRod); + int preferredGoldAppleHotbarSlot = this.goldAppleSlot.getValue() - 1; + int inventoryGoldAppleSlot = ItemUtil.findInventorySlot(preferredGoldAppleHotbarSlot, ItemUtil.ItemType.GoldApple); + int preferredBowHotbarSlot = this.bowSlot.getValue() - 1; + int inventoryBowSlot = ItemUtil.findBowInventorySlot(preferredBowHotbarSlot, this.checkDurability.getValue()); + if (inventoryBowSlot == -1) + inventoryBowSlot = ItemUtil.findBowInventorySlot(preferredBowHotbarSlot, false); + if (this.autoArmor.getValue() && this.autoArmorTime.hasTimeElapsed(this.autoArmorInterval.getValue() * 50L)) { + for (int i = 0; i < 4; i++) { + int equippedSlot = equippedArmorSlots.get(i); + int inventorySlot = inventoryArmorSlots.get(i); + if (equippedSlot != -1 || inventorySlot != -1) { + int playerArmorSlot = 39 - i; + if (equippedSlot != playerArmorSlot && inventorySlot != playerArmorSlot) { + if (mc.thePlayer.inventory.getStackInSlot(playerArmorSlot) != null) { + if (mc.thePlayer.inventory.getFirstEmptyStack() != -1) { + this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(playerArmorSlot), 0, 1); + } else { + this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(playerArmorSlot), 1, 4); + } + } else { + int armorToEquipSlot = equippedSlot != -1 ? equippedSlot : inventorySlot; + this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(armorToEquipSlot), 0, 1); + this.autoArmorTime.reset(); + } + return; + } + } + } + } + LinkedHashSet usedHotbarSlots = new LinkedHashSet<>(); + if (preferredSwordHotbarSlot >= 0 && preferredSwordHotbarSlot <= 8 && inventorySwordSlot != -1) { + usedHotbarSlots.add(preferredSwordHotbarSlot); + if (inventorySwordSlot != preferredSwordHotbarSlot) { + this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventorySwordSlot), preferredSwordHotbarSlot, 2); + return; + } + } + if (preferredPickaxeHotbarSlot >= 0 && preferredPickaxeHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredPickaxeHotbarSlot) && inventoryPickaxeSlot != -1) { + usedHotbarSlots.add(preferredPickaxeHotbarSlot); + if (inventoryPickaxeSlot != preferredPickaxeHotbarSlot) { + this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryPickaxeSlot), preferredPickaxeHotbarSlot, 2); + return; + } + } + if (preferredShovelHotbarSlot >= 0 && preferredShovelHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredShovelHotbarSlot) && inventoryShovelSlot != -1) { + usedHotbarSlots.add(preferredShovelHotbarSlot); + if (inventoryShovelSlot != preferredShovelHotbarSlot) { + this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryShovelSlot), preferredShovelHotbarSlot, 2); + return; + } + } + if (preferredAxeHotbarSlot >= 0 && preferredAxeHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredAxeHotbarSlot) && inventoryAxeSlot != -1) { + usedHotbarSlots.add(preferredAxeHotbarSlot); + if (inventoryAxeSlot != preferredAxeHotbarSlot) { + this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryAxeSlot), preferredAxeHotbarSlot, 2); + return; + } + } + if (preferredBlocksHotbarSlot >= 0 && preferredBlocksHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredBlocksHotbarSlot) && inventoryBlocksSlot != -1) { + usedHotbarSlots.add(preferredBlocksHotbarSlot); + if (inventoryBlocksSlot != preferredBlocksHotbarSlot) { + this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryBlocksSlot), preferredBlocksHotbarSlot, 2); + return; + } + } + if (preferredProjectileHotbarSlot >= 0 && preferredProjectileHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredProjectileHotbarSlot) && inventoryProjectileSlot != -1) { + usedHotbarSlots.add(preferredProjectileHotbarSlot); + if (inventoryProjectileSlot != preferredProjectileHotbarSlot) { + this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryProjectileSlot), preferredProjectileHotbarSlot, 2); + return; + } + } + if (preferredGoldAppleHotbarSlot >= 0 && preferredGoldAppleHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredGoldAppleHotbarSlot) && inventoryGoldAppleSlot != -1) { + usedHotbarSlots.add(preferredGoldAppleHotbarSlot); + if (inventoryGoldAppleSlot != preferredGoldAppleHotbarSlot) { + this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryGoldAppleSlot), preferredGoldAppleHotbarSlot, 2); + return; + } + } + if (preferredBowHotbarSlot >= 0 && preferredBowHotbarSlot <= 8 && !usedHotbarSlots.contains(preferredBowHotbarSlot) && inventoryBowSlot != -1) { + usedHotbarSlots.add(preferredBowHotbarSlot); + if (inventoryBowSlot != preferredBowHotbarSlot) { + this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(inventoryBowSlot), preferredBowHotbarSlot, 2); + return; + } + } + if (this.dropTrash.getValue()) { + int currentBlockCount = this.getStackSize(inventoryBlocksSlot); + int currentProjectileCount = this.getStackSize(inventoryProjectileSlot); + for (int i = 0; i < 36; i++) { + if (!equippedArmorSlots.contains(i) + && !inventoryArmorSlots.contains(i) + && inventorySwordSlot != i + && inventoryPickaxeSlot != i + && inventoryShovelSlot != i + && inventoryAxeSlot != i + && inventoryBlocksSlot != i + && inventoryProjectileSlot != i + && inventoryGoldAppleSlot != i + && inventoryBowSlot != i) { + ItemStack stack = mc.thePlayer.inventory.getStackInSlot(i); + if (stack != null) { + boolean isBlock = ItemUtil.isBlock(stack); + boolean isProjectile = ItemUtil.isProjectile(stack); + if (isBlock) { + currentBlockCount += stack.stackSize; + } + if (isProjectile) { + currentProjectileCount += stack.stackSize; + } + if (isBlock ? currentBlockCount > this.blocks.getValue() : + isProjectile ? currentProjectileCount > this.projectiles.getValue() : + ItemUtil.isNotSpecialItem(stack)) { + this.clickSlot(mc.thePlayer.inventoryContainer.windowId, this.convertSlotIndex(i), 1, 4); + return; + } + } + } + } + } } } } diff --git a/src/main/java/myau/module/modules/Timer.java b/src/main/java/myau/module/modules/Timer.java index 1e6a819a..d0dbe871 100644 --- a/src/main/java/myau/module/modules/Timer.java +++ b/src/main/java/myau/module/modules/Timer.java @@ -6,6 +6,7 @@ import myau.events.LivingUpdateEvent; import myau.module.Module; import myau.property.properties.FloatProperty; +import myau.property.properties.ModeProperty; import java.util.Comparator; import java.util.concurrent.CopyOnWriteArrayList; @@ -14,12 +15,17 @@ public class Timer extends Module { private static final CopyOnWriteArrayList requests = new CopyOnWriteArrayList<>(); - public final FloatProperty speed = new FloatProperty("speed", 1.0F, 0.01F, 10.0F); + public final ModeProperty mode = new ModeProperty("mode", 0, new String[]{"SPEED", "FREEZE"}); + public final FloatProperty speed = new FloatProperty("speed", 1.0F, 0.01F, 10.0F, () -> this.mode.getValue() == 0); public Timer() { super("Timer", false); } + public boolean isFreezing() { + return this.isEnabled() && this.mode.getValue() == 1; + } + public static float getRequestedSpeed() { float requestSpeed = requests.stream() .max(Comparator.comparingInt(r -> r.priority)) @@ -32,7 +38,7 @@ public static float getRequestedSpeed() { ? (Timer) Myau.moduleManager.modules.get(Timer.class) : null; - if (instance != null && instance.isEnabled()) { + if (instance != null && instance.isEnabled() && instance.mode.getValue() == 0) { return instance.speed.getValue(); } @@ -61,6 +67,9 @@ public void onDisabled() { @Override public String[] getSuffix() { + if (this.mode.getValue() == 1) { + return new String[]{"Freeze"}; + } return new String[]{String.format("%.1fx", this.speed.getValue())}; } diff --git a/src/main/java/myau/module/modules/Tracers.java b/src/main/java/myau/module/modules/Tracers.java index 34a58383..19a7c46a 100644 --- a/src/main/java/myau/module/modules/Tracers.java +++ b/src/main/java/myau/module/modules/Tracers.java @@ -13,6 +13,7 @@ import myau.property.properties.BooleanProperty; import myau.property.properties.PercentProperty; import myau.property.properties.ModeProperty; +import myau.property.properties.IntProperty; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.renderer.GlStateManager; @@ -29,6 +30,7 @@ public class Tracers extends Module { public final BooleanProperty drawLines = new BooleanProperty("lines", true); public final BooleanProperty drawArrows = new BooleanProperty("arrows", false); public final PercentProperty opacity = new PercentProperty("opacity", 100); + public final IntProperty distance = new IntProperty("distance", 512, 0, 512); public final BooleanProperty showPlayers = new BooleanProperty("players", true); public final BooleanProperty showFriends = new BooleanProperty("friends", true); public final BooleanProperty showEnemies = new BooleanProperty("enemies", true); @@ -37,7 +39,7 @@ public class Tracers extends Module { private boolean shouldRender(EntityPlayer entityPlayer) { if (entityPlayer.deathTime > 0) { return false; - } else if (mc.getRenderViewEntity().getDistanceToEntity(entityPlayer) > 512.0F) { + } else if (mc.getRenderViewEntity().getDistanceToEntity(entityPlayer) > (float) this.distance.getValue()) { return false; } else if (entityPlayer != mc.thePlayer && entityPlayer != mc.getRenderViewEntity()) { if (TeamUtil.isBot(entityPlayer)) { @@ -195,4 +197,4 @@ public void onRender(Render2DEvent event) { } } } -} +} \ No newline at end of file