Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Часть функционала AimBot | Exosware 1 21 4

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
25 Дек 2023
Сообщения
9
Реакции
0
Выберите загрузчик игры
  1. Fabric
моя первая тема, несудите строго , неплохой аим ботик, да простая функция но не так уж и плохо
AImBot:
Expand Collapse Copy
package ru.levin.modules.combat;

import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.decoration.ArmorStandEntity;
import net.minecraft.entity.mob.Monster;
import net.minecraft.entity.passive.AnimalEntity;
import net.minecraft.entity.passive.VillagerEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d;
import ru.levin.events.Event;
import ru.levin.events.impl.EventUpdate;
import ru.levin.manager.Manager;
import ru.levin.modules.Function;
import ru.levin.modules.FunctionAnnotation;
import ru.levin.modules.Type;
import ru.levin.modules.setting.BooleanSetting;
import ru.levin.modules.setting.MultiSetting;
import ru.levin.modules.setting.SliderSetting;
import ru.levin.util.math.GCDUtil;

import java.util.Arrays;

@FunctionAnnotation(name = "AimBot", desc = "Мгновенное плавное наведение", type = Type.Combat)
public class AimBot extends Function {
    
    public BooleanSetting player = new BooleanSetting("Игроки", true);
    public BooleanSetting golyPlayer = new BooleanSetting("Голые", true);
    public BooleanSetting mobs = new BooleanSetting("Мобы", false);
    public BooleanSetting friend = new BooleanSetting("Друзья", false);
    public MultiSetting targets = new MultiSetting(
            "Цели",
            Arrays.asList("Игроки", "Голые", "Мобы", "Друзья"),
            new String[]{"Игроки", "Голые", "Мобы", "Друзья"}
    );

    public SliderSetting speed = new SliderSetting("Скорость", 1.0f, 0.8f, 1.0f, 0.01f);
    public SliderSetting delay = new SliderSetting("Задержка", 0, 0, 3, 1);
    public SliderSetting distance = new SliderSetting("Дистанция", 3.2f, 1.5f, 6f, 0.1f);

    public BooleanSetting eatPause = new BooleanSetting("Пауза при еде", true);
    public BooleanSetting blockPause = new BooleanSetting("Пауза при блоке", true);
    public BooleanSetting onlyAttack = new BooleanSetting("Только при атаке", false);
    public BooleanSetting raycast = new BooleanSetting("Проверять видимость", true);
    public BooleanSetting silent = new BooleanSetting("Silent", false);
    
    private static LivingEntity target;
    private int delayCounter = 0;
    private boolean wasAttacking = false;

    public AimBot() {
        addSettings(targets, speed, delay, distance, eatPause, blockPause, onlyAttack, raycast, silent);
    }

    @Override
    public void onEvent(Event event) {
        if (!(event instanceof EventUpdate)) return;
        if (mc.player == null || mc.world == null) return;

        // Проверка пауз
        if (eatPause.get() && mc.player.isUsingItem()) return;
        if (blockPause.get() && mc.player.isBlocking()) return;

        if (onlyAttack.get()) {
            boolean attacking = mc.options.attackKey.isPressed();
            if (!attacking) {
                wasAttacking = false;
                return;
            }
            if (!wasAttacking && attacking) {
                delayCounter = 0;
                wasAttacking = true;
            }
        }
        
        if (target == null || !isValidTarget(target)) {
            updateTarget();
        }

        if (target == null) return;
        
        if (delayCounter < delay.get().intValue()) {
            delayCounter++;
            return;
        }
        delayCounter = 0;

        aimDirect(target);
    }

    private void aimDirect(LivingEntity entity) {
    
        Vec3d targetPos = entity.getPos().add(0, entity.getHeight() * 0.5, 0);
        Vec3d eyePos = mc.player.getEyePos();

        double dx = targetPos.x - eyePos.x;
        double dy = targetPos.y - eyePos.y;
        double dz = targetPos.z - eyePos.z;

        float targetYaw = (float) Math.toDegrees(Math.atan2(-dx, dz));
        float targetPitch = (float) Math.toDegrees(Math.atan2(-dy, Math.sqrt(dx * dx + dz * dz)));

        float currentYaw = mc.player.getYaw();
        float currentPitch = mc.player.getPitch();

        float yawDelta = MathHelper.wrapDegrees(targetYaw - currentYaw);
        float pitchDelta = targetPitch - currentPitch;

        float spd = speed.get().floatValue();

        float newYaw = currentYaw + yawDelta * spd;
        float newPitch = currentPitch + pitchDelta * spd;

        newPitch = MathHelper.clamp(newPitch, -90f, 90f);


        if (silent.get()) {
            mc.player.setYaw(newYaw);
            mc.player.setPitch(newPitch);
        } else {
            mc.player.setYaw(GCDUtil.applyGCD(newYaw, currentYaw));
            mc.player.setPitch(GCDUtil.applyGCD(newPitch, currentPitch));
        }
    }

