Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Вопрос Помогите перенести

Код:
Expand Collapse Copy
package im.expensive.functions.impl.movement;

import com.google.common.eventbus.Subscribe;
import im.expensive.Expensive;
import im.expensive.events.EventUpdate;
import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import im.expensive.functions.impl.combat.KillAura;
import im.expensive.functions.settings.impl.BooleanSetting;
import im.expensive.functions.settings.impl.SliderSetting;
import im.expensive.utils.player.MoveUtils;
import net.minecraft.entity.LivingEntity;

@FunctionRegister(name = "StrafeRage", type = Category.Movement)
public class StrafeRage extends Function {

private final BooleanSetting 跳跃 = new BooleanSetting("Jump", true);
private final SliderSetting 距离 = new SliderSetting("Distance", 2.5f, 0.5f, 6.0f, 0.5f);
private final SliderSetting 速度 = new SliderSetting("Speed", 1.8f, 0.5f, 5.0f, 0.5f);
private final BooleanSetting 激进模式 = new BooleanSetting("Aggressive", true);
private final SliderSetting 环绕半径 = new SliderSetting("StrafeRadius", 1.5f, 0.5f, 4.0f, 0.5f);

private boolean 切换方向 = false;
private int 环绕计时器 = 0;

public StrafeRage() {
addSettings(跳跃, 距离, 速度, 激进模式, 环绕半径);
    }

@Override
    public void onEnable() {
 super.onEnable();
切换方向 = false;
环绕计时器 = 0;
    }

@Override
    public void onDisable() {
 super.onDisable();
if (mc.player != null && mc.player.movementInput != null) {
mc.player.movementInput.moveForward = 0.0f;
mc.player.movementInput.moveStrafe = 0.0f;
        }
    }

private boolean 可环绕() {
if (mc.player == null || mc.world == null) return false;
return !mc.player.abilities.isFlying;
    }

@Subscribe
    private void onPast(EventUpdate 事件更新) {
if (!可环绕()) return;

KillAura 自动攻击 = Expensive.getInstance().getFunctionRegistry().getKillAura();

if (自动攻击 != null && 自动攻击.getTarget() != null && 自动攻击.isState()) {
LivingEntity 目标 = 自动攻击.getTarget();

if (mc.player.isOnGround() && 跳跃.get()) {
mc.player.jump();
            }

double 当前距离 = Math.sqrt(mc.player.getDistanceSq(目标));
double 移动速度 = 速度.get();

if (当前距离 > 距离.get()) {
double 差值X = 目标.getPosX() - mc.player.getPosX();
double 差值Z = 目标.getPosZ() - mc.player.getPosZ();
double 目标距离 = Math.sqrt(差值X * 差值X + 差值Z * 差值Z);

if (目标距离 > 0) {
double 标准化X = 差值X / 目标距离;
double 标准化Z = 差值Z / 目标距离;
double 最终速度 = 激进模式.get() ? 移动速度 * 1.2 : 移动速度;

mc.player.setVelocity(
标准化X * 最终速度 * 0.3,
mc.player.motion.getY(),
标准化Z * 最终速度 * 0.3
                    );

mc.player.movementInput.moveForward = 1.0f;
mc.player.movementInput.moveStrafe = 0.0f;

double 偏航角 = Math.toDegrees(Math.atan2(差值Z, 差值X)) - 90.0;
float 旧偏航 = mc.player.rotationYaw;
mc.player.setRotation((float) 偏航角, mc.player.rotationPitch);
MoveUtils.setMotion(最终速度 * 0.2);
                }
} else {
 环绕计时器++;

if (环绕计时器 > 40) {
切换方向 = !切换方向;
环绕计时器 = 0;
                }

double 角度 = Math.atan2(mc.player.getPosZ() - 目标.getPosZ(), mc.player.getPosX() - 目标.getPosX());
角度 += 切换方向 ? 0.15 : -0.15;

double 环绕X = 目标.getPosX() + 环绕半径.get() * Math.cos(角度);
double 环绕Z = 目标.getPosZ() + 环绕半径.get() * Math.sin(角度);

double 环绕差值X = 环绕X - mc.player.getPosX();
double 环绕差值Z = 环绕Z - mc.player.getPosZ();
double 环绕距离 = Math.sqrt(环绕差值X * 环绕差值X + 环绕差值Z * 环绕差值Z);

if (环绕距离 > 0.1) {
double 环绕标准化X = 环绕差值X / 环绕距离;
double 环绕标准化Z = 环绕差值Z / 环绕距离;
double 环绕速度 = 移动速度 * 0.8;

mc.player.setVelocity(
环绕标准化X * 环绕速度 * 0.25,
mc.player.getMotion().getY(),
环绕标准化Z * 环绕速度 * 0.25
                    );

mc.player.movementInput.moveForward = 0.8f;
mc.player.movementInput.moveStrafe = 切换方向 ? 0.6f : -0.6f;

double 环绕偏航角 = Math.toDegrees(Math.atan2(环绕差值Z, 环绕差值X)) - 90.0;
float 旧偏航角 = mc.player.rotationYaw;
mc.player.setRotation((float) 环绕偏航角, mc.player.rotationPitch);
MoveUtils.setMotion(环绕速度 * 0.15);
mc.player.setRotation(旧偏航角, mc.player.rotationPitch);
                }
            }
        }
    }
}

дикпик за 1 промт перенес, че там сложного такого
 
Код:
Expand Collapse Copy
package im.expensive.functions.impl.movement;

import com.google.common.eventbus.Subscribe;
import im.expensive.Expensive;
import im.expensive.events.EventUpdate;
import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import im.expensive.functions.impl.combat.KillAura;
import im.expensive.functions.settings.impl.BooleanSetting;
import im.expensive.functions.settings.impl.SliderSetting;
import im.expensive.utils.player.MoveUtils;
import net.minecraft.entity.LivingEntity;

@FunctionRegister(name = "StrafeRage", type = Category.Movement)
public class StrafeRage extends Function {

private final BooleanSetting 跳跃 = new BooleanSetting("Jump", true);
private final SliderSetting 距离 = new SliderSetting("Distance", 2.5f, 0.5f, 6.0f, 0.5f);
private final SliderSetting 速度 = new SliderSetting("Speed", 1.8f, 0.5f, 5.0f, 0.5f);
private final BooleanSetting 激进模式 = new BooleanSetting("Aggressive", true);
private final SliderSetting 环绕半径 = new SliderSetting("StrafeRadius", 1.5f, 0.5f, 4.0f, 0.5f);

private boolean 切换方向 = false;
private int 环绕计时器 = 0;

public StrafeRage() {
addSettings(跳跃, 距离, 速度, 激进模式, 环绕半径);
    }

@Override
    public void onEnable() {
 super.onEnable();
切换方向 = false;
环绕计时器 = 0;
    }

@Override
    public void onDisable() {
 super.onDisable();
if (mc.player != null && mc.player.movementInput != null) {
mc.player.movementInput.moveForward = 0.0f;
mc.player.movementInput.moveStrafe = 0.0f;
        }
    }

private boolean 可环绕() {
if (mc.player == null || mc.world == null) return false;
return !mc.player.abilities.isFlying;
    }

@Subscribe
    private void onPast(EventUpdate 事件更新) {
if (!可环绕()) return;

KillAura 自动攻击 = Expensive.getInstance().getFunctionRegistry().getKillAura();

if (自动攻击 != null && 自动攻击.getTarget() != null && 自动攻击.isState()) {
LivingEntity 目标 = 自动攻击.getTarget();

if (mc.player.isOnGround() && 跳跃.get()) {
mc.player.jump();
            }

double 当前距离 = Math.sqrt(mc.player.getDistanceSq(目标));
double 移动速度 = 速度.get();

if (当前距离 > 距离.get()) {
double 差值X = 目标.getPosX() - mc.player.getPosX();
double 差值Z = 目标.getPosZ() - mc.player.getPosZ();
double 目标距离 = Math.sqrt(差值X * 差值X + 差值Z * 差值Z);

if (目标距离 > 0) {
double 标准化X = 差值X / 目标距离;
double 标准化Z = 差值Z / 目标距离;
double 最终速度 = 激进模式.get() ? 移动速度 * 1.2 : 移动速度;

mc.player.setVelocity(
标准化X * 最终速度 * 0.3,
mc.player.motion.getY(),
标准化Z * 最终速度 * 0.3
                    );

mc.player.movementInput.moveForward = 1.0f;
mc.player.movementInput.moveStrafe = 0.0f;

double 偏航角 = Math.toDegrees(Math.atan2(差值Z, 差值X)) - 90.0;
float 旧偏航 = mc.player.rotationYaw;
mc.player.setRotation((float) 偏航角, mc.player.rotationPitch);
MoveUtils.setMotion(最终速度 * 0.2);
                }
} else {
 环绕计时器++;

if (环绕计时器 > 40) {
切换方向 = !切换方向;
环绕计时器 = 0;
                }

double 角度 = Math.atan2(mc.player.getPosZ() - 目标.getPosZ(), mc.player.getPosX() - 目标.getPosX());
角度 += 切换方向 ? 0.15 : -0.15;

double 环绕X = 目标.getPosX() + 环绕半径.get() * Math.cos(角度);
double 环绕Z = 目标.getPosZ() + 环绕半径.get() * Math.sin(角度);

double 环绕差值X = 环绕X - mc.player.getPosX();
double 环绕差值Z = 环绕Z - mc.player.getPosZ();
double 环绕距离 = Math.sqrt(环绕差值X * 环绕差值X + 环绕差值Z * 环绕差值Z);

if (环绕距离 > 0.1) {
double 环绕标准化X = 环绕差值X / 环绕距离;
double 环绕标准化Z = 环绕差值Z / 环绕距离;
double 环绕速度 = 移动速度 * 0.8;

mc.player.setVelocity(
环绕标准化X * 环绕速度 * 0.25,
mc.player.getMotion().getY(),
环绕标准化Z * 环绕速度 * 0.25
                    );

mc.player.movementInput.moveForward = 0.8f;
mc.player.movementInput.moveStrafe = 切换方向 ? 0.6f : -0.6f;

double 环绕偏航角 = Math.toDegrees(Math.atan2(环绕差值Z, 环绕差值X)) - 90.0;
float 旧偏航角 = mc.player.rotationYaw;
mc.player.setRotation((float) 环绕偏航角, mc.player.rotationPitch);
MoveUtils.setMotion(环绕速度 * 0.15);
mc.player.setRotation(旧偏航角, mc.player.rotationPitch);
                }
            }
        }
    }
}

дикпик за 1 промт перенес, че там сложного такого
ЫВХАЫВЪАЫЪВАЪЫВАЪВЫЪВЫЪВахЫВХАЫВХАЫХВАХВЫХА ЧТО ЭТО
 
Код:
Expand Collapse Copy
package im.expensive.functions.impl.movement;

import com.google.common.eventbus.Subscribe;
import im.expensive.Expensive;
import im.expensive.events.EventUpdate;
import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import im.expensive.functions.impl.combat.KillAura;
import im.expensive.functions.settings.impl.BooleanSetting;
import im.expensive.functions.settings.impl.SliderSetting;
import im.expensive.utils.player.MoveUtils;
import net.minecraft.entity.LivingEntity;

@FunctionRegister(name = "StrafeRage", type = Category.Movement)
public class StrafeRage extends Function {

private final BooleanSetting 跳跃 = new BooleanSetting("Jump", true);
private final SliderSetting 距离 = new SliderSetting("Distance", 2.5f, 0.5f, 6.0f, 0.5f);
private final SliderSetting 速度 = new SliderSetting("Speed", 1.8f, 0.5f, 5.0f, 0.5f);
private final BooleanSetting 激进模式 = new BooleanSetting("Aggressive", true);
private final SliderSetting 环绕半径 = new SliderSetting("StrafeRadius", 1.5f, 0.5f, 4.0f, 0.5f);

private boolean 切换方向 = false;
private int 环绕计时器 = 0;

public StrafeRage() {
addSettings(跳跃, 距离, 速度, 激进模式, 环绕半径);
    }

@Override
    public void onEnable() {
 super.onEnable();
切换方向 = false;
环绕计时器 = 0;
    }

@Override
    public void onDisable() {
 super.onDisable();
if (mc.player != null && mc.player.movementInput != null) {
mc.player.movementInput.moveForward = 0.0f;
mc.player.movementInput.moveStrafe = 0.0f;
        }
    }

private boolean 可环绕() {
if (mc.player == null || mc.world == null) return false;
return !mc.player.abilities.isFlying;
    }

@Subscribe
    private void onPast(EventUpdate 事件更新) {
if (!可环绕()) return;

KillAura 自动攻击 = Expensive.getInstance().getFunctionRegistry().getKillAura();

if (自动攻击 != null && 自动攻击.getTarget() != null && 自动攻击.isState()) {
LivingEntity 目标 = 自动攻击.getTarget();

if (mc.player.isOnGround() && 跳跃.get()) {
mc.player.jump();
            }

double 当前距离 = Math.sqrt(mc.player.getDistanceSq(目标));
double 移动速度 = 速度.get();

if (当前距离 > 距离.get()) {
double 差值X = 目标.getPosX() - mc.player.getPosX();
double 差值Z = 目标.getPosZ() - mc.player.getPosZ();
double 目标距离 = Math.sqrt(差值X * 差值X + 差值Z * 差值Z);

if (目标距离 > 0) {
double 标准化X = 差值X / 目标距离;
double 标准化Z = 差值Z / 目标距离;
double 最终速度 = 激进模式.get() ? 移动速度 * 1.2 : 移动速度;

mc.player.setVelocity(
标准化X * 最终速度 * 0.3,
mc.player.motion.getY(),
标准化Z * 最终速度 * 0.3
                    );

mc.player.movementInput.moveForward = 1.0f;
mc.player.movementInput.moveStrafe = 0.0f;

double 偏航角 = Math.toDegrees(Math.atan2(差值Z, 差值X)) - 90.0;
float 旧偏航 = mc.player.rotationYaw;
mc.player.setRotation((float) 偏航角, mc.player.rotationPitch);
MoveUtils.setMotion(最终速度 * 0.2);
                }
} else {
 环绕计时器++;

if (环绕计时器 > 40) {
切换方向 = !切换方向;
环绕计时器 = 0;
                }

double 角度 = Math.atan2(mc.player.getPosZ() - 目标.getPosZ(), mc.player.getPosX() - 目标.getPosX());
角度 += 切换方向 ? 0.15 : -0.15;

double 环绕X = 目标.getPosX() + 环绕半径.get() * Math.cos(角度);
double 环绕Z = 目标.getPosZ() + 环绕半径.get() * Math.sin(角度);

double 环绕差值X = 环绕X - mc.player.getPosX();
double 环绕差值Z = 环绕Z - mc.player.getPosZ();
double 环绕距离 = Math.sqrt(环绕差值X * 环绕差值X + 环绕差值Z * 环绕差值Z);

if (环绕距离 > 0.1) {
double 环绕标准化X = 环绕差值X / 环绕距离;
double 环绕标准化Z = 环绕差值Z / 环绕距离;
double 环绕速度 = 移动速度 * 0.8;

mc.player.setVelocity(
环绕标准化X * 环绕速度 * 0.25,
mc.player.getMotion().getY(),
环绕标准化Z * 环绕速度 * 0.25
                    );

mc.player.movementInput.moveForward = 0.8f;
mc.player.movementInput.moveStrafe = 切换方向 ? 0.6f : -0.6f;

double 环绕偏航角 = Math.toDegrees(Math.atan2(环绕差值Z, 环绕差值X)) - 90.0;
float 旧偏航角 = mc.player.rotationYaw;
mc.player.setRotation((float) 环绕偏航角, mc.player.rotationPitch);
MoveUtils.setMotion(环绕速度 * 0.15);
mc.player.setRotation(旧偏航角, mc.player.rotationPitch);
                }
            }
        }
    }
}

дикпик за 1 промт перенес, че там сложного такого
СХХАХАХ ДИПСИК НА РОДНОМ ЗАГОВОРИЛ
 
Код:
Expand Collapse Copy
package im.expensive.functions.impl.movement;

import com.google.common.eventbus.Subscribe;
import im.expensive.Expensive;
import im.expensive.events.EventUpdate;
import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import im.expensive.functions.impl.combat.KillAura;
import im.expensive.functions.settings.impl.BooleanSetting;
import im.expensive.functions.settings.impl.SliderSetting;
import im.expensive.utils.player.MoveUtils;
import net.minecraft.entity.LivingEntity;

@FunctionRegister(name = "StrafeRage", type = Category.Movement)
public class StrafeRage extends Function {

private final BooleanSetting 跳跃 = new BooleanSetting("Jump", true);
private final SliderSetting 距离 = new SliderSetting("Distance", 2.5f, 0.5f, 6.0f, 0.5f);
private final SliderSetting 速度 = new SliderSetting("Speed", 1.8f, 0.5f, 5.0f, 0.5f);
private final BooleanSetting 激进模式 = new BooleanSetting("Aggressive", true);
private final SliderSetting 环绕半径 = new SliderSetting("StrafeRadius", 1.5f, 0.5f, 4.0f, 0.5f);

private boolean 切换方向 = false;
private int 环绕计时器 = 0;

public StrafeRage() {
addSettings(跳跃, 距离, 速度, 激进模式, 环绕半径);
    }

@Override
    public void onEnable() {
 super.onEnable();
切换方向 = false;
环绕计时器 = 0;
    }

@Override
    public void onDisable() {
 super.onDisable();
if (mc.player != null && mc.player.movementInput != null) {
mc.player.movementInput.moveForward = 0.0f;
mc.player.movementInput.moveStrafe = 0.0f;
        }
    }

private boolean 可环绕() {
if (mc.player == null || mc.world == null) return false;
return !mc.player.abilities.isFlying;
    }

@Subscribe
    private void onPast(EventUpdate 事件更新) {
if (!可环绕()) return;

KillAura 自动攻击 = Expensive.getInstance().getFunctionRegistry().getKillAura();

if (自动攻击 != null && 自动攻击.getTarget() != null && 自动攻击.isState()) {
LivingEntity 目标 = 自动攻击.getTarget();

if (mc.player.isOnGround() && 跳跃.get()) {
mc.player.jump();
            }

double 当前距离 = Math.sqrt(mc.player.getDistanceSq(目标));
double 移动速度 = 速度.get();

if (当前距离 > 距离.get()) {
double 差值X = 目标.getPosX() - mc.player.getPosX();
double 差值Z = 目标.getPosZ() - mc.player.getPosZ();
double 目标距离 = Math.sqrt(差值X * 差值X + 差值Z * 差值Z);

if (目标距离 > 0) {
double 标准化X = 差值X / 目标距离;
double 标准化Z = 差值Z / 目标距离;
double 最终速度 = 激进模式.get() ? 移动速度 * 1.2 : 移动速度;

mc.player.setVelocity(
标准化X * 最终速度 * 0.3,
mc.player.motion.getY(),
标准化Z * 最终速度 * 0.3
                    );

mc.player.movementInput.moveForward = 1.0f;
mc.player.movementInput.moveStrafe = 0.0f;

double 偏航角 = Math.toDegrees(Math.atan2(差值Z, 差值X)) - 90.0;
float 旧偏航 = mc.player.rotationYaw;
mc.player.setRotation((float) 偏航角, mc.player.rotationPitch);
MoveUtils.setMotion(最终速度 * 0.2);
                }
} else {
 环绕计时器++;

if (环绕计时器 > 40) {
切换方向 = !切换方向;
环绕计时器 = 0;
                }

double 角度 = Math.atan2(mc.player.getPosZ() - 目标.getPosZ(), mc.player.getPosX() - 目标.getPosX());
角度 += 切换方向 ? 0.15 : -0.15;

double 环绕X = 目标.getPosX() + 环绕半径.get() * Math.cos(角度);
double 环绕Z = 目标.getPosZ() + 环绕半径.get() * Math.sin(角度);

double 环绕差值X = 环绕X - mc.player.getPosX();
double 环绕差值Z = 环绕Z - mc.player.getPosZ();
double 环绕距离 = Math.sqrt(环绕差值X * 环绕差值X + 环绕差值Z * 环绕差值Z);

if (环绕距离 > 0.1) {
double 环绕标准化X = 环绕差值X / 环绕距离;
double 环绕标准化Z = 环绕差值Z / 环绕距离;
double 环绕速度 = 移动速度 * 0.8;

mc.player.setVelocity(
环绕标准化X * 环绕速度 * 0.25,
mc.player.getMotion().getY(),
环绕标准化Z * 环绕速度 * 0.25
                    );

mc.player.movementInput.moveForward = 0.8f;
mc.player.movementInput.moveStrafe = 切换方向 ? 0.6f : -0.6f;

double 环绕偏航角 = Math.toDegrees(Math.atan2(环绕差值Z, 环绕差值X)) - 90.0;
float 旧偏航角 = mc.player.rotationYaw;
mc.player.setRotation((float) 环绕偏航角, mc.player.rotationPitch);
MoveUtils.setMotion(环绕速度 * 0.15);
mc.player.setRotation(旧偏航角, mc.player.rotationPitch);
                }
            }
        }
    }
}

дикпик за 1 промт перенес, че там сложного такого
Ты зачем наложил маппинги с крутым дрипсиком
 
Код:
Expand Collapse Copy
package im.expensive.functions.impl.movement;

import com.google.common.eventbus.Subscribe;
import im.expensive.Expensive;
import im.expensive.events.EventUpdate;
import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import im.expensive.functions.impl.combat.KillAura;
import im.expensive.functions.settings.impl.BooleanSetting;
import im.expensive.functions.settings.impl.SliderSetting;
import im.expensive.utils.player.MoveUtils;
import net.minecraft.entity.LivingEntity;

@FunctionRegister(name = "StrafeRage", type = Category.Movement)
public class StrafeRage extends Function {

private final BooleanSetting 跳跃 = new BooleanSetting("Jump", true);
private final SliderSetting 距离 = new SliderSetting("Distance", 2.5f, 0.5f, 6.0f, 0.5f);
private final SliderSetting 速度 = new SliderSetting("Speed", 1.8f, 0.5f, 5.0f, 0.5f);
private final BooleanSetting 激进模式 = new BooleanSetting("Aggressive", true);
private final SliderSetting 环绕半径 = new SliderSetting("StrafeRadius", 1.5f, 0.5f, 4.0f, 0.5f);

private boolean 切换方向 = false;
private int 环绕计时器 = 0;

public StrafeRage() {
addSettings(跳跃, 距离, 速度, 激进模式, 环绕半径);
    }

@Override
    public void onEnable() {
 super.onEnable();
切换方向 = false;
环绕计时器 = 0;
    }

@Override
    public void onDisable() {
 super.onDisable();
if (mc.player != null && mc.player.movementInput != null) {
mc.player.movementInput.moveForward = 0.0f;
mc.player.movementInput.moveStrafe = 0.0f;
        }
    }

private boolean 可环绕() {
if (mc.player == null || mc.world == null) return false;
return !mc.player.abilities.isFlying;
    }

@Subscribe
    private void onPast(EventUpdate 事件更新) {
if (!可环绕()) return;

KillAura 自动攻击 = Expensive.getInstance().getFunctionRegistry().getKillAura();

if (自动攻击 != null && 自动攻击.getTarget() != null && 自动攻击.isState()) {
LivingEntity 目标 = 自动攻击.getTarget();

if (mc.player.isOnGround() && 跳跃.get()) {
mc.player.jump();
            }

double 当前距离 = Math.sqrt(mc.player.getDistanceSq(目标));
double 移动速度 = 速度.get();

if (当前距离 > 距离.get()) {
double 差值X = 目标.getPosX() - mc.player.getPosX();
double 差值Z = 目标.getPosZ() - mc.player.getPosZ();
double 目标距离 = Math.sqrt(差值X * 差值X + 差值Z * 差值Z);

if (目标距离 > 0) {
double 标准化X = 差值X / 目标距离;
double 标准化Z = 差值Z / 目标距离;
double 最终速度 = 激进模式.get() ? 移动速度 * 1.2 : 移动速度;

mc.player.setVelocity(
标准化X * 最终速度 * 0.3,
mc.player.motion.getY(),
标准化Z * 最终速度 * 0.3
                    );

mc.player.movementInput.moveForward = 1.0f;
mc.player.movementInput.moveStrafe = 0.0f;

double 偏航角 = Math.toDegrees(Math.atan2(差值Z, 差值X)) - 90.0;
float 旧偏航 = mc.player.rotationYaw;
mc.player.setRotation((float) 偏航角, mc.player.rotationPitch);
MoveUtils.setMotion(最终速度 * 0.2);
                }
} else {
 环绕计时器++;

if (环绕计时器 > 40) {
切换方向 = !切换方向;
环绕计时器 = 0;
                }

double 角度 = Math.atan2(mc.player.getPosZ() - 目标.getPosZ(), mc.player.getPosX() - 目标.getPosX());
角度 += 切换方向 ? 0.15 : -0.15;

double 环绕X = 目标.getPosX() + 环绕半径.get() * Math.cos(角度);
double 环绕Z = 目标.getPosZ() + 环绕半径.get() * Math.sin(角度);

double 环绕差值X = 环绕X - mc.player.getPosX();
double 环绕差值Z = 环绕Z - mc.player.getPosZ();
double 环绕距离 = Math.sqrt(环绕差值X * 环绕差值X + 环绕差值Z * 环绕差值Z);

if (环绕距离 > 0.1) {
double 环绕标准化X = 环绕差值X / 环绕距离;
double 环绕标准化Z = 环绕差值Z / 环绕距离;
double 环绕速度 = 移动速度 * 0.8;

mc.player.setVelocity(
环绕标准化X * 环绕速度 * 0.25,
mc.player.getMotion().getY(),
环绕标准化Z * 环绕速度 * 0.25
                    );

mc.player.movementInput.moveForward = 0.8f;
mc.player.movementInput.moveStrafe = 切换方向 ? 0.6f : -0.6f;

double 环绕偏航角 = Math.toDegrees(Math.atan2(环绕差值Z, 环绕差值X)) - 90.0;
float 旧偏航角 = mc.player.rotationYaw;
mc.player.setRotation((float) 环绕偏航角, mc.player.rotationPitch);
MoveUtils.setMotion(环绕速度 * 0.15);
mc.player.setRotation(旧偏航角, mc.player.rotationPitch);
                }
            }
        }
    }
}

