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); } }