-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Если что килллаура не моя да я пастер, вроде как обходит такие сервера как space-times (no ad) и тд, такие же сервера кит пвп, ротация повикшена там была сразу, мне зашло, жду ваше мнение в коментах
Код:
package im.expensive.functions.impl.combat;
import com.google.common.eventbus.Subscribe;
import com.mojang.blaze3d.platform.GlStateManager;
import im.expensive.Expensive;
import im.expensive.command.friends.FriendStorage;
import im.expensive.events.EventDisplay;
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.impl.render.HUD;
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.Animation;
import im.expensive.utils.animations.impl.DecelerateAnimation;
import im.expensive.utils.math.SensUtils;
import im.expensive.utils.math.StopWatch;
import im.expensive.utils.math.Vector4i;
import im.expensive.utils.player.InventoryUtil;
import im.expensive.utils.player.MouseUtil;
import im.expensive.utils.player.MoveUtils;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import im.expensive.utils.projections.ProjectionUtil;
import im.expensive.utils.render.ColorUtils;
import im.expensive.utils.render.DisplayUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.player.ClientPlayerEntity;
import net.minecraft.client.world.ClientWorld;
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.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.RayTraceContext;
import net.minecraft.util.math.RayTraceResult;
import net.minecraft.util.math.RayTraceContext.BlockMode;
import net.minecraft.util.math.RayTraceContext.FluidMode;
import net.minecraft.util.math.RayTraceResult.Type;
import net.minecraft.util.math.vector.Vector2f;
import net.minecraft.util.math.vector.Vector3d;
import net.optifine.CustomColors;
@FunctionRegister(
name = "Aura",
type = Category.Combat
)
public class KillAura extends Function {
private final ModeSetting type = new ModeSetting("Тип", "HolyWorld", new String[]{"HolyWorld", "FunTime"});
private final SliderSetting attackRange = new SliderSetting("Дистанция аттаки", 3.0F, 2.0F, 6.0F, 0.1F);
private final SliderSetting tickRot = (new SliderSetting("Тики наводки", 2.0F, 1.0F, 7.0F, 1.0F)).setVisible(() -> {
return !this.type.is("HolyWorld") && !this.type.is("Bypass") && !this.type.is("Custom") && !this.type.is("Matrix") && !this.type.is("GrimAC") && !this.type.is("Intave");
});
private final ModeSetting jump = new ModeSetting("АвтоПрыжок", "Выкл", "Выкл", "Вкл");
private final SliderSetting aimDistance = (new SliderSetting("Дальность наводки", 0.0F, 0.0F, 10.0F, 1.0F)).setVisible(() -> {
return !this.type.is("Снапы");
});
private final SliderSetting lerpYaw = (new SliderSetting("Custom X Speed", 0.46F, 0.01F, 1.0F, 0.01F)).setVisible(() -> {
return !this.type.is("HolyWorld") && !this.type.is("Bypass") && !this.type.is("Снапы") && !this.type.is("Matrix") && !this.type.is("GrimAC") && !this.type.is("Intave");
});
private final SliderSetting lerpPitch = (new SliderSetting("Custom Y Speed", 0.28F, 0.01F, 1.0F, 0.01F)).setVisible(() -> {
return !this.type.is("HolyWorld") && !this.type.is("Bypass") && !this.type.is("Снапы") && !this.type.is("Matrix") && !this.type.is("GrimAC") && !this.type.is("Intave");
});
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)});
private final BooleanSetting legitCorrection = new BooleanSetting("Silent Move", false);
private final BooleanSetting checkWallObstruction = new BooleanSetting("не бить через стену", false);
private final BooleanSetting legitRotations = new BooleanSetting("Look Cam", false);
private final StopWatch stopWatch = new StopWatch();
private Vector2f rotateVector = new Vector2f(0.0F, 0.0F);
private LivingEntity target;
private final Animation alpha = new DecelerateAnimation(700, 255.0);
private Entity selected;
int ticks = 0;
boolean isRotated;
final AutoPotion autoPotion;
float lastYaw;
float lastPitch;
private double gaussianRandom(double mean, double stdDev) {
return mean + CustomColors.random.nextGaussian() * stdDev;
}
public KillAura(AutoPotion autoPotion) {
this.autoPotion = autoPotion;
this.addSettings(new Setting[]{this.type, this.attackRange, this.tickRot, this.aimDistance, this.targets, this.options, this.jump, this.legitCorrection, this.legitRotations, this.checkWallObstruction, this.lerpYaw, this.lerpPitch});
}
@Subscribe
public void onInput(EventInput eventInput) {
if ((Boolean)this.options.getValueByName("Коррекция движения").get() && this.target != null) {
Minecraft var10000 = mc;
if (Minecraft.player != null && (Boolean)this.legitCorrection.get()) {
if (this.type.is("HolyWorld")) {
MoveUtils.fixMovement(eventInput, this.rotateVector.x);
}
if (this.type.is("FunTime")) {
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.jump.is("Вкл")) {
if (mc.player.isOnGround()) mc.player.jump();
}
if (this.target != null && (!this.autoPotion.isState() || !this.autoPotion.isActive())) {
this.isRotated = false;
if (this.shouldPlayerFalling() && this.stopWatch.hasTimeElapsed()) {
this.updateAttack();
int ticksnap = Math.round((Float)this.tickRot.get());
this.ticks = ticksnap;
}
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 {
this.stopWatch.setLastMS(0L);
this.reset();
}
}
@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);
Minecraft var10000 = mc;
Minecraft.player.rotationYawHead = yaw;
var10000 = mc;
Minecraft.player.renderYawOffset = yaw;
var10000 = mc;
Minecraft.player.rotationPitchHead = pitch;
float bodyYaw = this.rotateVector.x;
if ((Boolean)this.legitRotations.get()) {
float headYaw = bodyYaw;
var10000 = mc;
Minecraft.player.renderArmYaw = bodyYaw;
var10000 = mc;
Minecraft.player.prevRenderArmYaw = bodyYaw;
var10000 = mc;
Minecraft.player.rotationYaw = bodyYaw;
var10000 = mc;
Minecraft.player.prevRotationYaw = bodyYaw;
var10000 = mc;
Minecraft.player.rotationYawHead = headYaw;
var10000 = mc;
Minecraft.player.prevRotationYawHead = headYaw;
var10000 = mc;
Minecraft.player.rotationPitch = pitch;
var10000 = mc;
Minecraft.player.prevRotationPitch = pitch;
}
}
}
private void updateTarget() {
List<LivingEntity> targets = new ArrayList();
Minecraft var10000 = mc;
Iterator var2 = Minecraft.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)Minecraft.player.getDistance((LivingEntity)object);
double d3 = (double)Minecraft.player.getDistance((LivingEntity)object2);
return Double.compare(d2, d3);
}));
this.target = (LivingEntity)targets.get(0);
}
}
private void updateRotation(boolean attack, float rotationYawSpeed, float rotationPitchSpeed) {
Vector3d var10000 = this.target.getPositionVec();
Minecraft var10002 = mc;
double var23 = Minecraft.player.getPosYEye() - this.target.getPosY();
double var10004 = (double)this.target.getHeight();
Minecraft var10005 = mc;
var10000 = var10000.add(0.0, MathHelper.clamp(var23, 0.0, var10004 * (Minecraft.player.getDistanceEyePos(this.target) / (double)(Float)this.attackRange.get())), 0.0);
Minecraft var10001 = mc;
Vector3d vec = var10000.subtract(Minecraft.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))));
float yawDelta = MathHelper.wrapDegrees(yawToTarget - this.rotateVector.x);
float pitchDelta = MathHelper.wrapDegrees(pitchToTarget - this.rotateVector.y);
int roundedYaw = (int)yawDelta;
float clampedYaw;
float clampedPitch;
float yaw;
float pitch;
float gcd;
switch ((String)this.type.get()) {
case "HolyWorld":
clampedYaw = Math.min(Math.max(Math.abs(yawDelta), 1.0F), rotationYawSpeed * 1.5F);
clampedPitch = Math.min(Math.max(Math.abs(pitchDelta), 1.0F), rotationPitchSpeed * 1.5F);
if (Math.abs(clampedYaw - this.lastYaw) <= 1.0F) {
clampedYaw = this.lastYaw + 1.0F;
}
yaw = this.rotateVector.x + (yawDelta > 0.0F ? clampedYaw : -clampedYaw);
pitch = MathHelper.clamp(this.rotateVector.y + (pitchDelta > 0.0F ? clampedPitch : -clampedPitch), -90.0F, 90.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()) {
Minecraft var17 = mc;
Minecraft.player.rotationYawOffset = yaw;
}
break;
case "FunTime":
clampedYaw = Math.min(Math.max(Math.abs(yawDelta), 1.4F), rotationYawSpeed);
clampedPitch = Math.min(Math.max(Math.abs(pitchDelta), 1.2F), rotationPitchSpeed);
float horizontalRandom = (float)(Math.random() * 6.0 - 3.0);
float verticalRandom = (float)(Math.random() * 0.85 - 0.425);
if (attack && this.selected != this.target && (Boolean)this.options.getValueByName("Ускорять ротацию").get()) {
clampedPitch = Math.max(Math.abs(pitchDelta), 1.0F);
} else {
clampedPitch /= 3.0F;
}
float interpolatedYaw = this.rotateVector.x + (yawDelta > 0.0F ? clampedYaw : -clampedYaw);
float interpolatedPitch = MathHelper.clamp(this.rotateVector.y + (pitchDelta > 0.0F ? clampedPitch : -clampedPitch), -89.0F, 89.0F);
yaw = interpolatedYaw + horizontalRandom;
pitch = interpolatedPitch + verticalRandom;
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()) {
Minecraft var22 = mc;
Minecraft.player.rotationYawOffset = yaw;
}
}
}
private float lerp(float start, float end, float factor) {
return start + factor * (end - start);
}
private void updateAttack() {
if (!(Boolean)this.checkWallObstruction.get() || this.canSeeThroughWall(this.target)) {
this.selected = MouseUtil.getMouseOver(this.target, this.rotateVector.x, this.rotateVector.y, (double)(Float)this.attackRange.get());
if ((Boolean)this.options.getValueByName("Ускорять ротацию").get()) {
this.updateRotation(true, 60.0F, 35.0F);
}
Minecraft var10000;
if (this.selected == null || this.selected != this.target) {
var10000 = mc;
if (!Minecraft.player.isElytraFlying()) {
return;
}
}
var10000 = mc;
Minecraft var10001;
if (Minecraft.player.isBlocking() && (Boolean)this.options.getValueByName("Отжимать щит").get()) {
var10001 = mc;
mc.playerController.onStoppedUsingItem(Minecraft.player);
}
var10000 = mc;
Minecraft.player.setSprinting(false);
var10001 = mc;
mc.playerController.attackEntity(Minecraft.player, this.target);
var10000 = mc;
Minecraft.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 canSeeThroughWall(Entity entity) {
Minecraft var10000 = mc;
ClientWorld var3 = Minecraft.world;
Minecraft var10003 = mc;
Vector3d var4 = Minecraft.player.getEyePosition(1.0F);
Vector3d var10004 = entity.getEyePosition(1.0F);
Minecraft var10007 = mc;
RayTraceResult result = var3.rayTraceBlocks(new RayTraceContext(var4, var10004, BlockMode.COLLIDER, FluidMode.NONE, Minecraft.player));
return result == null || ((RayTraceResult)result).getType() == Type.MISS;
}
private boolean shouldPlayerFalling() {
Minecraft var10000;
boolean var3;
label46: {
label45: {
var10000 = mc;
if (Minecraft.player.isInWater()) {
var10000 = mc;
if (Minecraft.player.areEyesInFluid(FluidTags.WATER)) {
break label45;
}
}
var10000 = mc;
if (!Minecraft.player.isInLava()) {
var10000 = mc;
if (!Minecraft.player.isOnLadder()) {
var10000 = mc;
if (!Minecraft.player.isPassenger()) {
var10000 = mc;
if (!Minecraft.player.abilities.isFlying) {
var3 = false;
break label46;
}
}
}
}
}
var3 = true;
}
boolean cancelReason = var3;
var10000 = mc;
float attackStrength = Minecraft.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()) {
var10000 = mc;
if (!Minecraft.player.isOnGround()) {
var10000 = mc;
if (Minecraft.player.fallDistance > 0.0F) {
var3 = true;
return var3;
}
}
var3 = false;
return var3;
} else {
return true;
}
}
@Subscribe
private void onDisplay(EventDisplay e) {
if (e.getType() != im.expensive.events.EventDisplay.Type.PRE) {
return;
}
if (target != null) {
Minecraft var10001 = mc;
if (target != Minecraft.player) {
double sin = Math.sin((double)System.currentTimeMillis() / 1000.0);
float size = 70.0F;
Vector3d interpolated = target.getPositon(e.getPartialTicks());
Vector2f pos = ProjectionUtil.project(interpolated.x, interpolated.y + (double)(target.getHeight() / 2.0F), interpolated.z);
GlStateManager.pushMatrix();
GlStateManager.translatef(pos.x, pos.y, 0.0F);
GlStateManager.rotatef((float)sin * 360.0F, 0.0F, 0.0F, 1.0F);
GlStateManager.translatef(-pos.x, -pos.y, 0.0F);
if (pos != null) {
DisplayUtils.drawImageAlpha(new ResourceLocation("expensive/images/target1.png"), pos.x - size / 2.0F, pos.y - size / 2.0F, size, size, new Vector4i(ColorUtils.setAlpha(HUD.getColor(0, 1.0F), (int)this.alpha.getOutput()), ColorUtils.setAlpha(HUD.getColor(90, 1.0F), (int)this.alpha.getOutput()), ColorUtils.setAlpha(HUD.getColor(180, 1.0F), (int)this.alpha.getOutput()), ColorUtils.setAlpha(HUD.getColor(270, 1.0F), (int)this.alpha.getOutput())));
GlStateManager.popMatrix();
}
}
}
}
private boolean isValid(LivingEntity entity) {
double aimRange = (double)((Float)this.attackRange.get() + (Float)this.aimDistance.get());
if (entity instanceof PlayerEntity && AntiBot.isBot(entity) && ((PlayerEntity)entity).isBot) {
return false;
} else if (entity instanceof ClientPlayerEntity) {
return false;
} else {
if (entity.ticksExisted >= 3) {
Minecraft var10000 = mc;
if (!((double)Minecraft.player.getDistance(entity) > aimRange)) {
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;
}
String var5 = p.getName().getString();
Minecraft var10001 = mc;
if (var5.equalsIgnoreCase(Minecraft.player.getName().getString())) {
return false;
}
}
if (entity instanceof PlayerEntity && !(Boolean)this.targets.getValueByName("Игроки").get()) {
return false;
}
if (entity instanceof PlayerEntity && entity.getTotalArmorValue() == 0 && !(Boolean)this.targets.getValueByName("Голые").get()) {
return false;
}
if (entity instanceof PlayerEntity && entity.isInvisible() && entity.getTotalArmorValue() == 0 && !(Boolean)this.targets.getValueByName("Голые невидимки").get()) {
return false;
}
if (entity instanceof PlayerEntity && entity.isInvisible() && !(Boolean)this.targets.getValueByName("Невидимки").get()) {
return false;
}
if (entity instanceof MonsterEntity && !(Boolean)this.targets.getValueByName("Мобы").get()) {
return false;
}
if (entity instanceof AnimalEntity && !(Boolean)this.targets.getValueByName("Животные").get()) {
return false;
}
return !entity.isInvulnerable() && entity.isAlive() && !(entity instanceof ArmorStandEntity);
}
}
return false;
}
}
private void breakShieldPlayer(PlayerEntity entity) {
if (entity.isBlocking()) {
int invSlot = InventoryUtil.getInstance().getAxeInInventory(false);
int hotBarSlot = InventoryUtil.getInstance().getAxeInInventory(true);
Minecraft var10000;
Minecraft var10001;
Minecraft var10003;
if (hotBarSlot == -1 && invSlot != -1) {
int bestSlot = InventoryUtil.getInstance().findBestSlotInHotBar();
Minecraft var10005 = mc;
mc.playerController.windowClick(0, invSlot, 0, ClickType.PICKUP, Minecraft.player);
int var10002 = bestSlot + 36;
var10005 = mc;
mc.playerController.windowClick(0, var10002, 0, ClickType.PICKUP, Minecraft.player);
var10000 = mc;
Minecraft.player.connection.sendPacket(new CHeldItemChangePacket(bestSlot));
var10001 = mc;
mc.playerController.attackEntity(Minecraft.player, entity);
var10000 = mc;
Minecraft.player.swingArm(Hand.MAIN_HAND);
var10000 = mc;
var10003 = mc;
Minecraft.player.connection.sendPacket(new CHeldItemChangePacket(Minecraft.player.inventory.currentItem));
var10002 = bestSlot + 36;
var10005 = mc;
mc.playerController.windowClick(0, var10002, 0, ClickType.PICKUP, Minecraft.player);
var10005 = mc;
mc.playerController.windowClick(0, invSlot, 0, ClickType.PICKUP, Minecraft.player);
}
if (hotBarSlot != -1) {
var10000 = mc;
Minecraft.player.connection.sendPacket(new CHeldItemChangePacket(hotBarSlot));
var10001 = mc;
mc.playerController.attackEntity(Minecraft.player, entity);
var10000 = mc;
Minecraft.player.swingArm(Hand.MAIN_HAND);
var10000 = mc;
var10003 = mc;
Minecraft.player.connection.sendPacket(new CHeldItemChangePacket(Minecraft.player.inventory.currentItem));
}
}
}
private void reset() {
if ((Boolean)this.options.getValueByName("Коррекция движения").get()) {
Minecraft var10000 = mc;
Minecraft.player.rotationYawOffset = -2.1474836E9F;
}
Minecraft var10003 = mc;
Minecraft var10004 = mc;
this.rotateVector = new Vector2f(Minecraft.player.rotationYaw, Minecraft.player.rotationPitch);
}
public void onEnable() {
super.onEnable();
this.reset();
this.target = null;
}
public void onDisable() {
super.onDisable();
this.reset();
this.stopWatch.setLastMS(0L);
this.target = null;
}
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 damageReduceAmount = (double)i.getDamageReduceAmount();
if (stack.isEnchanted()) {
damageReduceAmount += (double)EnchantmentHelper.getEnchantmentLevel(Enchantments.PROTECTION, stack) * 0.25;
}
return damageReduceAmount;
} else {
return 0.0;
}
}
private double getEntityHealth(Entity entity) {
if (entity instanceof PlayerEntity player) {
double armorValue = this.getEntityArmor(player) / 20.0;
return (double)(player.getHealth() + player.getAbsorptionAmount()) * armorValue;
} else if (entity instanceof LivingEntity livingEntity) {
return (double)(livingEntity.getHealth() + livingEntity.getAbsorptionAmount());
} else {
return 0.0;
}
}
public ModeSetting getType() {
return this.type;
}
public ModeListSetting getOptions() {
return this.options;
}
public StopWatch getStopWatch() {
return this.stopWatch;
}
public LivingEntity getTarget() {
return this.target;
}
}