Часть функционала FuntimeHelper Expensive 3.1

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
17 Мар 2025
Сообщения
8
Реакции
0
Выберите загрузчик игры
  1. Vanilla
  2. Прочие моды
Funtime Helper под Expensive 3.1
ss снизу


Аннотация 2025-10-13 225426.png

код

Java:
Expand Collapse Copy
package im.expensive.functions.impl.misc;

import com.google.common.eventbus.Subscribe;
import com.mojang.blaze3d.platform.GlStateManager;
import im.expensive.command.friends.FriendStorage;
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.impl.BooleanSetting;
import im.expensive.functions.settings.impl.BindSetting;
import im.expensive.functions.settings.impl.TitleSetting;
import im.expensive.functions.settings.impl.ModeListSetting;
import im.expensive.utils.client.IMinecraft;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.MobEntity;
import net.minecraft.entity.passive.AnimalEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Item;
import net.minecraft.item.Items;
import net.minecraft.util.math.MathHelper;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Hand;
import net.minecraft.network.play.client.CHeldItemChangePacket;
import net.minecraft.network.play.client.CPlayerTryUseItemPacket;

@FunctionRegister(name = "Funtime Helper", type = Category.Misc)
public class FuntimeHelper extends Function implements IMinecraft {

    private final ModeListSetting useWith = new ModeListSetting("Использовать с",
            new BooleanSetting("Явной пылью", true),
            new BooleanSetting("Дезориентацией", true),
            new BooleanSetting("Трапкой", true)
    );

    private final ModeListSetting targets = new ModeListSetting("Цели",
            new BooleanSetting("Мобы", true),
            new BooleanSetting("Животные", true),
            new BooleanSetting("Игроки", true),
            new BooleanSetting("Друзья", false)
    );

    // Бинды
    private final TitleSetting bindsTitle = new TitleSetting("Бинды");
    private final BindSetting trapkaBind = new BindSetting("Трапка", -1);
    private final BindSetting yavnayaPylBind = new BindSetting("Явная пыль", -1);
    private final BindSetting dezorientBind = new BindSetting("Дезоринтация", -1);
    private final BindSetting snezokBind = new BindSetting("Снежок заморозка",-1);

    public FuntimeHelper() {
        addSettings(useWith, targets,
                bindsTitle,
                trapkaBind,
                yavnayaPylBind,
                dezorientBind,
                snezokBind);
    }

    @Subscribe
    private void onKey(im.expensive.events.EventKey e) {
        if (mc.player == null || mc.world == null) return;

        int key = e.getKey();
        Item targetItem = null;
        if (key == trapkaBind.get()) targetItem = Items.NETHERITE_SCRAP;
        if (key == yavnayaPylBind.get()) targetItem = Items.SUGAR;
        if (key == dezorientBind.get()) targetItem = Items.ENDER_EYE;
        if (key == snezokBind.get()) targetItem = Items.SNOWBALL;
        if (targetItem == null) return;

        // Try fast select in hotbar first
        int hotbarSlot = -1;
        for (int i = 0; i < 9; i++) {
            ItemStack stack = mc.player.inventory.getStackInSlot(i);
            if (!stack.isEmpty() && stack.getItem() == targetItem) {
                hotbarSlot = i;
                break;
            }
        }

        if (hotbarSlot != -1) {
            int prev = mc.player.inventory.currentItem;
            // switch to slot (client + server), then use
            mc.player.inventory.currentItem = hotbarSlot;
            mc.player.connection.sendPacket(new CHeldItemChangePacket(hotbarSlot));
            mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
            mc.player.swingArm(Hand.MAIN_HAND);
            // switch back
            mc.player.inventory.currentItem = prev;
            mc.player.connection.sendPacket(new CHeldItemChangePacket(prev));
            return;
        }

        // Not in hotbar: pick from inventory (9..35) into hand and use
        for (int i = 9; i < 36; i++) {
            ItemStack stack = mc.player.inventory.getStackInSlot(i);
            if (!stack.isEmpty() && stack.getItem() == targetItem) {
                // Pick item from inventory into current hotbar slot, then use
                mc.playerController.pickItem(i);
                mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
                mc.player.swingArm(Hand.MAIN_HAND);
                break;
            }
        }
    }

