Обход античита AutoLoot | Excellent Omni

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
14 Ноя 2021
Сообщения
5
Реакции
0
Выберите загрузчик игры
  1. OptiFine

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

мой первый пост чутка
вообщем, autoloot
имеется 2 режима:
holyworld ship
лутает отмычки у жителя на таинственном корабле
ST Teleport
ну тплут вообщем для spookytime
кое как работает но работает.
есть режимы
что делать после подбора ресурсов:
/hub
/spawn
что подбирать?
режимы вообщем что подбирать с st teleport
на этом все
БАЗА EXCELLENT OMNI НЕ RECODE!!!
одна из первых работ на excellent omni

Код:
Expand Collapse Copy
package org.sheluvparis.excellent.client.impl.feature.impl.player;

import lombok.AccessLevel;
import lombok.Getter;
import lombok.experimental.Accessors;
import lombok.experimental.FieldDefaults;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.ItemEntity;
import net.minecraft.entity.merchant.villager.VillagerEntity;
import net.minecraft.item.*;
import net.minecraft.util.Hand;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.util.text.StringTextComponent;
import net.minecraft.util.text.TextFormatting;
import org.sheluvparis.common.events.orbit.EventHandler;
import org.sheluvparis.excellent.client.events.player.MotionEvent;
import org.sheluvparis.excellent.client.impl.feature.Category;
import org.sheluvparis.excellent.client.impl.feature.Feature;
import org.sheluvparis.excellent.client.impl.feature.FeatureInfo;
import org.sheluvparis.excellent.client.impl.settings.impl.BooleanSetting;
import org.sheluvparis.excellent.client.impl.settings.impl.ModeSetting;
import org.sheluvparis.excellent.client.impl.settings.impl.SliderSetting;

import java.util.*;

@Getter
@Accessors(fluent = true)
@FieldDefaults(level = AccessLevel.PRIVATE)
@FeatureInfo(name = "AutoLoot", description = "Автоматически подбирает ценные предметы", category = Category.PLAYER)
public class AutoLoot extends Feature {
    private final ModeSetting serverMode = new ModeSetting("Режим сервера", "ST Teleport", "Holyworld ship");
    private final SliderSetting distance = new SliderSetting("Дистанция поиска", 15.0F, 8.0F, 20.0F, 1.0F)
            .visible(() -> serverMode.is("ST Teleport"));
    private final SliderSetting accuracy = new SliderSetting("Аккуратность", 35.0F, 32.0F, 40.0F, 1.0F)
            .visible(() -> serverMode.is("ST Teleport"));
    private final SliderSetting teleportStep = new SliderSetting("Скорость", 5.0F, 1.0F, 10.0F, 0.5F)
            .visible(() -> serverMode.is("ST Teleport"));
    private final SliderSetting teleportDelay = new SliderSetting("Задержка", 100.0F, 0.0F, 500.0F, 10.0F)
            .visible(() -> serverMode.is("ST Teleport"));
    private final ModeSetting afterLootCommand = new ModeSetting("После сбора",  "Нет", "/hub", "/spawn");

    private final ModeSetting lootItems = new ModeSetting("Предметы", "Все", "Только броня/оружие", "Только ресурсы", "Только особые", "Пользовательские")
            .visible(() -> !serverMode.is("Holyworld ship"));

    private final BooleanSetting lootTotems = new BooleanSetting("Тотемы", true)
            .visible(() -> lootItems.is("Пользовательские") && !serverMode.is("Holyworld ship"));
    private final BooleanSetting lootNetheriteArmor = new BooleanSetting("Незеритовая броня", true)
            .visible(() -> lootItems.is("Пользовательские") && !serverMode.is("Holyworld ship"));
    private final BooleanSetting lootNetheriteTools = new BooleanSetting("Незеритовые инструменты", true)
            .visible(() -> lootItems.is("Пользовательские") && !serverMode.is("Holyworld ship"));
    private final BooleanSetting lootGoldenApples = new BooleanSetting("Золотые яблоки", true)
            .visible(() -> lootItems.is("Пользовательские") && !serverMode.is("Holyworld ship"));
    private final BooleanSetting lootPlayerHeads = new BooleanSetting("Головы игроков", true)
            .visible(() -> lootItems.is("Пользовательские") && !serverMode.is("Holyworld ship"));
    private final BooleanSetting lootShulkerBoxes = new BooleanSetting("Шалкеровые ящики", true)
            .visible(() -> lootItems.is("Пользовательские") && !serverMode.is("Holyworld ship"));
    private final BooleanSetting lootNetheriteIngots = new BooleanSetting("Незеритовые слитки", true)
            .visible(() -> lootItems.is("Пользовательские") && !serverMode.is("Holyworld ship"));
    private final BooleanSetting lootPotions = new BooleanSetting("Зелья", true)
            .visible(() -> lootItems.is("Пользовательские") && !serverMode.is("Holyworld ship"));
    private final BooleanSetting lootSpookyItems = new BooleanSetting("Особые предметы", true)
            .visible(() -> lootItems.is("Пользовательские") && !serverMode.is("Holyworld ship"));

    private List<UUID> collectedItems = new ArrayList<>();
    private boolean commandSent = false;
    private int waitTicks = 0;
    private boolean itemsCollected = false;
    private int activationDelay = 5; // Задержка активации в тиках
    private Vector3d teleportTarget = null;
    private long lastTeleportTime = 0L;
    private boolean isTeleporting = false;
    private boolean allItemsCollected = false;

    public AutoLoot() {
    }

    @EventHandler
    public void onMotion(MotionEvent event) {
        if (mc.player == null || mc.world == null) return;

        if (activationDelay > 0) {
            activationDelay--;
            return;
        }

        if (serverMode.is("Holyworld ship")) {
            handleHolyworldShip();
        } else if (serverMode.is("ST Teleport")) {
            handleSTTeleport();
        }

        checkAndSendCommand();
    }

    private void checkAndSendCommand() {
        if (isTeleporting) return;

        if (commandSent || afterLootCommand.get().equals("Нет")) return;

        List<ItemEntity> nearbyItems = mc.world.getEntitiesWithinAABB(ItemEntity.class,
                mc.player.getBoundingBox().grow(distance.get()));

        boolean foundValuableItems = false;
        for (ItemEntity itemEntity : nearbyItems) {
            if (isValuableItem(itemEntity.getItem()) && !collectedItems.contains(itemEntity.getUniqueID())) {
                foundValuableItems = true;
                break;
            }
        }

        if (!foundValuableItems && !collectedItems.isEmpty()) {
            itemsCollected = true;
        }

        if (itemsCollected) {
            waitTicks++;

            {
                String command = afterLootCommand.get();
                if (command.equals("/hub") || command.equals("/spawn")) {
                    mc.player.sendChatMessage(command);
                    commandSent = true;

                    // Уведомляем игрока
                    mc.player.sendMessage(
                            new StringTextComponent("AutoLoot >> " + TextFormatting.GRAY +
                                    "Ресурсы собраны. Отправляюсь " + command),
                            mc.player.getUniqueID()
                    );

                    toggle();
                }
                itemsCollected = false;
                waitTicks = 0;
            }
        }
    }

    private void handleHolyworldShip() {
        AxisAlignedBB boundingBox = new AxisAlignedBB(
                mc.player.getPosX() - 3.0, mc.player.getPosY() - 3.0, mc.player.getPosZ() - 3.0,
                mc.player.getPosX() + 3.0, mc.player.getPosY() + 3.0, mc.player.getPosZ() + 3.0
        );

        for (Entity entity : mc.world.getEntitiesWithinAABB(VillagerEntity.class, boundingBox)) {
            if (entity instanceof VillagerEntity) {
                VillagerEntity villager = (VillagerEntity) entity;
                if (villager.getHeldItemMainhand().getItem() == Items.TRIPWIRE_HOOK ||
                        villager.getHeldItemOffhand().getItem() == Items.TRIPWIRE_HOOK) {
                    mc.playerController.interactWithEntity(mc.player, villager, Hand.MAIN_HAND);
                    return;
                }
            }
        }
    }

