summaryrefslogtreecommitdiff
path: root/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/AutoClicker.java
blob: 7c67201fe57f07becc7655f12536fa848400ea8e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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);
    }
}