Исходник Targets отдельной функцией | Excellent

Начинающий
Статус
Оффлайн
Регистрация
2 Окт 2024
Сообщения
55
Реакции[?]
0
Поинты[?]
0

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

SS - дядь какой сс
1 шаг: заходим в ModuleManager и возрашаем туда класс Targets
2 шаг: заходим в класс Targets и меняем его на

Targets:
package dev.excellent.client.module.impl.combat;

import dev.excellent.client.module.api.Category;
import dev.excellent.client.module.api.Module;
import dev.excellent.client.module.api.ModuleInfo;
import dev.excellent.impl.util.pattern.Singleton;
import dev.excellent.impl.value.impl.BooleanValue;
import dev.excellent.impl.value.impl.ModeValue;
import dev.excellent.impl.value.impl.MultiBooleanValue;
import dev.excellent.impl.value.mode.SubMode;
import lombok.Getter;

[USER=270918]@Getter[/USER]
@ModuleInfo(name = "Targets",
        description = "Выбор и сортировка целей.",
        category = Category.CLIENT,
        autoEnabled = true,
        allowDisable = false)
public class Targets extends Module {
    public static Singleton<Targets> singleton = Singleton.create(() -> Module.link(Targets.class));
    private final MultiBooleanValue targets = new MultiBooleanValue("Таргеты", this)
            .add(new BooleanValue("Игроки", true),
                    new BooleanValue("Голые", true),
                    new BooleanValue("Невидимые", true),
                    new BooleanValue("Мобы", true));

    public final ModeValue sortMode = new ModeValue("Сортировать по", this)
            .add(SubMode.of("Всему", "Здоровью", "Дистанции", "Время жизни"));

    public Targets() {
    }
}
3 шаг: заходим в TargetHandler и меняем его на

TargetHandler:
package dev.excellent.client.target;

import dev.excellent.Excellent;
import dev.excellent.api.event.impl.player.UpdateEvent;
import dev.excellent.api.interfaces.event.Listener;
import dev.excellent.api.interfaces.game.IMinecraft;
import dev.excellent.client.module.impl.combat.AntiBot;
import dev.excellent.client.module.impl.combat.KillAura;
import dev.excellent.client.module.impl.combat.Targets;
import dev.excellent.impl.util.player.PlayerUtil;
import dev.excellent.impl.util.rotation.AuraUtil;
import dev.excellent.impl.value.impl.ModeValue;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.MobEntity;
import net.minecraft.entity.item.ArmorStandEntity;
import net.minecraft.entity.player.PlayerEntity;

import java.util.Comparator;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.Predicate;
import java.util.stream.Collectors;

public class TargetHandler implements IMinecraft {

    private static final List<LivingEntity> entities = new CopyOnWriteArrayList<>();
    private int countLoadedEntities;

    public TargetHandler() {
        Excellent.getInst().getEventBus().register(this);
    }

    public final Listener<UpdateEvent> onUpdate = event -> {
        if (mc.player.ticksExisted % 100 == 0 || countLoadedEntities != mc.world.getCountLoadedEntities()) {
            updateTargetList();
            countLoadedEntities = mc.world.getCountLoadedEntities();
        }
    };

    private void updateTargetList() {
        entities.clear();
        entities.addAll(mc.world.loadedEntityList().stream()
                .filter(entity -> (entity instanceof LivingEntity) && entity != mc.player)
                .map(entity -> (LivingEntity) entity)
                .toList());
    }

    public static List<LivingEntity> getTargets(final double range) {
        return entities.stream()
                .filter(ENTITY_FILTER)
                .filter(entity -> mc.player.getDistance(entity) < range && mc.world.loadedEntityList().contains(entity))
                .sorted(Comparator.comparingDouble(entity -> mc.player.getDistanceSq(entity)))
                .collect(Collectors.toList());
    }

    public static LivingEntity getTarget(final double range) {
        return findTarget(range);
    }

    private static final Predicate<LivingEntity> ENTITY_FILTER = TargetHandler::isValidTarget;

    private static boolean isValidTarget(final LivingEntity entity) {
        if (entity == null) return false;
        final Targets targets = Targets.singleton.get();
        if (!mc.player.canEntityBeSeen(entity)) return false;
        if (entity.getHealth() <= 0 || !entity.isAlive() || entity.equals(mc.player)) return false;
        if (entity instanceof ArmorStandEntity) return false;
        if (!targets.getTargets().isEnabled("Невидимые") && entity.isInvisible()) {
            return false;
        }
        if (entity instanceof PlayerEntity player) {
            if (AntiBot.singleton.get().isEnabled() && AntiBot.contains(player)) return false;
            if (Excellent.getInst().getFriendManager().isFriend(player.getGameProfile().getName())) return false;
            if (!targets.getTargets().isEnabled("Игроки")) {
                return false;
            } else if (!targets.getTargets().isEnabled("Голые") && player.getTotalArmorValue() <= 0) {
                return false;
            }
        }
        if (entity instanceof MobEntity) {
            return targets.getTargets().isEnabled("Мобы");
        }
        return true;
    }