    private void handleSTTeleport() {
        if (!mc.player.abilities.isFlying) {
            if (!mc.player.abilities.allowFlying) {
                mc.player.sendChatMessage("/fly");
                return;
            } else {
                mc.player.abilities.isFlying = true;
            }
        }

        if (isTeleporting && teleportTarget != null) {
            performStepTeleport();
            return;
        }

        List<ItemEntity> nearbyItems = mc.world.getEntitiesWithinAABB(ItemEntity.class,
                mc.player.getBoundingBox().grow(distance.get()));

        Map<BlockPos, List<ItemEntity>> itemGroups = new HashMap<>();
        boolean foundNewItems = false;

        for (ItemEntity itemEntity : nearbyItems) {
            if (itemEntity.ticksExisted >= accuracy.get() &&
                    isValuableItem(itemEntity.getItem()) &&
                    !collectedItems.contains(itemEntity.getUniqueID())) {

                foundNewItems = true;
                BlockPos pos = new BlockPos(itemEntity.getPosX(), itemEntity.getPosY(), itemEntity.getPosZ());
                itemGroups.computeIfAbsent(pos, k -> new ArrayList<>()).add(itemEntity);
            }
        }

        List<ItemEntity> largestGroup = null;
        for (List<ItemEntity> group : itemGroups.values()) {
            if (largestGroup == null || group.size() > largestGroup.size()) {
                largestGroup = group;
            }
        }

        if (largestGroup != null && !largestGroup.isEmpty()) {
            double centerX = 0;
            double centerY = 0;
            double centerZ = 0;

            for (ItemEntity item : largestGroup) {
                centerX += item.getPosX();
                centerY += item.getPosY();
                centerZ += item.getPosZ();
                collectedItems.add(item.getUniqueID());
            }

            centerX /= largestGroup.size();
            centerY /= largestGroup.size();
            centerZ /= largestGroup.size();

            teleportTarget = new Vector3d(centerX, centerY, centerZ);
            isTeleporting = true;
            lastTeleportTime = System.currentTimeMillis();
        } else if (!foundNewItems && !collectedItems.isEmpty()) {
            allItemsCollected = true;
        }
    }

    private void performStepTeleport() {
        if (teleportTarget == null || !isTeleporting) return;

        long currentTime = System.currentTimeMillis();
        long delay = (long) (float) teleportDelay.get();
        if (currentTime - lastTeleportTime < delay) {
            return;
        }

        Vector3d currentPos = mc.player.getPositionVec();
        Vector3d direction = teleportTarget.subtract(currentPos);
        double distToTarget = direction.length();

        if (distToTarget < 1.0) {
            mc.player.setPosition(teleportTarget.x, teleportTarget.y, teleportTarget.z);
            teleportTarget = null;
            isTeleporting = false;
            return;
        }

        double stepSize = Math.min(teleportStep.get(), distToTarget);
        Vector3d normalizedDirection = direction.normalize();
        Vector3d nextPos = currentPos.add(normalizedDirection.scale(stepSize));

        mc.player.setPosition(nextPos.x, nextPos.y, nextPos.z);
        lastTeleportTime = currentTime;
    }

    private boolean isValuableItem(ItemStack itemStack) {
        Item item = itemStack.getItem();
        String lootMode = lootItems.get();

        if (lootMode.equals("Все")) {
            return true;
        } else if (lootMode.equals("Только броня/оружие")) {
            return item == Items.TOTEM_OF_UNDYING ||
                    item == Items.NETHERITE_HELMET || item == Items.NETHERITE_CHESTPLATE ||
                    item == Items.NETHERITE_LEGGINGS || item == Items.NETHERITE_BOOTS ||
                    item == Items.NETHERITE_SWORD || item == Items.NETHERITE_PICKAXE;
        } else if (lootMode.equals("Только ресурсы")) {
            return item == Items.NETHERITE_INGOT ||
                    item == Items.GOLDEN_APPLE || item == Items.ENCHANTED_GOLDEN_APPLE ||
                    item instanceof SplashPotionItem || item instanceof PotionItem;
        } else if (lootMode.equals("Только особые")) {
            return item == Items.PLAYER_HEAD ||
                    item == Items.SHULKER_BOX ||
                    (itemStack.hasTag() && itemStack.getTag().contains("spooky-item"));
        } else if (lootMode.equals("Пользовательские")) {
            if (item == Items.TOTEM_OF_UNDYING && lootTotems.get()) return true;
            if ((item == Items.NETHERITE_HELMET || item == Items.NETHERITE_CHESTPLATE ||
                    item == Items.NETHERITE_LEGGINGS || item == Items.NETHERITE_BOOTS) && lootNetheriteArmor.get()) return true;
            if ((item == Items.NETHERITE_SWORD || item == Items.NETHERITE_PICKAXE) && lootNetheriteTools.get()) return true;
            if ((item == Items.GOLDEN_APPLE || item == Items.ENCHANTED_GOLDEN_APPLE) && lootGoldenApples.get()) return true;
            if (item == Items.PLAYER_HEAD && lootPlayerHeads.get()) return true;
            if (item == Items.SHULKER_BOX && lootShulkerBoxes.get()) return true;
            if (item == Items.NETHERITE_INGOT && lootNetheriteIngots.get()) return true;
            if ((item instanceof SplashPotionItem || item instanceof PotionItem) && lootPotions.get()) return true;
            if ((itemStack.hasTag() && itemStack.getTag().contains("spooky-item")) && lootSpookyItems.get()) return true;
        }

        return false;
    }

