Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Часть функционала KillAura exp 3.1 ready / mops client / MCP

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
23 Ноя 2025
Сообщения
5
Реакции
0
Выберите загрузчик игры
  1. Vanilla
Киллка с пасты+гпт код+дипсик+грок+клоуде mops client (noad)
3.1 экспенсив

хз че у них там обходит, но говорят что спуки обходит

KillAura:
Expand Collapse Copy
package im.expensive.functions.impl.combat;

import com.google.common.eventbus.Subscribe;
import im.expensive.Expensive;
import im.expensive.command.friends.FriendStorage;
import im.expensive.events.EventInput;
import im.expensive.events.EventMotion;
import im.expensive.events.EventUpdate;
import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import im.expensive.functions.api.Setting;
import im.expensive.functions.api.impl.BooleanSetting;
import im.expensive.functions.api.impl.ModeListSetting;
import im.expensive.functions.api.impl.ModeSetting;
import im.expensive.functions.api.impl.SliderSetting;
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 java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
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.item.ArmorStandEntity;
import net.minecraft.entity.monster.MonsterEntity;
import net.minecraft.entity.passive.AnimalEntity;
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.play.client.CHeldItemChangePacket;
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;

@FunctionRegister(
   name = "KillAura",
   type = Category.Combat
)
public class KillAura extends Function {
   private final ModeSetting type = new ModeSetting("Тип", "Плавная", new String[]{"Плавная", "Резкая", "Спукитайм", "Спукитайм new"});
   private final SliderSetting attackRange = new SliderSetting("Дистанция аттаки", 3.0F, 3.0F, 6.0F, 0.1F);
   private final SliderSetting rotationSpeed = new SliderSetting("Скорость поворота", 8.0F, 0.5F, 50.0F, 0.5F);
   private final SliderSetting critDelayRandomization = new SliderSetting("Рандомизация крита", 50.0F, 0.0F, 100.0F, 1.0F);
   private final BooleanSetting shieldBreak = new BooleanSetting("супер плавность", false);
   final ModeListSetting targets = new ModeListSetting("Таргеты", new BooleanSetting[]{new BooleanSetting("Игроки", true), new BooleanSetting("Голые", true), new BooleanSetting("Мобы", false), new BooleanSetting("Животные", false), new BooleanSetting("Друзья", false), new BooleanSetting("Голые невидимки", true), new BooleanSetting("Невидимки", true)});
   final ModeListSetting options = new ModeListSetting("Опции", new BooleanSetting[]{new BooleanSetting("Только криты", true), new BooleanSetting("Ломать щит", true), new BooleanSetting("Отжимать щит", true), new BooleanSetting("Ускорять ротацию при атаке", false), new BooleanSetting("Синхронизировать атаку с ТПС", false), new BooleanSetting("Фокусировать одну цель", true), new BooleanSetting("Коррекция движения", true)});
   final ModeSetting correctionType = new ModeSetting("Тип коррекции", "Незаметный", new String[]{"Незаметный", "Сфокусированный"});
   private final StopWatch stopWatch = new StopWatch();
   private final StopWatch spookyWatch = new StopWatch();
   private final StopWatch critDelayWatch = new StopWatch();
   private Vector2f rotateVector = new Vector2f(0.0F, 0.0F);
   private LivingEntity target;
   private Entity selected;
   int ticks = 0;
   boolean isRotated;
   final AutoPotion autoPotion;
   private final Random random = new Random();
   private float randomYawOffset = 0.0F;
   private float randomPitchOffset = 0.0F;
   private long lastRandomUpdate = 0L;
   private int spookyOffsetMs = 0;
   private final List lastDelays = new ArrayList();
   private int lastCritDelay = 0;
   private boolean isWaitingForCrit = false;
   private float smoothHeadYaw = 0.0F;
   private float smoothHeadPitch = 0.0F;
   float lastYaw;
   float lastPitch;

   public KillAura(AutoPotion autoPotion) {
      this.autoPotion = autoPotion;
      this.addSettings(new Setting[]{this.type, this.attackRange, this.rotationSpeed, this.critDelayRandomization, this.targets, this.options, this.correctionType});
   }

   private float randomLerp(float min, float max) {
      return min + this.random.nextFloat() * (max - min);
   }

   private float lerp(float a, float b, float t) {
      return a + (b - a) * t;
   }

   private int generateRandomCritDelay() {
      float percent = this.type.is("Спукитайм new") ? 10.0F : (Float)this.critDelayRandomization.get();
      if (percent <= 0.01F) {
         return 0;
      } else {
         int maxDelay = (int)(500.0F * (percent / 100.0F));
         if (maxDelay < 1) {
            maxDelay = 1;
         }

         int newDelay = this.random.nextInt(maxDelay + 1);
         int last1;
         if (this.lastDelays.size() >= 2) {
            last1 = (Integer)this.lastDelays.get(this.lastDelays.size() - 1);
            int last2 = (Integer)this.lastDelays.get(this.lastDelays.size() - 2);
            if (newDelay == last1 || newDelay == last2) {
               for(int attempt = 0; attempt < 20; ++attempt) {
                  int alternativeDelay = this.random.nextInt(maxDelay + 1);
                  if (alternativeDelay != last1 && alternativeDelay != last2) {
                     newDelay = alternativeDelay;
                     break;
                  }
               }
            }
         } else if (this.lastDelays.size() >= 1) {
            last1 = (Integer)this.lastDelays.get(this.lastDelays.size() - 1);
            if (newDelay == last1) {
               newDelay = this.random.nextInt(maxDelay + 1);
               if (newDelay == last1 && maxDelay > 0) {
                  newDelay = (newDelay + 1) % (maxDelay + 1);
               }
            }
         }

         this.lastDelays.add(newDelay);

         while(this.lastDelays.size() > 2) {
            this.lastDelays.remove(0);
         }

         this.lastCritDelay = newDelay;
         return newDelay;
      }
   }

   @Subscribe
   public void onInput(EventInput eventInput) {
      if ((Boolean)this.options.getValueByName("Коррекция движения").get() && this.correctionType.is("Незаметный") && this.target != null && mc.player != null) {
         MoveUtils.fixMovement(eventInput, this.rotateVector.x);
      }

   }

   @Subscribe
   public void onUpdate(EventUpdate e) {
      if ((Boolean)this.options.getValueByName("Фокусировать одну цель").get() && (this.target == null || !this.isValid(this.target)) || !(Boolean)this.options.getValueByName("Фокусировать одну цель").get()) {
         this.updateTarget();
      }

      if (this.target == null || this.autoPotion.isState() && this.autoPotion.isActive()) {
         this.stopWatch.setLastMS(0L);
         this.spookyWatch.setLastMS(0L);
         this.critDelayWatch.setLastMS(0L);
         this.isWaitingForCrit = false;
         this.reset();
      } else {
         this.isRotated = false;
         if (!this.type.is("Спукитайм") && !this.type.is("Спукитайм new")) {
            if (this.shouldPlayerFalling() && this.stopWatch.hasTimeElapsed()) {
               this.updateAttack();
               this.ticks = 2;
            }

            if (this.type.is("Резкая")) {
               if (this.ticks > 0) {
                  this.updateRotation(true, 180.0F, 90.0F);
                  --this.ticks;
               } else {
                  this.reset();
               }
            } else if (!this.isRotated) {
               this.updateRotation(false, 80.0F, 35.0F);
            }
         } else {
            if (System.currentTimeMillis() - this.lastRandomUpdate > 100L) {
               this.randomYawOffset = this.randomLerp(-1.5F, 1.5F);
               this.randomPitchOffset = this.randomLerp(-1.0F, 1.0F);
               this.lastRandomUpdate = System.currentTimeMillis();
            }

            if (!this.isRotated) {
               this.updateRotation(false, 80.0F, 35.0F);
            }

            this.smoothHeadYaw = this.lerp(this.smoothHeadYaw, this.rotateVector.x, 0.15F);
            this.smoothHeadPitch = this.lerp(this.smoothHeadPitch, this.rotateVector.y, 0.15F);
            float attackStrength = mc.player.getCooledAttackStrength((Boolean)this.options.getValueByName("Синхронизировать атаку с ТПС").get() ? Expensive.getInstance().getTpsCalc().getAdjustTicks() : 1.5F);
            boolean critOk = !(Boolean)this.options.getValueByName("Только криты").get() || this.isCritCondition();
            if (attackStrength >= 0.92F && critOk) {
               if (!this.isWaitingForCrit) {
                  int delay = this.generateRandomCritDelay();
                  if (delay <= 0) {
                     this.updateAttackSpooky();
                  } else {
                     this.isWaitingForCrit = true;
                     this.critDelayWatch.setLastMS((long)delay);
                  }
               } else if (this.critDelayWatch.hasTimeElapsed()) {
                  this.updateAttackSpooky();
                  this.isWaitingForCrit = false;
               }
            } else {
               this.isWaitingForCrit = false;
            }
         }
      }

   }