    private static LivingEntity findTarget(final double range) {
        List<LivingEntity> validTargets = getTargets(range);
        ModeValue sortMode = Targets.singleton.get().sortMode;
        if (validTargets.size() > 1) {
            if (sortMode.is("Всему")) {
                validTargets.sort((o1, o2) -> {
                    int armorDiff = Double.compare(compareArmor(o1, o2), 0);
                    if (armorDiff != 0) {
                        return armorDiff;
                    }
                    int healthDiff = Double.compare(compareHealth(o1, o2), 0);
                    if (healthDiff != 0) {
                        return healthDiff;
                    }
                    return Double.compare(AuraUtil.getVector(o1).length(), AuraUtil.getVector(o2).length());
                });
            } else if (sortMode.is("Дистанции")) {
                validTargets.sort(Comparator.comparingDouble(mc.player::getDistance).thenComparingDouble(PlayerUtil::getEntityHealth));
            } else if (sortMode.is("Время жизни")) {
                validTargets.sort(Comparator.comparingDouble(o -> o.ticksExisted));
            } else if (sortMode.is("Здоровью")) {
                validTargets.sort(Comparator.comparingDouble(PlayerUtil::getEntityHealth).thenComparingDouble(mc.player::getDistance));
            }
            return validTargets.get(0);
        } else if (validTargets.size() == 1) {
            return validTargets.get(0);
        } else {
            return null;
        }
    }

    private static int compareArmor(LivingEntity o1, LivingEntity o2) {
        if (o1 instanceof PlayerEntity p1 && o2 instanceof PlayerEntity p2) {
            return Double.compare(-PlayerUtil.getEntityArmor(p1), -PlayerUtil.getEntityArmor(p2));
        }
        return Double.compare(-o1.getTotalArmorValue(), -o2.getTotalArmorValue());
    }

    private static int compareHealth(LivingEntity o1, LivingEntity o2) {
        double health1 = PlayerUtil.getEntityHealth(o1);
        double health2 = PlayerUtil.getEntityHealth(o2);
        return Double.compare(health1, health2);
    }
}
4 шаг удаляем из KillAura numbervalue с выбором таргетов и приорететом

И вуаля все работает!
 
Read Only
Статус
Оффлайн
Регистрация
19 Июл 2024
Сообщения
207
Реакции[?]
0
Поинты[?]
0
SS - дядь какой сс
1 шаг: заходим в ModuleManager и возрашаем туда класс Targets
2 шаг: заходим в класс Targets и меняем его на

Targets:
package dev.excellent.client.module.impl.combat;

import dev.excellent.client.module.api.Category;
import dev.excellent.client.module.api.Module;
import dev.excellent.client.module.api.ModuleInfo;
import dev.excellent.impl.util.pattern.Singleton;
import dev.excellent.impl.value.impl.BooleanValue;
import dev.excellent.impl.value.impl.ModeValue;
import dev.excellent.impl.value.impl.MultiBooleanValue;
import dev.excellent.impl.value.mode.SubMode;
import lombok.Getter;

[USER=270918]@Getter[/USER]
@ModuleInfo(name = "Targets",
        description = "Выбор и сортировка целей.",
        category = Category.CLIENT,
        autoEnabled = true,
        allowDisable = false)
public class Targets extends Module {
    public static Singleton<Targets> singleton = Singleton.create(() -> Module.link(Targets.class));
    private final MultiBooleanValue targets = new MultiBooleanValue("Таргеты", this)
            .add(new BooleanValue("Игроки", true),
                    new BooleanValue("Голые", true),
                    new BooleanValue("Невидимые", true),
                    new BooleanValue("Мобы", true));

    public final ModeValue sortMode = new ModeValue("Сортировать по", this)
            .add(SubMode.of("Всему", "Здоровью", "Дистанции", "Время жизни"));

    public Targets() {
    }
}
3 шаг: заходим в TargetHandler и меняем его на

TargetHandler:
package dev.excellent.client.target;

import dev.excellent.Excellent;
import dev.excellent.api.event.impl.player.UpdateEvent;
import dev.excellent.api.interfaces.event.Listener;
import dev.excellent.api.interfaces.game.IMinecraft;
import dev.excellent.client.module.impl.combat.AntiBot;
import dev.excellent.client.module.impl.combat.KillAura;
import dev.excellent.client.module.impl.combat.Targets;
import dev.excellent.impl.util.player.PlayerUtil;
import dev.excellent.impl.util.rotation.AuraUtil;
import dev.excellent.impl.value.impl.ModeValue;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.MobEntity;
import net.minecraft.entity.item.ArmorStandEntity;
import net.minecraft.entity.player.PlayerEntity;