    @Override
    protected void onEnable() {
        collectedItems.clear();
        commandSent = false;
        waitTicks = 0;
        itemsCollected = false;
        teleportTarget = null;
        isTeleporting = false;
        lastTeleportTime = 0L;
        allItemsCollected = false;

        if (serverMode.is("ST Teleport") && !mc.player.abilities.isFlying && !mc.player.abilities.allowFlying) {
            mc.player.sendChatMessage("/fly");
        }
    }

    @Override
    protected void onDisable() {
        collectedItems.clear();
        commandSent = false;
        waitTicks = 0;
        itemsCollected = false;
        teleportTarget = null;
        isTeleporting = false;
        lastTeleportTime = 0L;
        allItemsCollected = false;
    }
}
SS?:
Пожалуйста, авторизуйтесь для просмотра ссылки.


:FeelsBadMan:
 
кстати более менее +rep
 
оо нокиевка дропнул имбу
 
у тебя есть на экспу старое уже зафиксили давно

если есть дай фикс экспы 3.1 авто лута
 
мой первый пост чутка
вообщем, autoloot
имеется 2 режима:
holyworld ship
лутает отмычки у жителя на таинственном корабле
ST Teleport
ну тплут вообщем для spookytime
кое как работает но работает.
есть режимы
что делать после подбора ресурсов:
/hub
/spawn
что подбирать?
режимы вообщем что подбирать с st teleport
на этом все
БАЗА EXCELLENT OMNI НЕ RECODE!!!
одна из первых работ на excellent omni

Код:
Expand Collapse Copy
package org.sheluvparis.excellent.client.impl.feature.impl.player;

import lombok.AccessLevel;
import lombok.Getter;
import lombok.experimental.Accessors;
import lombok.experimental.FieldDefaults;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.ItemEntity;
import net.minecraft.entity.merchant.villager.VillagerEntity;
import net.minecraft.item.*;
import net.minecraft.util.Hand;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.util.text.StringTextComponent;
import net.minecraft.util.text.TextFormatting;
import org.sheluvparis.common.events.orbit.EventHandler;
import org.sheluvparis.excellent.client.events.player.MotionEvent;
import org.sheluvparis.excellent.client.impl.feature.Category;
import org.sheluvparis.excellent.client.impl.feature.Feature;
import org.sheluvparis.excellent.client.impl.feature.FeatureInfo;
import org.sheluvparis.excellent.client.impl.settings.impl.BooleanSetting;
import org.sheluvparis.excellent.client.impl.settings.impl.ModeSetting;
import org.sheluvparis.excellent.client.impl.settings.impl.SliderSetting;

import java.util.*;