    private void updateTarget() {
        LivingEntity bestTarget = null;
        double bestDistance = Double.MAX_VALUE;

        for (Entity entity : mc.world.getEntities()) {
            if (!(entity instanceof LivingEntity living)) continue;
            if (!isValidTarget(living)) continue;

            double dist = mc.player.distanceTo(living);
            if (dist < bestDistance) {
                bestDistance = dist;
                bestTarget = living;
            }
        }
        target = bestTarget;
    }

    private boolean isValidTarget(LivingEntity entity) {
        if (entity == mc.player) return false;
        if (mc.player.distanceTo(entity) > distance.get().floatValue()) return false;

        // Проверка видимости
        if (raycast.get() && !mc.player.canSee(entity)) return false;

        // Фильтрация по типу
        if (entity instanceof PlayerEntity player) {
            if (!targets.get("Игроки")) return false;
            if (!targets.get("Друзья") && Manager.FRIEND_MANAGER.isFriend(player.getName().getString())) return false;
            if (!targets.get("Голые") && player.getArmorVisibility() <= 0) return false;
            if (player.isCreative()) return false;
        } else if (entity instanceof Monster || entity instanceof AnimalEntity || entity instanceof VillagerEntity) {
            if (!targets.get("Мобы")) return false;
        }

        // Исключения
        if (entity instanceof ArmorStandEntity) return false;
        if (entity.isInvulnerable()) return false;
        if (!entity.isAlive()) return false;

        return true;
    }

    @Override
    protected void onDisable() {
        target = null;
        delayCounter = 0;
        wasAttacking = false;
        super.onDisable();
    }
}
 
моя первая тема, несудите строго , неплохой аим ботик, да простая функция но не так уж и плохо
AImBot:
Expand Collapse Copy
package ru.levin.modules.combat;

import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.decoration.ArmorStandEntity;
import net.minecraft.entity.mob.Monster;
import net.minecraft.entity.passive.AnimalEntity;
import net.minecraft.entity.passive.VillagerEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d;
import ru.levin.events.Event;
import ru.levin.events.impl.EventUpdate;
import ru.levin.manager.Manager;
import ru.levin.modules.Function;
import ru.levin.modules.FunctionAnnotation;
import ru.levin.modules.Type;
import ru.levin.modules.setting.BooleanSetting;
import ru.levin.modules.setting.MultiSetting;
import ru.levin.modules.setting.SliderSetting;
import ru.levin.util.math.GCDUtil;

import java.util.Arrays;

@FunctionAnnotation(name = "AimBot", desc = "Мгновенное плавное наведение", type = Type.Combat)
public class AimBot extends Function {
   
    public BooleanSetting player = new BooleanSetting("Игроки", true);
    public BooleanSetting golyPlayer = new BooleanSetting("Голые", true);
    public BooleanSetting mobs = new BooleanSetting("Мобы", false);
    public BooleanSetting friend = new BooleanSetting("Друзья", false);
    public MultiSetting targets = new MultiSetting(
            "Цели",
            Arrays.asList("Игроки", "Голые", "Мобы", "Друзья"),
            new String[]{"Игроки", "Голые", "Мобы", "Друзья"}
    );

    public SliderSetting speed = new SliderSetting("Скорость", 1.0f, 0.8f, 1.0f, 0.01f);
    public SliderSetting delay = new SliderSetting("Задержка", 0, 0, 3, 1);
    public SliderSetting distance = new SliderSetting("Дистанция", 3.2f, 1.5f, 6f, 0.1f);

    public BooleanSetting eatPause = new BooleanSetting("Пауза при еде", true);
    public BooleanSetting blockPause = new BooleanSetting("Пауза при блоке", true);
    public BooleanSetting onlyAttack = new BooleanSetting("Только при атаке", false);
    public BooleanSetting raycast = new BooleanSetting("Проверять видимость", true);
    public BooleanSetting silent = new BooleanSetting("Silent", false);
   
