govno:
package ezz.onyx.features.modules.impl.combat;
import com.google.common.eventbus.Subscribe;
import ezz.onyx.api.event.impl.EventPacket;
import ezz.onyx.api.event.impl.EventRender;
import ezz.onyx.api.event.impl.EventTick;
import ezz.onyx.api.event.impl.EventVelocity;
import ezz.onyx.features.modules.api.Category;
import ezz.onyx.features.modules.api.Module;
import ezz.onyx.features.modules.api.settings.impl.BooleanSetting;
import ezz.onyx.features.modules.api.settings.impl.EnumSetting;
import ezz.onyx.features.modules.api.settings.impl.MultiEnumSetting;
import ezz.onyx.features.modules.api.settings.impl.SliderSetting;
import ezz.onyx.utility.combat.GCDUtil;
import ezz.onyx.utility.combat.StrikeManager;
import ezz.onyx.utility.other.StopWatch;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.mob.MobEntity;
import net.minecraft.entity.mob.Monster;
import net.minecraft.entity.passive.AnimalEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.text.Text;
import net.minecraft.util.Hand;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d;
import java.util.Random;
import static ezz.onyx.utility.Wrapper.mc;
public class NewAura extends Module {
private enum Rotations {
ReallyWorld,
SeenBeSoon
}
private enum Targets {
Players,
Animals,
Monsters,
Mobs
}
EnumSetting rotation = new EnumSetting("rotation", Rotations.class, Rotations.ReallyWorld);
SliderSetting radius = new SliderSetting("radius", 3, 1, 6, 0.1f);
BooleanSetting smartCrits = new BooleanSetting("smart_crits", false);
BooleanSetting saveTarget = new BooleanSetting("save_target", false);
MultiEnumSetting targets = new MultiEnumSetting("targets", Targets.class);
public static NewAura instance;
public NewAura() {
super("NewAura", Category.Combat);
addSettings(rotation, radius, smartCrits, saveTarget, targets);
instance = this;
}
LivingEntity target = null;
float targetYaw, targetPitch;
public static float currentYaw = 0, currentPitch = 0;
Random random = new Random();
StopWatch rotTimer = new StopWatch();
boolean govno = false, rotating = false;
@Subscribe
public void onTick(EventTick e) {
if (mc.player == null || mc.world == null) return;
target = findTarget();
if (target == null) return;
if (!govno) {
targetYaw = StrikeManager.getRotationsToEntity(target)[0];
targetPitch = StrikeManager.getRotationsToEntity(target)[1];
}
float yawDiff = MathHelper.wrapDegrees(targetYaw - currentYaw);
float pitchDiff = targetPitch - currentPitch;
float speed = 35;
yawDiff = MathHelper.clamp(yawDiff, -speed, speed);
pitchDiff = MathHelper.clamp(pitchDiff, -speed, speed);
currentYaw += yawDiff;
currentPitch += pitchDiff;
float gcd = GCDUtil.getGCDValue();
currentYaw -= currentYaw % gcd;
currentPitch -= currentPitch % gcd;
currentPitch = MathHelper.clamp(currentPitch, -89f, 89f);
if (Math.abs(MathHelper.wrapDegrees(targetYaw - currentYaw)) < speed && rotTimer.isReached(250)) {
currentYaw = targetYaw;
rotTimer.reset();
if (smartCrits.getValue()) {
if (mc.options.jumpKey.isPressed()) {
if (StrikeManager.canPerfectCrit()) {
govno = true;
mc.interactionManager.attackEntity(mc.player, target);
mc.player.swingHand(Hand.MAIN_HAND);
targetYaw = mc.player.getYaw();
rotating = true;
}
} else {
if (StrikeManager.canAttack()) {
govno = true;
mc.interactionManager.attackEntity(mc.player, target);
mc.player.swingHand(Hand.MAIN_HAND);
targetYaw = mc.player.getYaw();
rotating = true;
}
}
} else {
if (StrikeManager.canPerfectCrit()) {
govno = true;
mc.interactionManager.attackEntity(mc.player, target);
mc.player.swingHand(Hand.MAIN_HAND);
targetYaw = mc.player.getYaw();
rotating = true;
}
}
}
if (rotating && Math.abs(currentYaw - targetYaw) < 0.01f) {
govno = false;
rotating = false;
}
}
@Subscribe
public void onPacket(EventPacket.Send.Movement e) {
e.setYaw(currentYaw);
e.setPitch(currentPitch);
e.cancel();
}
@Subscribe
public void onRender(EventRender e) {
mc.player.setHeadYaw(currentYaw);
mc.player.setBodyYaw(currentYaw);
mc.player.renderPitch = currentPitch;
mc.player.renderYaw = currentYaw;
mc.player.lastRenderPitch = currentPitch;
mc.player.lastRenderYaw = currentYaw;
}
private LivingEntity findTarget() {
LivingEntity minDistEntity = null;
double minDist = Double.MAX_VALUE;
for (Entity huina : mc.world.getEntities()) {
if (huina == mc.player) continue;
if (mc.player.distanceTo(huina) > radius.getValue()) continue;
if (!(huina instanceof LivingEntity entity)) continue;
if (entity instanceof PlayerEntity && !targets.isSelected(Targets.Players)) continue;
if (entity instanceof AnimalEntity && !targets.isSelected(Targets.Animals)) continue;
if (entity instanceof Monster && !targets.isSelected(Targets.Monsters)) continue;
if (entity instanceof MobEntity && !targets.isSelected(Targets.Mobs)) continue;
if (mc.player.distanceTo(entity) < minDist) {
minDistEntity = entity;
minDist = mc.player.distanceTo(entity);
}
}
return minDistEntity;
}
}
Я хз как делать уже, кучу раз переделывал.
вот коррекция
Java:
@Inject(method = "tick", at = @At("HEAD"))
public void onTick(CallbackInfo ci) {
if (NewAura.instance.isToggled()) {
float deltaYaw = mc.player.getYaw() - NewAura.currentYaw;
float z = KeyboardInput.getMovementMultiplier(playerInput.forward(), playerInput.backward());
float x = KeyboardInput.getMovementMultiplier(playerInput.left(), playerInput.right());
float newX = x * MathHelper.cos(deltaYaw * 0.017453292f) - z * MathHelper.sin(deltaYaw * 0.017453292f);
float newZ = z * MathHelper.cos(deltaYaw * 0.017453292f) + x * MathHelper.sin(deltaYaw * 0.017453292f);
int movementSideways = Math.round(newX);
int movementForward = Math.round(newZ);
this.playerInput = new PlayerInput(
movementForward > 0F,
movementForward < 0F,
movementSideways > 0F,
movementSideways < 0F,
playerInput.jump(),
playerInput.sneak(),
playerInput.sprint());
}
}
это в KeyboardInputMixin
И вот еще страйк менеджер дам
govno:
package ezz.onyx.utility.combat;
import ezz.onyx.features.modules.impl.movement.AutoSprint;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.effect.StatusEffects;
import net.minecraft.util.math.Vec3d;
import static ezz.onyx.utility.Wrapper.mc;
public class StrikeManager {
public static boolean canPerfectCrit() {
return mc.player.fallDistance > 0.0F
&& !mc.player.isOnGround()
&& !mc.player.isClimbing()
&& !mc.player.isTouchingWater()
&& !mc.player.hasStatusEffect(StatusEffects.BLINDNESS)
&& !mc.player.hasVehicle()
&& !mc.player.getAbilities().flying;
}
public static void stopSprintingFor(int ms) {
mc.player.setSprinting(false);
mc.options.sprintKey.setPressed(false);
AutoSprint.instance.stopSprintingFor(ms);
}
public static boolean canAttack() {
if (!(mc.player.getAttackCooldownProgress(0f) >= 0.95f)) return false;
return !mc.player.isUsingItem();
}
public static float[] getRotationsToEntity(LivingEntity target) {
Vec3d eyes = new Vec3d(mc.player.getX(), mc.player.getY() + mc.player.getEyeHeight(mc.player.getPose()), mc.player.getZ());
Vec3d targetPos = new Vec3d(target.getX(), target.getY() + target.getEyeHeight(target.getPose()) - 0.1, target.getZ());
double difX = targetPos.x - eyes.x;
double difY = targetPos.y - eyes.y;
double difZ = targetPos.z - eyes.z;
double dist = Math.sqrt(difX * difX + difZ * difZ);
float yaw = (float) Math.toDegrees(Math.atan2(difZ, difX)) - 90f;
float pitch = (float) -Math.toDegrees(Math.atan2(difY, dist));
while (yaw > 180f) yaw -= 360f;
while (yaw < -180f) yaw += 360f;
return new float[]{yaw, pitch};
}
}