summaryrefslogtreecommitdiff
path: root/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/impl/AutoClicker.java
blob: 075b70ca24a28b9cb968842e424993fbd6f89d81 (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
48
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 net.minecraft.entity.Entity;
import net.minecraft.util.Hand;
import net.minecraft.util.hit.EntityHitResult;
import net.minecraft.util.hit.HitResult;

import java.util.Objects;
import java.util.Random;

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.world == null) return;
        if (mc.currentScreen != null) return;

        HitResult hr = mc.crosshairTarget;
        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.interactionManager.attackEntity(mc.player, target);
        mc.player.swingHand(Hand.MAIN_HAND);
    }
}