@Getter
@Accessors(fluent = true)
@FieldDefaults(level = AccessLevel.PRIVATE)
@FeatureInfo(name = "AutoLoot", description = "Автоматически подбирает ценные предметы", category = Category.PLAYER)
public class AutoLoot extends Feature {
    private final ModeSetting serverMode = new ModeSetting("Режим сервера", "ST Teleport", "Holyworld ship");
    private final SliderSetting distance = new SliderSetting("Дистанция поиска", 15.0F, 8.0F, 20.0F, 1.0F)
            .visible(() -> serverMode.is("ST Teleport"));
    private final SliderSetting accuracy = new SliderSetting("Аккуратность", 35.0F, 32.0F, 40.0F, 1.0F)
            .visible(() -> serverMode.is("ST Teleport"));
    private final SliderSetting teleportStep = new SliderSetting("Скорость", 5.0F, 1.0F, 10.0F, 0.5F)
            .visible(() -> serverMode.is("ST Teleport"));
    private final SliderSetting teleportDelay = new SliderSetting("Задержка", 100.0F, 0.0F, 500.0F, 10.0F)
            .visible(() -> serverMode.is("ST Teleport"));
    private final ModeSetting afterLootCommand = new ModeSetting("После сбора",  "Нет", "/hub", "/spawn");

    private final ModeSetting lootItems = new ModeSetting("Предметы", "Все", "Только броня/оружие", "Только ресурсы", "Только особые", "Пользовательские")
            .visible(() -> !serverMode.is("Holyworld ship"));

    private final BooleanSetting lootTotems = new BooleanSetting("Тотемы", true)
            .visible(() -> lootItems.is("Пользовательские") && !serverMode.is("Holyworld ship"));
    private final BooleanSetting lootNetheriteArmor = new BooleanSetting("Незеритовая броня", true)
            .visible(() -> lootItems.is("Пользовательские") && !serverMode.is("Holyworld ship"));
    private final BooleanSetting lootNetheriteTools = new BooleanSetting("Незеритовые инструменты", true)
            .visible(() -> lootItems.is("Пользовательские") && !serverMode.is("Holyworld ship"));
    private final BooleanSetting lootGoldenApples = new BooleanSetting("Золотые яблоки", true)
            .visible(() -> lootItems.is("Пользовательские") && !serverMode.is("Holyworld ship"));
    private final BooleanSetting lootPlayerHeads = new BooleanSetting("Головы игроков", true)
            .visible(() -> lootItems.is("Пользовательские") && !serverMode.is("Holyworld ship"));
    private final BooleanSetting lootShulkerBoxes = new BooleanSetting("Шалкеровые ящики", true)
            .visible(() -> lootItems.is("Пользовательские") && !serverMode.is("Holyworld ship"));
    private final BooleanSetting lootNetheriteIngots = new BooleanSetting("Незеритовые слитки", true)
            .visible(() -> lootItems.is("Пользовательские") && !serverMode.is("Holyworld ship"));
    private final BooleanSetting lootPotions = new BooleanSetting("Зелья", true)
            .visible(() -> lootItems.is("Пользовательские") && !serverMode.is("Holyworld ship"));
    private final BooleanSetting lootSpookyItems = new BooleanSetting("Особые предметы", true)
            .visible(() -> lootItems.is("Пользовательские") && !serverMode.is("Holyworld ship"));

    private List<UUID> collectedItems = new ArrayList<>();
    private boolean commandSent = false;
    private int waitTicks = 0;
    private boolean itemsCollected = false;
    private int activationDelay = 5; // Задержка активации в тиках
    private Vector3d teleportTarget = null;
    private long lastTeleportTime = 0L;
    private boolean isTeleporting = false;
    private boolean allItemsCollected = false;

    public AutoLoot() {
    }

    @EventHandler
    public void onMotion(MotionEvent event) {
        if (mc.player == null || mc.world == null) return;

        if (activationDelay > 0) {
            activationDelay--;
            return;
        }

        if (serverMode.is("Holyworld ship")) {
            handleHolyworldShip();
        } else if (serverMode.is("ST Teleport")) {
            handleSTTeleport();
        }

        checkAndSendCommand();
    }

    private void checkAndSendCommand() {
        if (isTeleporting) return;

        if (commandSent || afterLootCommand.get().equals("Нет")) return;

        List<ItemEntity> nearbyItems = mc.world.getEntitiesWithinAABB(ItemEntity.class,
                mc.player.getBoundingBox().grow(distance.get()));

        boolean foundValuableItems = false;
        for (ItemEntity itemEntity : nearbyItems) {
            if (isValuableItem(itemEntity.getItem()) && !collectedItems.contains(itemEntity.getUniqueID())) {
                foundValuableItems = true;
                break;
            }
        }

        if (!foundValuableItems && !collectedItems.isEmpty()) {
            itemsCollected = true;
        }

        if (itemsCollected) {
            waitTicks++;

            {
                String command = afterLootCommand.get();
                if (command.equals("/hub") || command.equals("/spawn")) {
                    mc.player.sendChatMessage(command);
                    commandSent = true;

                    // Уведомляем игрока
                    mc.player.sendMessage(
                            new StringTextComponent("AutoLoot >> " + TextFormatting.GRAY +
                                    "Ресурсы собраны. Отправляюсь " + command),
                            mc.player.getUniqueID()
                    );

                    toggle();
                }
                itemsCollected = false;
                waitTicks = 0;
            }
        }
    }

    private void handleHolyworldShip() {
        AxisAlignedBB boundingBox = new AxisAlignedBB(
                mc.player.getPosX() - 3.0, mc.player.getPosY() - 3.0, mc.player.getPosZ() - 3.0,
                mc.player.getPosX() + 3.0, mc.player.getPosY() + 3.0, mc.player.getPosZ() + 3.0
        );

        for (Entity entity : mc.world.getEntitiesWithinAABB(VillagerEntity.class, boundingBox)) {
            if (entity instanceof VillagerEntity) {
                VillagerEntity villager = (VillagerEntity) entity;
                if (villager.getHeldItemMainhand().getItem() == Items.TRIPWIRE_HOOK ||
                        villager.getHeldItemOffhand().getItem() == Items.TRIPWIRE_HOOK) {
                    mc.playerController.interactWithEntity(mc.player, villager, Hand.MAIN_HAND);
                    return;
                }
            }
        }
    }

    private void handleSTTeleport() {
        if (!mc.player.abilities.isFlying) {
            if (!mc.player.abilities.allowFlying) {
                mc.player.sendChatMessage("/fly");
                return;
            } else {
                mc.player.abilities.isFlying = true;
            }
        }

        if (isTeleporting && teleportTarget != null) {
            performStepTeleport();
            return;
        }

        List<ItemEntity> nearbyItems = mc.world.getEntitiesWithinAABB(ItemEntity.class,
                mc.player.getBoundingBox().grow(distance.get()));

        Map<BlockPos, List<ItemEntity>> itemGroups = new HashMap<>();
        boolean foundNewItems = false;

        for (ItemEntity itemEntity : nearbyItems) {
            if (itemEntity.ticksExisted >= accuracy.get() &&
                    isValuableItem(itemEntity.getItem()) &&
                    !collectedItems.contains(itemEntity.getUniqueID())) {

                foundNewItems = true;
                BlockPos pos = new BlockPos(itemEntity.getPosX(), itemEntity.getPosY(), itemEntity.getPosZ());
                itemGroups.computeIfAbsent(pos, k -> new ArrayList<>()).add(itemEntity);
            }
        }

        List<ItemEntity> largestGroup = null;
        for (List<ItemEntity> group : itemGroups.values()) {
            if (largestGroup == null || group.size() > largestGroup.size()) {
                largestGroup = group;
            }
        }

        if (largestGroup != null && !largestGroup.isEmpty()) {
            double centerX = 0;
            double centerY = 0;
            double centerZ = 0;

            for (ItemEntity item : largestGroup) {
                centerX += item.getPosX();
                centerY += item.getPosY();
                centerZ += item.getPosZ();
                collectedItems.add(item.getUniqueID());
            }

            centerX /= largestGroup.size();
            centerY /= largestGroup.size();
            centerZ /= largestGroup.size();

            teleportTarget = new Vector3d(centerX, centerY, centerZ);
            isTeleporting = true;
            lastTeleportTime = System.currentTimeMillis();
        } else if (!foundNewItems && !collectedItems.isEmpty()) {
            allItemsCollected = true;
        }
    }