    @Subscribe
    private void onRenderWorld(WorldEvent e) {
        if (mc.player == null || mc.world == null) return;

        Item held = mc.player.getHeldItemMainhand().getItem();
        if (!isEnabledForHeldItem(held)) return;

        if (held == Items.NETHERITE_SCRAP) {
            // Trapka: render a volumetric 4x4 hollow prism (bottom, top, and 4 walls)
            double px = MathHelper.lerp(e.getPartialTicks(), mc.player.prevPosX, mc.player.getPosX());
            double py = MathHelper.lerp(e.getPartialTicks(), mc.player.prevPosY, mc.player.getPosY());
            double pz = MathHelper.lerp(e.getPartialTicks(), mc.player.prevPosZ, mc.player.getPosZ());

            double half = 2.0; // 4x4 outer
            double minX = px - half;
            double maxX = px + half;
            double minZ = pz - half;
            double maxZ = pz + half;
            double baseY = py + 0.02;
            double topY = py + 4.0; // height of prism

            boolean hasTargets = isAnyTargetInAABB(minX, maxX, minZ, maxZ);
            int color = hasTargets ? im.expensive.utils.render.ColorUtils.rgb(144, 238, 144) : 0xFFFFFFFF;
            int r = (color >> 16) & 0xFF, g = (color >> 8) & 0xFF, b = color & 0xFF;

            GlStateManager.pushMatrix();
            GlStateManager.shadeModel(7425);
            GlStateManager.disableTexture();
            GlStateManager.enableBlend();
            GlStateManager.blendFunc(770, 771);
            GlStateManager.disableAlphaTest();
            GlStateManager.disableCull();
            GlStateManager.lineWidth(2.0F);
            GlStateManager.translated(-mc.getRenderManager().info.getProjectedView().x,
                    -mc.getRenderManager().info.getProjectedView().y,
                    -mc.getRenderManager().info.getProjectedView().z);

            // bottom square
            buffer.begin(3, net.minecraft.client.renderer.vertex.DefaultVertexFormats.POSITION_COLOR);
            buffer.pos(minX, baseY, minZ).color(r, g, b, 200).endVertex();
            buffer.pos(maxX, baseY, minZ).color(r, g, b, 200).endVertex();
            buffer.pos(maxX, baseY, maxZ).color(r, g, b, 200).endVertex();
            buffer.pos(minX, baseY, maxZ).color(r, g, b, 200).endVertex();
            buffer.pos(minX, baseY, minZ).color(r, g, b, 200).endVertex();
            tessellator.draw();

            // top square
            buffer.begin(3, net.minecraft.client.renderer.vertex.DefaultVertexFormats.POSITION_COLOR);
            buffer.pos(minX, topY, minZ).color(r, g, b, 160).endVertex();
            buffer.pos(maxX, topY, minZ).color(r, g, b, 160).endVertex();
            buffer.pos(maxX, topY, maxZ).color(r, g, b, 160).endVertex();
            buffer.pos(minX, topY, maxZ).color(r, g, b, 160).endVertex();
            buffer.pos(minX, topY, minZ).color(r, g, b, 160).endVertex();
            tessellator.draw();

            // vertical edges (walls outline)
            buffer.begin(1, net.minecraft.client.renderer.vertex.DefaultVertexFormats.POSITION_COLOR);
            buffer.pos(minX, baseY, minZ).color(r, g, b, 180).endVertex();
            buffer.pos(minX, topY, minZ).color(r, g, b, 180).endVertex();

            buffer.pos(maxX, baseY, minZ).color(r, g, b, 180).endVertex();
            buffer.pos(maxX, topY, minZ).color(r, g, b, 180).endVertex();

            buffer.pos(maxX, baseY, maxZ).color(r, g, b, 180).endVertex();
            buffer.pos(maxX, topY, maxZ).color(r, g, b, 180).endVertex();

            buffer.pos(minX, baseY, maxZ).color(r, g, b, 180).endVertex();
            buffer.pos(minX, topY, maxZ).color(r, g, b, 180).endVertex();
            tessellator.draw();

            GlStateManager.enableTexture();
            GlStateManager.disableBlend();
            GlStateManager.shadeModel(7424);
            GlStateManager.popMatrix();
            return;
        }

        // Default: ring for sugar/eye
        boolean hasTargets = isAnyTargetInRadius(10.0);
        int color = hasTargets ? im.expensive.utils.render.ColorUtils.rgb(144, 238, 144) : 0xFFFFFFFF; // light green or white

        double px = MathHelper.lerp(e.getPartialTicks(), mc.player.prevPosX, mc.player.getPosX());
        double py = MathHelper.lerp(e.getPartialTicks(), mc.player.prevPosY, mc.player.getPosY());
        double pz = MathHelper.lerp(e.getPartialTicks(), mc.player.prevPosZ, mc.player.getPosZ());

        float radius = 10.0f;

        GlStateManager.pushMatrix();
        GlStateManager.shadeModel(7425);
        GlStateManager.disableTexture();
        GlStateManager.enableBlend();
        GlStateManager.blendFunc(770, 771);
        GlStateManager.disableAlphaTest();
        GlStateManager.disableCull();
        GlStateManager.lineWidth(2.0F);
        GlStateManager.translated(-mc.getRenderManager().info.getProjectedView().x,
                -mc.getRenderManager().info.getProjectedView().y,
                -mc.getRenderManager().info.getProjectedView().z);

        buffer.begin(3, net.minecraft.client.renderer.vertex.DefaultVertexFormats.POSITION_COLOR);
        for (int i = 0; i <= 360; i += 2) {
            double rad = Math.toRadians(i);
            double cx = px + Math.cos(rad) * radius;
            double cz = pz + Math.sin(rad) * radius;
            buffer.pos(cx, py + 0.05, cz).color((color >> 16) & 0xFF, (color >> 8) & 0xFF, color & 0xFF, 200).endVertex();
        }
        tessellator.draw();

        GlStateManager.enableTexture();
        GlStateManager.disableBlend();
        GlStateManager.shadeModel(7424);
        GlStateManager.popMatrix();
    }

    private boolean isEnabledForHeldItem(Item held) {
        // Явная пыль -> SUGAR
        if (useWith.getValueByName("Явной пылью").get() && held == Items.SUGAR) return true;
        // Дезориентация -> ENDER_EYE
        if (useWith.getValueByName("Дезориентацией").get() && held == Items.ENDER_EYE) return true;
        // Трапка -> NETHERITE_SCRAP
        return useWith.getValueByName("Трапкой").get() && held == Items.NETHERITE_SCRAP;
    }

    private boolean isAnyTargetInRadius(double radius) {
        for (Entity entity : mc.world.getAllEntities()) {
            if (!(entity instanceof LivingEntity)) continue;
            if (entity == mc.player) continue;
            if (!isTargetAllowed(entity)) continue;
            if (entity.getDistance(mc.player) <= radius) return true;
        }
        return false;
    }

    private boolean isAnyTargetInAABB(double minX, double maxX, double minZ, double maxZ) {
        for (Entity entity : mc.world.getAllEntities()) {
            if (!(entity instanceof LivingEntity)) continue;
            if (entity == mc.player) continue;
            if (!isTargetAllowed(entity)) continue;
            double ex = entity.getPosX();
            double ez = entity.getPosZ();
            if (ex >= minX && ex <= maxX && ez >= minZ && ez <= maxZ) return true;
        }
        return false;
    }

    private boolean isTargetAllowed(Entity entity) {
        if (entity instanceof PlayerEntity) {
            PlayerEntity player = (PlayerEntity) entity;
            boolean isFriend = FriendStorage.isFriend(player.getName().getString());
            if (isFriend) {
                return targets.getValueByName("Друзья").get();
            }
            return targets.getValueByName("Игроки").get();
        }
        if (entity instanceof AnimalEntity) {
            return targets.getValueByName("Животные").get();
        }
        if (entity instanceof MobEntity) {
            return targets.getValueByName("Мобы").get();
        }
        return false;
    }
}
 
Funtime Helper под Expensive 3.1
ss снизу


Посмотреть вложение 317563

код

Java:
Expand Collapse Copy
package im.expensive.functions.impl.misc;

import com.google.common.eventbus.Subscribe;
import com.mojang.blaze3d.platform.GlStateManager;
import im.expensive.command.friends.FriendStorage;
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.impl.BooleanSetting;
import im.expensive.functions.settings.impl.BindSetting;
import im.expensive.functions.settings.impl.TitleSetting;
import im.expensive.functions.settings.impl.ModeListSetting;
import im.expensive.utils.client.IMinecraft;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.MobEntity;
import net.minecraft.entity.passive.AnimalEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Item;
import net.minecraft.item.Items;
import net.minecraft.util.math.MathHelper;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Hand;
import net.minecraft.network.play.client.CHeldItemChangePacket;
import net.minecraft.network.play.client.CPlayerTryUseItemPacket;

@FunctionRegister(name = "Funtime Helper", type = Category.Misc)
public class FuntimeHelper extends Function implements IMinecraft {

    private final ModeListSetting useWith = new ModeListSetting("Использовать с",
            new BooleanSetting("Явной пылью", true),
            new BooleanSetting("Дезориентацией", true),
            new BooleanSetting("Трапкой", true)
    );

    private final ModeListSetting targets = new ModeListSetting("Цели",
            new BooleanSetting("Мобы", true),
            new BooleanSetting("Животные", true),
            new BooleanSetting("Игроки", true),
            new BooleanSetting("Друзья", false)
    );

    // Бинды
    private final TitleSetting bindsTitle = new TitleSetting("Бинды");
    private final BindSetting trapkaBind = new BindSetting("Трапка", -1);
    private final BindSetting yavnayaPylBind = new BindSetting("Явная пыль", -1);
    private final BindSetting dezorientBind = new BindSetting("Дезоринтация", -1);
    private final BindSetting snezokBind = new BindSetting("Снежок заморозка",-1);

    public FuntimeHelper() {
        addSettings(useWith, targets,
                bindsTitle,
                trapkaBind,
                yavnayaPylBind,
                dezorientBind,
                snezokBind);
    }

    @Subscribe
    private void onKey(im.expensive.events.EventKey e) {
        if (mc.player == null || mc.world == null) return;

        int key = e.getKey();
        Item targetItem = null;
        if (key == trapkaBind.get()) targetItem = Items.NETHERITE_SCRAP;
        if (key == yavnayaPylBind.get()) targetItem = Items.SUGAR;
        if (key == dezorientBind.get()) targetItem = Items.ENDER_EYE;
        if (key == snezokBind.get()) targetItem = Items.SNOWBALL;
        if (targetItem == null) return;

        // Try fast select in hotbar first
        int hotbarSlot = -1;
        for (int i = 0; i < 9; i++) {
            ItemStack stack = mc.player.inventory.getStackInSlot(i);
            if (!stack.isEmpty() && stack.getItem() == targetItem) {
                hotbarSlot = i;
                break;
            }
        }

        if (hotbarSlot != -1) {
            int prev = mc.player.inventory.currentItem;
            // switch to slot (client + server), then use
            mc.player.inventory.currentItem = hotbarSlot;
            mc.player.connection.sendPacket(new CHeldItemChangePacket(hotbarSlot));
            mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
            mc.player.swingArm(Hand.MAIN_HAND);
            // switch back
            mc.player.inventory.currentItem = prev;
            mc.player.connection.sendPacket(new CHeldItemChangePacket(prev));
            return;
        }

        // Not in hotbar: pick from inventory (9..35) into hand and use
        for (int i = 9; i < 36; i++) {
            ItemStack stack = mc.player.inventory.getStackInSlot(i);
            if (!stack.isEmpty() && stack.getItem() == targetItem) {
                // Pick item from inventory into current hotbar slot, then use
                mc.playerController.pickItem(i);
                mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
                mc.player.swingArm(Hand.MAIN_HAND);
                break;
            }
        }
    }

