- Выберите загрузчик игры
- Прочие моды
 
короче вот вам килка которая обходит спуки 50/50 (килка не моя сразу говорю)
наложен был прогуард с кфг от интернала
ss -
	
		
	
сама килка
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
				
			наложен был прогуард с кфг от интернала

ss -
сама килка
			
				Код:
			
		
		
		import com.google.common.eventbus.Subscribe;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.player.ClientPlayerEntity;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.client.gui.screen.IngameMenuScreen;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.item.ArmorStandEntity;
import net.minecraft.entity.merchant.villager.VillagerEntity;
import net.minecraft.entity.monster.MonsterEntity;
import net.minecraft.entity.monster.SlimeEntity;
import net.minecraft.entity.passive.AnimalEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.UseAction;
import net.minecraft.util.Hand;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector2f;
import net.minecraft.util.math.vector.Vector3d;
@ModuleInfo(
        name = "Aura",
        category = Category.Combat,
        description = "Автоматически атакует противника"
)
public class Aura extends Module {
    public ModeSetting aimMode = new ModeSetting("Тип Наведения", "Spookytime", new String[]{"Spookytime", "Spookytime Duels"});
    public NumberSetting attackRange = new NumberSetting("Дистанция атаки", 3.0F, 2.5F, 12.0F, 0.05F);
    final NumberSetting elytraRange = new NumberSetting("Дистанция на элитре", 6.0F, 0.0F, 16.0F, 0.05F);
    public BooleanSetting prediction = new BooleanSetting("Предикт", false);
    public NumberSetting predictionStrength = (new NumberSetting("Сила предикта", 0.2F, 0.1F, 0.3F, 0.05F)).setVisible(() -> prediction.get());
    final GroupSetting targetsGroup = new GroupSetting("Таргеты", new BooleanSetting[]{
            new BooleanSetting("Игроки", true),
            new BooleanSetting("Невидимки", true),
            new BooleanSetting("Голые", true),
            new BooleanSetting("Голые невидимки", true),
            new BooleanSetting("Мобы", false),
            new BooleanSetting("Животные", false)
    });
    final GroupSetting sortingGroup = new GroupSetting("Учитывать", new BooleanSetting[]{
            new BooleanSetting("Хп", true),
            new BooleanSetting("Броню", true),
            new BooleanSetting("Дистанцию", true),
            new BooleanSetting("Баффы", true)
    });
    final GroupSetting optionsGroup = new GroupSetting("Опции", new BooleanSetting[]{
            new BooleanSetting("Только криты", true),
            new BooleanSetting("Синхронизировать с TPS", false),
            new BooleanSetting("Фокусировать одну цель", true),
            new BooleanSetting("Коррекция движения", true),
            new BooleanSetting("Оптимальная дистанция атаки", false),
            new BooleanSetting("Резольвер", false)
    });
    final GroupSetting triggersGroup = new GroupSetting("Триггеры", new BooleanSetting[]{
            new BooleanSetting("Проверка луча", true),
            new BooleanSetting("Бить через стены", true),
            new BooleanSetting("Не бить если кушаешь", true),
            new BooleanSetting("Не бить если в гуи", true)
    });
    public BooleanSetting ignoreFriends = new BooleanSetting("Не бить друзей", true);
    public BooleanSetting wallBypass = (new BooleanSetting("Обход через стены", true)).setVisible(() -> triggersGroup.getValueByName("Бить через стены").get());
    public BooleanSetting smartCrits = (new BooleanSetting("Умные криты", false)).setVisible(() -> optionsGroup.getValueByName("Только криты").get());
    final ModeSetting correctionMode = (new ModeSetting("Тип коррекции", "Свободный", new String[]{"Свободный", "Сфокусированный"})).setVisible(() -> optionsGroup.getValueByName("Коррекция движения").get());
    private final TimerUtil attackTimer = new TimerUtil();
    public Vector2f rotations = new Vector2f(0.0F, 0.0F);
    private LivingEntity target;
    private Entity raytracedEntity;
    private static final float ADDITIONAL_SEARCH_RANGE = 7.0F;
    public Aura() {
        this.addSettings(aimMode, attackRange, elytraRange, targetsGroup, sortingGroup, optionsGroup, triggersGroup, ignoreFriends, wallBypass, smartCrits, correctionMode, prediction, predictionStrength);
    }
    @Override
    public void onEnable() {
        super.onEnable();
        this.reset();
        this.target = null;
    }
    @Override
    public void onDisable() {
        super.onDisable();
        if (aimMode.is("Spookytime") || aimMode.is("Spookytime Duels")) {
            if (mc.player != null) {
                mc.player.rotationYaw = this.rotations.x;
                mc.player.rotationPitch = this.rotations.y;
                mc.player.rotationYawHead = this.rotations.x;
                mc.player.renderYawOffset = this.rotations.x;
                mc.player.rotationPitchHead = this.rotations.y;
            }
        }
        this.reset();
        this.attackTimer.reset();
        this.target = null;
        mc.timer.timerSpeed = 1.0F;
    }
    @Subscribe
    public void onStrafe(StrafeEvent event) {
        if (optionsGroup.getValueByName("Коррекция движения").get() && this.correctionMode.is("Свободный") && target != null) {
            MovementUtils.fixMovement(event, this.rotations.x);
        }
    }
    @Subscribe
    public void onUpdate(UpdateEvent event) {
        if (optionsGroup.getValueByName("Фокусировать одну цель").get() && (this.target == null || !this.isValid(this.target, maxRange() + ADDITIONAL_SEARCH_RANGE)) || !optionsGroup.getValueByName("Фокусировать одну цель").get()) {
            this.updateTarget();
        }
        if (this.target != null) {
            setRotations();
            if (shouldPerformCritical() && this.attackTimer.hasTimeElapsed(500L)) {
                this.updateAttack();
            }
        } else {
            this.attackTimer.reset();
        }
    }
    @Subscribe
    private void onWalk(WalkEvent event) {
        if (this.target != null) {
            event.setYaw(this.rotations.x);
            event.setPitch(this.rotations.y);
            mc.player.rotationYawHead = this.rotations.x;
            mc.player.renderYawOffset = RotationUtils.getFixedYaw(this.rotations.x);
            mc.player.rotationPitchHead = this.rotations.y;
        }
    }
    public void setRotations() {
        if (this.aimMode.is("Spookytime")) {
            this.spookyTimeRotations();
        } else if (this.aimMode.is("Spookytime Duels")) {
            this.spookyTimeDuelsRotations();
        } else {
            this.basicRotations();
        }
        if (triggersGroup.getValueByName("Не бить если кушаешь").get() && isPlayerEating()) {
            this.rotations = new Vector2f(mc.player.rotationYaw, mc.player.rotationPitch);
        }
        if (triggersGroup.getValueByName("Не бить если в гуи").get() && isGuiOpen()) {
            this.rotations = new Vector2f(mc.player.rotationYaw, mc.player.rotationPitch);
        }
    }
    private void basicRotations() {
        Vector3d targetPos = prediction.get() ? getPredictedPosition(this.target, predictionStrength.get()) : this.target.getPositionVec();
        float[] newRots = RotationUtils.getRotations(targetPos);
        float gcd = RotationUtils.getGCDValue();
        float fixedYaw = newRots[0] - (newRots[0] - this.rotations.x) % gcd;
        float fixedPitch = newRots[1] - (newRots[1] - this.rotations.y) % gcd;
        this.rotations = new Vector2f(fixedYaw, MathHelper.clamp(fixedPitch, -90.0F, 90.0F));
    }
    private void spookyTimeRotations() {
        Vector3d targetPos = prediction.get() ? getPredictedPosition(this.target, predictionStrength.get()) : this.target.getPositionVec();
        float[] newRots = RotationUtils.getRotations(targetPos);
        float yawToTarget = newRots[0];
        float pitchToTarget = newRots[1];
        float yawDelta = MathHelper.wrapDegrees(yawToTarget - this.rotations.x);
        float pitchDelta = pitchToTarget - this.rotations.y;
        float turnSpeedYaw = Math.min(Math.max(Math.abs(yawDelta), 0.5F), 70.8F);
        float turnSpeedPitch = Math.min(Math.max(Math.abs(pitchDelta), 0.0F), 12.3F);
        float targetYaw = this.rotations.x + (yawDelta > 1.0F ? turnSpeedYaw : -turnSpeedYaw);
        float targetPitch = this.rotations.y + (pitchDelta > 0.5F ? turnSpeedPitch : -turnSpeedPitch);
        float lerpFactor = 0.687F;
        float yaw = this.rotations.x + (targetYaw - this.rotations.x) * lerpFactor;
        float pitch = this.rotations.y + (targetPitch - this.rotations.y) * lerpFactor;
        float time = (float)(System.currentTimeMillis() % 10000L) / 720.0F;
        yaw += Math.sin(time * 2.0F * Math.PI * 2.7F) * 7.8F;
        pitch += Math.sin(time * 2.0F * Math.PI * 2.9F) * 2.6F;
        pitch = MathHelper.clamp(pitch, -90.0F, 90.0F);
        float gcd = RotationUtils.getGCDValue();
        yaw -= (yaw - this.rotations.x) % gcd;
        pitch -= (pitch - this.rotations.y) % gcd;
        this.rotations = new Vector2f(yaw, pitch);
    }
    private void spookyTimeDuelsRotations() {
        Vector3d targetPos = prediction.get() ? getPredictedPosition(this.target, predictionStrength.get()) : this.target.getPositionVec();
        float[] newRots = RotationUtils.getRotations(targetPos);
        float yawToTarget = newRots[0];
        float pitchToTarget = newRots[1];
        float yawDelta = MathHelper.wrapDegrees(yawToTarget - this.rotations.x);
        float pitchDelta = pitchToTarget - this.rotations.y;
        float turnSpeedYaw = Math.min(Math.max(Math.abs(yawDelta), 1.0F), 65.4F);
        float turnSpeedPitch = Math.min(Math.max(Math.abs(pitchDelta), 1.0F), 10.2F);
        float targetYaw = this.rotations.x + (yawDelta > 0.0F ? turnSpeedYaw : -turnSpeedYaw);
        float targetPitch = this.rotations.y + (pitchDelta > 0.0F ? turnSpeedPitch : -turnSpeedPitch);
        float yaw = targetYaw;
        float pitch = targetPitch;
        float time = (float)(System.currentTimeMillis() % 10000L) / 500.0F;
        yaw += Math.sin(time * 2.0F * Math.PI * 2.8F) * 4.7F;
        pitch += Math.sin(time * 2.0F * Math.PI * 1.6F) * 3.2F;
        pitch = MathHelper.clamp(pitch, -90.0F, 90.0F);
        float gcd = RotationUtils.getGCDValue();
        yaw -= (yaw - this.rotations.x) % gcd;
        pitch -= (pitch - this.rotations.y) % gcd;
        this.rotations = new Vector2f(yaw, pitch);
    }
    private void updateTarget() {
        List<LivingEntity> potentialTargets = new ArrayList<>();
        float searchRange = maxRange() + ADDITIONAL_SEARCH_RANGE;
        for (Entity entity : mc.world.getAllEntities()) {
            if (entity instanceof LivingEntity && isValid((LivingEntity)entity, searchRange)) {
                potentialTargets.add((LivingEntity)entity);
            }
        }
        if (potentialTargets.isEmpty()) {
            this.target = null;
        } else {
            potentialTargets.sort(Comparator.comparingDouble(e ->
                    TargetSorter.getPriority(e,
                            sortingGroup.getValueByName("Хп").get(),
                            sortingGroup.getValueByName("Броню").get(),
                            sortingGroup.getValueByName("Дистанцию").get(),
                            maxRange(),
                            sortingGroup.getValueByName("Баффы").get()
                    )
            ));
            this.target = potentialTargets.get(0);
        }
    }
    private void updateAttack() {
        if (mc.player.getDistance(this.target) > getAttackDistance()) {
            return;
        }
        if (triggersGroup.getValueByName("Проверка луча").get() && !mc.player.isElytraFlying()) {
            this.raytracedEntity = RaycastUtils.getMouseOver(this.target, this.rotations.x, this.rotations.y, getAttackDistance());
            if (this.raytracedEntity == null) return;
        }
        if (!triggersGroup.getValueByName("Бить через стены").get() && !mc.player.canEntityBeSeen(this.target)) {
            return;
        }
        mc.playerController.attackEntity(mc.player, this.target);
        mc.player.swingArm(Hand.MAIN_HAND);
        attackTimer.reset();
    }
    private boolean isValid(LivingEntity entity, float range) {
        if (entity == null || entity instanceof ClientPlayerEntity || !entity.isAlive() || entity.isInvulnerable()) {
            return false;
        }
        if (entity.ticksExisted < 3 || mc.player.getDistance(entity) > range) {
            return false;
        }
        if (FriendManager.isFriend(entity.getName().getString()) && ignoreFriends.get()) {
            return false;
        }
        if (entity instanceof PlayerEntity) {
            if (!targetsGroup.getValueByName("Игроки").get()) return false;
            if (entity.isInvisible() && !targetsGroup.getValueByName("Невидимки").get()) return false;
            if (entity.getTotalArmorValue() == 0 && !targetsGroup.getValueByName("Голые").get()) return false;
            if (entity.isInvisible() && entity.getTotalArmorValue() == 0 && !targetsGroup.getValueByName("Голые невидимки").get()) return false;
            if (((PlayerEntity)entity).isCreative()) return false;
        } else if (entity instanceof MonsterEntity || entity instanceof SlimeEntity) {
            if (!targetsGroup.getValueByName("Мобы").get()) return false;
        } else if (entity instanceof AnimalEntity || entity instanceof VillagerEntity) {
            if (!targetsGroup.getValueByName("Животные").get()) return false;
        } else if (entity instanceof ArmorStandEntity) {
            return false;
        }
        return true;
    }
    private Vector3d getPredictedPosition(LivingEntity target, float strength) {
        double motionX = target.getPosX() - target.prevPosX;
        double motionZ = target.getPosZ() - target.prevPosZ;
        return new Vector3d(target.getPosX() + motionX * strength, target.getPosY(), target.getPosZ() + motionZ * strength);
    }
    public boolean shouldPerformCritical() {
        return CriticalsUtils.isPlayerFalling(
                optionsGroup.getValueByName("Только криты").get(),
                smartCrits.get(),
                optionsGroup.getValueByName("Синхронизировать с TPS").get()
        );
    }
    public float getAttackDistance() {
        if (optionsGroup.getValueByName("Оптимальная дистанция атаки").get()) {
            return mc.player.isSwimming() ? 3.0F : 3.6F;
        }
        return attackRange.get();
    }
    public float maxRange() {
        return getAttackDistance() + (mc.player.isElytraFlying() ? elytraRange.get() : 0.0F);
    }
    private boolean isPlayerEating() {
        if (!mc.player.isHandActive()) return false;
        UseAction action = mc.player.getActiveItemStack().getUseAction();
        return action == UseAction.EAT || action == UseAction.DRINK;
    }
    private boolean isGuiOpen() {
        return mc.currentScreen != null &&
                !(mc.currentScreen instanceof ClickGuiScreen) &&
                !(mc.currentScreen instanceof ChatScreen) &&
                !(mc.currentScreen instanceof IngameMenuScreen);
    }
    private void reset() {
        this.rotations = new Vector2f(mc.player.rotationYaw, mc.player.rotationPitch);
    }
    public LivingEntity getTarget() {
        return this.target;
    }
}
			
				Последнее редактирование: 
			
		
	
								
								
									
	
								
							
							 
				 
	 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		