import java.util.Comparator;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.Predicate;
import java.util.stream.Collectors;

public class TargetHandler implements IMinecraft {

    private static final List<LivingEntity> entities = new CopyOnWriteArrayList<>();
    private int countLoadedEntities;

    public TargetHandler() {
        Excellent.getInst().getEventBus().register(this);
    }

    public final Listener<UpdateEvent> onUpdate = event -> {
        if (mc.player.ticksExisted % 100 == 0 || countLoadedEntities != mc.world.getCountLoadedEntities()) {
            updateTargetList();
            countLoadedEntities = mc.world.getCountLoadedEntities();
        }
    };

    private void updateTargetList() {
        entities.clear();
        entities.addAll(mc.world.loadedEntityList().stream()
                .filter(entity -> (entity instanceof LivingEntity) && entity != mc.player)
                .map(entity -> (LivingEntity) entity)
                .toList());
    }

    public static List<LivingEntity> getTargets(final double range) {
        return entities.stream()
                .filter(ENTITY_FILTER)
                .filter(entity -> mc.player.getDistance(entity) < range && mc.world.loadedEntityList().contains(entity))
                .sorted(Comparator.comparingDouble(entity -> mc.player.getDistanceSq(entity)))
                .collect(Collectors.toList());
    }

    public static LivingEntity getTarget(final double range) {
        return findTarget(range);
    }

    private static final Predicate<LivingEntity> ENTITY_FILTER = TargetHandler::isValidTarget;

    private static boolean isValidTarget(final LivingEntity entity) {
        if (entity == null) return false;
        final Targets targets = Targets.singleton.get();
        if (!mc.player.canEntityBeSeen(entity)) return false;
        if (entity.getHealth() <= 0 || !entity.isAlive() || entity.equals(mc.player)) return false;
        if (entity instanceof ArmorStandEntity) return false;
        if (!targets.getTargets().isEnabled("Невидимые") && entity.isInvisible()) {
            return false;
        }
        if (entity instanceof PlayerEntity player) {
            if (AntiBot.singleton.get().isEnabled() && AntiBot.contains(player)) return false;
            if (Excellent.getInst().getFriendManager().isFriend(player.getGameProfile().getName())) return false;
            if (!targets.getTargets().isEnabled("Игроки")) {
                return false;
            } else if (!targets.getTargets().isEnabled("Голые") && player.getTotalArmorValue() <= 0) {
                return false;
            }
        }
        if (entity instanceof MobEntity) {
            return targets.getTargets().isEnabled("Мобы");
        }
        return true;
    }

    private static LivingEntity findTarget(final double range) {
        List<LivingEntity> validTargets = getTargets(range);
        ModeValue sortMode = Targets.singleton.get().sortMode;
        if (validTargets.size() > 1) {
            if (sortMode.is("Всему")) {
                validTargets.sort((o1, o2) -> {
                    int armorDiff = Double.compare(compareArmor(o1, o2), 0);
                    if (armorDiff != 0) {
                        return armorDiff;
                    }
                    int healthDiff = Double.compare(compareHealth(o1, o2), 0);
                    if (healthDiff != 0) {
                        return healthDiff;
                    }
                    return Double.compare(AuraUtil.getVector(o1).length(), AuraUtil.getVector(o2).length());
                });
            } else if (sortMode.is("Дистанции")) {
                validTargets.sort(Comparator.comparingDouble(mc.player::getDistance).thenComparingDouble(PlayerUtil::getEntityHealth));
            } else if (sortMode.is("Время жизни")) {
                validTargets.sort(Comparator.comparingDouble(o -> o.ticksExisted));
            } else if (sortMode.is("Здоровью")) {
                validTargets.sort(Comparator.comparingDouble(PlayerUtil::getEntityHealth).thenComparingDouble(mc.player::getDistance));
            }
            return validTargets.get(0);
        } else if (validTargets.size() == 1) {
            return validTargets.get(0);
        } else {
            return null;
        }
    }

    private static int compareArmor(LivingEntity o1, LivingEntity o2) {
        if (o1 instanceof PlayerEntity p1 && o2 instanceof PlayerEntity p2) {
            return Double.compare(-PlayerUtil.getEntityArmor(p1), -PlayerUtil.getEntityArmor(p2));
        }
        return Double.compare(-o1.getTotalArmorValue(), -o2.getTotalArmorValue());
    }

    private static int compareHealth(LivingEntity o1, LivingEntity o2) {
        double health1 = PlayerUtil.getEntityHealth(o1);
        double health2 = PlayerUtil.getEntityHealth(o2);
        return Double.compare(health1, health2);
    }
}
4 шаг удаляем из KillAura numbervalue с выбором таргетов и приорететом

И вуаля все работает!
нормолдаке
 
Сверху Снизу