KillAura Target Selector
Влияние на механику Minecraft
Перебирает список загруженных сущностей, фильтрует доступных игроков и мобов, сортирует их по наименьшей дистанции или уровню здоровья (Comparator) и циклично распределяет авто-удары по целям.
Анализируемые функции и API
ClientWorld.getEntities
Получение коллекции сущностей из мира клиента (method_18112).
Comparator.comparingDouble
Сортировка сущностей по дистанции или здоровью для приоритизации DPS.
Реализация в моде (Исходный код)
// Developer Source (Fabric / Yarn mappings)
public class KillAuraTargeting {
public static List<PlayerEntity> findTargets(MinecraftClient client, double range) {
return StreamSupport.stream(client.world.getEntities().spliterator(), false)
.filter(e -> e instanceof PlayerEntity && e != client.player && e.isAlive())
.map(e -> (PlayerEntity) e)
.filter(e -> client.player.squaredDistanceTo(e) <= range * range)
.sorted(Comparator.comparingDouble(e -> client.player.squaredDistanceTo(e)))
.collect(Collectors.toList());
}
}
Декомпилированный вид (Vineflower)
// Decompiled with Vineflower 1.12 (Intermediary mappings)
public class KillAuraTargeting {
public static List<class_1657> findTargets(class_310 client, double range) {
return StreamSupport.stream(client.field_1687.method_18112().spliterator(), false)
.filter(e -> e instanceof class_1657 && e != client.field_1724 && e.method_5805())
.map(e -> (class_1657)e)
.filter(e -> client.field_1724.method_5739(e) <= range * range)
.sorted(Comparator.comparingDouble(e -> client.field_1724.method_5739(e)))
.collect(Collectors.toList());
}
}
Сигнатура байткода и статический детект
Итерация по сущностям мира (getEntities) в связке с расчетом дистанции (squaredDistanceTo) и циклом атаки.