    private void performStepTeleport() {
        if (teleportTarget == null || !isTeleporting) return;

        long currentTime = System.currentTimeMillis();
        long delay = (long) (float) teleportDelay.get();
        if (currentTime - lastTeleportTime < delay) {
            return;
        }

        Vector3d currentPos = mc.player.getPositionVec();
        Vector3d direction = teleportTarget.subtract(currentPos);
        double distToTarget = direction.length();

        if (distToTarget < 1.0) {
            mc.player.setPosition(teleportTarget.x, teleportTarget.y, teleportTarget.z);
            teleportTarget = null;
            isTeleporting = false;
            return;
        }

        double stepSize = Math.min(teleportStep.get(), distToTarget);
        Vector3d normalizedDirection = direction.normalize();
        Vector3d nextPos = currentPos.add(normalizedDirection.scale(stepSize));

        mc.player.setPosition(nextPos.x, nextPos.y, nextPos.z);
        lastTeleportTime = currentTime;
    }

    private boolean isValuableItem(ItemStack itemStack) {
        Item item = itemStack.getItem();
        String lootMode = lootItems.get();

        if (lootMode.equals("Все")) {
            return true;
        } else if (lootMode.equals("Только броня/оружие")) {
            return item == Items.TOTEM_OF_UNDYING ||
                    item == Items.NETHERITE_HELMET || item == Items.NETHERITE_CHESTPLATE ||
                    item == Items.NETHERITE_LEGGINGS || item == Items.NETHERITE_BOOTS ||
                    item == Items.NETHERITE_SWORD || item == Items.NETHERITE_PICKAXE;
        } else if (lootMode.equals("Только ресурсы")) {
            return item == Items.NETHERITE_INGOT ||
                    item == Items.GOLDEN_APPLE || item == Items.ENCHANTED_GOLDEN_APPLE ||
                    item instanceof SplashPotionItem || item instanceof PotionItem;
        } else if (lootMode.equals("Только особые")) {
            return item == Items.PLAYER_HEAD ||
                    item == Items.SHULKER_BOX ||
                    (itemStack.hasTag() && itemStack.getTag().contains("spooky-item"));
        } else if (lootMode.equals("Пользовательские")) {
            if (item == Items.TOTEM_OF_UNDYING && lootTotems.get()) return true;
            if ((item == Items.NETHERITE_HELMET || item == Items.NETHERITE_CHESTPLATE ||
                    item == Items.NETHERITE_LEGGINGS || item == Items.NETHERITE_BOOTS) && lootNetheriteArmor.get()) return true;
            if ((item == Items.NETHERITE_SWORD || item == Items.NETHERITE_PICKAXE) && lootNetheriteTools.get()) return true;
            if ((item == Items.GOLDEN_APPLE || item == Items.ENCHANTED_GOLDEN_APPLE) && lootGoldenApples.get()) return true;
            if (item == Items.PLAYER_HEAD && lootPlayerHeads.get()) return true;
            if (item == Items.SHULKER_BOX && lootShulkerBoxes.get()) return true;
            if (item == Items.NETHERITE_INGOT && lootNetheriteIngots.get()) return true;
            if ((item instanceof SplashPotionItem || item instanceof PotionItem) && lootPotions.get()) return true;
            if ((itemStack.hasTag() && itemStack.getTag().contains("spooky-item")) && lootSpookyItems.get()) return true;
        }

        return false;
    }

    @Override
    protected void onEnable() {
        collectedItems.clear();
        commandSent = false;
        waitTicks = 0;
        itemsCollected = false;
        teleportTarget = null;
        isTeleporting = false;
        lastTeleportTime = 0L;
        allItemsCollected = false;

        if (serverMode.is("ST Teleport") && !mc.player.abilities.isFlying && !mc.player.abilities.allowFlying) {
            mc.player.sendChatMessage("/fly");
        }
    }

    @Override
    protected void onDisable() {
        collectedItems.clear();
        commandSent = false;
        waitTicks = 0;
        itemsCollected = false;
        teleportTarget = null;
        isTeleporting = false;
        lastTeleportTime = 0L;
        allItemsCollected = false;
    }
}
SS?:
Пожалуйста, авторизуйтесь для просмотра ссылки.


:FeelsBadMan:
как екселент ты запустил ваще
 
Назад
Сверху Снизу