    private static LivingEntity target;
    private int delayCounter = 0;
    private boolean wasAttacking = false;

    public AimBot() {
        addSettings(targets, speed, delay, distance, eatPause, blockPause, onlyAttack, raycast, silent);
    }

    @Override
    public void onEvent(Event event) {
        if (!(event instanceof EventUpdate)) return;
        if (mc.player == null || mc.world == null) return;

        // Проверка пауз
        if (eatPause.get() && mc.player.isUsingItem()) return;
        if (blockPause.get() && mc.player.isBlocking()) return;

        if (onlyAttack.get()) {
            boolean attacking = mc.options.attackKey.isPressed();
            if (!attacking) {
                wasAttacking = false;
                return;
            }
            if (!wasAttacking && attacking) {
                delayCounter = 0;
                wasAttacking = true;
            }
        }
       
        if (target == null || !isValidTarget(target)) {
            updateTarget();
        }

        if (target == null) return;
       
        if (delayCounter < delay.get().intValue()) {
            delayCounter++;
            return;
        }
        delayCounter = 0;

        aimDirect(target);
    }

    private void aimDirect(LivingEntity entity) {
   
        Vec3d targetPos = entity.getPos().add(0, entity.getHeight() * 0.5, 0);
        Vec3d eyePos = mc.player.getEyePos();

        double dx = targetPos.x - eyePos.x;
        double dy = targetPos.y - eyePos.y;
        double dz = targetPos.z - eyePos.z;

        float targetYaw = (float) Math.toDegrees(Math.atan2(-dx, dz));
        float targetPitch = (float) Math.toDegrees(Math.atan2(-dy, Math.sqrt(dx * dx + dz * dz)));

        float currentYaw = mc.player.getYaw();
        float currentPitch = mc.player.getPitch();

        float yawDelta = MathHelper.wrapDegrees(targetYaw - currentYaw);
        float pitchDelta = targetPitch - currentPitch;

        float spd = speed.get().floatValue();

        float newYaw = currentYaw + yawDelta * spd;
        float newPitch = currentPitch + pitchDelta * spd;

        newPitch = MathHelper.clamp(newPitch, -90f, 90f);


        if (silent.get()) {
            mc.player.setYaw(newYaw);
            mc.player.setPitch(newPitch);
        } else {
            mc.player.setYaw(GCDUtil.applyGCD(newYaw, currentYaw));
            mc.player.setPitch(GCDUtil.applyGCD(newPitch, currentPitch));
        }
    }

    private void updateTarget() {
        LivingEntity bestTarget = null;
        double bestDistance = Double.MAX_VALUE;

        for (Entity entity : mc.world.getEntities()) {
            if (!(entity instanceof LivingEntity living)) continue;
            if (!isValidTarget(living)) continue;

            double dist = mc.player.distanceTo(living);
            if (dist < bestDistance) {
                bestDistance = dist;
                bestTarget = living;
            }
        }
        target = bestTarget;
    }

    private boolean isValidTarget(LivingEntity entity) {
        if (entity == mc.player) return false;
        if (mc.player.distanceTo(entity) > distance.get().floatValue()) return false;

        // Проверка видимости
        if (raycast.get() && !mc.player.canSee(entity)) return false;

        // Фильтрация по типу
        if (entity instanceof PlayerEntity player) {
            if (!targets.get("Игроки")) return false;
            if (!targets.get("Друзья") && Manager.FRIEND_MANAGER.isFriend(player.getName().getString())) return false;
            if (!targets.get("Голые") && player.getArmorVisibility() <= 0) return false;
            if (player.isCreative()) return false;
        } else if (entity instanceof Monster || entity instanceof AnimalEntity || entity instanceof VillagerEntity) {
            if (!targets.get("Мобы")) return false;
        }

        // Исключения
        if (entity instanceof ArmorStandEntity) return false;
        if (entity.isInvulnerable()) return false;
        if (!entity.isAlive()) return false;

        return true;
    }

    @Override
    protected void onDisable() {
        target = null;
        delayCounter = 0;
        wasAttacking = false;
        super.onDisable();
    }
}
ss?
 
