summaryrefslogtreecommitdiff
path: root/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/TickRateLock.java
diff options
context:
space:
mode:
authorArslaan Pathan <[email protected]>2026-09-26 17:05:36 +1200
committerArslaan Pathan <[email protected]>2026-09-26 17:05:36 +1200
commit14c68eb5ba16774f581d95a39e64a7b303954ffc (patch)
tree2888ef11f47c6a639d440300ef580c247ad1bcb1 /src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/TickRateLock.java
parent766ba1c1d977442332cadaaeca93d795baa559df (diff)
downloadarslaansmagichax-14c68eb5ba16774f581d95a39e64a7b303954ffc.tar.xz
arslaansmagichax-14c68eb5ba16774f581d95a39e64a7b303954ffc.zip
migration to 26.2 - run migrateMappings with old loom then bring it back to new
Diffstat (limited to 'src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/TickRateLock.java')
-rw-r--r--src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/TickRateLock.java58
1 files changed, 58 insertions, 0 deletions
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);
+ }
+}