   @Subscribe
   private void onWalking(EventMotion e) {
      if (this.target != null && (!this.autoPotion.isState() || !this.autoPotion.isActive())) {
         float yaw = this.rotateVector.x;
         float pitch = this.rotateVector.y;
         e.setYaw(yaw);
         e.setPitch(pitch);
         if (!this.type.is("Спукитайм") && !this.type.is("Спукитайм new")) {
            mc.player.rotationYawHead = yaw;
            mc.player.renderYawOffset = yaw;
            mc.player.rotationPitchHead = pitch;
         } else {
            mc.player.rotationYawHead = this.smoothHeadYaw;
            mc.player.renderYawOffset = this.smoothHeadYaw;
            mc.player.rotationPitchHead = this.smoothHeadPitch;
         }

      }
   }

   private void updateTarget() {
      List targets = new ArrayList();
      Iterator var2 = mc.world.getAllEntities().iterator();

      while(var2.hasNext()) {
         Entity entity = (Entity)var2.next();
         if (entity instanceof LivingEntity living) {
            if (this.isValid(living)) {
               targets.add(living);
            }
         }
      }

      if (targets.isEmpty()) {
         this.target = null;
      } else if (targets.size() == 1) {
         this.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 0.0;
            }
         }).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);
         }));
         this.target = (LivingEntity)targets.get(0);
      }
   }

   private void updateRotation(boolean attack, float rotationYawSpeed, float rotationPitchSpeed) {
      double heightOffset = !this.type.is("Спукитайм") && !this.type.is("Спукитайм new") ? (double)this.target.getHeight() * (mc.player.getDistanceEyePos(this.target) / (double)(Float)this.attackRange.get()) : (double)this.target.getHeight() * 0.9;
      Vector3d vec = !this.type.is("Спукитайм") && !this.type.is("Спукитайм new") ? this.target.getPositionVec().add(0.0, MathHelper.clamp(mc.player.getPosYEye() - this.target.getPosY(), 0.0, heightOffset), 0.0).subtract(mc.player.getEyePosition(1.0F)) : this.target.getPositionVec().add(0.0, heightOffset, 0.0).subtract(mc.player.getEyePosition(1.0F));
      this.isRotated = true;
      float yawToTarget = (float)MathHelper.wrapDegrees(Math.toDegrees(Math.atan2(vec.z, vec.x)) - 90.0);
      float pitchToTarget = (float)(-Math.toDegrees(Math.atan2(vec.y, Math.hypot(vec.x, vec.z))));
      if (this.type.is("Спукитайм") || this.type.is("Спукитайм new")) {
         yawToTarget += this.randomYawOffset;
         pitchToTarget += this.randomPitchOffset;
      }

      float yawDelta = MathHelper.wrapDegrees(yawToTarget - this.rotateVector.x);
      float pitchDelta = MathHelper.wrapDegrees(pitchToTarget - this.rotateVector.y);
      int roundedYaw = (int)yawDelta;
      float speed = this.type.is("Спукитайм new") ? 48.0F : (Float)this.rotationSpeed.get();
      if (speed < 0.5F) {
         speed = 0.5F;
      }

      float clampedYaw;
      float clampedPitch;
      float yaw;
      float pitch;
      float gcd;
      switch ((String)this.type.get()) {
         case "Плавная":
            clampedYaw = Math.min(Math.max(Math.abs(yawDelta), 1.0F), speed);
            clampedPitch = Math.min(Math.max(Math.abs(pitchDelta), 1.0F), rotationPitchSpeed);
            if (attack && this.selected != this.target && (Boolean)this.options.getValueByName("Ускорять ротацию при атаке").get()) {
               clampedPitch = Math.max(Math.abs(pitchDelta), 1.0F);
            } else {
               clampedPitch /= 3.0F;
            }

            if (Math.abs(clampedYaw - this.lastYaw) <= 3.0F) {
               clampedYaw = this.lastYaw + 3.1F;
            }

            yaw = this.rotateVector.x + (yawDelta > 0.0F ? clampedYaw : -clampedYaw);
            pitch = MathHelper.clamp(this.rotateVector.y + (pitchDelta > 0.0F ? clampedPitch : -clampedPitch), -89.0F, 89.0F);
            gcd = SensUtils.getGCDValue();
            yaw -= (yaw - this.rotateVector.x) % gcd;
            pitch -= (pitch - this.rotateVector.y) % gcd;
            this.rotateVector = new Vector2f(yaw, pitch);
            this.lastYaw = clampedYaw;
            this.lastPitch = clampedPitch;
            if ((Boolean)this.options.getValueByName("Коррекция движения").get()) {
               mc.player.rotationYawOffset = yaw;
            }
            break;
         case "Спукитайм":
         case "Спукитайм new":
            clampedYaw = Math.min(Math.abs(yawDelta), speed);
            clampedPitch = Math.min(Math.abs(pitchDelta), rotationPitchSpeed / 3.0F);
            clampedYaw = Math.min(clampedYaw, speed);
            clampedPitch = Math.min(clampedPitch, speed / 2.0F);
            yaw = this.rotateVector.x + (yawDelta > 0.0F ? clampedYaw : -clampedYaw);
            pitch = MathHelper.clamp(this.rotateVector.y + (pitchDelta > 0.0F ? clampedPitch : -clampedPitch), -89.0F, 89.0F);
            gcd = SensUtils.getGCDValue();
            yaw -= (yaw - this.rotateVector.x) % gcd;
            pitch -= (pitch - this.rotateVector.y) % gcd;
            this.rotateVector = new Vector2f(yaw, pitch);
            this.lastYaw = clampedYaw;
            this.lastPitch = clampedPitch;
            if ((Boolean)this.options.getValueByName("Коррекция движения").get()) {
               mc.player.rotationYawOffset = yaw;
            }
            break;
         case "Резкая":
            clampedYaw = this.rotateVector.x + (float)roundedYaw;
            clampedPitch = MathHelper.clamp(this.rotateVector.y + pitchDelta, -90.0F, 90.0F);
            yaw = SensUtils.getGCDValue();
            clampedYaw -= (clampedYaw - this.rotateVector.x) % yaw;
            clampedPitch -= (clampedPitch - this.rotateVector.y) % yaw;
            this.rotateVector = new Vector2f(clampedYaw, clampedPitch);
            if ((Boolean)this.options.getValueByName("Коррекция движения").get()) {
               mc.player.rotationYawOffset = clampedYaw;
            }
      }

   }

   private boolean isCritCondition() {
      boolean cancelReason = mc.player.isInWater() && mc.player.areEyesInFluid(FluidTags.WATER) || mc.player.isInLava() || mc.player.isOnLadder() || mc.player.isPassenger() || mc.player.abilities.isFlying;
      return !cancelReason && !mc.player.isOnGround() && mc.player.fallDistance > 0.0F;
   }

   private void updateAttack() {
      if (this.target != null) {
         if (!(mc.player.getDistance(this.target) > (Float)this.attackRange.get())) {
            if ((Boolean)this.options.getValueByName("Ускорять ротацию при атаке").get()) {
               this.updateRotation(true, 60.0F, 35.0F);
            }

            if (mc.player.isBlocking() && (Boolean)this.options.getValueByName("Отжимать щит").get()) {
               mc.playerController.onStoppedUsingItem(mc.player);
            }

            this.stopWatch.setLastMS(500L);
            mc.playerController.attackEntity(mc.player, this.target);
            mc.player.swingArm(Hand.MAIN_HAND);
            LivingEntity var2 = this.target;
            if (var2 instanceof PlayerEntity) {
               PlayerEntity player = (PlayerEntity)var2;
               if ((Boolean)this.options.getValueByName("Ломать щит").get()) {
                  this.breakShieldPlayer(player);
               }
            }

         }
      }
   }

   private void updateAttackSpooky() {
      if (this.target != null) {
         if (!(mc.player.getDistance(this.target) > (Float)this.attackRange.get())) {
            if ((Boolean)this.options.getValueByName("Ускорять ротацию при атаке").get()) {
               this.updateRotation(true, 60.0F, 35.0F);
            }

            if (mc.player.isBlocking() && (Boolean)this.options.getValueByName("Отжимать щит").get()) {
               mc.playerController.onStoppedUsingItem(mc.player);
            }

            this.spookyWatch.setLastMS(500L);
            mc.playerController.attackEntity(mc.player, this.target);
            mc.player.swingArm(Hand.MAIN_HAND);
            LivingEntity var2 = this.target;
            if (var2 instanceof PlayerEntity) {
               PlayerEntity player = (PlayerEntity)var2;
               if ((Boolean)this.options.getValueByName("Ломать щит").get()) {
                  this.breakShieldPlayer(player);
               }
            }

         }
      }
   }

   private boolean shouldPlayerFalling() {
      boolean cancelReason = mc.player.isInWater() && mc.player.areEyesInFluid(FluidTags.WATER) || mc.player.isInLava() || mc.player.isOnLadder() || mc.player.isPassenger() || mc.player.abilities.isFlying;
      float attackStrength = mc.player.getCooledAttackStrength((Boolean)this.options.getValueByName("Синхронизировать атаку с ТПС").get() ? Expensive.getInstance().getTpsCalc().getAdjustTicks() : 1.5F);
      if (attackStrength < 0.92F) {
         return false;
      } else if (!cancelReason && (Boolean)this.options.getValueByName("Только криты").get()) {
         return !mc.player.isOnGround() && mc.player.fallDistance > 0.0F;
      } else {
         return true;
      }
   }

   private boolean isValid(LivingEntity entity) {
      if (entity instanceof ClientPlayerEntity) {
         return false;
      } else if (entity.ticksExisted < 3) {
         return false;
      } else if (mc.player.getDistance(entity) > (Float)this.attackRange.get()) {
         return false;
      } else {
         if (entity instanceof PlayerEntity) {
            PlayerEntity p = (PlayerEntity)entity;
            if (AntiBot.isBot(entity)) {
               return false;
            }

            if (!(Boolean)this.targets.getValueByName("Друзья").get() && FriendStorage.isFriend(p.getName().getString())) {
               return false;
            }

            if (p.getName().getString().equalsIgnoreCase(mc.player.getName().getString())) {
               return false;
            }
         }

         if (entity instanceof PlayerEntity && !(Boolean)this.targets.getValueByName("Игроки").get()) {
            return false;
         } else if (entity instanceof PlayerEntity && entity.getTotalArmorValue() == 0 && !(Boolean)this.targets.getValueByName("Голые").get()) {
            return false;
         } else if (entity instanceof PlayerEntity && entity.isInvisible() && entity.getTotalArmorValue() == 0 && !(Boolean)this.targets.getValueByName("Голые невидимки").get()) {
            return false;
         } else if (entity instanceof PlayerEntity && entity.isInvisible() && !(Boolean)this.targets.getValueByName("Невидимки").get()) {
            return false;
         } else if (entity instanceof MonsterEntity && !(Boolean)this.targets.getValueByName("Мобы").get()) {
            return false;
         } else if (entity instanceof AnimalEntity && !(Boolean)this.targets.getValueByName("Животные").get()) {
            return false;
         } else {
            return !entity.isInvulnerable() && entity.isAlive() && !(entity instanceof ArmorStandEntity);
         }
      }
   }

   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.getValueByName("Коррекция движения").get()) {
         mc.player.rotationYawOffset = -2.1474836E9F;
      }

      this.rotateVector = new Vector2f(mc.player.rotationYaw, mc.player.rotationPitch);
      this.smoothHeadYaw = mc.player.rotationYaw;
      this.smoothHeadPitch = mc.player.rotationPitch;
   }

   public void onEnable() {
      super.onEnable();
      this.reset();
      this.target = null;
      this.spookyOffsetMs = 0;
      this.lastDelays.clear();
      this.lastCritDelay = 0;
      this.isWaitingForCrit = false;
      this.stopWatch.setLastMS(0L);
      this.spookyWatch.setLastMS(0L);
      this.critDelayWatch.setLastMS(0L);
   }

   public void onDisable() {
      super.onDisable();
      this.reset();
      this.stopWatch.setLastMS(0L);
      this.spookyWatch.setLastMS(0L);
      this.critDelayWatch.setLastMS(0L);
      this.target = null;
      this.lastDelays.clear();
      this.lastCritDelay = 0;
      this.isWaitingForCrit = false;
   }

   private double getEntityArmor(PlayerEntity entityPlayer2) {
      double d2 = 0.0;

      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 var3 = stack.getItem();
      if (var3 instanceof ArmorItem i) {
         double dmg = (double)i.getDamageReduceAmount();
         if (stack.isEnchanted()) {
            dmg += (double)EnchantmentHelper.getEnchantmentLevel(Enchantments.PROTECTION, stack) * 0.25;
         }

         return dmg;
      } else {
         return 0.0;
      }
   }

   private double getEntityHealth(LivingEntity ent) {
      if (ent instanceof PlayerEntity player) {
         return (double)(player.getHealth() + player.getAbsorptionAmount()) * (this.getEntityArmor(player) / 20.0);
      } else {
         return (double)(ent.getHealth() + ent.getAbsorptionAmount());
      }
   }

   public ModeSetting getType() {
      return this.type;
   }

   public ModeListSetting getOptions() {
      return this.options;
   }

   public StopWatch getStopWatch() {
      return this.stopWatch;
   }

   public LivingEntity getTarget() {
      return this.target;
   }
}
 
буквально
1776869730463.png
 
Назад
Сверху Снизу