Мгновенное плавное? как это стакается
бмоя первая тема, несудите строго , неплохой аим ботик, да простая функция но не так уж и плохо
AImBot:
Expand Collapse Copy
package ru.levin.modules.combat;

import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.decoration.ArmorStandEntity;
import net.minecraft.entity.mob.Monster;
import net.minecraft.entity.passive.AnimalEntity;
import net.minecraft.entity.passive.VillagerEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d;
import ru.levin.events.Event;
import ru.levin.events.impl.EventUpdate;
import ru.levin.manager.Manager;
import ru.levin.modules.Function;
import ru.levin.modules.FunctionAnnotation;
import ru.levin.modules.Type;
import ru.levin.modules.setting.BooleanSetting;
import ru.levin.modules.setting.MultiSetting;
import ru.levin.modules.setting.SliderSetting;
import ru.levin.util.math.GCDUtil;

import java.util.Arrays;

@FunctionAnnotation(name = "AimBot", desc = "Мгновенное плавное наведение", type = Type.Combat)
public class AimBot extends Function {
   
    public BooleanSetting player = new BooleanSetting("Игроки", true);
    public BooleanSetting golyPlayer = new BooleanSetting("Голые", true);
    public BooleanSetting mobs = new BooleanSetting("Мобы", false);
    public BooleanSetting friend = new BooleanSetting("Друзья", false);
    public MultiSetting targets = new MultiSetting(
            "Цели",
            Arrays.asList("Игроки", "Голые", "Мобы", "Друзья"),
            new String[]{"Игроки", "Голые", "Мобы", "Друзья"}
    );

    public SliderSetting speed = new SliderSetting("Скорость", 1.0f, 0.8f, 1.0f, 0.01f);
    public SliderSetting delay = new SliderSetting("Задержка", 0, 0, 3, 1);
    public SliderSetting distance = new SliderSetting("Дистанция", 3.2f, 1.5f, 6f, 0.1f);

    public BooleanSetting eatPause = new BooleanSetting("Пауза при еде", true);
    public BooleanSetting blockPause = new BooleanSetting("Пауза при блоке", true);
    public BooleanSetting onlyAttack = new BooleanSetting("Только при атаке", false);
    public BooleanSetting raycast = new BooleanSetting("Проверять видимость", true);
    public BooleanSetting silent = new BooleanSetting("Silent", false);
   
    private static LivingEntity target;
    private int delayCounter = 0;
    private boolean wasAttacking = false;

    public AimBot() {
        addSettings(targets, speed, delay, distance, eatPause, blockPause, onlyAttack, raycast, silent);
    }

    @Override
    public void onEvent(Event event) {
        if (!(event instanceof EventUpdate)) return;
        if (mc.player == null || mc.world == null) return;

        // Проверка пауз
        if (eatPause.get() && mc.player.isUsingItem()) return;
        if (blockPause.get() && mc.player.isBlocking()) return;

        if (onlyAttack.get()) {
            boolean attacking = mc.options.attackKey.isPressed();
            if (!attacking) {
                wasAttacking = false;
                return;
            }
            if (!wasAttacking && attacking) {
                delayCounter = 0;
                wasAttacking = true;
            }
        }
       
        if (target == null || !isValidTarget(target)) {
            updateTarget();
        }

        if (target == null) return;
       
        if (delayCounter < delay.get().intValue()) {
            delayCounter++;
            return;
        }
        delayCounter = 0;

        aimDirect(target);
    }

    private void aimDirect(LivingEntity entity) {
   
        Vec3d targetPos = entity.getPos().add(0, entity.getHeight() * 0.5, 0);
        Vec3d eyePos = mc.player.getEyePos();

        double dx = targetPos.x - eyePos.x;
        double dy = targetPos.y - eyePos.y;
        double dz = targetPos.z - eyePos.z;

        float targetYaw = (float) Math.toDegrees(Math.atan2(-dx, dz));
        float targetPitch = (float) Math.toDegrees(Math.atan2(-dy, Math.sqrt(dx * dx + dz * dz)));

        float currentYaw = mc.player.getYaw();
        float currentPitch = mc.player.getPitch();

        float yawDelta = MathHelper.wrapDegrees(targetYaw - currentYaw);
        float pitchDelta = targetPitch - currentPitch;

        float spd = speed.get().floatValue();

        float newYaw = currentYaw + yawDelta * spd;
        float newPitch = currentPitch + pitchDelta * spd;

        newPitch = MathHelper.clamp(newPitch, -90f, 90f);


        if (silent.get()) {
            mc.player.setYaw(newYaw);
            mc.player.setPitch(newPitch);
        } else {
            mc.player.setYaw(GCDUtil.applyGCD(newYaw, currentYaw));
            mc.player.setPitch(GCDUtil.applyGCD(newPitch, currentPitch));
        }
    }

