Начинающий
- Статус
- Оффлайн
- Регистрация
- 7 Ноя 2025
- Сообщения
- 258
- Реакции
- 3
Типа я бегаю, бью и все работает. Проходит минута может быть и флагать начинает.
Раньше такой проблемы небыло тк тестил меньше времени
package me.deqes.module.impl.combat;
import com.google.common.eventbus.Subscribe;
import me.deqes.event.impl.EventHuy;
import me.deqes.event.impl.EventInput;
import me.deqes.event.impl.EventMotion;
import me.deqes.event.impl.EventRender;
import me.deqes.module.Category;
import me.deqes.module.Module;
import me.deqes.module.setting.impl.BooleanSetting;
import me.deqes.module.setting.impl.EnumSetting;
import me.deqes.module.setting.impl.SliderSetting;
import me.deqes.util.combat.MultipointUtil;
import me.deqes.util.combat.StopWatch;
import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.effect.StatusEffects;
import net.minecraft.item.Items;
import net.minecraft.util.Hand;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec2f;
import net.minecraft.util.math.Vec3d;
import org.jetbrains.annotations.Contract;
import java.util.ArrayList;
import java.util.List;
import static me.deqes.util.Wrapper.mc;
public class MyAura extends Module {
private enum Mode {ReallyWorld, FunTime, HolyWorld}
EnumSetting mode = new EnumSetting("Мод:", Mode.class, Mode.ReallyWorld);
SliderSetting radius = new SliderSetting("Радиус:", 3, 1f, 6, 0.1f);
BooleanSetting onlyCrit = new BooleanSetting("Только криты:", false);
public MyAura() {
super("AttackAura", Category.COMBAT);
addSettings(mode, radius, onlyCrit);
}
Vec2f angle = new Vec2f(0, 0);
LivingEntity target;
StopWatch watch = new StopWatch();
float lastYaw, lastPitch;
boolean isRotating = false;
Vec2f[] points;
@Subscribe
public void onTick(EventHuy e) {
if (nullCheck()) return;
target = getMinDistTarget();
if (target == null) {
angle = new Vec2f(mc.player.getYaw(), mc.player.getPitch());
return;
}
if (mode.getValue().equals(Mode.FunTime)) {
points = MultipointUtil.generateAimPoints(target);
}
updateRotation();
if (!isRotating) {
watch.reset();
isRotating = true;
}
}
@Subscribe
public void onInput(EventInput e) {
if (target != null) {
e.setYaw(angle.x, mc.player.getYaw());
}
}
@Subscribe
public void onMove(EventMotion e) {
if (target != null) {
e.setYaw(angle.x);
e.setPitch(angle.y);
e.setX(mc.player.getX());
e.setY(mc.player.getY());
e.setZ(mc.player.getZ());
e.cancel();
}
}
@Subscribe
public void onRender(EventRender e) {
if (target != null) {
mc.player.setHeadYaw(angle.x);
mc.player.setBodyYaw(angle.x);
mc.player.renderPitch = angle.y;
mc.player.renderYaw = angle.x;
}
}
int pointIndex = 0;
private void updateRotation() {
switch (mode.getValue()) {
case Mode.ReallyWorld -> {
lastYaw = mc.player.getYaw();
lastPitch = mc.player.getPitch();
if (watch.isReached(250)) {
angle = new Vec2f(lastYaw, lastPitch);
isRotating = false;
} else {
if (canCritAttack()) {
angle = new Vec2f(getRotationsToEntity(target)[0], getRotationsToEntity(target)[1]);
mc.interactionManager.attackEntity(mc.player, target);
mc.player.swingHand(Hand.MAIN_HAND);
}
}
}
case Mode.FunTime -> {
if (points == null) return;
if (pointIndex == 6) {
pointIndex = 0;
}
Vec2f point = points[pointIndex];
angle = new Vec2f(point.x, point.y);
if (canCritAttack()) {
mc.interactionManager.attackEntity(mc.player, target);
mc.player.swingHand(Hand.MAIN_HAND);
}
if (watch.isReached(150)) {
pointIndex++;
watch.reset();
}
}
case Mode.HolyWorld -> {
System.out.println("52");
}
default -> throw new IllegalStateException("Unexpected value: " + mode.getValue());
}
}
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};
}
private LivingEntity getMinDistTarget() {
ArrayList<LivingEntity> entities = new ArrayList<>();
for (Entity entity : mc.world.getEntities()) {
if (!(entity instanceof LivingEntity)) continue;
if (entity == mc.player) continue;
if (mc.player.distanceTo(entity) > radius.getValue()) continue;
entities.add((LivingEntity) entity);
}
LivingEntity minDistEntity = null;
float minDistance = Float.MAX_VALUE;
for (LivingEntity entity : entities) {
float distance = mc.player.distanceTo(entity);
if (distance < minDistance) {
minDistance = distance;
minDistEntity = entity;
}
}
return minDistEntity;
}
private boolean canCritAttack() {
if (mc.player.isOnGround() && onlyCrit.getValue()) return false;
if (mc.player.isUsingItem() && !mc.player.getActiveItem().isOf(Items.SHIELD)) return false;
if (!(mc.player.getAttackCooldownProgress(0f) >= 0.9f)) return false;
boolean restrict = mc.player.hasStatusEffect(StatusEffects.BLINDNESS) || mc.player.hasStatusEffect(StatusEffects.LEVITATION) || mc.player.hasStatusEffect(StatusEffects.SLOW_FALLING) || mc.player.isInLava() || mc.player.inPowderSnow || mc.player.isClimbing() || mc.player.hasVehicle() || mc.player.getAbilities().flying || (mc.player.isInFluid() && !mc.options.jumpKey.isPressed());
boolean needSpace = mc.player.isOnGround() && !mc.options.jumpKey.isPressed();
if (!restrict) {
return needSpace || (!mc.player.isOnGround() && mc.player.fallDistance > 0.0f);
}
return true;
}
}
Вот код
Раньше такой проблемы небыло тк тестил меньше времени
package me.deqes.module.impl.combat;
import com.google.common.eventbus.Subscribe;
import me.deqes.event.impl.EventHuy;
import me.deqes.event.impl.EventInput;
import me.deqes.event.impl.EventMotion;
import me.deqes.event.impl.EventRender;
import me.deqes.module.Category;
import me.deqes.module.Module;
import me.deqes.module.setting.impl.BooleanSetting;
import me.deqes.module.setting.impl.EnumSetting;
import me.deqes.module.setting.impl.SliderSetting;
import me.deqes.util.combat.MultipointUtil;
import me.deqes.util.combat.StopWatch;
import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.effect.StatusEffects;
import net.minecraft.item.Items;
import net.minecraft.util.Hand;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec2f;
import net.minecraft.util.math.Vec3d;
import org.jetbrains.annotations.Contract;
import java.util.ArrayList;
import java.util.List;
import static me.deqes.util.Wrapper.mc;
public class MyAura extends Module {
private enum Mode {ReallyWorld, FunTime, HolyWorld}
EnumSetting mode = new EnumSetting("Мод:", Mode.class, Mode.ReallyWorld);
SliderSetting radius = new SliderSetting("Радиус:", 3, 1f, 6, 0.1f);
BooleanSetting onlyCrit = new BooleanSetting("Только криты:", false);
public MyAura() {
super("AttackAura", Category.COMBAT);
addSettings(mode, radius, onlyCrit);
}
Vec2f angle = new Vec2f(0, 0);
LivingEntity target;
StopWatch watch = new StopWatch();
float lastYaw, lastPitch;
boolean isRotating = false;
Vec2f[] points;
@Subscribe
public void onTick(EventHuy e) {
if (nullCheck()) return;
target = getMinDistTarget();
if (target == null) {
angle = new Vec2f(mc.player.getYaw(), mc.player.getPitch());
return;
}
if (mode.getValue().equals(Mode.FunTime)) {
points = MultipointUtil.generateAimPoints(target);
}
updateRotation();
if (!isRotating) {
watch.reset();
isRotating = true;
}
}
@Subscribe
public void onInput(EventInput e) {
if (target != null) {
e.setYaw(angle.x, mc.player.getYaw());
}
}
@Subscribe
public void onMove(EventMotion e) {
if (target != null) {
e.setYaw(angle.x);
e.setPitch(angle.y);
e.setX(mc.player.getX());
e.setY(mc.player.getY());
e.setZ(mc.player.getZ());
e.cancel();
}
}
@Subscribe
public void onRender(EventRender e) {
if (target != null) {
mc.player.setHeadYaw(angle.x);
mc.player.setBodyYaw(angle.x);
mc.player.renderPitch = angle.y;
mc.player.renderYaw = angle.x;
}
}
int pointIndex = 0;
private void updateRotation() {
switch (mode.getValue()) {
case Mode.ReallyWorld -> {
lastYaw = mc.player.getYaw();
lastPitch = mc.player.getPitch();
if (watch.isReached(250)) {
angle = new Vec2f(lastYaw, lastPitch);
isRotating = false;
} else {
if (canCritAttack()) {
angle = new Vec2f(getRotationsToEntity(target)[0], getRotationsToEntity(target)[1]);
mc.interactionManager.attackEntity(mc.player, target);
mc.player.swingHand(Hand.MAIN_HAND);
}
}
}
case Mode.FunTime -> {
if (points == null) return;
if (pointIndex == 6) {
pointIndex = 0;
}
Vec2f point = points[pointIndex];
angle = new Vec2f(point.x, point.y);
if (canCritAttack()) {
mc.interactionManager.attackEntity(mc.player, target);
mc.player.swingHand(Hand.MAIN_HAND);
}
if (watch.isReached(150)) {
pointIndex++;
watch.reset();
}
}
case Mode.HolyWorld -> {
System.out.println("52");
}
default -> throw new IllegalStateException("Unexpected value: " + mode.getValue());
}
}
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};
}
private LivingEntity getMinDistTarget() {
ArrayList<LivingEntity> entities = new ArrayList<>();
for (Entity entity : mc.world.getEntities()) {
if (!(entity instanceof LivingEntity)) continue;
if (entity == mc.player) continue;
if (mc.player.distanceTo(entity) > radius.getValue()) continue;
entities.add((LivingEntity) entity);
}
LivingEntity minDistEntity = null;
float minDistance = Float.MAX_VALUE;
for (LivingEntity entity : entities) {
float distance = mc.player.distanceTo(entity);
if (distance < minDistance) {
minDistance = distance;
minDistEntity = entity;
}
}
return minDistEntity;
}
private boolean canCritAttack() {
if (mc.player.isOnGround() && onlyCrit.getValue()) return false;
if (mc.player.isUsingItem() && !mc.player.getActiveItem().isOf(Items.SHIELD)) return false;
if (!(mc.player.getAttackCooldownProgress(0f) >= 0.9f)) return false;
boolean restrict = mc.player.hasStatusEffect(StatusEffects.BLINDNESS) || mc.player.hasStatusEffect(StatusEffects.LEVITATION) || mc.player.hasStatusEffect(StatusEffects.SLOW_FALLING) || mc.player.isInLava() || mc.player.inPowderSnow || mc.player.isClimbing() || mc.player.hasVehicle() || mc.player.getAbilities().flying || (mc.player.isInFluid() && !mc.options.jumpKey.isPressed());
boolean needSpace = mc.player.isOnGround() && !mc.options.jumpKey.isPressed();
if (!restrict) {
return needSpace || (!mc.player.isOnGround() && mc.player.fallDistance > 0.0f);
}
return true;
}
}
Вот код
Последнее редактирование: