- Выберите загрузчик игры
- Прочие моды
короче вот вам килка которая обходит спуки 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;
}
}
Последнее редактирование: