- Выберите загрузчик игры
- Прочие моды
ss -
Код:
package combat;
import com.google.common.eventbus.Subscribe;
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ThreadLocalRandom;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.player.ClientPlayerEntity;
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.inventory.container.ClickType;
import net.minecraft.inventory.container.Slot;
import net.minecraft.item.AxeItem;
import net.minecraft.item.Items;
import net.minecraft.item.SwordItem;
import net.minecraft.network.IPacket;
import net.minecraft.network.play.client.CAnimateHandPacket;
import net.minecraft.network.play.client.CHeldItemChangePacket;
import net.minecraft.potion.Effects;
import net.minecraft.tags.FluidTags;
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 = "AttackAura", type = ModuleType.Combat)
public class KillAura extends Module {
private final EnumSetting attackMode = new EnumSetting("Режим", "СпукиТайм", new String[]{"СпукиТайм", "ФанТайм", "Матикс", "Плавный", "Резкий", "Быстрый"});
private final FloatSetting attackRange = new FloatSetting("Дальность атаки", 3.0F, 3.0F, 6.0F, 0.1F);
private final FloatSetting rotationRange = new FloatSetting("Дальность поворота", 1.0F, 0.0F, 4.0F, 0.1F);
private final MultiBooleanSetting targetSettings = new MultiBooleanSetting("Цели", new BooleanOption[]{
new BooleanOption("Игроки", true),
new BooleanOption("Без брони", true),
new BooleanOption("Мобы", false),
new BooleanOption("Животные", false),
new BooleanOption("Невидимые без брони", true),
new BooleanOption("Невидимые", true),
new BooleanOption("Друзья", false)
});
private final EnumSetting targetEsp = new EnumSetting("Отображение цели", "1", new String[]{"1", "2", "3", "4", "5", "Нет"});
private final EnumSetting critMode = new EnumSetting("Режим критического удара", "Только критические", new String[]{"Только критические", "Умные критические"});
private final EnumSetting attackStyle = new EnumSetting("Стиль атаки", "1.9", new String[]{"1.9", "1.8"});
private final MultiBooleanSetting considerFactors = new MultiBooleanSetting("Учитывать", new BooleanOption[]{
new BooleanOption("Здоровье", true),
new BooleanOption("Броня", true),
new BooleanOption("Дальность", true),
new BooleanOption("Зелья", true)
});
private final MultiBooleanSetting checks = new MultiBooleanSetting("Проверки", new BooleanOption[]{
new BooleanOption("Не атаковать во время еды", true),
new BooleanOption("Только меч", false),
new BooleanOption("Атаковать через стены", false),
new BooleanOption("Отключить при смерти", true)
});
public static final BooleanOption freeSprint = new BooleanOption("Свободный спринт", true);
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
private final Timer perfectDelay = new Timer();
private final Timer stopWatch = new Timer();
private final Script script = new Script();
private LivingEntity target;
private boolean canCrit;
private int sprintStopTicks;
private int rotationTicks;
private Timer yawUpdate = new Timer();
private Vector2f lerpRotation = Vector2f.ZERO;
private Vector2f legacyRotation = Vector2f.ZERO;
private int rotationCount;
private long lastTickTime = -1L;
private long lastTickTime2 = -1L;
public KillAura() {
addSettings(new Setting[]{attackMode, attackRange, rotationRange, targetSettings, considerFactors, targetEsp, critMode, attackStyle, checks, freeSprint});
}
@Override
public void toggle() {
super.toggle();
reset();
}
@Subscribe
public void onPacket(PacketEvent event) {
IPacket<?> packet = event.getPacket();
if (packet instanceof CHeldItemChangePacket) {
perfectDelay.reset(550L);
} else if (packet instanceof CAnimateHandPacket) {
perfectDelay.reset(450L);
}
}
@Subscribe
public void onInput(InputEvent event) {
if (sprintStopTicks > 0) {
event.setForward(0.0F);
sprintStopTicks--;
}
}
@Subscribe
public void onPlayerDeath(PlayerDeathEvent event) {
reset();
}
@Subscribe
public void onWorldUnload(WorldUnloadEvent event) {
reset();
}
@Subscribe
public void onMotion(MotionEvent event) {
if (target != null && Minecraft.getInstance().player != null && Minecraft.getInstance().world != null) {
boolean fallCheck = Minecraft.getInstance().player.nextFallDistance != 0.0F;
canCrit = !event.isToGround() && event.getFrom().y > event.getTo().y && fallCheck;
} else {
canCrit = false;
}
}
@Subscribe
public void onTick(TickEvent event) {
script.update();
if (checks.getValueByName("Отключить при смерти").get() && !Minecraft.getInstance().player.isAlive()) {
toggle();
return;
}
if (target == null || !isValid(target)) {
updateTarget();
}
if (target != null && Minecraft.getInstance().player != null && Minecraft.getInstance().world != null) {
if (!checkReturn() && !shieldBreaker()) {
updateAttack();
}
} else {
reset();
}
}
@Subscribe
public void onRender(RenderEvent event) {
if (shouldAttack()) {
rotationTicks = 2;
}
if (target != null && Minecraft.getInstance().player != null && Minecraft.getInstance().world != null) {
if (checkReturn()) {
return;
}
if (!attackMode.is("Резкий") && !attackMode.is("Резкий-Fov")) {
updateRotation();
} else if (rotationTicks > 0) {
updateRotation();
rotationTicks--;
}
} else {
reset();
}
}
private void updateRotation() {
float randomYawOffset = 0.0F;
float randomPitchOffset = 0.0F;
Vector3d targetPos = target.getPositionVec().add(0.0, MathHelper.clamp(Minecraft.getInstance().player.getEyePosition(Minecraft.getInstance().getRenderPartialTicks()).y - target.getPosY(), 0.0, 1.0), 0.0);
Vector3d vec = targetPos.subtract(Minecraft.getInstance().player.getEyePosition(Minecraft.getInstance().getRenderPartialTicks())).normalize();
if (attackMode.is("Матикс")) {
randomYawOffset = ThreadLocalRandom.current().nextFloat(-1.2222222F, 1.2222222F);
randomPitchOffset = ThreadLocalRandom.current().nextFloat(-1.2222222F, 1.2222222F);
} else if (attackMode.is("Плавный")) {
randomYawOffset = ThreadLocalRandom.current().nextFloat(-1.0F, 1.0F);
}
float rawYaw = (float) Math.toDegrees(Math.atan2(-vec.x, vec.z)) + randomYawOffset;
float rawPitch = (float) MathHelper.clamp(-Math.toDegrees(Math.atan2(vec.y, Math.hypot(vec.x, vec.z))), -90.0F, 90.0F) + randomPitchOffset;
float speed = new SecureRandom().nextBoolean() ? randomLerp(0.1F, 0.3F) : randomLerp(0.3F, 0.5F);
legacyRotation = new Vector2f(wrapLerp(speed, MathHelper.wrapDegrees(legacyRotation.x), MathHelper.wrapDegrees(rawYaw)),
wrapLerp(speed / 2.0F, legacyRotation.y, MathHelper.clamp(rawPitch, -90.0F, 90.0F)));
float yaw = Minecraft.getInstance().player.rotationYaw + (float) Math.ceil(MathHelper.wrapDegrees(legacyRotation.x) - MathHelper.wrapDegrees(Minecraft.getInstance().player.rotationYaw));
float pitch = Minecraft.getInstance().player.rotationPitch + (float) Math.ceil(MathHelper.wrapDegrees(legacyRotation.y) - MathHelper.wrapDegrees(Minecraft.getInstance().player.rotationPitch));
Rotation rotation = new Rotation(yaw, pitch);
if (attackMode.is("Матрица")) {
RotationUtils.update(rotation, 90.0F, 90.0F, 25.0F, 25.0F, 0, 1, false);
} else if (attackMode.is("Плавный")) {
RotationUtils.update(rotation, randomLerp(6.0F, 17.0F), randomLerp(1.0F, 3.0F), randomLerp(20.0F, 30.0F), randomLerp(20.0F, 30.0F), 0, 1, false);
} else if (attackMode.is("СпукиТайм")) {
long tickTime = System.currentTimeMillis() / 100L;
if (lastTickTime2 != tickTime) {
lastTickTime2 = tickTime;
float yawOffset = (float) Math.ceil((1.0F - cooldownFromLastSwing()) * randomLerp(15.0F, 25.0F) * (rotationCount == 0 ? 1 : -1));
float pitchOffset = (float) Math.ceil((1.0F - cooldownFromLastSwing()) * randomLerp(5.0F, 7.0F) * (rotationCount == 0 ? 1 : -1));
boolean tooFast = cooldownFromLastSwing() > 0.5F;
lerpRotation = new Vector2f(wrapLerp(speed, MathHelper.wrapDegrees(lerpRotation.x), MathHelper.wrapDegrees(rawYaw + yawOffset)),
wrapLerp(speed / 2.0F, lerpRotation.y, MathHelper.clamp(rawPitch + pitchOffset, -90.0F, 90.0F)));
yaw = Minecraft.getInstance().player.rotationYaw + (float) Math.ceil(MathHelper.wrapDegrees(lerpRotation.x) - MathHelper.wrapDegrees(Minecraft.getInstance().player.rotationYaw));
pitch = Minecraft.getInstance().player.rotationPitch + (float) Math.ceil(MathHelper.wrapDegrees(lerpRotation.y) - MathHelper.wrapDegrees(Minecraft.getInstance().player.rotationPitch));
Rotation rotationFT = new Rotation(yaw, pitch);
RotationUtils.update(rotationFT, !tooFast && !rayTrace() ? 8.0F : 7.0F, 11.0F, 2.0F, 2.0F, 0, 5, false);
} else {
float yawOffset = (float) Math.ceil((1.0F - cooldownFromLastSwing()) * randomLerp(15.0F, 25.0F) * (rotationCount == 0 ? 1 : -1));
float pitchOffset = (float) Math.ceil((1.0F - cooldownFromLastSwing()) * randomLerp(5.0F, 7.0F) * (rotationCount == 0 ? 1 : -1));
boolean tooFast = cooldownFromLastSwing() > 0.5F;
lerpRotation = new Vector2f(wrapLerp(speed, MathHelper.wrapDegrees(lerpRotation.x), MathHelper.wrapDegrees(rawYaw + yawOffset)),
wrapLerp(speed / 2.0F, lerpRotation.y, MathHelper.clamp(rawPitch + pitchOffset, -90.0F, 90.0F)));
yaw = Minecraft.getInstance().player.rotationYaw + (float) Math.ceil(MathHelper.wrapDegrees(lerpRotation.x) - MathHelper.wrapDegrees(Minecraft.getInstance().player.rotationYaw));
pitch = Minecraft.getInstance().player.rotationPitch + (float) Math.ceil(MathHelper.wrapDegrees(lerpRotation.y) - MathHelper.wrapDegrees(Minecraft.getInstance().player.rotationPitch));
Rotation rotationFT = new Rotation(yaw, pitch);
RotationUtils.update(rotationFT, !tooFast && !rayTrace() ? 3.0F : new SecureRandom().nextFloat(), 7.0F, 2.0F, 2.0F, 0, 5, false);
}
} else if (attackMode.is("ФанТайм")) {
float cos = (float) Math.cos(System.currentTimeMillis() / 100.0F);
float sin = (float) Math.sin(System.currentTimeMillis() / 100.0F);
float yawOffset = (float) Math.ceil(randomLerp(6.0F, 12.0F) * cos + (1.0F - cooldownFromLastSwing()) * randomLerp(60.0F, 90.0F) * (rotationCount == 0 ? 1 : -1));
float pitchOffset = (float) Math.ceil(randomLerp(6.0F, 12.0F) * sin + (1.0F - cooldownFromLastSwing()) * randomLerp(15.0F, 45.0F) * (rotationCount == 0 ? 1 : -1));
boolean tooFast = cooldownFromLastSwing() > 0.5F;
lerpRotation = new Vector2f(wrapLerp(speed, MathHelper.wrapDegrees(lerpRotation.x), MathHelper.wrapDegrees(rawYaw + yawOffset)),
wrapLerp(speed / 2.0F, lerpRotation.y, MathHelper.clamp(rawPitch + pitchOffset, -90.0F, 90.0F)));
yaw = Minecraft.getInstance().player.rotationYaw + (float) Math.ceil(MathHelper.wrapDegrees(lerpRotation.x) - MathHelper.wrapDegrees(Minecraft.getInstance().player.rotationYaw));
pitch = Minecraft.getInstance().player.rotationPitch + (float) Math.ceil(MathHelper.wrapDegrees(lerpRotation.y) - MathHelper.wrapDegrees(Minecraft.getInstance().player.rotationPitch));
Rotation rotationFT = new Rotation(yaw, pitch);
RotationUtils.update(rotationFT, !tooFast && !rayTrace() ? 3.0F : new SecureRandom().nextFloat(), 10.0F, 3.0F, 3.0F, 1, 5, false);
} else if (attackMode.is("Быстрый")) {
RotationUtils.update(rotation, 360.0F, 360.0F, 0, 1);
}
}
public float cooldownFromLastSwing() {
return MathHelper.clamp((float) Minecraft.getInstance().player.getTicksSinceLastSwing() / randomLerp(8.0F, 12.0F), 0.0F, 1.0F);
}
public float wrapLerp(float step, float input, float target) {
return input + step * MathHelper.wrapDegrees(target - input);
}
public float randomLerp(float min, float max) {
return MathUtils.lerp(max, min, new SecureRandom().nextFloat());
}
private void updateAttack() {
if (shouldAttack() && rayTrace() && EntityUtils.getStrictDistance(target) < attackRange.get()) {
boolean isInLiquid = Minecraft.getInstance().player.isActualySwimming() ||
Minecraft.getInstance().player.isSwimming() ||
Minecraft.getInstance().player.areEyesInFluid(FluidTags.WATER) ||
Minecraft.getInstance().player.areEyesInFluid(FluidTags.LAVA);
boolean sprinting = Minecraft.getInstance().player.isSprinting();
if (!isInLiquid && sprinting) {
sprintStopTicks = 1;
if (Minecraft.getInstance().player.serverSprintState) {
return;
}
}
if (attackStyle.is("1.8")) {
stopWatch.setLastMS((long) (30.0F + Math.random() * 20.0F));
}
if (attackMode.is("Резкий")) {
long time = System.currentTimeMillis();
float shakeX = (float) (Math.sin(time / 50.0F) * 10.0F + Math.sin(time / 80.0F) * 5.0F);
float shakeY = (float) (Math.cos(time / 60.0F) * 8.0F + Math.cos(time / 90.0F) * 4.0F) * 0.8F;
float smoothFactor = 1.0F;
float smoothX = 0.0F;
float smoothY = 0.0F;
smoothX += (shakeX - smoothX) * smoothFactor;
smoothY += (shakeY - smoothY) * smoothFactor;
Vector2f targetRot = RotationUtils.calculate(target);
int returnSpeed = ThreadLocalRandom.current().nextInt(38, 44);
RotationUtils.update(new Rotation(targetRot.x + smoothX, targetRot.y + smoothY), 180.0F, returnSpeed, 0, 5);
}
attackEntity(target);
rotationCount = (rotationCount + 1) % 2;
canCrit = false;
stopWatch.reset();
}
}
private boolean shieldBreaker() {
Slot axeSlot = InventoryUtils.getAxeSlot();
if (target.getActiveItemStack().getItem() == Items.SHIELD && axeSlot != null && rayTrace()) {
InventoryUtils.clickSlot(axeSlot, Minecraft.getInstance().player.inventory.currentItem, ClickType.SWAP, true);
attackEntity(target);
InventoryUtils.clickSlot(axeSlot, Minecraft.getInstance().player.inventory.currentItem, ClickType.SWAP, true);
return true;
}
return false;
}
private boolean checkReturn() {
if (Minecraft.getInstance().player.isHandActive() && checks.getValueByName("Не атаковать во время еды").get()) {
return true;
}
if (!(Minecraft.getInstance().player.getHeldItemMainhand().getItem() instanceof AxeItem) &&
!(Minecraft.getInstance().player.getHeldItemMainhand().getItem() instanceof SwordItem) &&
checks.getValueByName("Только меч").get()) {
return true;
}
return false;
}
private void attackEntity(Entity entity) {
Minecraft.getInstance().playerController.attackEntity(Minecraft.getInstance().player, entity);
Minecraft.getInstance().player.swingArm(Hand.MAIN_HAND);
}
private void updateTarget() {
List<LivingEntity> targets = new ArrayList<>();
for (Entity entity : Minecraft.getInstance().world.getAllEntities()) {
if (entity instanceof LivingEntity living && isValid(living)) {
targets.add(living);
}
}
if (targets.isEmpty()) {
target = null;
} else if (targets.size() == 1) {
target = targets.get(0);
} else {
targets.sort(Comparator.comparingDouble(entity -> EntityUtils.entityScore(entity,
considerFactors.getValueByName("Здоровье").get(),
considerFactors.getValueByName("Броня").get(),
considerFactors.getValueByName("Дальность").get(),
attackRange.get() + rotationRange.get(),
considerFactors.getValueByName("Зелья").get()));
target = targets.get(0);
}
}
private boolean isValid(LivingEntity entity) {
if (entity instanceof ClientPlayerEntity || entity.ticksExisted < 3) {
return false;
}
if (Minecraft.getInstance().player.getDistanceEyePos(entity) > (attackRange.get() + rotationRange.get())) {
return false;
}
if (!checks.getValueByName("Атаковать через стены").get() && !Minecraft.getInstance().player.canEntityBeSeen(entity)) {
return false;
}
AntiBot antiBot = ModuleManager.getInstance().getAntiBot();
if (entity == ModuleManager.getInstance().getFreeCam().fakePlayer) {
return false;
}
if (entity instanceof PlayerEntity player) {
if (AntiBot.isBot(player) && antiBot.isEnabled()) {
return false;
}
if (!targetSettings.getValueByName("Друзья").get() && FriendManager.isFriend(player.getName().getString())) {
return false;
}
if (player.getName().getString().equalsIgnoreCase(Minecraft.getInstance().player.getName().getString())) {
return false;
}
if (!targetSettings.getValueByName("Игроки").get()) {
return false;
}
if (player.getTotalArmorValue() == 0 && !targetSettings.getValueByName("Без брони").get()) {
return false;
}
if (player.isInvisible() && player.getTotalArmorValue() == 0 && !targetSettings.getValueByName("Невидимые без брони").get()) {
return false;
}
if (player.isInvisible() && !targetSettings.getValueByName("Невидимые").get()) {
return false;
}
if (player.isCreative()) {
return false;
}
} else if ((entity instanceof MonsterEntity || entity instanceof SlimeEntity || entity instanceof VillagerEntity) && !targetSettings.getValueByName("Мобы").get()) {
return false;
} else if (entity instanceof AnimalEntity && !targetSettings.getValueByName("Животные").get()) {
return false;
}
return !entity.isInvulnerable() && entity.isAlive() && !(entity instanceof ArmorStandEntity);
}
private boolean shouldAttack() {
if (!perfectDelay.cooldownComplete() || !cooldownComplete()) {
return false;
}
boolean isBlockAboveHead = BlockUtils.isBlockAboveHead();
boolean isInLiquid = Minecraft.getInstance().player.isActualySwimming() ||
Minecraft.getInstance().player.isSwimming() ||
Minecraft.getInstance().player.areEyesInFluid(FluidTags.WATER) ||
Minecraft.getInstance().player.areEyesInFluid(FluidTags.LAVA);
if (isInLiquid) {
return true;
}
boolean canDefaultCrit = Minecraft.getInstance().player.fallDistance > 0.0F && canCrit && isBlockAboveHead;
boolean canSmartCrit = isBlockAboveHead && !Minecraft.getInstance().player.movementInput.jump &&
!canCrit && Minecraft.getInstance().player.isOnGround() && Minecraft.getInstance().player.collidedVertically;
if (critMode.is("Только критические")) {
return shouldCritical() && canDefaultCrit;
} else if (critMode.is("Умные критические")) {
return canSmartCrit || canDefaultCrit;
}
return true;
}
private boolean shouldCritical() {
boolean isDeBuffed = Minecraft.getInstance().player.isPotionActive(Effects.LEVITATION) ||
Minecraft.getInstance().player.isPotionActive(Effects.BLINDNESS) ||
Minecraft.getInstance().player.isPotionActive(Effects.SLOW_FALLING);
boolean isInLiquid = Minecraft.getInstance().player.isActualySwimming() ||
Minecraft.getInstance().player.isSwimming() ||
Minecraft.getInstance().player.areEyesInFluid(FluidTags.WATER) ||
Minecraft.getInstance().player.areEyesInFluid(FluidTags.LAVA);
boolean isFlying = Minecraft.getInstance().player.abilities.isFlying ||
Minecraft.getInstance().player.isElytraFlying();
boolean isClimbing = Minecraft.getInstance().player.isOnLadder();
boolean isCantJump = Minecraft.getInstance().player.isPassenger();
boolean isOnWeb = BlockUtils.isPlayerInWeb();
return !isDeBuffed && !isInLiquid && !isFlying && !isClimbing && !isCantJump && !isOnWeb;
}
public boolean cooldownComplete() {
return Minecraft.getInstance().player != null &&
Minecraft.getInstance().world != null &&
Minecraft.getInstance().player.getCooledAttackStrength(1.5F) >= 0.93F;
}
public boolean rayTrace() {
return RotationUtils.rayTraceEntity(Minecraft.getInstance().player.rotationYaw,
Minecraft.getInstance().player.rotationPitch,
attackRange.get() + rotationRange.get(),
target) || attackMode.is("Резкий");
}
private void reset() {
if (Minecraft.getInstance().player != null && Minecraft.getInstance().world != null) {
Minecraft.getInstance().player.rotationYawOffset = Integer.MIN_VALUE;
}
target = null;
canCrit = false;
}
public EnumSetting getAttackMode() { return attackMode; }
public FloatSetting getAttackRange() { return attackRange; }
public FloatSetting getRotationRange() { return rotationRange; }
public MultiBooleanSetting getTargetSettings() { return targetSettings; }
public EnumSetting getTargetEsp() { return targetEsp; }
public EnumSetting getCritMode() { return critMode; }
public EnumSetting getAttackStyle() { return attackStyle; }
public MultiBooleanSetting getConsiderFactors() { return considerFactors; }
public MultiBooleanSetting getChecks() { return checks; }
public ScheduledExecutorService getScheduler() { return scheduler; }
public Timer getPerfectDelay() { return perfectDelay; }
public Timer getStopWatch() { return stopWatch; }
public Script getScript() { return script; }
public boolean isCanCrit() { return canCrit; }
public int getSprintStopTicks() { return sprintStopTicks; }
public int getRotationTicks() { return rotationTicks; }
public Timer getYawUpdate() { return yawUpdate; }
public Vector2f getLerpRotation() { return lerpRotation; }
public Vector2f getLegacyRotation() { return legacyRotation; }
public int getRotationCount() { return rotationCount; }
public long getLastTickTime() { return lastTickTime; }
public long getLastTickTime2() { return lastTickTime2; }
public static BooleanOption getFreeSprint() { return freeSprint; }
public LivingEntity getTarget() { return target; }
public KillAura setTarget(LivingEntity target) { this.target = target; return this; }
}
KillAura Syntax Client
Последнее редактирование: