//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package ru.amogusgggy.modules.combat;
import net.minecraft.class_1297;
import net.minecraft.class_1657;
import net.minecraft.class_243;
import ru.amogusgggy.events.Event;
import ru.amogusgggy.manager.Manager;
import ru.amogusgggy.modules.Function;
import ru.amogusgggy.modules.FunctionAnnotation;
import ru.amogusgggy.modules.Type;
import ru.amogusgggy.modules.movement.Speed;
import ru.amogusgggy.modules.setting.BooleanSetting;
import ru.amogusgggy.modules.setting.ModeSetting;
import ru.amogusgggy.modules.setting.Setting;
import ru.amogusgggy.modules.setting.SliderSetting;
@FunctionAnnotation(
name = "TargetStrafe",
type = Type.Combat,
desc = "Как в нурике стрейфыы ыыы"
)
public class TargetStrafe extends Function {
public final SliderSetting speedSlider = new SliderSetting("Скорость", (double)0.095F, (double)0.01F, (double)1.2F, (double)0.01F);
public final ModeSetting ptytag = new ModeSetting("Метод притяга", "Vector", new String[]{"Vector", "Motion / Velocity"});
public final SliderSetting blocks = new SliderSetting("Дистанция притяга", (double)7.0F, (double)0.01F, (double)12.0F, (double)0.01F);
public final SliderSetting hitbox = new SliderSetting("Хитбокс для буста", (double)2.0F, (double)0.5F, (double)8.0F, (double)0.1F);
public final BooleanSetting predictCheck = new BooleanSetting("Предикт", true);
public final SliderSetting predict = new SliderSetting("Предикт значение", (double)2.5F, (double)0.1F, (double)4.0F, (double)0.1F, () -> this.predictCheck.get());
public final BooleanSetting predictView = new BooleanSetting("Видеть предикт", false, "Для вашего экрана вы будите прям обгонять противника");
public TargetStrafe() {
this.addSettings(new Setting[]{this.speedSlider, this.ptytag, this.blocks, this.hitbox, this.predictCheck, this.predict, this.predictView});
}
public void onEvent(Event event) {
if (mc != null && mc.field_1724 != null && mc.field_1687 != null) {
class_1297 target = this.getNearestTarget();
if (target != null) {
class_243 targetPos = target.method_19538();
if (this.predictCheck.get()) {
class_243 velocity = target.method_18798();
double predVal = this.predict.get().doubleValue();
targetPos = targetPos.method_1031(velocity.field_1352 * predVal, (double)0.0F, velocity.field_1350 * predVal);
}
double distSq = mc.field_1724.method_5649(targetPos.field_1352, mc.field_1724.method_23318(), targetPos.field_1350);
double maxDistSq = this.blocks.get().doubleValue() * this.blocks.get().doubleValue();
if (distSq > maxDistSq) {
class_243 toTarget = (new class_243(targetPos.field_1352 - mc.field_1724.method_23317(), (double)0.0F, targetPos.field_1350 - mc.field_1724.method_23321())).method_1029();
double speed = this.speedSlider.get().doubleValue();
if ("Motion / Velocity".equals(this.ptytag.get())) {
double var25 = toTarget.field_1352 * speed;
double var26 = toTarget.field_1350 * speed;
mc.field_1724.method_18800(var25, mc.field_1724.method_18798().field_1351, var26);
} else {
double yaw = Math.toDegrees(Math.atan2(-toTarget.field_1352, toTarget.field_1350));
mc.field_1724.method_36456((float)yaw);
this.movePlayer(1.0F, 0.0F, speed);
}
} else {
double radius = this.hitbox.get().doubleValue();
double angle = Math.atan2(mc.field_1724.method_23321() - targetPos.field_1350, mc.field_1724.method_23317() - targetPos.field_1352);
angle += 0.10471975511965977;
double x = targetPos.field_1352 + Math.cos(angle) * radius;
double z = targetPos.field_1350 + Math.sin(angle) * radius;
class_243 goal = new class_243(x, mc.field_1724.method_23318(), z);
class_243 direction = goal.method_1020(mc.field_1724.method_19538()).method_1029();
double speed = this.speedSlider.get().doubleValue();
if ("Motion / Velocity".equals(this.ptytag.get())) {
double var10001 = direction.field_1352 * speed;
double var10003 = direction.field_1350 * speed;
mc.field_1724.method_18800(var10001, mc.field_1724.method_18798().field_1351, var10003);
} else {
double yaw = Math.toDegrees(Math.atan2(-direction.field_1352, direction.field_1350));
mc.field_1724.method_36456((float)yaw);
this.movePlayer(1.0F, 0.0F, speed);
}
}
}
}
}
private class_1297 getNearestTarget() {
if (mc.field_1687 == null) {
return null;
} else {
class_1297 nearest = null;
double bestDist = Double.MAX_VALUE;
double maxDist = this.blocks.get().doubleValue();
for(class_1297 e : mc.field_1687.method_18112()) {
if (e != mc.field_1724 && this.isEnemy(e)) {
double dist = mc.field_1724.method_5858(e);
if (dist < bestDist && dist <= maxDist * maxDist) {
bestDist = dist;
nearest = e;
}
}
}
return nearest;
}
}
private boolean isEnemy(class_1297 e) {
return e instanceof class_1657 && !e.method_5667().equals(mc.field_1724.method_5667());
}
private void movePlayer(float forward, float strafe, double speed) {
double yaw = Math.toRadians((double)mc.field_1724.method_36454());
double velX = (-Math.sin(yaw) * (double)forward + Math.cos(yaw) * (double)strafe) * speed;
double velZ = (Math.cos(yaw) * (double)forward + Math.sin(yaw) * (double)strafe) * speed;
mc.field_1724.method_18800(velX, mc.field_1724.method_18798().field_1351, velZ);
}
protected void onDisable() {
if (mc != null && mc.field_1690 != null && mc.field_1690.field_1894 != null && mc.field_1690.field_1894.method_1434()) {
mc.field_1690.field_1894.method_23481(false);
}
super.onDisable();
}
public void onEnable() {
Speed speed = Manager.FUNCTION_MANAGER.speed;
if (speed != null && speed.state) {
speed.setState(false);
}
super.onEnable();
}
}