    private void updateTarget() {
        LivingEntity bestTarget = null;
        double bestDistance = Double.MAX_VALUE;

        for (Entity entity : mc.world.getEntities()) {
            if (!(entity instanceof LivingEntity living)) continue;
            if (!isValidTarget(living)) continue;

            double dist = mc.player.distanceTo(living);
            if (dist < bestDistance) {
                bestDistance = dist;
                bestTarget = living;
            }
        }
        target = bestTarget;
    }

    private boolean isValidTarget(LivingEntity entity) {
        if (entity == mc.player) return false;
        if (mc.player.distanceTo(entity) > distance.get().floatValue()) return false;

        // Проверка видимости
        if (raycast.get() && !mc.player.canSee(entity)) return false;

        // Фильтрация по типу
        if (entity instanceof PlayerEntity player) {
            if (!targets.get("Игроки")) return false;
            if (!targets.get("Друзья") && Manager.FRIEND_MANAGER.isFriend(player.getName().getString())) return false;
            if (!targets.get("Голые") && player.getArmorVisibility() <= 0) return false;
            if (player.isCreative()) return false;
        } else if (entity instanceof Monster || entity instanceof AnimalEntity || entity instanceof VillagerEntity) {
            if (!targets.get("Мобы")) return false;
        }

        // Исключения
        if (entity instanceof ArmorStandEntity) return false;
        if (entity.isInvulnerable()) return false;
        if (!entity.isAlive()) return false;

        return true;
    }

    @Override
    protected void onDisable() {
        target = null;
        delayCounter = 0;
        wasAttacking = false;
        super.onDisable();
    }
}
 
моя первая тема, несудите строго , неплохой аим ботик, да простая функция но не так уж и плохо
AImBot:
Expand Collapse Copy
package ru.levin.modules.combat;

import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.decoration.ArmorStandEntity;
import net.minecraft.entity.mob.Monster;
import net.minecraft.entity.passive.AnimalEntity;
import net.minecraft.entity.passive.VillagerEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d;
import ru.levin.events.Event;
import ru.levin.events.impl.EventUpdate;
import ru.levin.manager.Manager;
import ru.levin.modules.Function;
import ru.levin.modules.FunctionAnnotation;
import ru.levin.modules.Type;
import ru.levin.modules.setting.BooleanSetting;
import ru.levin.modules.setting.MultiSetting;
import ru.levin.modules.setting.SliderSetting;
import ru.levin.util.math.GCDUtil;

import java.util.Arrays;

@FunctionAnnotation(name = "AimBot", desc = "Мгновенное плавное наведение", type = Type.Combat)
public class AimBot extends Function {
   
    public BooleanSetting player = new BooleanSetting("Игроки", true);
    public BooleanSetting golyPlayer = new BooleanSetting("Голые", true);
    public BooleanSetting mobs = new BooleanSetting("Мобы", false);
    public BooleanSetting friend = new BooleanSetting("Друзья", false);
    public MultiSetting targets = new MultiSetting(
            "Цели",
            Arrays.asList("Игроки", "Голые", "Мобы", "Друзья"),
            new String[]{"Игроки", "Голые", "Мобы", "Друзья"}
    );

    public SliderSetting speed = new SliderSetting("Скорость", 1.0f, 0.8f, 1.0f, 0.01f);
    public SliderSetting delay = new SliderSetting("Задержка", 0, 0, 3, 1);
    public SliderSetting distance = new SliderSetting("Дистанция", 3.2f, 1.5f, 6f, 0.1f);

    public BooleanSetting eatPause = new BooleanSetting("Пауза при еде", true);
    public BooleanSetting blockPause = new BooleanSetting("Пауза при блоке", true);
    public BooleanSetting onlyAttack = new BooleanSetting("Только при атаке", false);
    public BooleanSetting raycast = new BooleanSetting("Проверять видимость", true);
    public BooleanSetting silent = new BooleanSetting("Silent", false);
   
