Начинающий
- Статус
- Оффлайн
- Регистрация
- 19 Янв 2024
- Сообщения
- 203
- Реакции
- 0
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
вчера сделол килку еле как пофиксил ошибки запускаю думаю щас будет бить в итоге ничего просто включил она не бьет
уже все перепробовал ничо не помогает
уже все перепробовал ничо не помогает
Код:
package im.expensive.functions.impl.combat;
import im.expensive.Expensive;
import im.expensive.events.EventInput;
import im.expensive.events.EventMotion;
import im.expensive.events.EventPacket;
import im.expensive.events.EventTarget;
import im.expensive.events.EventUpdate;
import im.expensive.events.MovingEvent;
import im.expensive.events.WorldEvent;
import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import im.expensive.functions.settings.Setting;
import im.expensive.functions.settings.impl.BooleanSetting;
import im.expensive.functions.settings.impl.ModeListSetting;
import im.expensive.functions.settings.impl.ModeSetting;
import im.expensive.functions.settings.impl.SliderSetting;
import im.expensive.utils.animations.AnimationNew;
import im.expensive.utils.animations.Easing;
import im.expensive.utils.math.SensUtils;
import im.expensive.utils.math.StopWatch;
import im.expensive.utils.player.InventoryUtil;
import im.expensive.utils.player.MoveUtils;
import im.expensive.utils.player.RayTraceUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import net.minecraft.block.material.Material;
import net.minecraft.client.entity.player.ClientPlayerEntity;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.enchantment.Enchantments;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.MobEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.container.ClickType;
import net.minecraft.item.ArmorItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
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;
import net.optifine.util.WorldUtils;
@FunctionRegister(
name = "Attack Aura",
type = Category.Combat
)
public class KillAura extends Function {
private final ModeSetting type = new ModeSetting("Тип", "Плавная", new String[]{"Плавная", "Резкая"});
public final SliderSetting attackRange = new SliderSetting("Дистанция аттаки", 3.0F, 3.0F, 6.0F, 0.1F);
final ModeListSetting targets = new ModeListSetting("Таргеты", new BooleanSetting[]{new BooleanSetting("Игроки", true), new BooleanSetting("Голые", true), new BooleanSetting("Мобы", false), new BooleanSetting("Друзья", false)});
final BooleanSetting onlySpaceCritical = new BooleanSetting("Только в прыжке", true);
final ModeListSetting options = new ModeListSetting("Опции", new BooleanSetting[]{new BooleanSetting("Только криты", true), new BooleanSetting("Ломать щит", true), new BooleanSetting("Отжимать щит", true), new BooleanSetting("Тпс синх", false), new BooleanSetting("Коррекция движения", true), new BooleanSetting("Бэк Треки", true), new BooleanSetting("Проверка наводки", false)});
final ModeSetting correctionType = new ModeSetting("Тип коррекции", "Незаметный", new String[]{"Незаметный", "Сфокусированный"});
final ModeSetting hands = new ModeSetting("Бить рукой", "Правой", new String[]{"Правой", "Левой"});
private final StopWatch stopWatch = new StopWatch();
public Vector2f rotateVector = new Vector2f(0.0F, 0.0F);
public static LivingEntity target;
private Entity selected;
Vector2f fakerotate = new Vector2f(0.0F, 0.0F);
int ticks = 0;
boolean isRotated;
final AutoPotion autoPotion;
AnimationNew animationNew;
StopWatch timerTimes;
public double lastSpeed;
public boolean attack;
boolean testABoolean;
public boolean targetAir;
StopWatch axyenno;
public float speed;
boolean axyeenn;
public boolean attacksave;
public boolean savePacket;
public Vector3d test;
boolean targetVisible;
private final CopyOnWriteArrayList<IPacket> packets;
StopWatch arara;
StopWatch test1;
public KillAura(AutoPotion autoPotion) {
this.animationNew = new AnimationNew(Easing.EASE_OUT_EXPO, 100L);
this.timerTimes = new StopWatch();
this.lastSpeed = (double)0.0F;
this.attack = false;
this.testABoolean = false;
this.axyenno = new StopWatch();
this.speed = 0.0F;
this.axyeenn = false;
this.attacksave = false;
this.savePacket = false;
this.test = Vector3d.ZERO;
this.packets = new CopyOnWriteArrayList();
this.arara = new StopWatch();
this.test1 = new StopWatch();
this.autoPotion = autoPotion;
this.addSettings(new Setting[]{this.type, this.attackRange, this.targets, this.options, this.correctionType, this.onlySpaceCritical, this.hands});
}
@EventTarget
public void onInput(EventInput eventInput) {
if ((Boolean)this.options.get(4).get() && this.correctionType.is("Незаметный") && target != null && mc.player != null && !mc.player.isElytraFlying() && Expensive.getInstance().getFunctionRegistry().getFreeCam().player == null) {
MoveUtils.fixMovement(eventInput, this.rotateVector.x);
}
}
@EventTarget
public void onUpdate(EventUpdate e) {
if (target == null || !this.isValid(target)) {
this.updateTarget();
}
if ((Boolean)this.options.get(5).get()) {
this.resolvePlayers();
}
if ((Boolean)this.options.get(5).get()) {
this.releaseResolver();
}
if (target != null && this.timerTimes.isReached(200L)) {
double dx = getTarget().getPosX() - getTarget().prevPosX;
double dy = getTarget().getPosY() - getTarget().prevPosY;
double dz = getTarget().getPosZ() - getTarget().prevPosZ;
double distance = Math.sqrt(dx * dx + dy * dy + dz * dz);
double speed22 = distance * (double)20.0F;
this.lastSpeed = speed22;
this.timerTimes.reset();
}
if (target != null && (!this.autoPotion.isState() || !this.autoPotion.isActive())) {
this.isRotated = false;
if (this.shouldPlayerFalling() && this.stopWatch.hasTimeElapsed()) {
if (false && RayTraceUtils.rayTraceSingleEntity(this.rotateVector.x, this.rotateVector.y, (double)(Float)this.attackRange.get(), target) || !(Boolean)this.options.get(6).get() || this.type.is("Резкая") || mc.player.isElytraFlying()) {
this.updateAttack();
this.ticks = 1;
}
} else {
this.attack = false;
}
if ((!this.type.is("Резкая") || mc.player.isElytraFlying()) && !Expensive.getInstance().getFunctionRegistry().getElytraFly().flying) {
if (!this.isRotated) {
this.updateRotation(1.0F);
}
} else if (this.ticks > 0) {
this.attack = true;
this.updateRotation(1.0F);
--this.ticks;
} else {
this.reset();
this.attack = false;
}
} else {
this.stopWatch.setLastMS(0L);
this.reset();
}
}
public void resolvePlayers() {
for(PlayerEntity player : mc.world.getPlayers()) {
if (player instanceof ClientPlayerEntity entity) {
entity.resolve();
}
}
}
public void releaseResolver() {
for(PlayerEntity player : mc.world.getPlayers()) {
if (player instanceof ClientPlayerEntity entity) {
entity.releaseResolver();
}
}
}
@EventTarget
public void Moving(MovingEvent event) {
if (target != null) {
this.testABoolean = !this.collisionPredict(target.getPositionVec(), target);
}
}
private double getDegree(LivingEntity entity) {
Vector3d vec = this.getVector3d(mc.player, entity, true);
double yaw = MathHelper.wrapDegrees(Math.toDegrees(Math.atan2(vec.z, vec.x)) - (double)90.0F);
double delta = MathHelper.wrapDegrees(yaw - (double)this.rotateVector.x);
if (Math.abs(delta) > (double)180.0F) {
delta -= Math.signum(delta) * (double)360.0F;
}
return Math.abs(delta);
}
public boolean collisionPredict(Vector3d to, LivingEntity target) {
boolean prevCollision = mc.world.getCollisionShapes(target, target.getBoundingBox().shrink((double)0.0625F)).toList().isEmpty();
Vector3d backUp = new Vector3d(target.getPosX(), target.getPosY(), target.getPosZ());
target.setPosition(to.x, to.y, to.z);
boolean collision = mc.world.getCollisionShapes(target, mc.player.getBoundingBox().shrink((double)0.0625F)).toList().isEmpty() && prevCollision;
target.setPosition(backUp.x, backUp.y, backUp.z);
return collision;
}
@EventTarget
private void onWalking(EventMotion e) {
if (target != null && (!this.autoPotion.isState() || !this.autoPotion.isActive())) {
float yaw = this.rotateVector.x;
float pitch = this.rotateVector.y;
float fakeyaw = this.fakerotate.x;
float fakepitch = this.fakerotate.y;
e.setYaw(yaw);
e.setPitch(pitch);
mc.player.rotationYawHead = yaw;
mc.player.renderYawOffset = yaw;
mc.player.rotationPitchHead = pitch;
}
}
private void updateTarget() {
List<LivingEntity> targets = new ArrayList();
for(Entity entity : mc.world.getAllEntities()) {
if (entity instanceof LivingEntity living) {
if (this.isValid(living)) {
targets.add(living);
}
}
}
if (targets.isEmpty()) {
target = null;
} else if (targets.size() == 1) {
target = (LivingEntity)targets.get(0);
} else {
targets.sort(Comparator.comparingDouble((object) -> {
if (object instanceof PlayerEntity player) {
return -this.getEntityArmor(player);
} else if (object instanceof LivingEntity base) {
return (double)(-base.getTotalArmorValue());
} else {
return (double)0.0F;
}
}).thenComparing((object, object2) -> {
double d2 = this.getEntityHealth((LivingEntity)object);
double d3 = this.getEntityHealth((LivingEntity)object2);
return Double.compare(d2, d3);
}).thenComparing((object, object2) -> {
double d2 = (double)mc.player.getDistance((LivingEntity)object);
double d3 = (double)mc.player.getDistance((LivingEntity)object2);
return Double.compare(d2, d3);
}));
target = (LivingEntity)targets.get(0);
}
}
private void updateRotation(float speed) {
Vector3d vec3d = this.getVector3d(mc.player, target, true);
Vector3d fakeVec3d = this.getVector3d(mc.player, target, false);
float rawYaw = (float)MathHelper.wrapDegrees(Math.toDegrees(Math.atan2(vec3d.z, vec3d.x)) - (double)90.0F);
float rawPitch = (float)MathHelper.wrapDegrees(Math.toDegrees(-Math.atan2(vec3d.y, Math.hypot(vec3d.x, vec3d.z))));
float yawDelta = MathHelper.wrapDegrees(rawYaw - this.rotateVector.x);
float pitchDelta = MathHelper.wrapDegrees(rawPitch - this.rotateVector.y);
if (Math.abs(yawDelta) > 180.0F) {
yawDelta -= Math.signum(yawDelta) * 360.0F;
}
float additionYaw = MathHelper.clamp(yawDelta, -180.0F * speed, 180.0F * speed);
float additionPitch = MathHelper.clamp(pitchDelta, -90.0F * speed, 90.0F * speed);
float yaw = this.rotateVector.x + additionYaw;
float pitch = this.rotateVector.y + additionPitch;
float x1 = (float)SensUtils.getSensitivity((double)yaw);
float x2 = (float)SensUtils.getSensitivity((double)MathHelper.clamp(pitch, -89.0F, 89.0F));
float fakeRawYaw = (float)MathHelper.wrapDegrees(Math.toDegrees(Math.atan2(fakeVec3d.z, fakeVec3d.x)) - (double)90.0F);
float fakeRawPitch = (float)MathHelper.wrapDegrees(Math.toDegrees(-Math.atan2(fakeVec3d.y, Math.hypot(fakeVec3d.x, fakeVec3d.z))));
float fakeYawDelta = MathHelper.wrapDegrees(fakeRawYaw - this.fakerotate.x);
float fakePitchDelta = MathHelper.wrapDegrees(fakeRawPitch - this.fakerotate.y);
if (Math.abs(fakeYawDelta) > 180.0F) {
fakeYawDelta -= Math.signum(fakeYawDelta) * 360.0F;
}
float fakeAdditionYaw = MathHelper.clamp(fakeYawDelta, -180.0F * speed, 180.0F * speed);
float fakeAdditionPitch = MathHelper.clamp(fakePitchDelta, -90.0F * speed, 90.0F * speed);
float fakeYaw = this.fakerotate.x + fakeAdditionYaw;
float fakePitch = this.fakerotate.y + fakeAdditionPitch;
float fakeX1 = (float)SensUtils.getSensitivity((double)fakeYaw);
float fakeX2 = (float)SensUtils.getSensitivity((double)MathHelper.clamp(fakePitch, -90.0F, 90.0F));
this.rotateVector.x = x1;
this.rotateVector.y = x2;
this.fakerotate.x = fakeX1;
this.fakerotate.y = fakeX2;
if ((Boolean)this.options.get(4).get()) {
mc.player.rotationPitchOffset = x2;
mc.player.rotationYawOffset = x1;
}
}
@EventTarget
private void onRender(WorldEvent event) {
}
private Vector3d getVector3d(LivingEntity me, LivingEntity to, boolean targetAir) {
float dist = 0.0F;
if (target != null) {
double dx = getTarget().getPosX() - getTarget().prevPosX;
double dy = getTarget().getPosY() - getTarget().prevPosY;
double dz = getTarget().getPosZ() - getTarget().prevPosZ;
double distance = Math.sqrt(dx * dx + dy * dy + dz * dz);
dist = (float)distance;
}
if (this.axyenno.isReached(1000L) && mc.player.isElytraFlying()) {
this.axyeenn = true;
this.axyenno.reset();
}
if (this.stopWatch.getTime() > 100L) {
this.attacksave = true;
} else if (this.stopWatch.getTime() < 100L) {
this.attacksave = false;
}
this.speed = dist;
boolean xuy = target != null && targetAir && Expensive.getInstance().getFunctionRegistry().getElytraTarget().vibor.getIndex() == 1 ? this.lastSpeed >= (double)20.0F : target.isElytraFlying() && mc.player.isElytraFlying() && !Expensive.getInstance().getFunctionRegistry().getFly().isState() && !Expensive.getInstance().getFunctionRegistry().getFreeCam().isState() && (Boolean)Expensive.getInstance().getFunctionRegistry().getElytraTarget().target.get();
float SpeedBypass = xuy ? 3.0F + (Float)Expensive.getInstance().getFunctionRegistry().getElytraTarget().distance.get() : 0.0F;
Vector3d targetPos = to.getPositionVec().add(to.getForward().normalize().scale((double)SpeedBypass));
Vector3d vec = target.getPositionVec().add((double)0.0F, MathHelper.clamp(mc.player.getEyePosition(mc.getRenderPartialTicks()).y - target.getPosY(), (double)0.0F, (double)target.getHeight() * (MathHelper.getStrictDistance(target) / (double)Math.max(mc.playerController.extendedReach() ? 6.0F : 3.0F, (Float)this.attackRange.get()))), (double)0.0F).subtract(mc.player.getEyePosition(mc.getRenderPartialTicks())).normalize();
this.targetAir = xuy;
return targetAir && xuy ? new Vector3d(targetPos.getX() - me.getPosX(), targetPos.getY() - me.getPosY(), targetPos.getZ() - me.getPosZ()) : vec;
}
@EventTarget
public void aragyntang(EventMotion e) {
}
@EventTarget
public void ogogo(EventPacket e) {
}
private Vector3d getBestVec(LivingEntity LivingEntity2, double dst) {
if (LivingEntity2.getDistanceSq(LivingEntity2) > (double)36.0F) {
return null;
} else {
Vector3d headPoint = this.getDeltaForCord(KillAura.HitBox.Head, LivingEntity2);
Vector3d chestPoint = this.getDeltaForCord(KillAura.HitBox.Chest, LivingEntity2);
Vector3d leggsPoint = this.getDeltaForCord(KillAura.HitBox.Leggs, LivingEntity2);
if (mc.player.isElytraFlying()) {
return headPoint;
} else {
ArrayList<Vector3d> arrayList = new ArrayList(Arrays.asList(headPoint, chestPoint, leggsPoint));
if (arrayList.isEmpty()) {
return null;
} else {
arrayList.sort((point1, point2) -> (int)((Math.abs(this.getDeltaForCoord(this.rotateVector, point1).y) - Math.abs(this.getDeltaForCoord(this.rotateVector, point2).y)) * 1000.0F));
return (Vector3d)arrayList.get(0);
}
}
}
}
private Vector3d getDeltaForCord(HitBox a2, LivingEntity trgt) {
double var10000;
switch (a2) {
case Head -> var10000 = (double)trgt.getEyeHeight();
case Chest -> var10000 = (double)(trgt.getEyeHeight() / 2.0F);
case Leggs -> var10000 = 0.05;
default -> throw new IncompatibleClassChangeError();
}
double d2 = var10000;
return trgt.getPositionVec().add((double)0.0F, d2, (double)0.0F);
}
private Vector2f getDeltaForCoord(Vector2f vector2f2, Vector3d jE2) {
double d2 = jE2.x - mc.player.getPosX();
double d3 = jE2.y - mc.player.getEyePosition(1.0F).y;
double d4 = jE2.z - mc.player.getPosZ();
double d5 = Math.sqrt(d2 * d2 + d4 * d4);
float f2 = (float)MathHelper.wrapDegrees(Math.toDegrees(Math.atan2(d4, d2)) - (double)90.0F);
float f3 = (float)(-Math.toDegrees(Math.atan2(d3, d5)));
float f4 = MathHelper.wrapDegrees(f2 - vector2f2.x);
float f5 = f3 - vector2f2.y;
return new Vector2f(f4, f5);
}
private void updateAttack() {
if (mc.player.isBlocking() && (Boolean)this.options.getValueByName("Отжимать щит").get()) {
mc.playerController.onStoppedUsingItem(mc.player);
mc.player.swingArm(Hand.MAIN_HAND);
mc.playerController.attackEntity(mc.player, target);
mc.player.connection.sendPacket(new CAnimateHandPacket(Hand.MAIN_HAND));
}
this.stopWatch.setLastMS(460L);
mc.playerController.attackEntity(mc.player, target);
mc.player.swingArm(this.hands.getIndex() == 0 ? Hand.MAIN_HAND : Hand.OFF_HAND);
LivingEntity var2 = target;
if (var2 instanceof PlayerEntity player) {
if ((Boolean)this.options.getValueByName("Ломать щит").get()) {
this.breakShieldPlayer(player);
}
}
}
private boolean shouldPlayerFalling() {
boolean onSpace = !(Boolean)this.onlySpaceCritical.get() && mc.player.isOnGround() && !mc.gameSettings.keyBindJump.isKeyDown();
boolean reasonForAttack = mc.player.isPotionActive(Effects.BLINDNESS) || mc.player.isOnLadder() || mc.player.isInWater() && mc.player.areEyesInFluid(FluidTags.WATER) || mc.player.isRidingHorse() || mc.player.abilities.isFlying || WorldUtils.isInMaterial(Material.WEB) || mc.player.isElytraFlying() || mc.player.isInLava() && mc.player.areEyesInFluid(FluidTags.LAVA) || mc.player.isPotionActive(Effects.LEVITATION) || mc.player.isPassenger();
double dist = (double)0.0F;
float cooldown = mc.player.getCooledAttackStrength(0.5f);
if (cooldown < 0.9f) return false;
dist = mc.player.getDistanceEyePos(target);
if (!(dist >= (double)(Float)this.attackRange.get()) && mc.player.getCooledAttackStrength((Boolean)this.options.get(3).get() ? -Expensive.getInstance().getTPSCalcNew().getAdjustTicks() + 1.5F : 1.5F) >= 0.93F) {
if (Expensive.getInstance().getFunctionRegistry().getFreeCam().player != null) {
return true;
} else if (!reasonForAttack && (Boolean)this.options.getValueByName("Только криты").get()) {
return onSpace || !mc.player.isOnGround() && mc.player.fallDistance > 0.0F;
} else {
return true;
}
} else {
return false;
}
}
private boolean isValid(LivingEntity entity) {
if (entity instanceof ClientPlayerEntity) {
return false;
} else if (entity.ticksExisted < 3) {
return false;
} else if (mc.player.getDistanceEyePos(entity) > (double)((Float)this.attackRange.get() + (float)(mc.player.isElytraFlying() && !Expensive.getInstance().getFunctionRegistry().getElytraFly().flying ? 30 : 0))) {
return false;
} else {
if (entity instanceof PlayerEntity) {
PlayerEntity p = (PlayerEntity)entity;
if (AntiBot.checkBot(entity)) {
return false;
}
if (!(Boolean)this.targets.getValueByName("Друзья").get() && Expensive.getInstance().getFriendStorage().isFriend(p.getName().getString()) || p.getName().getString().equals("Friend")) {
return false;
}
if (p.getName().getString().equalsIgnoreCase(mc.player.getName().getString())) {
return false;
}
}
if (entity.isAlive()) {
if (entity instanceof MobEntity && (Boolean)this.targets.getValueByName("Мобы").get()) {
return true;
}
if (entity.botEntity) {
if (entity instanceof PlayerEntity && (Boolean)this.targets.getValueByName("Игроки").get()) {
return true;
}
if (entity instanceof PlayerEntity && entity.getTotalArmorValue() == 0 && (Boolean)this.targets.getValueByName("Голые").get()) {
return true;
}
}
}
return false;
}
}
private void breakShieldPlayer(PlayerEntity entity) {
if (entity.isBlocking()) {
int invSlot = InventoryUtil.getInstance().getAxeInInventory(false);
int hotBarSlot = InventoryUtil.getInstance().getAxeInInventory(true);
if (hotBarSlot == -1 && invSlot != -1) {
int bestSlot = InventoryUtil.getInstance().findBestSlotInHotBar();
mc.playerController.windowClick(0, invSlot, 0, ClickType.PICKUP, mc.player);
mc.playerController.windowClick(0, bestSlot + 36, 0, ClickType.PICKUP, mc.player);
mc.player.connection.sendPacket(new CHeldItemChangePacket(bestSlot));
mc.playerController.attackEntity(mc.player, entity);
mc.player.swingArm(Hand.MAIN_HAND);
mc.player.connection.sendPacket(new CHeldItemChangePacket(mc.player.inventory.currentItem));
mc.playerController.windowClick(0, bestSlot + 36, 0, ClickType.PICKUP, mc.player);
mc.playerController.windowClick(0, invSlot, 0, ClickType.PICKUP, mc.player);
}
if (hotBarSlot != -1) {
mc.player.connection.sendPacket(new CHeldItemChangePacket(hotBarSlot));
mc.playerController.attackEntity(mc.player, entity);
mc.player.swingArm(Hand.MAIN_HAND);
mc.player.connection.sendPacket(new CHeldItemChangePacket(mc.player.inventory.currentItem));
}
}
}
private void reset() {
if (!(Boolean)this.options.get(4).get() || (Boolean)this.options.get(4).get()) {
mc.player.rotationYawOffset = (float)Integer.MIN_VALUE;
mc.player.rotationPitchOffset = (float)Integer.MIN_VALUE;
}
this.rotateVector = new Vector2f(mc.player.rotationYaw, mc.player.rotationPitch);
this.fakerotate = new Vector2f(mc.player.rotationYaw, mc.player.rotationPitch);
}
public boolean isEnable() {
super.onEnable();
this.savePacket = true;
this.reset();
target = null;
return false;
}
public void onDisable() {
super.onDisable();
this.attack = false;
this.savePacket = true;
this.reset();
this.stopWatch.setLastMS(0L);
target = null;
}
private double getEntityArmor(PlayerEntity entityPlayer2) {
double d2 = (double)0.0F;
for(int i2 = 0; i2 < 4; ++i2) {
ItemStack is = (ItemStack)entityPlayer2.inventory.armorInventory.get(i2);
if (is.getItem() instanceof ArmorItem) {
d2 += this.getProtectionLvl(is);
}
}
return d2;
}
private double getProtectionLvl(ItemStack stack) {
Item item = stack.getItem();
if (item instanceof ArmorItem i) {
double protectionLevel = (double) i.getDamageReduceAmount();
if (stack.isEnchanted()) {
protectionLevel += (double) EnchantmentHelper.getEnchantmentLevel(Enchantments.PROTECTION, stack) * 0.25D;
}
return protectionLevel;
} else {
return 0.0D;
}
}
private double getEntityHealth(LivingEntity ent) {
if (ent instanceof PlayerEntity player) {
return (double)(Expensive.getInstance().getFunctionRegistry().getGetHealth().isState() ? PlayerEntity.getHealthFromScoreboard(player)[0] : player.getHealth() + player.getAbsorptionAmount()) * (this.getEntityArmor(player) / (double)20.0F);
} else {
return Expensive.getInstance().getFunctionRegistry().getGetHealth().isState() ? (double)PlayerEntity.getHealthFromScoreboard(ent)[0] : (double)(ent.getHealth() + ent.getAbsorptionAmount());
}
}
public ModeSetting getType() {
return this.type;
}
public ModeListSetting getOptions() {
return this.options;
}
public StopWatch getStopWatch() {
return this.stopWatch;
}
public static LivingEntity getTarget() {
return target;
}
private static enum HitBox {
Head,
Chest,
Leggs;
private HitBox() {
}
}
}