From 14c68eb5ba16774f581d95a39e64a7b303954ffc Mon Sep 17 00:00:00 2001 From: Arslaan Pathan Date: Sat, 26 Sep 2026 17:05:36 +1200 Subject: migration to 26.2 - run migrateMappings with old loom then bring it back to new --- .../arslaansmagichax/modules/impl/AutoClicker.java | 47 ++++++++++++ .../arslaansmagichax/modules/impl/ClickGUI.java | 23 ++++++ .../arslaansmagichax/modules/impl/Criticals.java | 86 ++++++++++++++++++++++ .../arslaansmagichax/modules/impl/FakeSneak.java | 29 ++++++++ .../arslaansmagichax/modules/impl/Flight.java | 61 +++++++++++++++ .../arslaansmagichax/modules/impl/Fullbright.java | 85 +++++++++++++++++++++ .../arslaansmagichax/modules/impl/GUN.java | 32 ++++++++ .../modules/impl/GhostScaffold.java | 23 ++++++ .../modules/impl/GravityModifier.java | 31 ++++++++ .../modules/impl/HideModulesHUD.java | 12 +++ .../arslaansmagichax/modules/impl/Jetpack.java | 32 ++++++++ .../modules/impl/NoAttackCooldown.java | 12 +++ .../arslaansmagichax/modules/impl/NoFall.java | 25 +++++++ .../arslaansmagichax/modules/impl/NoPackets.java | 23 ++++++ .../arslaansmagichax/modules/impl/Poseidon.java | 21 ++++++ .../arslaansmagichax/modules/impl/Speed.java | 58 +++++++++++++++ .../arslaansmagichax/modules/impl/Spider.java | 33 +++++++++ .../modules/impl/TickRateLock.java | 58 +++++++++++++++ .../arslaansmagichax/modules/impl/Waterwalk.java | 28 +++++++ .../arslaansmagichax/modules/impl/Xray.java | 65 ++++++++++++++++ 20 files changed, 784 insertions(+) create mode 100644 src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/AutoClicker.java create mode 100644 src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/ClickGUI.java create mode 100644 src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Criticals.java create mode 100644 src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/FakeSneak.java create mode 100644 src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Flight.java create mode 100644 src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Fullbright.java create mode 100644 src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/GUN.java create mode 100644 src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/GhostScaffold.java create mode 100644 src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/GravityModifier.java create mode 100644 src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/HideModulesHUD.java create mode 100644 src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Jetpack.java create mode 100644 src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/NoAttackCooldown.java create mode 100644 src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/NoFall.java create mode 100644 src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/NoPackets.java create mode 100644 src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Poseidon.java create mode 100644 src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Speed.java create mode 100644 src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Spider.java create mode 100644 src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/TickRateLock.java create mode 100644 src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Waterwalk.java create mode 100644 src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Xray.java (limited to 'src/main/java/com/arslaancodes/arslaansmagichax/modules/impl') diff --git a/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/AutoClicker.java b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/AutoClicker.java new file mode 100644 index 0000000..7c67201 --- /dev/null +++ b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/AutoClicker.java @@ -0,0 +1,47 @@ +package com.arslaancodes.arslaansmagichax.modules.impl; + +import com.arslaancodes.arslaansmagichax.modules.Category; +import com.arslaancodes.arslaansmagichax.modules.Module; +import com.arslaancodes.arslaansmagichax.modules.settings.ModeSetting; +import com.arslaancodes.arslaansmagichax.modules.settings.NumberSetting; +import java.util.Objects; +import java.util.Random; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.HitResult; + +public class AutoClicker extends Module { + private final NumberSetting cps = new NumberSetting("CPS", 5, 50, 12, 0.1); // default 10 CPS + private final ModeSetting mode = new ModeSetting("Mode", "NoDelay", "CPS", "NoDelay"); + private long nextClickTime = 0L; + + public AutoClicker() { + super("AutoClicker", "Automatically attacks entities under your crosshair.", -1, Category.COMBAT); + addSetting(mode); + addSetting(cps); + } + + @Override + public void tick() { + if (!isEnabled() || mc.player == null || mc.level == null) return; + if (mc.screen != null) return; + + HitResult hr = mc.hitResult; + if (!(hr instanceof EntityHitResult eResult)) return; + + Entity target = eResult.getEntity(); + if (target == null || !target.isAlive()) return; + + if (!Objects.equals(mode.getMode(), "NoDelay")) { + long now = System.currentTimeMillis(); + if (now < nextClickTime) return; + + double delayMs = 1000.0 / cps.getValue(); + nextClickTime = now + (long) Math.max(1, delayMs); + } + + mc.gameMode.attack(mc.player, target); + mc.player.swing(InteractionHand.MAIN_HAND); + } +} diff --git a/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/ClickGUI.java b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/ClickGUI.java new file mode 100644 index 0000000..d47abf5 --- /dev/null +++ b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/ClickGUI.java @@ -0,0 +1,23 @@ +package com.arslaancodes.arslaansmagichax.modules.impl; + +import com.arslaancodes.arslaansmagichax.modules.Category; +import com.arslaancodes.arslaansmagichax.modules.Module; +import com.arslaancodes.arslaansmagichax.screens.clickgui.ClickGUIScreen; +import net.minecraft.client.Minecraft; +import org.lwjgl.glfw.GLFW; + +public class ClickGUI extends Module { + public ClickGUI() { + super("ClickGUI", "GUI to manage modules.", GLFW.GLFW_KEY_RIGHT_SHIFT, Category.MISC); + } + + @Override + protected void onEnable() { + Minecraft.getInstance().setScreen(ClickGUIScreen.INSTANCE); + } + + @Override + protected void onDisable() { + Minecraft.getInstance().setScreen(null); + } +} diff --git a/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Criticals.java b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Criticals.java new file mode 100644 index 0000000..e8eaa7f --- /dev/null +++ b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Criticals.java @@ -0,0 +1,86 @@ +package com.arslaancodes.arslaansmagichax.modules.impl; + +import com.arslaancodes.arslaansmagichax.ArslaansMagicHaxClient; +import com.arslaancodes.arslaansmagichax.events.PacketEvent; +import com.arslaancodes.arslaansmagichax.events.SendPacketEventBus; +import com.arslaancodes.arslaansmagichax.mixininterface.IPacket; +import com.arslaancodes.arslaansmagichax.modules.Category; +import com.arslaancodes.arslaansmagichax.modules.Module; +import com.arslaancodes.arslaansmagichax.modules.settings.ModeSetting; +import net.minecraft.network.packet.c2s.play.*; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.game.ServerboundInteractPacket; +import net.minecraft.network.protocol.game.ServerboundMovePlayerPacket; +import net.minecraft.network.protocol.game.ServerboundPlayerCommandPacket; +import net.minecraft.network.protocol.game.ServerboundPlayerInputPacket; +import net.minecraft.world.entity.player.Input; +import java.util.Objects; + +public class Criticals extends Module { + private static ModeSetting mode = new ModeSetting("Mode", "Packet", "Packet", "Bypass"); + + public Criticals() { + super("Criticals", "Always gives critical hits.", -1, Category.COMBAT); + SendPacketEventBus.register(Criticals::packetEventListener); + addSetting(mode); + } + + private static void packetEventListener(PacketEvent.Send event) { + if (!ArslaansMagicHaxClient.criticals.isEnabled() || mc.player == null) return; + + String obamaHaveDih = "barapbarapba"; // kinda put it in mbappe + + Packet packet = event.packet(); + + // mojang did a mojang thing and you cant detect if packet is InteractType.ATTACK anymore so just assume it is and pray it works + if (packet instanceof ServerboundInteractPacket && ((IPacket) packet).hax$getTag() != 1337) { + event.setCancelled(true); + + if (Objects.equals(mode.getMode(), "Packet")) { + // fake not sprinting if sprinting so it lets you crit + boolean wasSprinting = false; + + if (mc.player.isSprinting()) { + Input fakeNoSprint = new Input(false, false, false, false, false, false, false); + mc.player.connection.send(new ServerboundPlayerInputPacket(fakeNoSprint)); + + ServerboundPlayerCommandPacket fakeNoSprintCommand = new ServerboundPlayerCommandPacket(mc.player, ServerboundPlayerCommandPacket.Action.STOP_SPRINTING); + mc.player.connection.send(fakeNoSprintCommand); + + wasSprinting = true; + } + + sendYPacket(0.0625); + sendYPacket(0); + + ((IPacket) packet).hax$setTag(1337); + mc.player.connection.send(packet); + + // send sprinting packet again just in case it stopped the player from sprinting client-side (happens) + if (wasSprinting) { + Input fakeNoSprint = new Input(false, false, false, false, false, false, true); + mc.player.connection.send(new ServerboundPlayerInputPacket(fakeNoSprint)); + + ServerboundPlayerCommandPacket fakeNoSprintCommand = new ServerboundPlayerCommandPacket(mc.player, ServerboundPlayerCommandPacket.Action.START_SPRINTING); + mc.player.connection.send(fakeNoSprintCommand); + + mc.player.setSprinting(true); + } + } else if (Objects.equals(mode.getMode(), "Bypass")) { + // don't do the sprint bypass and make it more random-looking to throw off anticheat + sendYPacket(0.0625 + (Math.random() * 0.01)); + sendYPacket(0.0); + } + } + } + + private static void sendYPacket(double height) { + double x = mc.player.getX(); + double y = mc.player.getY(); + double z = mc.player.getZ(); + + ServerboundMovePlayerPacket packet = new ServerboundMovePlayerPacket.Pos(x, y + height, z, false, mc.player.horizontalCollision); + + mc.player.connection.send(packet); + } +} diff --git a/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/FakeSneak.java b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/FakeSneak.java new file mode 100644 index 0000000..8154a20 --- /dev/null +++ b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/FakeSneak.java @@ -0,0 +1,29 @@ +package com.arslaancodes.arslaansmagichax.modules.impl; + +import com.arslaancodes.arslaansmagichax.ArslaansMagicHaxClient; +import com.arslaancodes.arslaansmagichax.events.PacketEvent; +import com.arslaancodes.arslaansmagichax.events.SendPacketEventBus; +import com.arslaancodes.arslaansmagichax.mixininterface.IPacket; +import com.arslaancodes.arslaansmagichax.modules.Category; +import com.arslaancodes.arslaansmagichax.modules.Module; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.game.ServerboundPlayerInputPacket; +import net.minecraft.world.entity.player.Input; + +public class FakeSneak extends Module { + public FakeSneak() { + super("Fake Sneak", "Makes you appear as sneaking to the server when you're not. Can be used to hide nametags.", -1, Category.MOVEMENT); + } + + @Override + public void tick() { + if (!this.isEnabled() || mc.player == null) return; + + Input original = mc.player.input.keyPresses; + + Input fakeSneak = new Input(original.forward(), original.backward(), original.left(), original.right(), original.jump(), true, original.sprint()); + Packet fakeSneakPacket = new ServerboundPlayerInputPacket(fakeSneak); + ((IPacket) fakeSneakPacket).hax$setTag(1337); + mc.player.connection.send(fakeSneakPacket); + } +} diff --git a/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Flight.java b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Flight.java new file mode 100644 index 0000000..c1a9125 --- /dev/null +++ b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Flight.java @@ -0,0 +1,61 @@ +package com.arslaancodes.arslaansmagichax.modules.impl; + +import com.arslaancodes.arslaansmagichax.modules.Category; +import com.arslaancodes.arslaansmagichax.modules.Module; +import net.minecraft.network.chat.Component; +import net.minecraft.network.protocol.game.ServerboundMovePlayerPacket; +import org.lwjgl.glfw.GLFW; + +public class Flight extends Module { + private int flyingTickCounter = 0; + private boolean sentFirstPacket = false; + + public Flight() { + super("Flight", "Enables creative flight in survival.", GLFW.GLFW_KEY_G, Category.MOVEMENT); + } + + @Override + protected void onEnable() { + if (mc.player == null) return; + mc.player.displayClientMessage(Component.literal("[Flight] It is recommended to use this hack in combination with NoFall."), false); + } + + @Override + public void tick() { + if (!this.isEnabled() || mc.player == null) return; + + mc.player.getAbilities().mayfly = true; + mc.player.getAbilities().flying = true; + + if (flyingTickCounter >= 20) { + if (!sentFirstPacket) { + sendYPacket(-0.0625); + sentFirstPacket = true; + } else { + sendYPacket(0); + sentFirstPacket = false; + flyingTickCounter = 0; + } + } + flyingTickCounter++; + } + + + @Override + protected void onDisable() { + if (mc.player != null) { + mc.player.getAbilities().mayfly = false; + mc.player.getAbilities().flying = false; + } + } + + private static void sendYPacket(double height) { + double x = mc.player.getX(); + double y = mc.player.getY(); + double z = mc.player.getZ(); + + ServerboundMovePlayerPacket packet = new ServerboundMovePlayerPacket.Pos(x, y + height, z, false, mc.player.horizontalCollision); + + mc.player.connection.send(packet); + } +} diff --git a/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Fullbright.java b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Fullbright.java new file mode 100644 index 0000000..56b0800 --- /dev/null +++ b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Fullbright.java @@ -0,0 +1,85 @@ +package com.arslaancodes.arslaansmagichax.modules.impl; + +import com.arslaancodes.arslaansmagichax.modules.Category; +import com.arslaancodes.arslaansmagichax.modules.Module; +import com.arslaancodes.arslaansmagichax.modules.settings.ModeSetting; +import java.util.Objects; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; + +public class Fullbright extends Module { + public ModeSetting mode = new ModeSetting("Mode", "Gamma", "Effect", "Gamma", "Effect + Gamma", "Break AO Renderer"); + private double previousGamma = 1.0; + private boolean setPreviousGamma = false; + private String lastMode = ""; // track previous mode + + public Fullbright() { + super("Fullbright", "Brightens up your world!", -1, Category.RENDER); + addSetting(mode); + lastMode = mode.getMode(); // initialize + } + + @Override + protected void onEnable() { + if (mc.options == null) return; + applyMode(mode.getMode()); + + if (mc.levelRenderer != null) { + mc.levelRenderer.allChanged(); + } + } + + @Override + public void tick() { + if (!this.isEnabled() || mc.player == null) return; + + String currentMode = mode.getMode(); + if (!Objects.equals(currentMode, lastMode)) { + applyMode(currentMode); + + if (mc.levelRenderer != null) { + mc.levelRenderer.allChanged(); + } + + lastMode = currentMode; + } + + if (Objects.equals(currentMode, "Effect")) { + mc.player.addEffect(new MobEffectInstance(BuiltInRegistries.MOB_EFFECT.wrapAsHolder(MobEffects.NIGHT_VISION.value()), 1, 255)); + } else if (Objects.equals(currentMode, "Effect + Gamma")) { + mc.player.addEffect(new MobEffectInstance(BuiltInRegistries.MOB_EFFECT.wrapAsHolder(MobEffects.NIGHT_VISION.value()), 1, 255)); + } + } + + private void applyMode(String modeName) { + if (Objects.equals(modeName, "Gamma")) { + if (!setPreviousGamma) previousGamma = mc.options.gamma().get(); + setPreviousGamma = true; + mc.options.gamma().set(1000.0); + } else if (Objects.equals(modeName, "Effect + Gamma")) { + if (!setPreviousGamma) previousGamma = mc.options.gamma().get(); + setPreviousGamma = true; + mc.options.gamma().set(1000.0); + } else if (Objects.equals(modeName, "Effect")) { + mc.options.gamma().set(previousGamma); + setPreviousGamma = false; + } + } + + @Override + protected void onDisable() { + if (mc.player == null) return; + + if (mc.player.hasEffect(BuiltInRegistries.MOB_EFFECT.wrapAsHolder(MobEffects.NIGHT_VISION.value()))) { + mc.player.removeEffect(BuiltInRegistries.MOB_EFFECT.wrapAsHolder(MobEffects.NIGHT_VISION.value())); + } + + mc.options.gamma().set(previousGamma); + + if (mc.levelRenderer != null) { + mc.levelRenderer.allChanged(); + } + } +} + diff --git a/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/GUN.java b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/GUN.java new file mode 100644 index 0000000..a9b2b7b --- /dev/null +++ b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/GUN.java @@ -0,0 +1,32 @@ +package com.arslaancodes.arslaansmagichax.modules.impl; + +import com.arslaancodes.arslaansmagichax.ArslaansMagicHaxClient; +import com.arslaancodes.arslaansmagichax.modules.Category; +import com.arslaancodes.arslaansmagichax.modules.Module; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvent; + +public class GUN extends Module { + public GUN() { + super("G U N", "NoAttackCooldown + Criticals + AutoClicker = G U N", -1, Category.COMBAT); + } + + @Override + protected void onEnable() { + ArslaansMagicHaxClient.clickGUI.setEnabled(false); + ArslaansMagicHaxClient.noAttackCooldown.setEnabled(true); + ArslaansMagicHaxClient.criticals.setEnabled(true); + ArslaansMagicHaxClient.autoClicker.setEnabled(true); + this.setEnabled(false); + if (mc.player != null) { + mc.player.displayClientMessage(Component.literal("[G U N] Enabled NoAttackCooldown, Criticals, AutoClicker"), false); + mc.player.displayClientMessage(Component.literal("[G U N] Disabled ClickGUI & self (this is a macro module)"), false); + mc.gui.setTitle(Component.literal("G U N").withStyle(ChatFormatting.RED)); + mc.gui.setSubtitle(Component.literal("THE POWER").withStyle(ChatFormatting.YELLOW)); + mc.player.displayClientMessage(Component.literal("Tip: when using G U N, if there is no anticheat set AutoClicker mode to NoDelay"), true); + mc.player.playSound(SoundEvent.createVariableRangeEvent(ResourceLocation.parse("minecraft:entity.evoker.prepare_wololo")), 100, 1); + } + } +} diff --git a/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/GhostScaffold.java b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/GhostScaffold.java new file mode 100644 index 0000000..8f27d35 --- /dev/null +++ b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/GhostScaffold.java @@ -0,0 +1,23 @@ +package com.arslaancodes.arslaansmagichax.modules.impl; + +import com.arslaancodes.arslaansmagichax.modules.Category; +import com.arslaancodes.arslaansmagichax.modules.Module; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; + +public class GhostScaffold extends Module { + public GhostScaffold() { + super("GhostScaffold", "Allows you to scaffold but with ghost blocks", -1, Category.MOVEMENT); + } + + @Override + public void tick() { + if (!this.isEnabled() || mc.player == null || mc.level == null) return; + + BlockPos pos = mc.player.blockPosition().below(); + BlockState blockState = Blocks.STONE.defaultBlockState(); + + mc.level.setBlockAndUpdate(pos, blockState); + } +} diff --git a/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/GravityModifier.java b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/GravityModifier.java new file mode 100644 index 0000000..593963d --- /dev/null +++ b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/GravityModifier.java @@ -0,0 +1,31 @@ +package com.arslaancodes.arslaansmagichax.modules.impl; + +import com.arslaancodes.arslaansmagichax.modules.Category; +import com.arslaancodes.arslaansmagichax.modules.Module; +import com.arslaancodes.arslaansmagichax.modules.settings.NumberSetting; +import net.minecraft.network.chat.Component; +import net.minecraft.world.phys.Vec3; +import org.lwjgl.glfw.GLFW; + +public class GravityModifier extends Module { + private NumberSetting gravity = new NumberSetting("Modifier", -1, 1, 0, 0.01); + + public GravityModifier() { + super("Gravity Modifier", "Changes gravity.", GLFW.GLFW_KEY_GRAVE_ACCENT, Category.MOVEMENT); + addSetting(gravity); + } + + @Override + protected void onEnable() { + if (mc.player != null) mc.player.displayClientMessage(Component.literal("[Gravity Modifier] It is recommended to use this hack with NoFall."), false); + } + + @Override + public void tick() { + if (!this.isEnabled() || mc.player == null) return; + + Vec3 velocity = mc.player.getDeltaMovement(); + Vec3 newVelocity = new Vec3(velocity.x, velocity.y + gravity.getValue(), velocity.z); + mc.player.setDeltaMovement(newVelocity); + } +} diff --git a/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/HideModulesHUD.java b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/HideModulesHUD.java new file mode 100644 index 0000000..9a81291 --- /dev/null +++ b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/HideModulesHUD.java @@ -0,0 +1,12 @@ +package com.arslaancodes.arslaansmagichax.modules.impl; + +import com.arslaancodes.arslaansmagichax.modules.Category; +import com.arslaancodes.arslaansmagichax.modules.Module; + +public class HideModulesHUD extends Module { + public HideModulesHUD() { + super("Hide Modules HUD", "Hides the list of modules in the top-left of the HUD.", -1, Category.RENDER); + } + + // actual shit is in ModuleManager::onRenderHud (if condition to check if this is not enabled) +} diff --git a/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Jetpack.java b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Jetpack.java new file mode 100644 index 0000000..f1c1bbb --- /dev/null +++ b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Jetpack.java @@ -0,0 +1,32 @@ +package com.arslaancodes.arslaansmagichax.modules.impl; + +import com.arslaancodes.arslaansmagichax.modules.Category; +import com.arslaancodes.arslaansmagichax.modules.Module; +import com.arslaancodes.arslaansmagichax.modules.settings.NumberSetting; +import net.minecraft.network.chat.Component; +import net.minecraft.world.phys.Vec3; + +public class Jetpack extends Module { + private NumberSetting speed = new NumberSetting("Thrust Speed", 1, 10, 1, 1); + + public Jetpack() { + super("Jetpack", "Turns your jump key into a jetpack.", -1, Category.MOVEMENT); + addSetting(speed); + } + + @Override + protected void onEnable() { + if (mc.player == null) return; + mc.player.displayClientMessage(Component.literal("[Jetpack] It is recommended to use this hack in combination with NoFall."), false); + } + + @Override + public void tick() { + if (!this.isEnabled() || mc.player == null) return; + + if (mc.options.keyJump.isDown()) { + mc.player.setDeltaMovement(new Vec3(mc.player.getDeltaMovement().x, 0.42 * speed.getValue(), mc.player.getDeltaMovement().z)); + mc.player.fallDistance = 0; + } + } +} diff --git a/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/NoAttackCooldown.java b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/NoAttackCooldown.java new file mode 100644 index 0000000..3b8db2a --- /dev/null +++ b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/NoAttackCooldown.java @@ -0,0 +1,12 @@ +package com.arslaancodes.arslaansmagichax.modules.impl; + +import com.arslaancodes.arslaansmagichax.modules.Category; +import com.arslaancodes.arslaansmagichax.modules.Module; + +public class NoAttackCooldown extends Module { + public NoAttackCooldown() { + super("NoAttackCooldown", "Removes attack cooldown", -1, Category.COMBAT); + } + + // removing cooldown handled in PlayerEntityMixin +} diff --git a/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/NoFall.java b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/NoFall.java new file mode 100644 index 0000000..927b435 --- /dev/null +++ b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/NoFall.java @@ -0,0 +1,25 @@ +package com.arslaancodes.arslaansmagichax.modules.impl; + +import com.arslaancodes.arslaansmagichax.modules.Category; +import com.arslaancodes.arslaansmagichax.modules.Module; +import net.minecraft.network.protocol.game.ServerboundMovePlayerPacket; + +public class NoFall extends Module { + public NoFall() { + super("NoFall", "Negates fall damage.", -1, Category.PLAYER); + } + + @Override + public void tick() { + if (this.isEnabled()) { + if (mc.player != null) { + if (!mc.player.onGround() && mc.player.fallDistance > 3) { + // magic hax + ServerboundMovePlayerPacket packet = new ServerboundMovePlayerPacket.PosRot(mc.player.getX(), mc.player.getY() + 0.000000001, mc.player.getZ(), + mc.player.getYRot(), mc.player.getXRot(), false, mc.player.horizontalCollision); + mc.player.connection.send(packet); + } + } + } + } +} diff --git a/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/NoPackets.java b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/NoPackets.java new file mode 100644 index 0000000..cd25a3d --- /dev/null +++ b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/NoPackets.java @@ -0,0 +1,23 @@ +package com.arslaancodes.arslaansmagichax.modules.impl; + +import com.arslaancodes.arslaansmagichax.ArslaansMagicHaxClient; +import com.arslaancodes.arslaansmagichax.events.SendPacketEventBus; +import com.arslaancodes.arslaansmagichax.events.PacketEvent; +import com.arslaancodes.arslaansmagichax.modules.Category; +import com.arslaancodes.arslaansmagichax.modules.Module; +import net.minecraft.network.chat.Component; + +public class NoPackets extends Module { + public NoPackets() { + super("NoPackets", "Stops all outgoing packets from being sent. ONLY USE THIS IF YOU KNOW WHAT YOU ARE DOING!", -1, Category.MISC); + SendPacketEventBus.register(NoPackets::packetEventListener); + } + + private static void packetEventListener(PacketEvent.Send event) { + if (!ArslaansMagicHaxClient.noPackets.isEnabled()) return; + + if (mc.player != null) mc.player.displayClientMessage(Component.literal("Cancelled outgoing packet: " + event.packet().getClass().getSimpleName() + " -> " + event.packet()), false); + + event.setCancelled(true); + } +} diff --git a/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Poseidon.java b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Poseidon.java new file mode 100644 index 0000000..260e836 --- /dev/null +++ b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Poseidon.java @@ -0,0 +1,21 @@ +package com.arslaancodes.arslaansmagichax.modules.impl; + +import com.arslaancodes.arslaansmagichax.modules.Category; +import com.arslaancodes.arslaansmagichax.modules.Module; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; + +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.setAirSupply(mc.player.getMaxAirSupply()); + mc.player.addEffect(new MobEffectInstance(BuiltInRegistries.MOB_EFFECT.wrapAsHolder(MobEffects.WATER_BREATHING.value()), 1, 255)); + } +} diff --git a/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Speed.java b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Speed.java new file mode 100644 index 0000000..fe2b95f --- /dev/null +++ b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Speed.java @@ -0,0 +1,58 @@ +package com.arslaancodes.arslaansmagichax.modules.impl; + +import com.arslaancodes.arslaansmagichax.modules.Category; +import com.arslaancodes.arslaansmagichax.modules.Module; +import com.arslaancodes.arslaansmagichax.modules.settings.BooleanSetting; +import com.arslaancodes.arslaansmagichax.modules.settings.NumberSetting; +import net.minecraft.network.chat.Component; + +public class Speed extends Module { + private final NumberSetting speed = new NumberSetting("Speed", 0.1, 2.0, 0.4, 0.05); + private final BooleanSetting enableWhileSneaking = new BooleanSetting("Enable while Sneaking", true); + private final BooleanSetting enableInWater = new BooleanSetting("Enable in Water", true); + private final BooleanSetting enableInLava = new BooleanSetting("Enable in Lava", true); + + public Speed() { + super("Speed", "Makes you faster.", -1, Category.MOVEMENT); + addSetting(speed); + addSetting(enableWhileSneaking); + addSetting(enableInWater); + addSetting(enableInLava); + } + + @Override + protected void onEnable() { + if (mc.player == null) return; + mc.player.displayClientMessage(Component.literal("[Speed] It is recommended to use this hack in combination with NoFall."), false); + } + + @Override + public void tick() { + if (!isEnabled() || mc.player == null) return; + if (!enableWhileSneaking.isEnabled() && mc.player.isShiftKeyDown()) return; + if (!enableInLava.isEnabled() && mc.player.isInLava()) return; + if (!enableInWater.isEnabled() && mc.player.isInWater()) return; + + float forward = mc.player.zza; + float strafe = mc.player.xxa; + float yaw = mc.player.getYRot(); + + if (forward == 0 && strafe == 0) return; + + if (forward != 0) { + if (strafe > 0) yaw += (forward > 0 ? -45 : 45); + else if (strafe < 0) yaw += (forward > 0 ? 45 : -45); + strafe = 0; + forward = forward > 0 ? 1 : -1; + } + + double rad = Math.toRadians(yaw); + double sin = Math.sin(rad); + double cos = Math.cos(rad); + + double x = (forward * -sin + strafe * cos) * speed.getValue(); + double z = (forward * cos - strafe * -sin) * speed.getValue(); + + mc.player.setDeltaMovement(x, mc.player.getDeltaMovement().y, z); + } +} diff --git a/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Spider.java b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Spider.java new file mode 100644 index 0000000..87a6e12 --- /dev/null +++ b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Spider.java @@ -0,0 +1,33 @@ +package com.arslaancodes.arslaansmagichax.modules.impl; + +import com.arslaancodes.arslaansmagichax.modules.Category; +import com.arslaancodes.arslaansmagichax.modules.Module; +import com.arslaancodes.arslaansmagichax.modules.settings.NumberSetting; +import net.minecraft.network.chat.Component; +import net.minecraft.world.phys.Vec3; + +public class Spider extends Module { + private NumberSetting climbSpeed = new NumberSetting("Climb Speed", 0, 1, 0.2, 0.1); + + @Override + protected void onEnable() { + if (mc.player == null) return; + mc.player.displayClientMessage(Component.literal("[Spider] It is recommended to use this hack in combination with NoFall."), false); + } + + public Spider() { + super("Spider", "Allows you to climb walls like a spider.", -1, Category.MOVEMENT); + addSetting(climbSpeed); + } + + @Override + public void tick() { + if (!this.isEnabled() || mc.player == null) return; + if (!mc.player.horizontalCollision) return; + + Vec3 velocity = mc.player.getDeltaMovement(); + if (velocity.y >= 0.2) return; + + mc.player.setDeltaMovement(velocity.x, climbSpeed.getValue(), velocity.z); + } +} diff --git a/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/TickRateLock.java b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/TickRateLock.java new file mode 100644 index 0000000..b5202df --- /dev/null +++ b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/TickRateLock.java @@ -0,0 +1,58 @@ +package com.arslaancodes.arslaansmagichax.modules.impl; + +import com.arslaancodes.arslaansmagichax.ArslaansMagicHaxClient; +import com.arslaancodes.arslaansmagichax.events.PacketEvent; +import com.arslaancodes.arslaansmagichax.events.ReceivePacketEventBus; +import com.arslaancodes.arslaansmagichax.modules.Category; +import com.arslaancodes.arslaansmagichax.modules.Module; +import com.arslaancodes.arslaansmagichax.modules.settings.BooleanSetting; +import com.arslaancodes.arslaansmagichax.modules.settings.NumberSetting; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.game.ClientboundTickingStatePacket; +import net.minecraft.world.TickRateManager; + +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 ClientboundTickingStatePacket) { + serverTickRate = ((ClientboundTickingStatePacket) packet).tickRate(); // save server tick rate + serverFrozen = ((ClientboundTickingStatePacket) 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.level == null) return; + + TickRateManager tickManager = mc.level.tickRateManager(); + if (tickManager.tickrate() != tickRate.getValue() || tickManager.isFrozen() != frozen.isEnabled()) { + tickManager.setTickRate(tickRate.getValueFloat()); + tickManager.setFrozen(frozen.isEnabled()); + } + } + + @Override + protected void onDisable() { + if (mc.player == null || mc.level == null) return; + TickRateManager tickManager = mc.level.tickRateManager(); + tickManager.setTickRate(serverTickRate); + tickManager.setFrozen(serverFrozen); + } +} diff --git a/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Waterwalk.java b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Waterwalk.java new file mode 100644 index 0000000..7949203 --- /dev/null +++ b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Waterwalk.java @@ -0,0 +1,28 @@ +package com.arslaancodes.arslaansmagichax.modules.impl; + +import com.arslaancodes.arslaansmagichax.modules.Category; +import com.arslaancodes.arslaansmagichax.modules.Module; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.Blocks; + +public class Waterwalk extends Module { + public Waterwalk() { + super("Waterwalk", "Allows you to walk on water.", -1, Category.MOVEMENT); + } + + @Override + public void tick() { + if (!this.isEnabled() || mc.player == null) return; + + BlockPos blockBelow = mc.player.blockPosition().below(); + + if (mc.level.getBlockState(blockBelow).is(Blocks.WATER)) { + if (mc.player.getDeltaMovement().y < 0) { + mc.player.setDeltaMovement(mc.player.getDeltaMovement().x, 0.0, mc.player.getDeltaMovement().z); + + if (!mc.player.isJumping()) mc.player.setPosRaw(mc.player.getX(), Math.floor(mc.player.getY()), mc.player.getZ()); + } + mc.player.setOnGround(true); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Xray.java b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Xray.java new file mode 100644 index 0000000..51e16ca --- /dev/null +++ b/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Xray.java @@ -0,0 +1,65 @@ +package com.arslaancodes.arslaansmagichax.modules.impl; + +import com.arslaancodes.arslaansmagichax.modules.Category; +import com.arslaancodes.arslaansmagichax.modules.Module; +import com.arslaancodes.arslaansmagichax.modules.settings.ModeSetting; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import net.minecraft.network.chat.Component; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; + +public class Xray extends Module { + private List interestingBlocks = new ArrayList<>(); + + public Xray() { + super("Xray", "Allows you to see through blocks.", -1, Category.RENDER); + + // Add ores, spawners, liquids, etc. + interestingBlocks.add(Blocks.DIAMOND_ORE.defaultBlockState()); + interestingBlocks.add(Blocks.DEEPSLATE_DIAMOND_ORE.defaultBlockState()); + interestingBlocks.add(Blocks.GOLD_ORE.defaultBlockState()); + interestingBlocks.add(Blocks.DEEPSLATE_GOLD_ORE.defaultBlockState()); + interestingBlocks.add(Blocks.IRON_ORE.defaultBlockState()); + interestingBlocks.add(Blocks.DEEPSLATE_IRON_ORE.defaultBlockState()); + interestingBlocks.add(Blocks.REDSTONE_ORE.defaultBlockState()); + interestingBlocks.add(Blocks.DEEPSLATE_REDSTONE_ORE.defaultBlockState()); + interestingBlocks.add(Blocks.LAPIS_ORE.defaultBlockState()); + interestingBlocks.add(Blocks.DEEPSLATE_LAPIS_ORE.defaultBlockState()); + interestingBlocks.add(Blocks.EMERALD_ORE.defaultBlockState()); + interestingBlocks.add(Blocks.DEEPSLATE_EMERALD_ORE.defaultBlockState()); + interestingBlocks.add(Blocks.COAL_ORE.defaultBlockState()); + interestingBlocks.add(Blocks.DEEPSLATE_COAL_ORE.defaultBlockState()); + interestingBlocks.add(Blocks.COPPER_ORE.defaultBlockState()); + interestingBlocks.add(Blocks.DEEPSLATE_COPPER_ORE.defaultBlockState()); + interestingBlocks.add(Blocks.NETHER_QUARTZ_ORE.defaultBlockState()); + interestingBlocks.add(Blocks.NETHER_GOLD_ORE.defaultBlockState()); + interestingBlocks.add(Blocks.SPAWNER.defaultBlockState()); + interestingBlocks.add(Blocks.CHEST.defaultBlockState()); + interestingBlocks.add(Blocks.ANCIENT_DEBRIS.defaultBlockState()); + interestingBlocks.add(Blocks.GLOWSTONE.defaultBlockState()); + interestingBlocks.add(Blocks.WATER.defaultBlockState()); + interestingBlocks.add(Blocks.LAVA.defaultBlockState()); + } + + @Override + protected void onEnable() { + if (mc.levelRenderer != null) mc.levelRenderer.allChanged(); + + if (mc.player != null) mc.player.displayClientMessage(Component.literal("[Xray] It is recommended to use this hack with Fullbright for a better experience."), false); + } + + + @Override + protected void onDisable() { + if (mc.levelRenderer != null) mc.levelRenderer.allChanged(); + } + + public boolean isInterestingBlock(BlockState state) { + return interestingBlocks.contains(state); + } + + // xraying is handled in BlockMixin.java +} + -- cgit v1.2.3