    private static LivingEntity target;
    private int delayCounter = 0;
    private boolean wasAttacking = false;

    public AimBot() {
        addSettings(targets, speed, delay, distance, eatPause, blockPause, onlyAttack, raycast, silent);
    }

    @Override
    public void onEvent(Event event) {
        if (!(event instanceof EventUpdate)) return;
        if (mc.player == null || mc.world == null) return;

        // Проверка пауз
        if (eatPause.get() && mc.player.isUsingItem()) return;
        if (blockPause.get() && mc.player.isBlocking()) return;

        if (onlyAttack.get()) {
            boolean attacking = mc.options.attackKey.isPressed();
            if (!attacking) {
                wasAttacking = false;
                return;
            }
            if (!wasAttacking && attacking) {
                delayCounter = 0;
                wasAttacking = true;
            }
        }
       
        if (target == null || !isValidTarget(target)) {
            updateTarget();
        }

        if (target == null) return;
       
        if (delayCounter < delay.get().intValue()) {
            delayCounter++;
            return;
        }
        delayCounter = 0;

        aimDirect(target);
    }

    private void aimDirect(LivingEntity entity) {
   
        Vec3d targetPos = entity.getPos().add(0, entity.getHeight() * 0.5, 0);
        Vec3d eyePos = mc.player.getEyePos();

        double dx = targetPos.x - eyePos.x;
        double dy = targetPos.y - eyePos.y;
        double dz = targetPos.z - eyePos.z;

        float targetYaw = (float) Math.toDegrees(Math.atan2(-dx, dz));
        float targetPitch = (float) Math.toDegrees(Math.atan2(-dy, Math.sqrt(dx * dx + dz * dz)));

        float currentYaw = mc.player.getYaw();
        float currentPitch = mc.player.getPitch();

        float yawDelta = MathHelper.wrapDegrees(targetYaw - currentYaw);
        float pitchDelta = targetPitch - currentPitch;

        float spd = speed.get().floatValue();

        float newYaw = currentYaw + yawDelta * spd;
        float newPitch = currentPitch + pitchDelta * spd;

        newPitch = MathHelper.clamp(newPitch, -90f, 90f);


        if (silent.get()) {
            mc.player.setYaw(newYaw);
            mc.player.setPitch(newPitch);
        } else {
            mc.player.setYaw(GCDUtil.applyGCD(newYaw, currentYaw));
            mc.player.setPitch(GCDUtil.applyGCD(newPitch, currentPitch));
        }
    }

    private void updateTarget() {
        LivingEntity bestTarget = null;
        double bestDistance = Double.MAX_VALUE;

        for (Entity entity : mc.world.getEntities()) {
            if (!(entity instanceof LivingEntity living)) continue;
            if (!isValidTarget(living)) continue;

            double dist = mc.player.distanceTo(living);
            if (dist < bestDistance) {
                bestDistance = dist;
                bestTarget = living;
            }
        }
        target = bestTarget;
    }

    private boolean isValidTarget(LivingEntity entity) {
        if (entity == mc.player) return false;
        if (mc.player.distanceTo(entity) > distance.get().floatValue()) return false;

        // Проверка видимости
        if (raycast.get() && !mc.player.canSee(entity)) return false;

        // Фильтрация по типу
        if (entity instanceof PlayerEntity player) {
            if (!targets.get("Игроки")) return false;
            if (!targets.get("Друзья") && Manager.FRIEND_MANAGER.isFriend(player.getName().getString())) return false;
            if (!targets.get("Голые") && player.getArmorVisibility() <= 0) return false;
            if (player.isCreative()) return false;
        } else if (entity instanceof Monster || entity instanceof AnimalEntity || entity instanceof VillagerEntity) {
            if (!targets.get("Мобы")) return false;
        }

        // Исключения
        if (entity instanceof ArmorStandEntity) return false;
        if (entity.isInvulnerable()) return false;
        if (!entity.isAlive()) return false;

        return true;
    }

    @Override
    protected void onDisable() {
        target = null;
        delayCounter = 0;
        wasAttacking = false;
        super.onDisable();
    }
}
/up годно
 
так гпт же, но ладно
если он хоть чет понимает то в этом нет ничего страшного (просто я сидел в дс с типом который пнг с помощью гпт двигал потому что сам не понимал где двигать), а так не тестил аимбот
 
Назад
Сверху Снизу