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. --- .../modules/impl/TickRateLock.java | 59 ++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/TickRateLock.java (limited to 'src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/TickRateLock.java') 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); + } +} -- cgit v1.2.3