summaryrefslogtreecommitdiff
path: root/src/main/java/com/arslaancodes/arslaansmagichax/modules/impl/Speed.java
blob: 5fac71bfca2a57b07295a39d1628499804452b55 (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
49
50
51
52
53
54
55
56
57
58
package com.arslaancodes.arslaansmagichax.modules.impl;

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.chat.Component;

public class Speed extends Module {
    private final NumberSetting speed = new NumberSetting("Speed", 0.1, 2.0, 0.4, 0.05);
    private final BooleanSetting enableWhileSneaking = new BooleanSetting("Enable while Sneaking", true);
    private final BooleanSetting enableInWater = new BooleanSetting("Enable in Water", true);
    private final BooleanSetting enableInLava = new BooleanSetting("Enable in Lava", true);

    public Speed() {
        super("Speed", "Makes you faster.", -1, Category.MOVEMENT);
        addSetting(speed);
        addSetting(enableWhileSneaking);
        addSetting(enableInWater);
        addSetting(enableInLava);
    }

    @Override
    protected void onEnable() {
        if (mc.player == null) return;
        mc.player.sendSystemMessage(Component.literal("[Speed] It is recommended to use this hack in combination with NoFall."));
    }

    @Override
    public void tick() {
        if (!isEnabled() || mc.player == null) return;
        if (!enableWhileSneaking.isEnabled() && mc.player.isShiftKeyDown()) return;
        if (!enableInLava.isEnabled() && mc.player.isInLava()) return;
        if (!enableInWater.isEnabled() && mc.player.isInWater()) return;

        float forward = mc.player.zza;
        float strafe = mc.player.xxa;
        float yaw = mc.player.getYRot();

        if (forward == 0 && strafe == 0) return;

        if (forward != 0) {
            if (strafe > 0) yaw += (forward > 0 ? -45 : 45);
            else if (strafe < 0) yaw += (forward > 0 ? 45 : -45);
            strafe = 0;
            forward = forward > 0 ? 1 : -1;
        }

        double rad = Math.toRadians(yaw);
        double sin = Math.sin(rad);
        double cos = Math.cos(rad);

        double x = (forward * -sin + strafe * cos) * speed.getValue();
        double z = (forward * cos - strafe * -sin) * speed.getValue();

        mc.player.setDeltaMovement(x, mc.player.getDeltaMovement().y, z);
    }
}