From 798fd1ef163faad270990ef865d13435ef669dfd Mon Sep 17 00:00:00 2001 From: Arslaan Pathan Date: Sun, 12 Oct 2025 11:50:19 +1300 Subject: h a c k. --- .../arslaansmagichax/ArslaansMagicHaxClient.java | 4 ++ .../mixin/PlayerInputC2SPacketMixin.java | 16 ++++++ .../arslaansmagichax/modules/impl/FakeSneak.java | 14 ++++- .../arslaansmagichax/modules/impl/Poseidon.java | 21 ++++++++ .../modules/impl/TickRateLock.java | 59 ++++++++++++++++++++++ .../screens/clickgui/ClickGUIScreen.java | 12 +++-- src/main/resources/arslaansmagichax.mixins.json | 1 + 7 files changed, 121 insertions(+), 6 deletions(-) create mode 100644 src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/PlayerInputC2SPacketMixin.java create mode 100644 src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Poseidon.java create mode 100644 src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/TickRateLock.java (limited to 'src') diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/ArslaansMagicHaxClient.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/ArslaansMagicHaxClient.java index 274ca76..a41eddd 100644 --- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/ArslaansMagicHaxClient.java +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/ArslaansMagicHaxClient.java @@ -27,6 +27,8 @@ public class ArslaansMagicHaxClient implements ClientModInitializer { public static GravityModifier gravityModifier = new GravityModifier(); public static Xray xray = new Xray(); public static HideModulesHUD hideModulesHUD = new HideModulesHUD(); + public static Poseidon poseidon = new Poseidon(); + public static TickRateLock tickRateLock = new TickRateLock(); @Override public void onInitializeClient() { @@ -55,6 +57,8 @@ public class ArslaansMagicHaxClient implements ClientModInitializer { ModuleManager.INSTANCE.register(gravityModifier); ModuleManager.INSTANCE.register(xray); ModuleManager.INSTANCE.register(hideModulesHUD); + ModuleManager.INSTANCE.register(poseidon); + ModuleManager.INSTANCE.register(tickRateLock); ModuleManager.INSTANCE.registerHUD(); diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/PlayerInputC2SPacketMixin.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/PlayerInputC2SPacketMixin.java new file mode 100644 index 0000000..71b3e6c --- /dev/null +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/mixin/PlayerInputC2SPacketMixin.java @@ -0,0 +1,16 @@ +package net.justlearning.arslaan3102.arslaansmagichax.mixin; + +import net.justlearning.arslaan3102.arslaansmagichax.mixininterface.IPacket; +import net.minecraft.network.packet.c2s.play.PlayerInputC2SPacket; +import org.spongepowered.asm.mixin.Mixin; + +@Mixin(PlayerInputC2SPacket.class) +public abstract class PlayerInputC2SPacketMixin implements IPacket { + private int tag = -1; + + @Override + public void hax$setTag(int value) { tag = value; } + + @Override + public int hax$getTag() { return tag; } +} diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/FakeSneak.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/FakeSneak.java index 011504c..822a209 100644 --- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/FakeSneak.java +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/FakeSneak.java @@ -1,8 +1,13 @@ package net.justlearning.arslaan3102.arslaansmagichax.modules.impl; +import net.justlearning.arslaan3102.arslaansmagichax.ArslaansMagicHaxClient; +import net.justlearning.arslaan3102.arslaansmagichax.events.PacketEvent; +import net.justlearning.arslaan3102.arslaansmagichax.events.SendPacketEventBus; +import net.justlearning.arslaan3102.arslaansmagichax.mixininterface.IPacket; import net.justlearning.arslaan3102.arslaansmagichax.modules.Category; import net.justlearning.arslaan3102.arslaansmagichax.modules.Module; import net.minecraft.client.gui.screen.TitleScreen; +import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.c2s.play.PlayerInputC2SPacket; import net.minecraft.util.PlayerInput; @@ -14,7 +19,12 @@ public class FakeSneak extends Module { @Override public void tick() { if (!this.isEnabled() || mc.player == null) return; - PlayerInput fakeSneak = new PlayerInput(false, false, false, false, false, true, false); - mc.player.networkHandler.sendPacket(new PlayerInputC2SPacket(fakeSneak)); + + PlayerInput original = mc.player.input.playerInput; + + PlayerInput fakeSneak = new PlayerInput(original.forward(), original.backward(), original.left(), original.right(), original.jump(), true, original.sprint()); + Packet fakeSneakPacket = new PlayerInputC2SPacket(fakeSneak); + ((IPacket) fakeSneakPacket).hax$setTag(1337); + mc.player.networkHandler.sendPacket(fakeSneakPacket); } } diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Poseidon.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Poseidon.java new file mode 100644 index 0000000..cedb832 --- /dev/null +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/Poseidon.java @@ -0,0 +1,21 @@ +package net.justlearning.arslaan3102.arslaansmagichax.modules.impl; + +import net.justlearning.arslaan3102.arslaansmagichax.modules.Category; +import net.justlearning.arslaan3102.arslaansmagichax.modules.Module; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.registry.Registries; + +public class Poseidon extends Module { + public Poseidon() { + super("Poseidon", "Stops you from drowning.", -1, Category.PLAYER); + } + + @Override + public void tick() { + if (!this.isEnabled() || mc.player == null) return; + + mc.player.setAir(mc.player.getMaxAir()); + mc.player.addStatusEffect(new StatusEffectInstance(Registries.STATUS_EFFECT.getEntry(StatusEffects.WATER_BREATHING.value()), 1, 255)); + } +} diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/TickRateLock.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/TickRateLock.java new file mode 100644 index 0000000..75f8897 --- /dev/null +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/TickRateLock.java @@ -0,0 +1,59 @@ +package net.justlearning.arslaan3102.arslaansmagichax.modules.impl; + +import net.justlearning.arslaan3102.arslaansmagichax.ArslaansMagicHaxClient; +import net.justlearning.arslaan3102.arslaansmagichax.events.PacketEvent; +import net.justlearning.arslaan3102.arslaansmagichax.events.ReceivePacketEventBus; +import net.justlearning.arslaan3102.arslaansmagichax.modules.Category; +import net.justlearning.arslaan3102.arslaansmagichax.modules.Module; +import net.justlearning.arslaan3102.arslaansmagichax.modules.settings.BooleanSetting; +import net.justlearning.arslaan3102.arslaansmagichax.modules.settings.NumberSetting; +import net.minecraft.network.listener.ClientPlayPacketListener; +import net.minecraft.network.packet.Packet; +import net.minecraft.network.packet.s2c.play.UpdateTickRateS2CPacket; +import net.minecraft.world.tick.TickManager; + +public class TickRateLock extends Module { + + private NumberSetting tickRate = new NumberSetting("Tick Rate", 1, 100, 20, 1); + private BooleanSetting frozen = new BooleanSetting("Frozen", false); + private static float serverTickRate = 20; // default 20 tps + private static boolean serverFrozen = false; // default not frozen + + public TickRateLock() { + super("Tick Rate Lock", "Locks the tick rate to a specified value (Does not affect the server - client-side only)", -1, Category.MISC); + addSetting(tickRate); + addSetting(frozen); + ReceivePacketEventBus.register(TickRateLock::onPacketReceive); + } + + private static void onPacketReceive(PacketEvent.Receive event) { + if (!ArslaansMagicHaxClient.tickRateLock.isEnabled()) return; + + Packet packet = event.packet(); + + if (packet instanceof UpdateTickRateS2CPacket) { + serverTickRate = ((UpdateTickRateS2CPacket) packet).tickRate(); // save server tick rate + serverFrozen = ((UpdateTickRateS2CPacket) packet).isFrozen(); // save server frozen + event.setCancelled(true); // ignores the server, frick them with all their rules + } + } + + @Override + public void tick() { + if (!this.isEnabled() || mc.player == null || mc.world == null) return; + + TickManager tickManager = mc.world.getTickManager(); + if (tickManager.getTickRate() != tickRate.getValue() || tickManager.isFrozen() != frozen.isEnabled()) { + tickManager.setTickRate(tickRate.getValueFloat()); + tickManager.setFrozen(frozen.isEnabled()); + } + } + + @Override + protected void onDisable() { + if (mc.player == null || mc.world == null) return; + TickManager tickManager = mc.world.getTickManager(); + tickManager.setTickRate(serverTickRate); + tickManager.setFrozen(serverFrozen); + } +} diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/clickgui/ClickGUIScreen.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/clickgui/ClickGUIScreen.java index 7e55d7d..d563c3e 100644 --- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/clickgui/ClickGUIScreen.java +++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/screens/clickgui/ClickGUIScreen.java @@ -56,10 +56,14 @@ public class ClickGUIScreen extends Screen { @Override public boolean keyPressed(int keyCode, int scanCode, int modifiers) { for (Frame frame : frames) { - for (ModuleButton button : frame.getButtons()) { - for (Component comp : button.components) { - if (comp instanceof KeybindingSelector keybindingSelector) { - keybindingSelector.onKeyPressed(keyCode); + if (frame.isOpen) { + for (ModuleButton button : frame.getButtons()) { + if (button.extended) { + for (Component comp : button.components) { + if (comp instanceof KeybindingSelector keybindingSelector) { + keybindingSelector.onKeyPressed(keyCode); + } + } } } } diff --git a/src/main/resources/arslaansmagichax.mixins.json b/src/main/resources/arslaansmagichax.mixins.json index 5d6c559..018fd44 100644 --- a/src/main/resources/arslaansmagichax.mixins.json +++ b/src/main/resources/arslaansmagichax.mixins.json @@ -8,6 +8,7 @@ "ClientCommonNetworkHandlerMixin", "MinecraftClientMixin", "PlayerEntityMixin", + "PlayerInputC2SPacketMixin", "PlayerInteractEntityC2SPacketMixin", "PlayerMoveC2SPacketMixin", "SplashTextResourceSupplierMixin" -- cgit v1.2.3