дикпик за 1 промт перенес, че там сложного такого
ХАХАХХАХА ЧТО ЭТО ЗА ПИЗДЕЦ
 
надо через алису портить там будет пизже
Код:
Expand Collapse Copy
package im.expensive.functions.impl.movement;

import com.google.common.eventbus.Subscribe;
import im.expensive.Expensive;
import im.expensive.events.EventUpdate;
import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import im.expensive.functions.impl.combat.KillAura;
import im.expensive.functions.settings.impl.BooleanSetting;
import im.expensive.functions.settings.impl.SliderSetting;
import im.expensive.utils.player.MoveUtils;
import net.minecraft.entity.LivingEntity;

@FunctionRegister(name = "StrafeRage", type = Category.Movement)
public class StrafeRage extends Function {

private final BooleanSetting 跳跃 = new BooleanSetting("Jump", true);
private final SliderSetting 距离 = new SliderSetting("Distance", 2.5f, 0.5f, 6.0f, 0.5f);
private final SliderSetting 速度 = new SliderSetting("Speed", 1.8f, 0.5f, 5.0f, 0.5f);
private final BooleanSetting 激进模式 = new BooleanSetting("Aggressive", true);
private final SliderSetting 环绕半径 = new SliderSetting("StrafeRadius", 1.5f, 0.5f, 4.0f, 0.5f);

private boolean 切换方向 = false;
private int 环绕计时器 = 0;

public StrafeRage() {
addSettings(跳跃, 距离, 速度, 激进模式, 环绕半径);
    }

@Override
    public void onEnable() {
 super.onEnable();
切换方向 = false;
环绕计时器 = 0;
    }

@Override
    public void onDisable() {
 super.onDisable();
if (mc.player != null && mc.player.movementInput != null) {
mc.player.movementInput.moveForward = 0.0f;
mc.player.movementInput.moveStrafe = 0.0f;
        }
    }

private boolean 可环绕() {
if (mc.player == null || mc.world == null) return false;
return !mc.player.abilities.isFlying;
    }

@Subscribe
    private void onPast(EventUpdate 事件更新) {
if (!可环绕()) return;

KillAura 自动攻击 = Expensive.getInstance().getFunctionRegistry().getKillAura();

if (自动攻击 != null && 自动攻击.getTarget() != null && 自动攻击.isState()) {
LivingEntity 目标 = 自动攻击.getTarget();

if (mc.player.isOnGround() && 跳跃.get()) {
mc.player.jump();
            }

double 当前距离 = Math.sqrt(mc.player.getDistanceSq(目标));
double 移动速度 = 速度.get();

if (当前距离 > 距离.get()) {
double 差值X = 目标.getPosX() - mc.player.getPosX();
double 差值Z = 目标.getPosZ() - mc.player.getPosZ();
double 目标距离 = Math.sqrt(差值X * 差值X + 差值Z * 差值Z);

if (目标距离 > 0) {
double 标准化X = 差值X / 目标距离;
double 标准化Z = 差值Z / 目标距离;
double 最终速度 = 激进模式.get() ? 移动速度 * 1.2 : 移动速度;

mc.player.setVelocity(
标准化X * 最终速度 * 0.3,
mc.player.motion.getY(),
标准化Z * 最终速度 * 0.3
                    );

mc.player.movementInput.moveForward = 1.0f;
mc.player.movementInput.moveStrafe = 0.0f;

double 偏航角 = Math.toDegrees(Math.atan2(差值Z, 差值X)) - 90.0;
float 旧偏航 = mc.player.rotationYaw;
mc.player.setRotation((float) 偏航角, mc.player.rotationPitch);
MoveUtils.setMotion(最终速度 * 0.2);
                }
} else {
 环绕计时器++;

if (环绕计时器 > 40) {
切换方向 = !切换方向;
环绕计时器 = 0;
                }

double 角度 = Math.atan2(mc.player.getPosZ() - 目标.getPosZ(), mc.player.getPosX() - 目标.getPosX());
角度 += 切换方向 ? 0.15 : -0.15;

double 环绕X = 目标.getPosX() + 环绕半径.get() * Math.cos(角度);
double 环绕Z = 目标.getPosZ() + 环绕半径.get() * Math.sin(角度);

double 环绕差值X = 环绕X - mc.player.getPosX();
double 环绕差值Z = 环绕Z - mc.player.getPosZ();
double 环绕距离 = Math.sqrt(环绕差值X * 环绕差值X + 环绕差值Z * 环绕差值Z);

if (环绕距离 > 0.1) {
double 环绕标准化X = 环绕差值X / 环绕距离;
double 环绕标准化Z = 环绕差值Z / 环绕距离;
double 环绕速度 = 移动速度 * 0.8;

mc.player.setVelocity(
环绕标准化X * 环绕速度 * 0.25,
mc.player.getMotion().getY(),
环绕标准化Z * 环绕速度 * 0.25
                    );

mc.player.movementInput.moveForward = 0.8f;
mc.player.movementInput.moveStrafe = 切换方向 ? 0.6f : -0.6f;

double 环绕偏航角 = Math.toDegrees(Math.atan2(环绕差值Z, 环绕差值X)) - 90.0;
float 旧偏航角 = mc.player.rotationYaw;
mc.player.setRotation((float) 环绕偏航角, mc.player.rotationPitch);
MoveUtils.setMotion(环绕速度 * 0.15);
mc.player.setRotation(旧偏航角, mc.player.rotationPitch);
                }
            }
        }
    }
}

дикпик за 1 промт перенес, че там сложного такого
 
Назад
Сверху Снизу