- Выберите загрузчик игры
- Прочие моды
всем привет сливаю триггер бот - аимассист. Обходит Античит Sloth AI
TriggerBot:
import expensive.events.EventTarget;
import expensive.events.EventUpdate;
import expensive.events.EventDisplay;
import expensive.functions.api.Category;
import expensive.functions.api.Function;
import expensive.functions.api.FunctionRegister;
import expensive.functions.settings.Setting;
import expensive.functions.settings.impl.BooleanSetting;
import expensive.functions.settings.impl.ModeSetting;
import expensive.functions.settings.impl.SliderSetting;
import expensive.utils.drag.Dragging;
import expensive.Dick;
import com.mojang.blaze3d.matrix.MatrixStack;
import expensive.utils.render.DisplayUtils;
import expensive.utils.render.ColorUtils;
import expensive.utils.render.font.Fonts;
import expensive.utils.math.StopWatch;
import expensive.utils.player.AttackUtil;
import expensive.utils.player.InventoryUtil;
import java.util.Comparator;
import java.util.List;
import java.util.concurrent.ThreadLocalRandom;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.container.ClickType;
import net.minecraft.item.Item;
import net.minecraft.item.Items;
import net.minecraft.network.play.client.CEntityActionPacket;
import net.minecraft.network.play.client.CHeldItemChangePacket;
import net.minecraft.util.Hand;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.EntityRayTraceResult;
import net.minecraft.util.math.RayTraceContext;
import net.minecraft.util.math.RayTraceResult;
import net.minecraft.util.math.vector.Vector3d;
@FunctionRegister(
name = "TriggerBot",
description = "TriggerBot",
type = Category.Combat
)
public class TriggerBot extends Function {
private final BooleanSetting players = new BooleanSetting("Игроки", true);
private final BooleanSetting mobs = new BooleanSetting("Мобы", true);
private final BooleanSetting animals = new BooleanSetting("Животные", true);
private final BooleanSetting onlyCrit = new BooleanSetting("Только криты", true);
private final BooleanSetting shieldBreak = new BooleanSetting("Ломать щит", false);
private final BooleanSetting wallHit = new BooleanSetting("Удары через стены", false);
private final BooleanSetting correciaebat = new BooleanSetting("Корректировать удары", false);
private final BooleanSetting elytraTarget = new BooleanSetting("Элитра таргет", false);
private final ModeSetting elytraMode = new ModeSetting("Режим элитры", "Авто", new String[]{"Авто", "Кастом"});
private final SliderSetting elytraDistance = new SliderSetting("Доп. дистанция", 1.5F, 1.0F, 5.0F, 0.1F);
private final ModeSetting elytraOvertake = new ModeSetting("Выбор обгона", "Новый", new String[]{"Старый", "Новый"});
private final BooleanSetting elytraEatChorus = new BooleanSetting("Кушать хорус", true);
private final StopWatch stopWatch = new StopWatch();
private static LivingEntity currentTarget;
private boolean isEatingChorus = false;
private int lastSlot = 0;
public TriggerBot() {
this.addSettings(new Setting[]{this.wallHit, this.onlyCrit, this.players, this.animals, this.shieldBreak, this.correciaebat, this.elytraTarget, this.elytraMode, this.elytraDistance, this.elytraOvertake, this.elytraEatChorus});
}
@EventTarget
public void onUpdate(EventUpdate e) {
this.handleElytraChorus();
Entity entity = this.getValidEntity();
if (entity != null && mc.player != null) {
currentTarget = (LivingEntity)entity;
if (this.shouldAttack()) {
this.stopWatch.setLastMS(450L);
this.attackEntity(entity);
}
} else {
currentTarget = null;
}
}
public static LivingEntity getCurrentTarget() {
return currentTarget;
}
private boolean shouldAttack() {
return AttackUtil.isPlayerFalling((Boolean)this.onlyCrit.get(), true, false) && this.stopWatch.hasTimeElapsed();
}
private void attackEntity(Entity entity) {
boolean shouldStopSprinting = false;
if ((Boolean)this.onlyCrit.get() && CEntityActionPacket.lastUpdatedSprint) {
mc.player.connection.sendPacket(new CEntityActionPacket(mc.player, CEntityActionPacket.Action.STOP_SPRINTING));
shouldStopSprinting = true;
}
if ((Boolean)this.wallHit.get() || this.canSeeEntity(entity)) {
mc.playerController.attackEntity(mc.player, entity);
mc.player.swingArm(Hand.MAIN_HAND);
if ((Boolean)this.shieldBreak.get() && entity instanceof PlayerEntity) {
breakShieldPlayer(entity);
}
}
if (shouldStopSprinting) {
mc.player.connection.sendPacket(new CEntityActionPacket(mc.player, CEntityActionPacket.Action.START_SPRINTING));
}
}
private boolean canSeeEntity(Entity entity) {
if (entity == null) {
return false;
} else {
Vector3d eyesPos = mc.player.getEyePosition(1.0F);
Vector3d targetPos = entity.getBoundingBox().getCenter();
RayTraceResult result = mc.world.rayTraceBlocks(new RayTraceContext(eyesPos, targetPos, RayTraceContext.BlockMode.COLLIDER, RayTraceContext.FluidMode.NONE, mc.player));
return result.getType() == RayTraceResult.Type.MISS;
}
}
private Entity getValidEntity() {
if ((Boolean)this.elytraTarget.get() && mc.player.isElytraFlying()) {
return this.findElytraTarget();
} else if ((Boolean)this.wallHit.get()) {
return this.findTargetThroughWalls();
} else {
if (mc.objectMouseOver.getType() == RayTraceResult.Type.ENTITY) {
Entity entity = ((EntityRayTraceResult)mc.objectMouseOver).getEntity();
if (this.checkEntity((LivingEntity)entity)) {
return entity;
}
}
return null;
}
}
private Entity findElytraTarget() {
if (mc.player != null && mc.world != null) {
double range = (double)12.0F;
AxisAlignedBB searchBox = mc.player.getBoundingBox().grow(range);
List<Entity> entities = mc.world.getEntitiesWithinAABBExcludingEntity(mc.player, searchBox);
return (Entity)entities.stream().filter((entity) -> entity instanceof LivingEntity).map((entity) -> (LivingEntity)entity).filter(this::checkEntity).filter((entity) -> entity.isAlive()).filter((entity) -> entity.isElytraFlying()).min(Comparator.comparingDouble((entity) -> {
double baseDistance = mc.player.getDistanceSq(entity);
return this.elytraMode.is("Кастом") ? baseDistance + (double)(Float)this.elytraDistance.get() : baseDistance;
})).orElse(null);
} else {
return null;
}
}
private Entity findTargetThroughWalls() {
if (mc.player != null && mc.world != null) {
double range = (double)6.0F;
AxisAlignedBB searchBox = mc.player.getBoundingBox().grow(range);
List<Entity> entities = mc.world.getEntitiesWithinAABBExcludingEntity(mc.player, searchBox);
return (Entity)entities.stream().filter((entity) -> entity instanceof LivingEntity).map((entity) -> (LivingEntity)entity).filter(this::checkEntity).filter((entity) -> entity.isAlive()).min(Comparator.comparingDouble((entity) -> mc.player.getDistanceSq(entity))).orElse(null);
} else {
return null;
}
}
private void handleElytraChorus() {
if ((Boolean)this.elytraTarget.get() && (Boolean)this.elytraEatChorus.get() && mc.player.isElytraFlying()) {
if (currentTarget != null && currentTarget.getHeldItemMainhand().getItem() == Items.CHORUS_FRUIT && currentTarget.isHandActive() && this.doesHotbarHaveItem(Items.CHORUS_FRUIT)) {
if (!this.isEatingChorus) {
this.lastSlot = mc.player.inventory.currentItem;
this.useChorusFruit();
this.isEatingChorus = true;
}
} else if (this.isEatingChorus) {
this.stopEatingChorus();
this.isEatingChorus = false;
}
}
}
private boolean doesHotbarHaveItem(Item item) {
for(int i = 0; i < 9; ++i) {
if (mc.player.inventory.getStackInSlot(i).getItem() == item) {
return true;
}
}
return false;
}
private void useChorusFruit() {
int chorusSlot = -1;
for(int i = 0; i < 9; ++i) {
if (mc.player.inventory.getStackInSlot(i).getItem() == Items.CHORUS_FRUIT) {
chorusSlot = i;
break;
}
}
if (chorusSlot != -1) {
mc.player.inventory.currentItem = chorusSlot;
mc.gameSettings.keyBindUseItem.setPressed(true);
}
}
private void stopEatingChorus() {
mc.gameSettings.keyBindUseItem.setPressed(false);
mc.player.inventory.currentItem = this.lastSlot;
}
public static void breakShieldPlayer(Entity entity) {
if (((LivingEntity)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 boolean checkEntity(LivingEntity entity) {
AttackUtil entitySelector = new AttackUtil();
if ((Boolean)this.players.get()) {
entitySelector.apply(AttackUtil.EntityType.PLAYERS);
}
if ((Boolean)this.mobs.get()) {
entitySelector.apply(AttackUtil.EntityType.MOBS);
}
if ((Boolean)this.animals.get()) {
entitySelector.apply(AttackUtil.EntityType.ANIMALS);
}
return entitySelector.ofType(entity, entitySelector.build()) != null && entity.isAlive();
}
public void onDisable() {
currentTarget = null;
this.stopWatch.reset();
if (this.isEatingChorus) {
this.stopEatingChorus();
this.isEatingChorus = false;
}
super.onDisable();
}
}