    @Subscribe
    private void onRenderWorld(WorldEvent e) {
        if (mc.player == null || mc.world == null) return;

        Item held = mc.player.getHeldItemMainhand().getItem();
        if (!isEnabledForHeldItem(held)) return;

        if (held == Items.NETHERITE_SCRAP) {
            // Trapka: render a volumetric 4x4 hollow prism (bottom, top, and 4 walls)
            double px = MathHelper.lerp(e.getPartialTicks(), mc.player.prevPosX, mc.player.getPosX());
            double py = MathHelper.lerp(e.getPartialTicks(), mc.player.prevPosY, mc.player.getPosY());
            double pz = MathHelper.lerp(e.getPartialTicks(), mc.player.prevPosZ, mc.player.getPosZ());

            double half = 2.0; // 4x4 outer
            double minX = px - half;
            double maxX = px + half;
            double minZ = pz - half;
            double maxZ = pz + half;
            double baseY = py + 0.02;
            double topY = py + 4.0; // height of prism

            boolean hasTargets = isAnyTargetInAABB(minX, maxX, minZ, maxZ);
            int color = hasTargets ? im.expensive.utils.render.ColorUtils.rgb(144, 238, 144) : 0xFFFFFFFF;
            int r = (color >> 16) & 0xFF, g = (color >> 8) & 0xFF, b = color & 0xFF;

            GlStateManager.pushMatrix();
            GlStateManager.shadeModel(7425);
            GlStateManager.disableTexture();
            GlStateManager.enableBlend();
            GlStateManager.blendFunc(770, 771);
            GlStateManager.disableAlphaTest();
            GlStateManager.disableCull();
            GlStateManager.lineWidth(2.0F);
            GlStateManager.translated(-mc.getRenderManager().info.getProjectedView().x,
                    -mc.getRenderManager().info.getProjectedView().y,
                    -mc.getRenderManager().info.getProjectedView().z);

            // bottom square
            buffer.begin(3, net.minecraft.client.renderer.vertex.DefaultVertexFormats.POSITION_COLOR);
            buffer.pos(minX, baseY, minZ).color(r, g, b, 200).endVertex();
            buffer.pos(maxX, baseY, minZ).color(r, g, b, 200).endVertex();
            buffer.pos(maxX, baseY, maxZ).color(r, g, b, 200).endVertex();
            buffer.pos(minX, baseY, maxZ).color(r, g, b, 200).endVertex();
            buffer.pos(minX, baseY, minZ).color(r, g, b, 200).endVertex();
            tessellator.draw();

            // top square
            buffer.begin(3, net.minecraft.client.renderer.vertex.DefaultVertexFormats.POSITION_COLOR);
            buffer.pos(minX, topY, minZ).color(r, g, b, 160).endVertex();
            buffer.pos(maxX, topY, minZ).color(r, g, b, 160).endVertex();
            buffer.pos(maxX, topY, maxZ).color(r, g, b, 160).endVertex();
            buffer.pos(minX, topY, maxZ).color(r, g, b, 160).endVertex();
            buffer.pos(minX, topY, minZ).color(r, g, b, 160).endVertex();
            tessellator.draw();

            // vertical edges (walls outline)
            buffer.begin(1, net.minecraft.client.renderer.vertex.DefaultVertexFormats.POSITION_COLOR);
            buffer.pos(minX, baseY, minZ).color(r, g, b, 180).endVertex();
            buffer.pos(minX, topY, minZ).color(r, g, b, 180).endVertex();

            buffer.pos(maxX, baseY, minZ).color(r, g, b, 180).endVertex();
            buffer.pos(maxX, topY, minZ).color(r, g, b, 180).endVertex();

            buffer.pos(maxX, baseY, maxZ).color(r, g, b, 180).endVertex();
            buffer.pos(maxX, topY, maxZ).color(r, g, b, 180).endVertex();

            buffer.pos(minX, baseY, maxZ).color(r, g, b, 180).endVertex();
            buffer.pos(minX, topY, maxZ).color(r, g, b, 180).endVertex();
            tessellator.draw();

            GlStateManager.enableTexture();
            GlStateManager.disableBlend();
            GlStateManager.shadeModel(7424);
            GlStateManager.popMatrix();
            return;
        }

        // Default: ring for sugar/eye
        boolean hasTargets = isAnyTargetInRadius(10.0);
        int color = hasTargets ? im.expensive.utils.render.ColorUtils.rgb(144, 238, 144) : 0xFFFFFFFF; // light green or white

        double px = MathHelper.lerp(e.getPartialTicks(), mc.player.prevPosX, mc.player.getPosX());
        double py = MathHelper.lerp(e.getPartialTicks(), mc.player.prevPosY, mc.player.getPosY());
        double pz = MathHelper.lerp(e.getPartialTicks(), mc.player.prevPosZ, mc.player.getPosZ());

        float radius = 10.0f;

        GlStateManager.pushMatrix();
        GlStateManager.shadeModel(7425);
        GlStateManager.disableTexture();
        GlStateManager.enableBlend();
        GlStateManager.blendFunc(770, 771);
        GlStateManager.disableAlphaTest();
        GlStateManager.disableCull();
        GlStateManager.lineWidth(2.0F);
        GlStateManager.translated(-mc.getRenderManager().info.getProjectedView().x,
                -mc.getRenderManager().info.getProjectedView().y,
                -mc.getRenderManager().info.getProjectedView().z);

        buffer.begin(3, net.minecraft.client.renderer.vertex.DefaultVertexFormats.POSITION_COLOR);
        for (int i = 0; i <= 360; i += 2) {
            double rad = Math.toRadians(i);
            double cx = px + Math.cos(rad) * radius;
            double cz = pz + Math.sin(rad) * radius;
            buffer.pos(cx, py + 0.05, cz).color((color >> 16) & 0xFF, (color >> 8) & 0xFF, color & 0xFF, 200).endVertex();
        }
        tessellator.draw();

        GlStateManager.enableTexture();
        GlStateManager.disableBlend();
        GlStateManager.shadeModel(7424);
        GlStateManager.popMatrix();
    }

    private boolean isEnabledForHeldItem(Item held) {
        // Явная пыль -> SUGAR
        if (useWith.getValueByName("Явной пылью").get() && held == Items.SUGAR) return true;
        // Дезориентация -> ENDER_EYE
        if (useWith.getValueByName("Дезориентацией").get() && held == Items.ENDER_EYE) return true;
        // Трапка -> NETHERITE_SCRAP
        return useWith.getValueByName("Трапкой").get() && held == Items.NETHERITE_SCRAP;
    }

    private boolean isAnyTargetInRadius(double radius) {
        for (Entity entity : mc.world.getAllEntities()) {
            if (!(entity instanceof LivingEntity)) continue;
            if (entity == mc.player) continue;
            if (!isTargetAllowed(entity)) continue;
            if (entity.getDistance(mc.player) <= radius) return true;
        }
        return false;
    }

    private boolean isAnyTargetInAABB(double minX, double maxX, double minZ, double maxZ) {
        for (Entity entity : mc.world.getAllEntities()) {
            if (!(entity instanceof LivingEntity)) continue;
            if (entity == mc.player) continue;
            if (!isTargetAllowed(entity)) continue;
            double ex = entity.getPosX();
            double ez = entity.getPosZ();
            if (ex >= minX && ex <= maxX && ez >= minZ && ez <= maxZ) return true;
        }
        return false;
    }

    private boolean isTargetAllowed(Entity entity) {
        if (entity instanceof PlayerEntity) {
            PlayerEntity player = (PlayerEntity) entity;
            boolean isFriend = FriendStorage.isFriend(player.getName().getString());
            if (isFriend) {
                return targets.getValueByName("Друзья").get();
            }
            return targets.getValueByName("Игроки").get();
        }
        if (entity instanceof AnimalEntity) {
            return targets.getValueByName("Животные").get();
        }
        if (entity instanceof MobEntity) {
            return targets.getValueByName("Мобы").get();
        }
        return false;
    }
}
ну хз как по мне не надо на юг уже много сливали
 
А где дизорент радиус, юз трекер, баф трекер, кулдаун минимайзер и структур таймер?
радиус втроен
А где дизорент радиус, юз трекер, баф трекер, кулдаун минимайзер и структур таймер?
остальное сам
ну или гпт в помощь
 

Похожие темы

Назад
Сверху Снизу