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

Часть функционала ReallyWorld Joiner | Vesence recode

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
12 Янв 2026
Сообщения
3
Реакции
0
Выберите загрузчик игры
  1. Fabric
Хай YouGame
Я новый пастер вот решил с вами поделиться часть функционала ну для какой то пасты либо в свой проект то самое то


Java:
Expand Collapse Copy
package client.main.module.impl.misc;

import client.events.EventUpdate;
import client.main.module.api.Category;
import client.main.module.api.Feature;
import client.main.module.api.FeatureInfo;
import client.main.module.settings.implObjects.CheckBoxObject;
import client.main.module.settings.implObjects.SelectObject;
import client.main.module.settings.implObjects.SliderObject;
import client.util.math.StopWatch;
import com.google.common.eventbus.Subscribe;
import net.minecraft.inventory.container.ClickType;
import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.Hand;
import net.minecraft.util.text.TextFormatting;

@FeatureInfo(name = "ReallyWorld Joiner", type = Category.Misc, desc = "Автоматически заходит на ReallyWorld сервера ")
public class ReallyWorldJoiner extends Feature {

    private final SelectObject serverMode = new SelectObject("Режим сервера", "Гриф",
            "Анархия", "Гриф", "Мега Гриф", "Гриферские выживания (RU)");

    private final SliderObject serverNumber = new SliderObject("Номер сервера", 1f, 1f, 54f, 1f)
            .setVisible(() -> !serverMode.is("Гриферские выживания (RU)") && !serverMode.is("Мега Гриф") && !serverMode.is("Анархия"));

    private final SliderObject survivalNumber = new SliderObject("Номер выживания", 1f, 1f, 6f, 1f)
            .setVisible(() -> serverMode.is("Гриферские выживания (RU)"));

    private final SliderObject clickDelay = new SliderObject("Задержка клика (мс)", 800f, 5f, 2000f, 50f);

    private final SliderObject spamSpeed = new SliderObject("Скорость спама (мс)", 50f, 1f, 500f, 10f);

    private final CheckBoxObject autoDisable = new CheckBoxObject("Автовыключение", true);

    private final CheckBoxObject autoOpen = new CheckBoxObject("Авто-открытие компаса", true);

    private final CheckBoxObject randomServer = new CheckBoxObject("Случайный сервер", false);

    private final CheckBoxObject notifyActions = new CheckBoxObject("Уведомления", true);

    private final StopWatch clickTimer = new StopWatch();
    private boolean compassOpened = false;
    private boolean modeClicked = false;
    private boolean worldClicked = false;
    private int stage = 0;
    private int lastClickedSlot = -1;
    private net.minecraft.world.World lastWorld;

    public ReallyWorldJoiner() {
        addSettings(serverMode, serverNumber, survivalNumber, clickDelay, spamSpeed, autoOpen, randomServer, autoDisable, notifyActions);
    }

    @Override
    public boolean onEnable() {
        super.onEnable();
        stage = 0;
        compassOpened = false;
        modeClicked = false;
        worldClicked = false;
        lastClickedSlot = -1;
        lastWorld = mc.world;
        clickTimer.reset();

        if (notifyActions.get()) {
            if (randomServer.get()) {
                print("Ищем компас для подключения к случайному " + serverMode.get() + "...");
            } else {
                if (needsSecondMenu()) {
                    if (serverMode.is("Гриферские выживания (RU)")) {
                        print("Ищем компас для подключения к " + serverMode.get() + " #" + (int)survivalNumber.get().floatValue() + "...");
                    } else {
                        print("Ищем компас для подключения к " + serverMode.get() + " #" + (int)serverNumber.get().floatValue() + "...");
                    }
                } else {
                    print("Ищем компас для подключения к " + serverMode.get() + "...");
                }
            }
        }
        return false;
    }

    @Subscribe
    private void onUpdate(EventUpdate event) {
        if (mc.player == null || mc.world == null) return;

        if (stage == 0 && autoOpen.get()) {
            int compassSlot = findCompassInInventory();

            if (compassSlot != -1) {
                if (notifyActions.get()) {
                    print("Компас найден в слоте " + (compassSlot + 1) + ". Открываем...");
                }

                mc.player.inventory.currentItem = compassSlot;
                mc.playerController.processRightClick(mc.player, mc.world, Hand.MAIN_HAND);
                stage = 1;
                clickTimer.reset();
            } else {
                if (notifyActions.get() && clickTimer.isReached(1000)) {
                    print(TextFormatting.RED + "Компас не найден в хотбаре!");
                    clickTimer.reset();
                }
            }
        }

        if (stage == 1) {
            if (mc.currentScreen != null && mc.player.openContainer != null &&
                    mc.player.openContainer != mc.player.container) {
                compassOpened = true;
                stage = 2;

                if (notifyActions.get()) {
                    print("Меню компаса открыто. Ищем режим " + serverMode.get() + "...");
                }
                clickTimer.reset();
            }
        }

        if (stage == 2 && mc.currentScreen != null && mc.player.openContainer != null) {
            Container container = mc.player.openContainer;
            int modeSlot = findModeSlot(container);

            if (modeSlot != -1 && lastClickedSlot != modeSlot) {
                Slot slot = container.getSlot(modeSlot);

                if (slot == null || slot.getStack().isEmpty()) {
                    if (notifyActions.get() && clickTimer.isReached(500)) {
                        print(TextFormatting.RED + "Слот режима пуст! Повторная попытка...");
                        clickTimer.reset();
                    }
                    return;
                }

                if (notifyActions.get()) {
                    String modeName = slot.getStack().getDisplayName().getString();
                    print("Выбираем режим: " + TextFormatting.AQUA + modeName);
                }

                mc.playerController.windowClick(
                        container.windowId,
                        modeSlot,
                        0,
                        ClickType.PICKUP,
                        mc.player
                );

                lastClickedSlot = modeSlot;
                modeClicked = true;

                if (needsSecondMenu()) {
                    stage = 3;
                    lastClickedSlot = -1;
                    if (notifyActions.get()) {
                        print("Ожидаем меню выбора мира...");
                    }
                } else {
                    stage = 4;
                    lastClickedSlot = -1;
                    if (notifyActions.get()) {
                        print("Подключаемся к " + serverMode.get() + "...");
                    }
                }

                clickTimer.reset();
            } else if (modeSlot == -1 && clickTimer.isReached(500)) {
                if (notifyActions.get()) {
                    print(TextFormatting.RED + "Режим " + serverMode.get() + " не найден в меню! Повторная попытка...");
                }
                stage = 0;
                clickTimer.reset();
            }
        }

        if (stage == 3 && mc.currentScreen != null && mc.player.openContainer != null) {
            Container container = mc.player.openContainer;
            PageInfo pageInfo = parsePageFromTitle(container);
            int currentPage = pageInfo.currentPage;
            int totalPages = pageInfo.totalPages;
            int targetPage = getTargetPage();

            int worldSlot = findWorldSlot(container);

            if (worldSlot != -1 && lastClickedSlot != worldSlot) {
                Slot slot = container.getSlot(worldSlot);
                ItemStack stack = slot.getStack();

                if (slot == null || stack.isEmpty()) {
                    if (notifyActions.get() && clickTimer.isReached(500)) {
                        print(TextFormatting.RED + "Слот мира пуст! Повторная попытка...");
                        clickTimer.reset();
                    }
                    return;
                }

                if (stack.getItem() == Items.BARRIER ||
                        stack.getItem() == Items.RED_STAINED_GLASS_PANE ||
                        stack.getDisplayName().getString().contains("Закрыт") ||
                        stack.getDisplayName().getString().contains("закрыт")) {

                    int targetNum = serverMode.is("Гриферские выживания (RU)")
                            ? (int)survivalNumber.get().floatValue()
                            : (int)serverNumber.get().floatValue();

                    if (notifyActions.get()) {
                        print(TextFormatting.RED + "Сервер #" + targetNum + " заблокирован! Повторная попытка...");
                    }
                    stage = 0;
                    clickTimer.reset();
                    return;
                }

                String worldName = stack.getDisplayName().getString();
                int worldNum = extractNumberFromName(worldName);

                if (notifyActions.get()) {
                    print("Подключаемся к миру #" + worldNum + " (" + TextFormatting.AQUA + worldName + TextFormatting.WHITE + ")");
                }

                mc.playerController.windowClick(
                        container.windowId,
                        worldSlot,
                        0,
                        ClickType.PICKUP,
                        mc.player
                );

                lastClickedSlot = worldSlot;
                worldClicked = true;
                stage = 4;
                clickTimer.reset();
                return;
            }

            if (currentPage < targetPage && currentPage < totalPages) {
                int nextButton = findPageButton(container, "next");

                if (nextButton != -1) {
                    if (notifyActions.get()) {
                        print("Листаем на страницу " + (currentPage + 1) + "...");
                    }

                    mc.playerController.windowClick(
                            container.windowId,
                            nextButton,
                            0,
                            ClickType.PICKUP,
                            mc.player
                    );

                    lastClickedSlot = -1;
                    clickTimer.reset();
                    return;
                }
            }

            if (currentPage > targetPage) {
                int prevButton = findPageButton(container, "prev");

                if (prevButton != -1) {
                    if (notifyActions.get()) {
                        print("Возвращаемся на страницу " + (currentPage - 1) + "...");
                    }

                    mc.playerController.windowClick(
                            container.windowId,
                            prevButton,
                            0,
                            ClickType.PICKUP,
                            mc.player
                    );

                    lastClickedSlot = -1;
                    clickTimer.reset();
                    return;
                }
            }

            if (clickTimer.isReached(1000)) {
                int targetNum = serverMode.is("Гриферские выживания (RU)")
                        ? (int)survivalNumber.get().floatValue()
                        : (int)serverNumber.get().floatValue();

                if (notifyActions.get()) {
                    print(TextFormatting.RED + "Мир #" + targetNum + " не найден! Повторная попытка...");
                }
                stage = 0;
                clickTimer.reset();
            }
        }

        if (stage == 4 && mc.currentScreen != null && mc.player.openContainer != null) {
            if (clickTimer.isReached(spamSpeed.get().longValue())) {
                Container container = mc.player.openContainer;

                int targetSlot = -1;

                if (needsSecondMenu()) {
                    targetSlot = findWorldSlot(container);
                } else {
                    targetSlot = findModeSlot(container);
                }

                if (targetSlot != -1) {
                    Slot slot = container.getSlot(targetSlot);

                    if (slot != null && !slot.getStack().isEmpty()) {
                        mc.playerController.windowClick(
                                container.windowId,
                                targetSlot,
                                0,
                                ClickType.PICKUP,
                                mc.player
                        );
                        clickTimer.reset();
                    }
                } else {
                    if (notifyActions.get() && clickTimer.isReached(1000)) {
                        print(TextFormatting.GREEN + "Подключение к серверу...");
                        clickTimer.reset();
                    }
                }
            }
        }

        if (stage >= 2 && mc.world != lastWorld && mc.world != null) {
            if (notifyActions.get()) {
                print(TextFormatting.GREEN + "Успешно подключились к серверу!");
            }

            if (autoDisable.get()) {
                toggle();
            } else {
                stage = 0;
                lastWorld = mc.world;
            }
        }

        if (stage == 4 && mc.currentScreen == null && clickTimer.isReached(2000)) {
            if (notifyActions.get()) {
                print(TextFormatting.GREEN + "Меню закрылось - возможно подключились!");
            }

            if (autoDisable.get()) {
                toggle();
            } else {
                stage = 0;
            }
        }
    }

    private int findCompassInInventory() {
        for (int i = 0; i < 9; i++) {
            ItemStack stack = mc.player.inventory.getStackInSlot(i);
            if (!stack.isEmpty() && stack.getItem() == Items.COMPASS) {
                return i;
            }
        }
        return -1;
    }

    private int findModeSlot(Container container) {
        for (int i = 0; i < container.inventorySlots.size(); i++) {
            ItemStack stack = container.getSlot(i).getStack();
            if (stack.isEmpty()) continue;

            String displayName = stack.getDisplayName().getString().toLowerCase();

            switch (serverMode.get()) {
                case "Гриф":
                    if (displayName.contains("гриф") && !displayName.contains("мега") ||
                            stack.getItem() == Items.CRAFTING_TABLE) {
                        return i;
                    }
                    break;

                case "Мега Гриф":
                    if (displayName.contains("мега") ||
                            (stack.getItem() == Items.PLAYER_HEAD && displayName.contains("гриф"))) {
                        return i;
                    }
                    break;

                case "Анархия":
                    if (displayName.contains("анархия") ||
                            stack.getItem() == Items.NETHER_STAR) {
                        return i;
                    }
                    break;

                case "Гриферские выживания (RU)":
                    if (stack.getItem() == Items.FURNACE) {
                        return i;
                    }
                    if (displayName.contains("печь") || displayName.contains("furnace")) {
                        return i;
                    }
                    break;
            }
        }
        return -1;
    }

    private int getTargetPage() {
        if (serverMode.is("Гриферские выживания (RU)")) {
            return 1;
        }

        int num = (int) serverNumber.get().floatValue();
        if (num <= 36) return 1;
        if (num <= 54) return 2;
        return 1;
    }

    private int extractNumberFromName(String displayName) {
        String clean = displayName.replaceAll("§[0-9a-fk-or]", "");
        java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("\\d+");
        java.util.regex.Matcher matcher = pattern.matcher(clean);
        if (matcher.find()) {
            try {
                return Integer.parseInt(matcher.group());
            } catch (NumberFormatException e) {
                return -1;
            }
        }
        return -1;
    }

    private static class PageInfo {
        int currentPage;
        int totalPages;

        PageInfo(int current, int total) {
            this.currentPage = current;
            this.totalPages = total;
        }
    }

    private PageInfo parsePageFromTitle(Container container) {
        String title = "";

        if (mc.currentScreen != null) {
            title = mc.currentScreen.getTitle().getString();
        }

        java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("(\\d+)/(\\d+)");
        java.util.regex.Matcher matcher = pattern.matcher(title);

        if (matcher.find()) {
            int current = Integer.parseInt(matcher.group(1));
            int total = Integer.parseInt(matcher.group(2));
            return new PageInfo(current, total);
        }

        return new PageInfo(1, 1);
    }

    private int findPageButton(Container container, String direction) {
        for (int i = 0; i < container.inventorySlots.size(); i++) {
            Slot slot = container.getSlot(i);
            ItemStack stack = slot.getStack();

            if (stack.isEmpty()) continue;

            if (stack.getItem() == Items.ARROW) {
                return i;
            }
        }

        if (container.inventorySlots.size() > 53) {
            Slot slot = container.getSlot(53);
            if (!slot.getStack().isEmpty()) {
                return 53;
            }
        }

        if (container.inventorySlots.size() > 45) {
            Slot slot = container.getSlot(45);
            if (!slot.getStack().isEmpty()) {
                return 45;
            }
        }

        return -1;
    }

    private int findWorldSlot(Container container) {
        String mode = serverMode.get();
        boolean isGriffMode = mode.equals("Гриф") || mode.equals("Гриферские выживания (RU)") ||
                mode.equals("Грифовское выживание");

        if (randomServer.get()) {
            return findRandomWorldSlot(container, isGriffMode);
        } else {
            return findSpecificWorldSlot(container, isGriffMode);
        }
    }

    private int findSpecificWorldSlot(Container container, boolean isGriffMode) {
        int targetNumber;

        if (serverMode.is("Гриферские выживания (RU)")) {
            targetNumber = (int) survivalNumber.get().floatValue();
        } else {
            targetNumber = (int) serverNumber.get().floatValue();
        }

        for (int i = 0; i < container.inventorySlots.size(); i++) {
            Slot slot = container.getSlot(i);
            ItemStack stack = slot.getStack();

            if (stack.isEmpty()) continue;

            if (stack.getItem() != Items.PLAYER_HEAD) continue;

            if (stack.getItem() == Items.BARRIER || stack.getItem() == Items.RED_STAINED_GLASS_PANE) continue;

            String displayName = stack.getDisplayName().getString();

            int foundNumber = extractNumberFromName(displayName);

            if (foundNumber == targetNumber) {
                return i;
            }
        }

        return -1;
    }

    private int findRandomWorldSlot(Container container, boolean isGriffMode) {
        java.util.List<Integer> validSlots = new java.util.ArrayList<>();

        for (int i = 0; i < container.inventorySlots.size(); i++) {
            Slot slot = container.getSlot(i);
            ItemStack stack = slot.getStack();

            if (stack.isEmpty()) continue;

            boolean isWorldItem = false;
            if (isGriffMode) {
                isWorldItem = stack.getItem() == Items.PLAYER_HEAD;
            } else {
                isWorldItem = stack.getItem() == Items.NETHER_STAR || stack.getItem() == Items.PLAYER_HEAD;
            }

            if (isWorldItem) {
                String name = stack.getDisplayName().getString();
                if (!name.contains("стрелка") && !name.contains("Стрелка") &&
                        !name.contains("Вперед") && !name.contains("Назад") &&
                        stack.getItem() != Items.BARRIER &&
                        stack.getItem() != Items.RED_STAINED_GLASS_PANE) {
                    validSlots.add(i);
                }
            }
        }

        if (!validSlots.isEmpty()) {
            int randomIndex = (int) (Math.random() * validSlots.size());
            return validSlots.get(randomIndex);
        }

        return -1;
    }

    private boolean needsSecondMenu() {
        String mode = serverMode.get();
        return mode.equals("Гриф") ||
                mode.equals("Мега Гриф") ||
                mode.equals("Гриферские выживания (RU)");
    }

    @Override
    public boolean onDisable() {
        super.onDisable();
        stage = 0;
        compassOpened = false;
        modeClicked = false;
        worldClicked = false;
        lastClickedSlot = -1;
        lastWorld = null;
        return false;
    }
}
 
Хай YouGame
Я новый пастер вот решил с вами поделиться часть функционала ну для какой то пасты либо в свой проект то самое то


Java:
Expand Collapse Copy
package client.main.module.impl.misc;

import client.events.EventUpdate;
import client.main.module.api.Category;
import client.main.module.api.Feature;
import client.main.module.api.FeatureInfo;
import client.main.module.settings.implObjects.CheckBoxObject;
import client.main.module.settings.implObjects.SelectObject;
import client.main.module.settings.implObjects.SliderObject;
import client.util.math.StopWatch;
import com.google.common.eventbus.Subscribe;
import net.minecraft.inventory.container.ClickType;
import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.Hand;
import net.minecraft.util.text.TextFormatting;

@FeatureInfo(name = "ReallyWorld Joiner", type = Category.Misc, desc = "Автоматически заходит на ReallyWorld сервера ")
public class ReallyWorldJoiner extends Feature {

    private final SelectObject serverMode = new SelectObject("Режим сервера", "Гриф",
            "Анархия", "Гриф", "Мега Гриф", "Гриферские выживания (RU)");

    private final SliderObject serverNumber = new SliderObject("Номер сервера", 1f, 1f, 54f, 1f)
            .setVisible(() -> !serverMode.is("Гриферские выживания (RU)") && !serverMode.is("Мега Гриф") && !serverMode.is("Анархия"));

    private final SliderObject survivalNumber = new SliderObject("Номер выживания", 1f, 1f, 6f, 1f)
            .setVisible(() -> serverMode.is("Гриферские выживания (RU)"));

    private final SliderObject clickDelay = new SliderObject("Задержка клика (мс)", 800f, 5f, 2000f, 50f);

    private final SliderObject spamSpeed = new SliderObject("Скорость спама (мс)", 50f, 1f, 500f, 10f);

    private final CheckBoxObject autoDisable = new CheckBoxObject("Автовыключение", true);

    private final CheckBoxObject autoOpen = new CheckBoxObject("Авто-открытие компаса", true);

    private final CheckBoxObject randomServer = new CheckBoxObject("Случайный сервер", false);

    private final CheckBoxObject notifyActions = new CheckBoxObject("Уведомления", true);

    private final StopWatch clickTimer = new StopWatch();
    private boolean compassOpened = false;
    private boolean modeClicked = false;
    private boolean worldClicked = false;
    private int stage = 0;
    private int lastClickedSlot = -1;
    private net.minecraft.world.World lastWorld;

    public ReallyWorldJoiner() {
        addSettings(serverMode, serverNumber, survivalNumber, clickDelay, spamSpeed, autoOpen, randomServer, autoDisable, notifyActions);
    }

    @Override
    public boolean onEnable() {
        super.onEnable();
        stage = 0;
        compassOpened = false;
        modeClicked = false;
        worldClicked = false;
        lastClickedSlot = -1;
        lastWorld = mc.world;
        clickTimer.reset();

        if (notifyActions.get()) {
            if (randomServer.get()) {
                print("Ищем компас для подключения к случайному " + serverMode.get() + "...");
            } else {
                if (needsSecondMenu()) {
                    if (serverMode.is("Гриферские выживания (RU)")) {
                        print("Ищем компас для подключения к " + serverMode.get() + " #" + (int)survivalNumber.get().floatValue() + "...");
                    } else {
                        print("Ищем компас для подключения к " + serverMode.get() + " #" + (int)serverNumber.get().floatValue() + "...");
                    }
                } else {
                    print("Ищем компас для подключения к " + serverMode.get() + "...");
                }
            }
        }
        return false;
    }

    @Subscribe
    private void onUpdate(EventUpdate event) {
        if (mc.player == null || mc.world == null) return;

        if (stage == 0 && autoOpen.get()) {
            int compassSlot = findCompassInInventory();

            if (compassSlot != -1) {
                if (notifyActions.get()) {
                    print("Компас найден в слоте " + (compassSlot + 1) + ". Открываем...");
                }

                mc.player.inventory.currentItem = compassSlot;
                mc.playerController.processRightClick(mc.player, mc.world, Hand.MAIN_HAND);
                stage = 1;
                clickTimer.reset();
            } else {
                if (notifyActions.get() && clickTimer.isReached(1000)) {
                    print(TextFormatting.RED + "Компас не найден в хотбаре!");
                    clickTimer.reset();
                }
            }
        }

        if (stage == 1) {
            if (mc.currentScreen != null && mc.player.openContainer != null &&
                    mc.player.openContainer != mc.player.container) {
                compassOpened = true;
                stage = 2;

                if (notifyActions.get()) {
                    print("Меню компаса открыто. Ищем режим " + serverMode.get() + "...");
                }
                clickTimer.reset();
            }
        }

        if (stage == 2 && mc.currentScreen != null && mc.player.openContainer != null) {
            Container container = mc.player.openContainer;
            int modeSlot = findModeSlot(container);

            if (modeSlot != -1 && lastClickedSlot != modeSlot) {
                Slot slot = container.getSlot(modeSlot);

                if (slot == null || slot.getStack().isEmpty()) {
                    if (notifyActions.get() && clickTimer.isReached(500)) {
                        print(TextFormatting.RED + "Слот режима пуст! Повторная попытка...");
                        clickTimer.reset();
                    }
                    return;
                }

                if (notifyActions.get()) {
                    String modeName = slot.getStack().getDisplayName().getString();
                    print("Выбираем режим: " + TextFormatting.AQUA + modeName);
                }

                mc.playerController.windowClick(
                        container.windowId,
                        modeSlot,
                        0,
                        ClickType.PICKUP,
                        mc.player
                );

                lastClickedSlot = modeSlot;
                modeClicked = true;

                if (needsSecondMenu()) {
                    stage = 3;
                    lastClickedSlot = -1;
                    if (notifyActions.get()) {
                        print("Ожидаем меню выбора мира...");
                    }
                } else {
                    stage = 4;
                    lastClickedSlot = -1;
                    if (notifyActions.get()) {
                        print("Подключаемся к " + serverMode.get() + "...");
                    }
                }

                clickTimer.reset();
            } else if (modeSlot == -1 && clickTimer.isReached(500)) {
                if (notifyActions.get()) {
                    print(TextFormatting.RED + "Режим " + serverMode.get() + " не найден в меню! Повторная попытка...");
                }
                stage = 0;
                clickTimer.reset();
            }
        }

        if (stage == 3 && mc.currentScreen != null && mc.player.openContainer != null) {
            Container container = mc.player.openContainer;
            PageInfo pageInfo = parsePageFromTitle(container);
            int currentPage = pageInfo.currentPage;
            int totalPages = pageInfo.totalPages;
            int targetPage = getTargetPage();

            int worldSlot = findWorldSlot(container);

            if (worldSlot != -1 && lastClickedSlot != worldSlot) {
                Slot slot = container.getSlot(worldSlot);
                ItemStack stack = slot.getStack();

                if (slot == null || stack.isEmpty()) {
                    if (notifyActions.get() && clickTimer.isReached(500)) {
                        print(TextFormatting.RED + "Слот мира пуст! Повторная попытка...");
                        clickTimer.reset();
                    }
                    return;
                }

                if (stack.getItem() == Items.BARRIER ||
                        stack.getItem() == Items.RED_STAINED_GLASS_PANE ||
                        stack.getDisplayName().getString().contains("Закрыт") ||
                        stack.getDisplayName().getString().contains("закрыт")) {

                    int targetNum = serverMode.is("Гриферские выживания (RU)")
                            ? (int)survivalNumber.get().floatValue()
                            : (int)serverNumber.get().floatValue();

                    if (notifyActions.get()) {
                        print(TextFormatting.RED + "Сервер #" + targetNum + " заблокирован! Повторная попытка...");
                    }
                    stage = 0;
                    clickTimer.reset();
                    return;
                }

                String worldName = stack.getDisplayName().getString();
                int worldNum = extractNumberFromName(worldName);

                if (notifyActions.get()) {
                    print("Подключаемся к миру #" + worldNum + " (" + TextFormatting.AQUA + worldName + TextFormatting.WHITE + ")");
                }

                mc.playerController.windowClick(
                        container.windowId,
                        worldSlot,
                        0,
                        ClickType.PICKUP,
                        mc.player
                );

                lastClickedSlot = worldSlot;
                worldClicked = true;
                stage = 4;
                clickTimer.reset();
                return;
            }

            if (currentPage < targetPage && currentPage < totalPages) {
                int nextButton = findPageButton(container, "next");

                if (nextButton != -1) {
                    if (notifyActions.get()) {
                        print("Листаем на страницу " + (currentPage + 1) + "...");
                    }

                    mc.playerController.windowClick(
                            container.windowId,
                            nextButton,
                            0,
                            ClickType.PICKUP,
                            mc.player
                    );

                    lastClickedSlot = -1;
                    clickTimer.reset();
                    return;
                }
            }

            if (currentPage > targetPage) {
                int prevButton = findPageButton(container, "prev");

                if (prevButton != -1) {
                    if (notifyActions.get()) {
                        print("Возвращаемся на страницу " + (currentPage - 1) + "...");
                    }

                    mc.playerController.windowClick(
                            container.windowId,
                            prevButton,
                            0,
                            ClickType.PICKUP,
                            mc.player
                    );

                    lastClickedSlot = -1;
                    clickTimer.reset();
                    return;
                }
            }

            if (clickTimer.isReached(1000)) {
                int targetNum = serverMode.is("Гриферские выживания (RU)")
                        ? (int)survivalNumber.get().floatValue()
                        : (int)serverNumber.get().floatValue();

                if (notifyActions.get()) {
                    print(TextFormatting.RED + "Мир #" + targetNum + " не найден! Повторная попытка...");
                }
                stage = 0;
                clickTimer.reset();
            }
        }

        if (stage == 4 && mc.currentScreen != null && mc.player.openContainer != null) {
            if (clickTimer.isReached(spamSpeed.get().longValue())) {
                Container container = mc.player.openContainer;

                int targetSlot = -1;

                if (needsSecondMenu()) {
                    targetSlot = findWorldSlot(container);
                } else {
                    targetSlot = findModeSlot(container);
                }

                if (targetSlot != -1) {
                    Slot slot = container.getSlot(targetSlot);

                    if (slot != null && !slot.getStack().isEmpty()) {
                        mc.playerController.windowClick(
                                container.windowId,
                                targetSlot,
                                0,
                                ClickType.PICKUP,
                                mc.player
                        );
                        clickTimer.reset();
                    }
                } else {
                    if (notifyActions.get() && clickTimer.isReached(1000)) {
                        print(TextFormatting.GREEN + "Подключение к серверу...");
                        clickTimer.reset();
                    }
                }
            }
        }

        if (stage >= 2 && mc.world != lastWorld && mc.world != null) {
            if (notifyActions.get()) {
                print(TextFormatting.GREEN + "Успешно подключились к серверу!");
            }

            if (autoDisable.get()) {
                toggle();
            } else {
                stage = 0;
                lastWorld = mc.world;
            }
        }

        if (stage == 4 && mc.currentScreen == null && clickTimer.isReached(2000)) {
            if (notifyActions.get()) {
                print(TextFormatting.GREEN + "Меню закрылось - возможно подключились!");
            }

            if (autoDisable.get()) {
                toggle();
            } else {
                stage = 0;
            }
        }
    }

    private int findCompassInInventory() {
        for (int i = 0; i < 9; i++) {
            ItemStack stack = mc.player.inventory.getStackInSlot(i);
            if (!stack.isEmpty() && stack.getItem() == Items.COMPASS) {
                return i;
            }
        }
        return -1;
    }

    private int findModeSlot(Container container) {
        for (int i = 0; i < container.inventorySlots.size(); i++) {
            ItemStack stack = container.getSlot(i).getStack();
            if (stack.isEmpty()) continue;

            String displayName = stack.getDisplayName().getString().toLowerCase();

            switch (serverMode.get()) {
                case "Гриф":
                    if (displayName.contains("гриф") && !displayName.contains("мега") ||
                            stack.getItem() == Items.CRAFTING_TABLE) {
                        return i;
                    }
                    break;

                case "Мега Гриф":
                    if (displayName.contains("мега") ||
                            (stack.getItem() == Items.PLAYER_HEAD && displayName.contains("гриф"))) {
                        return i;
                    }
                    break;

                case "Анархия":
                    if (displayName.contains("анархия") ||
                            stack.getItem() == Items.NETHER_STAR) {
                        return i;
                    }
                    break;

                case "Гриферские выживания (RU)":
                    if (stack.getItem() == Items.FURNACE) {
                        return i;
                    }
                    if (displayName.contains("печь") || displayName.contains("furnace")) {
                        return i;
                    }
                    break;
            }
        }
        return -1;
    }

    private int getTargetPage() {
        if (serverMode.is("Гриферские выживания (RU)")) {
            return 1;
        }

        int num = (int) serverNumber.get().floatValue();
        if (num <= 36) return 1;
        if (num <= 54) return 2;
        return 1;
    }

    private int extractNumberFromName(String displayName) {
        String clean = displayName.replaceAll("§[0-9a-fk-or]", "");
        java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("\\d+");
        java.util.regex.Matcher matcher = pattern.matcher(clean);
        if (matcher.find()) {
            try {
                return Integer.parseInt(matcher.group());
            } catch (NumberFormatException e) {
                return -1;
            }
        }
        return -1;
    }

    private static class PageInfo {
        int currentPage;
        int totalPages;

        PageInfo(int current, int total) {
            this.currentPage = current;
            this.totalPages = total;
        }
    }

    private PageInfo parsePageFromTitle(Container container) {
        String title = "";

        if (mc.currentScreen != null) {
            title = mc.currentScreen.getTitle().getString();
        }

        java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("(\\d+)/(\\d+)");
        java.util.regex.Matcher matcher = pattern.matcher(title);

        if (matcher.find()) {
            int current = Integer.parseInt(matcher.group(1));
            int total = Integer.parseInt(matcher.group(2));
            return new PageInfo(current, total);
        }

        return new PageInfo(1, 1);
    }

    private int findPageButton(Container container, String direction) {
        for (int i = 0; i < container.inventorySlots.size(); i++) {
            Slot slot = container.getSlot(i);
            ItemStack stack = slot.getStack();

            if (stack.isEmpty()) continue;

            if (stack.getItem() == Items.ARROW) {
                return i;
            }
        }

        if (container.inventorySlots.size() > 53) {
            Slot slot = container.getSlot(53);
            if (!slot.getStack().isEmpty()) {
                return 53;
            }
        }

        if (container.inventorySlots.size() > 45) {
            Slot slot = container.getSlot(45);
            if (!slot.getStack().isEmpty()) {
                return 45;
            }
        }

        return -1;
    }

    private int findWorldSlot(Container container) {
        String mode = serverMode.get();
        boolean isGriffMode = mode.equals("Гриф") || mode.equals("Гриферские выживания (RU)") ||
                mode.equals("Грифовское выживание");

        if (randomServer.get()) {
            return findRandomWorldSlot(container, isGriffMode);
        } else {
            return findSpecificWorldSlot(container, isGriffMode);
        }
    }

    private int findSpecificWorldSlot(Container container, boolean isGriffMode) {
        int targetNumber;

        if (serverMode.is("Гриферские выживания (RU)")) {
            targetNumber = (int) survivalNumber.get().floatValue();
        } else {
            targetNumber = (int) serverNumber.get().floatValue();
        }

        for (int i = 0; i < container.inventorySlots.size(); i++) {
            Slot slot = container.getSlot(i);
            ItemStack stack = slot.getStack();

            if (stack.isEmpty()) continue;

            if (stack.getItem() != Items.PLAYER_HEAD) continue;

            if (stack.getItem() == Items.BARRIER || stack.getItem() == Items.RED_STAINED_GLASS_PANE) continue;

            String displayName = stack.getDisplayName().getString();

            int foundNumber = extractNumberFromName(displayName);

            if (foundNumber == targetNumber) {
                return i;
            }
        }

        return -1;
    }

    private int findRandomWorldSlot(Container container, boolean isGriffMode) {
        java.util.List<Integer> validSlots = new java.util.ArrayList<>();

        for (int i = 0; i < container.inventorySlots.size(); i++) {
            Slot slot = container.getSlot(i);
            ItemStack stack = slot.getStack();

            if (stack.isEmpty()) continue;

            boolean isWorldItem = false;
            if (isGriffMode) {
                isWorldItem = stack.getItem() == Items.PLAYER_HEAD;
            } else {
                isWorldItem = stack.getItem() == Items.NETHER_STAR || stack.getItem() == Items.PLAYER_HEAD;
            }

            if (isWorldItem) {
                String name = stack.getDisplayName().getString();
                if (!name.contains("стрелка") && !name.contains("Стрелка") &&
                        !name.contains("Вперед") && !name.contains("Назад") &&
                        stack.getItem() != Items.BARRIER &&
                        stack.getItem() != Items.RED_STAINED_GLASS_PANE) {
                    validSlots.add(i);
                }
            }
        }

        if (!validSlots.isEmpty()) {
            int randomIndex = (int) (Math.random() * validSlots.size());
            return validSlots.get(randomIndex);
        }

        return -1;
    }

    private boolean needsSecondMenu() {
        String mode = serverMode.get();
        return mode.equals("Гриф") ||
                mode.equals("Мега Гриф") ||
                mode.equals("Гриферские выживания (RU)");
    }

    @Override
    public boolean onDisable() {
        super.onDisable();
        stage = 0;
        compassOpened = false;
        modeClicked = false;
        worldClicked = false;
        lastClickedSlot = -1;
        lastWorld = null;
        return false;
    }
}
/del говно.
 
Хай YouGame
Я новый пастер вот решил с вами поделиться часть функционала ну для какой то пасты либо в свой проект то самое то


Java:
Expand Collapse Copy
package client.main.module.impl.misc;

import client.events.EventUpdate;
import client.main.module.api.Category;
import client.main.module.api.Feature;
import client.main.module.api.FeatureInfo;
import client.main.module.settings.implObjects.CheckBoxObject;
import client.main.module.settings.implObjects.SelectObject;
import client.main.module.settings.implObjects.SliderObject;
import client.util.math.StopWatch;
import com.google.common.eventbus.Subscribe;
import net.minecraft.inventory.container.ClickType;
import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.Hand;
import net.minecraft.util.text.TextFormatting;

@FeatureInfo(name = "ReallyWorld Joiner", type = Category.Misc, desc = "Автоматически заходит на ReallyWorld сервера ")
public class ReallyWorldJoiner extends Feature {

    private final SelectObject serverMode = new SelectObject("Режим сервера", "Гриф",
            "Анархия", "Гриф", "Мега Гриф", "Гриферские выживания (RU)");

    private final SliderObject serverNumber = new SliderObject("Номер сервера", 1f, 1f, 54f, 1f)
            .setVisible(() -> !serverMode.is("Гриферские выживания (RU)") && !serverMode.is("Мега Гриф") && !serverMode.is("Анархия"));

    private final SliderObject survivalNumber = new SliderObject("Номер выживания", 1f, 1f, 6f, 1f)
            .setVisible(() -> serverMode.is("Гриферские выживания (RU)"));

    private final SliderObject clickDelay = new SliderObject("Задержка клика (мс)", 800f, 5f, 2000f, 50f);

    private final SliderObject spamSpeed = new SliderObject("Скорость спама (мс)", 50f, 1f, 500f, 10f);

    private final CheckBoxObject autoDisable = new CheckBoxObject("Автовыключение", true);

    private final CheckBoxObject autoOpen = new CheckBoxObject("Авто-открытие компаса", true);

    private final CheckBoxObject randomServer = new CheckBoxObject("Случайный сервер", false);

    private final CheckBoxObject notifyActions = new CheckBoxObject("Уведомления", true);

    private final StopWatch clickTimer = new StopWatch();
    private boolean compassOpened = false;
    private boolean modeClicked = false;
    private boolean worldClicked = false;
    private int stage = 0;
    private int lastClickedSlot = -1;
    private net.minecraft.world.World lastWorld;

    public ReallyWorldJoiner() {
        addSettings(serverMode, serverNumber, survivalNumber, clickDelay, spamSpeed, autoOpen, randomServer, autoDisable, notifyActions);
    }

    @Override
    public boolean onEnable() {
        super.onEnable();
        stage = 0;
        compassOpened = false;
        modeClicked = false;
        worldClicked = false;
        lastClickedSlot = -1;
        lastWorld = mc.world;
        clickTimer.reset();

        if (notifyActions.get()) {
            if (randomServer.get()) {
                print("Ищем компас для подключения к случайному " + serverMode.get() + "...");
            } else {
                if (needsSecondMenu()) {
                    if (serverMode.is("Гриферские выживания (RU)")) {
                        print("Ищем компас для подключения к " + serverMode.get() + " #" + (int)survivalNumber.get().floatValue() + "...");
                    } else {
                        print("Ищем компас для подключения к " + serverMode.get() + " #" + (int)serverNumber.get().floatValue() + "...");
                    }
                } else {
                    print("Ищем компас для подключения к " + serverMode.get() + "...");
                }
            }
        }
        return false;
    }

    @Subscribe
    private void onUpdate(EventUpdate event) {
        if (mc.player == null || mc.world == null) return;

        if (stage == 0 && autoOpen.get()) {
            int compassSlot = findCompassInInventory();

            if (compassSlot != -1) {
                if (notifyActions.get()) {
                    print("Компас найден в слоте " + (compassSlot + 1) + ". Открываем...");
                }

                mc.player.inventory.currentItem = compassSlot;
                mc.playerController.processRightClick(mc.player, mc.world, Hand.MAIN_HAND);
                stage = 1;
                clickTimer.reset();
            } else {
                if (notifyActions.get() && clickTimer.isReached(1000)) {
                    print(TextFormatting.RED + "Компас не найден в хотбаре!");
                    clickTimer.reset();
                }
            }
        }

        if (stage == 1) {
            if (mc.currentScreen != null && mc.player.openContainer != null &&
                    mc.player.openContainer != mc.player.container) {
                compassOpened = true;
                stage = 2;

                if (notifyActions.get()) {
                    print("Меню компаса открыто. Ищем режим " + serverMode.get() + "...");
                }
                clickTimer.reset();
            }
        }

        if (stage == 2 && mc.currentScreen != null && mc.player.openContainer != null) {
            Container container = mc.player.openContainer;
            int modeSlot = findModeSlot(container);

            if (modeSlot != -1 && lastClickedSlot != modeSlot) {
                Slot slot = container.getSlot(modeSlot);

                if (slot == null || slot.getStack().isEmpty()) {
                    if (notifyActions.get() && clickTimer.isReached(500)) {
                        print(TextFormatting.RED + "Слот режима пуст! Повторная попытка...");
                        clickTimer.reset();
                    }
                    return;
                }

                if (notifyActions.get()) {
                    String modeName = slot.getStack().getDisplayName().getString();
                    print("Выбираем режим: " + TextFormatting.AQUA + modeName);
                }

                mc.playerController.windowClick(
                        container.windowId,
                        modeSlot,
                        0,
                        ClickType.PICKUP,
                        mc.player
                );

                lastClickedSlot = modeSlot;
                modeClicked = true;

                if (needsSecondMenu()) {
                    stage = 3;
                    lastClickedSlot = -1;
                    if (notifyActions.get()) {
                        print("Ожидаем меню выбора мира...");
                    }
                } else {
                    stage = 4;
                    lastClickedSlot = -1;
                    if (notifyActions.get()) {
                        print("Подключаемся к " + serverMode.get() + "...");
                    }
                }

                clickTimer.reset();
            } else if (modeSlot == -1 && clickTimer.isReached(500)) {
                if (notifyActions.get()) {
                    print(TextFormatting.RED + "Режим " + serverMode.get() + " не найден в меню! Повторная попытка...");
                }
                stage = 0;
                clickTimer.reset();
            }
        }

        if (stage == 3 && mc.currentScreen != null && mc.player.openContainer != null) {
            Container container = mc.player.openContainer;
            PageInfo pageInfo = parsePageFromTitle(container);
            int currentPage = pageInfo.currentPage;
            int totalPages = pageInfo.totalPages;
            int targetPage = getTargetPage();

            int worldSlot = findWorldSlot(container);

            if (worldSlot != -1 && lastClickedSlot != worldSlot) {
                Slot slot = container.getSlot(worldSlot);
                ItemStack stack = slot.getStack();

                if (slot == null || stack.isEmpty()) {
                    if (notifyActions.get() && clickTimer.isReached(500)) {
                        print(TextFormatting.RED + "Слот мира пуст! Повторная попытка...");
                        clickTimer.reset();
                    }
                    return;
                }

                if (stack.getItem() == Items.BARRIER ||
                        stack.getItem() == Items.RED_STAINED_GLASS_PANE ||
                        stack.getDisplayName().getString().contains("Закрыт") ||
                        stack.getDisplayName().getString().contains("закрыт")) {

                    int targetNum = serverMode.is("Гриферские выживания (RU)")
                            ? (int)survivalNumber.get().floatValue()
                            : (int)serverNumber.get().floatValue();

                    if (notifyActions.get()) {
                        print(TextFormatting.RED + "Сервер #" + targetNum + " заблокирован! Повторная попытка...");
                    }
                    stage = 0;
                    clickTimer.reset();
                    return;
                }

                String worldName = stack.getDisplayName().getString();
                int worldNum = extractNumberFromName(worldName);

                if (notifyActions.get()) {
                    print("Подключаемся к миру #" + worldNum + " (" + TextFormatting.AQUA + worldName + TextFormatting.WHITE + ")");
                }

                mc.playerController.windowClick(
                        container.windowId,
                        worldSlot,
                        0,
                        ClickType.PICKUP,
                        mc.player
                );

                lastClickedSlot = worldSlot;
                worldClicked = true;
                stage = 4;
                clickTimer.reset();
                return;
            }

            if (currentPage < targetPage && currentPage < totalPages) {
                int nextButton = findPageButton(container, "next");

                if (nextButton != -1) {
                    if (notifyActions.get()) {
                        print("Листаем на страницу " + (currentPage + 1) + "...");
                    }

                    mc.playerController.windowClick(
                            container.windowId,
                            nextButton,
                            0,
                            ClickType.PICKUP,
                            mc.player
                    );

                    lastClickedSlot = -1;
                    clickTimer.reset();
                    return;
                }
            }

            if (currentPage > targetPage) {
                int prevButton = findPageButton(container, "prev");

                if (prevButton != -1) {
                    if (notifyActions.get()) {
                        print("Возвращаемся на страницу " + (currentPage - 1) + "...");
                    }

                    mc.playerController.windowClick(
                            container.windowId,
                            prevButton,
                            0,
                            ClickType.PICKUP,
                            mc.player
                    );

                    lastClickedSlot = -1;
                    clickTimer.reset();
                    return;
                }
            }

            if (clickTimer.isReached(1000)) {
                int targetNum = serverMode.is("Гриферские выживания (RU)")
                        ? (int)survivalNumber.get().floatValue()
                        : (int)serverNumber.get().floatValue();

                if (notifyActions.get()) {
                    print(TextFormatting.RED + "Мир #" + targetNum + " не найден! Повторная попытка...");
                }
                stage = 0;
                clickTimer.reset();
            }
        }

        if (stage == 4 && mc.currentScreen != null && mc.player.openContainer != null) {
            if (clickTimer.isReached(spamSpeed.get().longValue())) {
                Container container = mc.player.openContainer;

                int targetSlot = -1;

                if (needsSecondMenu()) {
                    targetSlot = findWorldSlot(container);
                } else {
                    targetSlot = findModeSlot(container);
                }

                if (targetSlot != -1) {
                    Slot slot = container.getSlot(targetSlot);

                    if (slot != null && !slot.getStack().isEmpty()) {
                        mc.playerController.windowClick(
                                container.windowId,
                                targetSlot,
                                0,
                                ClickType.PICKUP,
                                mc.player
                        );
                        clickTimer.reset();
                    }
                } else {
                    if (notifyActions.get() && clickTimer.isReached(1000)) {
                        print(TextFormatting.GREEN + "Подключение к серверу...");
                        clickTimer.reset();
                    }
                }
            }
        }

        if (stage >= 2 && mc.world != lastWorld && mc.world != null) {
            if (notifyActions.get()) {
                print(TextFormatting.GREEN + "Успешно подключились к серверу!");
            }

            if (autoDisable.get()) {
                toggle();
            } else {
                stage = 0;
                lastWorld = mc.world;
            }
        }

        if (stage == 4 && mc.currentScreen == null && clickTimer.isReached(2000)) {
            if (notifyActions.get()) {
                print(TextFormatting.GREEN + "Меню закрылось - возможно подключились!");
            }

            if (autoDisable.get()) {
                toggle();
            } else {
                stage = 0;
            }
        }
    }

    private int findCompassInInventory() {
        for (int i = 0; i < 9; i++) {
            ItemStack stack = mc.player.inventory.getStackInSlot(i);
            if (!stack.isEmpty() && stack.getItem() == Items.COMPASS) {
                return i;
            }
        }
        return -1;
    }

    private int findModeSlot(Container container) {
        for (int i = 0; i < container.inventorySlots.size(); i++) {
            ItemStack stack = container.getSlot(i).getStack();
            if (stack.isEmpty()) continue;

            String displayName = stack.getDisplayName().getString().toLowerCase();

            switch (serverMode.get()) {
                case "Гриф":
                    if (displayName.contains("гриф") && !displayName.contains("мега") ||
                            stack.getItem() == Items.CRAFTING_TABLE) {
                        return i;
                    }
                    break;

                case "Мега Гриф":
                    if (displayName.contains("мега") ||
                            (stack.getItem() == Items.PLAYER_HEAD && displayName.contains("гриф"))) {
                        return i;
                    }
                    break;

                case "Анархия":
                    if (displayName.contains("анархия") ||
                            stack.getItem() == Items.NETHER_STAR) {
                        return i;
                    }
                    break;

                case "Гриферские выживания (RU)":
                    if (stack.getItem() == Items.FURNACE) {
                        return i;
                    }
                    if (displayName.contains("печь") || displayName.contains("furnace")) {
                        return i;
                    }
                    break;
            }
        }
        return -1;
    }

    private int getTargetPage() {
        if (serverMode.is("Гриферские выживания (RU)")) {
            return 1;
        }

        int num = (int) serverNumber.get().floatValue();
        if (num <= 36) return 1;
        if (num <= 54) return 2;
        return 1;
    }

    private int extractNumberFromName(String displayName) {
        String clean = displayName.replaceAll("§[0-9a-fk-or]", "");
        java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("\\d+");
        java.util.regex.Matcher matcher = pattern.matcher(clean);
        if (matcher.find()) {
            try {
                return Integer.parseInt(matcher.group());
            } catch (NumberFormatException e) {
                return -1;
            }
        }
        return -1;
    }

    private static class PageInfo {
        int currentPage;
        int totalPages;

        PageInfo(int current, int total) {
            this.currentPage = current;
            this.totalPages = total;
        }
    }

    private PageInfo parsePageFromTitle(Container container) {
        String title = "";

        if (mc.currentScreen != null) {
            title = mc.currentScreen.getTitle().getString();
        }

        java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("(\\d+)/(\\d+)");
        java.util.regex.Matcher matcher = pattern.matcher(title);

        if (matcher.find()) {
            int current = Integer.parseInt(matcher.group(1));
            int total = Integer.parseInt(matcher.group(2));
            return new PageInfo(current, total);
        }

        return new PageInfo(1, 1);
    }

    private int findPageButton(Container container, String direction) {
        for (int i = 0; i < container.inventorySlots.size(); i++) {
            Slot slot = container.getSlot(i);
            ItemStack stack = slot.getStack();

            if (stack.isEmpty()) continue;

            if (stack.getItem() == Items.ARROW) {
                return i;
            }
        }

        if (container.inventorySlots.size() > 53) {
            Slot slot = container.getSlot(53);
            if (!slot.getStack().isEmpty()) {
                return 53;
            }
        }

        if (container.inventorySlots.size() > 45) {
            Slot slot = container.getSlot(45);
            if (!slot.getStack().isEmpty()) {
                return 45;
            }
        }

        return -1;
    }

    private int findWorldSlot(Container container) {
        String mode = serverMode.get();
        boolean isGriffMode = mode.equals("Гриф") || mode.equals("Гриферские выживания (RU)") ||
                mode.equals("Грифовское выживание");

        if (randomServer.get()) {
            return findRandomWorldSlot(container, isGriffMode);
        } else {
            return findSpecificWorldSlot(container, isGriffMode);
        }
    }

    private int findSpecificWorldSlot(Container container, boolean isGriffMode) {
        int targetNumber;

        if (serverMode.is("Гриферские выживания (RU)")) {
            targetNumber = (int) survivalNumber.get().floatValue();
        } else {
            targetNumber = (int) serverNumber.get().floatValue();
        }

        for (int i = 0; i < container.inventorySlots.size(); i++) {
            Slot slot = container.getSlot(i);
            ItemStack stack = slot.getStack();

            if (stack.isEmpty()) continue;

            if (stack.getItem() != Items.PLAYER_HEAD) continue;

            if (stack.getItem() == Items.BARRIER || stack.getItem() == Items.RED_STAINED_GLASS_PANE) continue;

            String displayName = stack.getDisplayName().getString();

            int foundNumber = extractNumberFromName(displayName);

            if (foundNumber == targetNumber) {
                return i;
            }
        }

        return -1;
    }

    private int findRandomWorldSlot(Container container, boolean isGriffMode) {
        java.util.List<Integer> validSlots = new java.util.ArrayList<>();

        for (int i = 0; i < container.inventorySlots.size(); i++) {
            Slot slot = container.getSlot(i);
            ItemStack stack = slot.getStack();

            if (stack.isEmpty()) continue;

            boolean isWorldItem = false;
            if (isGriffMode) {
                isWorldItem = stack.getItem() == Items.PLAYER_HEAD;
            } else {
                isWorldItem = stack.getItem() == Items.NETHER_STAR || stack.getItem() == Items.PLAYER_HEAD;
            }

            if (isWorldItem) {
                String name = stack.getDisplayName().getString();
                if (!name.contains("стрелка") && !name.contains("Стрелка") &&
                        !name.contains("Вперед") && !name.contains("Назад") &&
                        stack.getItem() != Items.BARRIER &&
                        stack.getItem() != Items.RED_STAINED_GLASS_PANE) {
                    validSlots.add(i);
                }
            }
        }

        if (!validSlots.isEmpty()) {
            int randomIndex = (int) (Math.random() * validSlots.size());
            return validSlots.get(randomIndex);
        }

        return -1;
    }

    private boolean needsSecondMenu() {
        String mode = serverMode.get();
        return mode.equals("Гриф") ||
                mode.equals("Мега Гриф") ||
                mode.equals("Гриферские выживания (RU)");
    }

    @Override
    public boolean onDisable() {
        super.onDisable();
        stage = 0;
        compassOpened = false;
        modeClicked = false;
        worldClicked = false;
        lastClickedSlot = -1;
        lastWorld = null;
        return false;
    }
}
даже под пивас не сойдет
 
Хай YouGame
Я новый пастер вот решил с вами поделиться часть функционала ну для какой то пасты либо в свой проект то самое то


Java:
Expand Collapse Copy
package client.main.module.impl.misc;

import client.events.EventUpdate;
import client.main.module.api.Category;
import client.main.module.api.Feature;
import client.main.module.api.FeatureInfo;
import client.main.module.settings.implObjects.CheckBoxObject;
import client.main.module.settings.implObjects.SelectObject;
import client.main.module.settings.implObjects.SliderObject;
import client.util.math.StopWatch;
import com.google.common.eventbus.Subscribe;
import net.minecraft.inventory.container.ClickType;
import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.Hand;
import net.minecraft.util.text.TextFormatting;

@FeatureInfo(name = "ReallyWorld Joiner", type = Category.Misc, desc = "Автоматически заходит на ReallyWorld сервера ")
public class ReallyWorldJoiner extends Feature {

    private final SelectObject serverMode = new SelectObject("Режим сервера", "Гриф",
            "Анархия", "Гриф", "Мега Гриф", "Гриферские выживания (RU)");

    private final SliderObject serverNumber = new SliderObject("Номер сервера", 1f, 1f, 54f, 1f)
            .setVisible(() -> !serverMode.is("Гриферские выживания (RU)") && !serverMode.is("Мега Гриф") && !serverMode.is("Анархия"));

    private final SliderObject survivalNumber = new SliderObject("Номер выживания", 1f, 1f, 6f, 1f)
            .setVisible(() -> serverMode.is("Гриферские выживания (RU)"));

    private final SliderObject clickDelay = new SliderObject("Задержка клика (мс)", 800f, 5f, 2000f, 50f);

    private final SliderObject spamSpeed = new SliderObject("Скорость спама (мс)", 50f, 1f, 500f, 10f);

    private final CheckBoxObject autoDisable = new CheckBoxObject("Автовыключение", true);

    private final CheckBoxObject autoOpen = new CheckBoxObject("Авто-открытие компаса", true);

    private final CheckBoxObject randomServer = new CheckBoxObject("Случайный сервер", false);

    private final CheckBoxObject notifyActions = new CheckBoxObject("Уведомления", true);

    private final StopWatch clickTimer = new StopWatch();
    private boolean compassOpened = false;
    private boolean modeClicked = false;
    private boolean worldClicked = false;
    private int stage = 0;
    private int lastClickedSlot = -1;
    private net.minecraft.world.World lastWorld;

    public ReallyWorldJoiner() {
        addSettings(serverMode, serverNumber, survivalNumber, clickDelay, spamSpeed, autoOpen, randomServer, autoDisable, notifyActions);
    }

    @Override
    public boolean onEnable() {
        super.onEnable();
        stage = 0;
        compassOpened = false;
        modeClicked = false;
        worldClicked = false;
        lastClickedSlot = -1;
        lastWorld = mc.world;
        clickTimer.reset();

        if (notifyActions.get()) {
            if (randomServer.get()) {
                print("Ищем компас для подключения к случайному " + serverMode.get() + "...");
            } else {
                if (needsSecondMenu()) {
                    if (serverMode.is("Гриферские выживания (RU)")) {
                        print("Ищем компас для подключения к " + serverMode.get() + " #" + (int)survivalNumber.get().floatValue() + "...");
                    } else {
                        print("Ищем компас для подключения к " + serverMode.get() + " #" + (int)serverNumber.get().floatValue() + "...");
                    }
                } else {
                    print("Ищем компас для подключения к " + serverMode.get() + "...");
                }
            }
        }
        return false;
    }

    @Subscribe
    private void onUpdate(EventUpdate event) {
        if (mc.player == null || mc.world == null) return;

        if (stage == 0 && autoOpen.get()) {
            int compassSlot = findCompassInInventory();

            if (compassSlot != -1) {
                if (notifyActions.get()) {
                    print("Компас найден в слоте " + (compassSlot + 1) + ". Открываем...");
                }

                mc.player.inventory.currentItem = compassSlot;
                mc.playerController.processRightClick(mc.player, mc.world, Hand.MAIN_HAND);
                stage = 1;
                clickTimer.reset();
            } else {
                if (notifyActions.get() && clickTimer.isReached(1000)) {
                    print(TextFormatting.RED + "Компас не найден в хотбаре!");
                    clickTimer.reset();
                }
            }
        }

        if (stage == 1) {
            if (mc.currentScreen != null && mc.player.openContainer != null &&
                    mc.player.openContainer != mc.player.container) {
                compassOpened = true;
                stage = 2;

                if (notifyActions.get()) {
                    print("Меню компаса открыто. Ищем режим " + serverMode.get() + "...");
                }
                clickTimer.reset();
            }
        }

        if (stage == 2 && mc.currentScreen != null && mc.player.openContainer != null) {
            Container container = mc.player.openContainer;
            int modeSlot = findModeSlot(container);

            if (modeSlot != -1 && lastClickedSlot != modeSlot) {
                Slot slot = container.getSlot(modeSlot);

                if (slot == null || slot.getStack().isEmpty()) {
                    if (notifyActions.get() && clickTimer.isReached(500)) {
                        print(TextFormatting.RED + "Слот режима пуст! Повторная попытка...");
                        clickTimer.reset();
                    }
                    return;
                }

                if (notifyActions.get()) {
                    String modeName = slot.getStack().getDisplayName().getString();
                    print("Выбираем режим: " + TextFormatting.AQUA + modeName);
                }

                mc.playerController.windowClick(
                        container.windowId,
                        modeSlot,
                        0,
                        ClickType.PICKUP,
                        mc.player
                );

                lastClickedSlot = modeSlot;
                modeClicked = true;

                if (needsSecondMenu()) {
                    stage = 3;
                    lastClickedSlot = -1;
                    if (notifyActions.get()) {
                        print("Ожидаем меню выбора мира...");
                    }
                } else {
                    stage = 4;
                    lastClickedSlot = -1;
                    if (notifyActions.get()) {
                        print("Подключаемся к " + serverMode.get() + "...");
                    }
                }

                clickTimer.reset();
            } else if (modeSlot == -1 && clickTimer.isReached(500)) {
                if (notifyActions.get()) {
                    print(TextFormatting.RED + "Режим " + serverMode.get() + " не найден в меню! Повторная попытка...");
                }
                stage = 0;
                clickTimer.reset();
            }
        }

        if (stage == 3 && mc.currentScreen != null && mc.player.openContainer != null) {
            Container container = mc.player.openContainer;
            PageInfo pageInfo = parsePageFromTitle(container);
            int currentPage = pageInfo.currentPage;
            int totalPages = pageInfo.totalPages;
            int targetPage = getTargetPage();

            int worldSlot = findWorldSlot(container);

            if (worldSlot != -1 && lastClickedSlot != worldSlot) {
                Slot slot = container.getSlot(worldSlot);
                ItemStack stack = slot.getStack();

                if (slot == null || stack.isEmpty()) {
                    if (notifyActions.get() && clickTimer.isReached(500)) {
                        print(TextFormatting.RED + "Слот мира пуст! Повторная попытка...");
                        clickTimer.reset();
                    }
                    return;
                }

                if (stack.getItem() == Items.BARRIER ||
                        stack.getItem() == Items.RED_STAINED_GLASS_PANE ||
                        stack.getDisplayName().getString().contains("Закрыт") ||
                        stack.getDisplayName().getString().contains("закрыт")) {

                    int targetNum = serverMode.is("Гриферские выживания (RU)")
                            ? (int)survivalNumber.get().floatValue()
                            : (int)serverNumber.get().floatValue();

                    if (notifyActions.get()) {
                        print(TextFormatting.RED + "Сервер #" + targetNum + " заблокирован! Повторная попытка...");
                    }
                    stage = 0;
                    clickTimer.reset();
                    return;
                }

                String worldName = stack.getDisplayName().getString();
                int worldNum = extractNumberFromName(worldName);

                if (notifyActions.get()) {
                    print("Подключаемся к миру #" + worldNum + " (" + TextFormatting.AQUA + worldName + TextFormatting.WHITE + ")");
                }

                mc.playerController.windowClick(
                        container.windowId,
                        worldSlot,
                        0,
                        ClickType.PICKUP,
                        mc.player
                );

                lastClickedSlot = worldSlot;
                worldClicked = true;
                stage = 4;
                clickTimer.reset();
                return;
            }

            if (currentPage < targetPage && currentPage < totalPages) {
                int nextButton = findPageButton(container, "next");

                if (nextButton != -1) {
                    if (notifyActions.get()) {
                        print("Листаем на страницу " + (currentPage + 1) + "...");
                    }

                    mc.playerController.windowClick(
                            container.windowId,
                            nextButton,
                            0,
                            ClickType.PICKUP,
                            mc.player
                    );

                    lastClickedSlot = -1;
                    clickTimer.reset();
                    return;
                }
            }

            if (currentPage > targetPage) {
                int prevButton = findPageButton(container, "prev");

                if (prevButton != -1) {
                    if (notifyActions.get()) {
                        print("Возвращаемся на страницу " + (currentPage - 1) + "...");
                    }

                    mc.playerController.windowClick(
                            container.windowId,
                            prevButton,
                            0,
                            ClickType.PICKUP,
                            mc.player
                    );

                    lastClickedSlot = -1;
                    clickTimer.reset();
                    return;
                }
            }

            if (clickTimer.isReached(1000)) {
                int targetNum = serverMode.is("Гриферские выживания (RU)")
                        ? (int)survivalNumber.get().floatValue()
                        : (int)serverNumber.get().floatValue();

                if (notifyActions.get()) {
                    print(TextFormatting.RED + "Мир #" + targetNum + " не найден! Повторная попытка...");
                }
                stage = 0;
                clickTimer.reset();
            }
        }

        if (stage == 4 && mc.currentScreen != null && mc.player.openContainer != null) {
            if (clickTimer.isReached(spamSpeed.get().longValue())) {
                Container container = mc.player.openContainer;

                int targetSlot = -1;

                if (needsSecondMenu()) {
                    targetSlot = findWorldSlot(container);
                } else {
                    targetSlot = findModeSlot(container);
                }

                if (targetSlot != -1) {
                    Slot slot = container.getSlot(targetSlot);

                    if (slot != null && !slot.getStack().isEmpty()) {
                        mc.playerController.windowClick(
                                container.windowId,
                                targetSlot,
                                0,
                                ClickType.PICKUP,
                                mc.player
                        );
                        clickTimer.reset();
                    }
                } else {
                    if (notifyActions.get() && clickTimer.isReached(1000)) {
                        print(TextFormatting.GREEN + "Подключение к серверу...");
                        clickTimer.reset();
                    }
                }
            }
        }

        if (stage >= 2 && mc.world != lastWorld && mc.world != null) {
            if (notifyActions.get()) {
                print(TextFormatting.GREEN + "Успешно подключились к серверу!");
            }

            if (autoDisable.get()) {
                toggle();
            } else {
                stage = 0;
                lastWorld = mc.world;
            }
        }

        if (stage == 4 && mc.currentScreen == null && clickTimer.isReached(2000)) {
            if (notifyActions.get()) {
                print(TextFormatting.GREEN + "Меню закрылось - возможно подключились!");
            }

            if (autoDisable.get()) {
                toggle();
            } else {
                stage = 0;
            }
        }
    }

    private int findCompassInInventory() {
        for (int i = 0; i < 9; i++) {
            ItemStack stack = mc.player.inventory.getStackInSlot(i);
            if (!stack.isEmpty() && stack.getItem() == Items.COMPASS) {
                return i;
            }
        }
        return -1;
    }

    private int findModeSlot(Container container) {
        for (int i = 0; i < container.inventorySlots.size(); i++) {
            ItemStack stack = container.getSlot(i).getStack();
            if (stack.isEmpty()) continue;

            String displayName = stack.getDisplayName().getString().toLowerCase();

            switch (serverMode.get()) {
                case "Гриф":
                    if (displayName.contains("гриф") && !displayName.contains("мега") ||
                            stack.getItem() == Items.CRAFTING_TABLE) {
                        return i;
                    }
                    break;

                case "Мега Гриф":
                    if (displayName.contains("мега") ||
                            (stack.getItem() == Items.PLAYER_HEAD && displayName.contains("гриф"))) {
                        return i;
                    }
                    break;

                case "Анархия":
                    if (displayName.contains("анархия") ||
                            stack.getItem() == Items.NETHER_STAR) {
                        return i;
                    }
                    break;

                case "Гриферские выживания (RU)":
                    if (stack.getItem() == Items.FURNACE) {
                        return i;
                    }
                    if (displayName.contains("печь") || displayName.contains("furnace")) {
                        return i;
                    }
                    break;
            }
        }
        return -1;
    }

    private int getTargetPage() {
        if (serverMode.is("Гриферские выживания (RU)")) {
            return 1;
        }

        int num = (int) serverNumber.get().floatValue();
        if (num <= 36) return 1;
        if (num <= 54) return 2;
        return 1;
    }

    private int extractNumberFromName(String displayName) {
        String clean = displayName.replaceAll("§[0-9a-fk-or]", "");
        java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("\\d+");
        java.util.regex.Matcher matcher = pattern.matcher(clean);
        if (matcher.find()) {
            try {
                return Integer.parseInt(matcher.group());
            } catch (NumberFormatException e) {
                return -1;
            }
        }
        return -1;
    }

    private static class PageInfo {
        int currentPage;
        int totalPages;

        PageInfo(int current, int total) {
            this.currentPage = current;
            this.totalPages = total;
        }
    }

    private PageInfo parsePageFromTitle(Container container) {
        String title = "";

        if (mc.currentScreen != null) {
            title = mc.currentScreen.getTitle().getString();
        }

        java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("(\\d+)/(\\d+)");
        java.util.regex.Matcher matcher = pattern.matcher(title);

        if (matcher.find()) {
            int current = Integer.parseInt(matcher.group(1));
            int total = Integer.parseInt(matcher.group(2));
            return new PageInfo(current, total);
        }

        return new PageInfo(1, 1);
    }

    private int findPageButton(Container container, String direction) {
        for (int i = 0; i < container.inventorySlots.size(); i++) {
            Slot slot = container.getSlot(i);
            ItemStack stack = slot.getStack();

            if (stack.isEmpty()) continue;

            if (stack.getItem() == Items.ARROW) {
                return i;
            }
        }

        if (container.inventorySlots.size() > 53) {
            Slot slot = container.getSlot(53);
            if (!slot.getStack().isEmpty()) {
                return 53;
            }
        }

        if (container.inventorySlots.size() > 45) {
            Slot slot = container.getSlot(45);
            if (!slot.getStack().isEmpty()) {
                return 45;
            }
        }

        return -1;
    }

    private int findWorldSlot(Container container) {
        String mode = serverMode.get();
        boolean isGriffMode = mode.equals("Гриф") || mode.equals("Гриферские выживания (RU)") ||
                mode.equals("Грифовское выживание");

        if (randomServer.get()) {
            return findRandomWorldSlot(container, isGriffMode);
        } else {
            return findSpecificWorldSlot(container, isGriffMode);
        }
    }

    private int findSpecificWorldSlot(Container container, boolean isGriffMode) {
        int targetNumber;

        if (serverMode.is("Гриферские выживания (RU)")) {
            targetNumber = (int) survivalNumber.get().floatValue();
        } else {
            targetNumber = (int) serverNumber.get().floatValue();
        }

        for (int i = 0; i < container.inventorySlots.size(); i++) {
            Slot slot = container.getSlot(i);
            ItemStack stack = slot.getStack();

            if (stack.isEmpty()) continue;

            if (stack.getItem() != Items.PLAYER_HEAD) continue;

            if (stack.getItem() == Items.BARRIER || stack.getItem() == Items.RED_STAINED_GLASS_PANE) continue;

            String displayName = stack.getDisplayName().getString();

            int foundNumber = extractNumberFromName(displayName);

            if (foundNumber == targetNumber) {
                return i;
            }
        }

        return -1;
    }

    private int findRandomWorldSlot(Container container, boolean isGriffMode) {
        java.util.List<Integer> validSlots = new java.util.ArrayList<>();

        for (int i = 0; i < container.inventorySlots.size(); i++) {
            Slot slot = container.getSlot(i);
            ItemStack stack = slot.getStack();

            if (stack.isEmpty()) continue;

            boolean isWorldItem = false;
            if (isGriffMode) {
                isWorldItem = stack.getItem() == Items.PLAYER_HEAD;
            } else {
                isWorldItem = stack.getItem() == Items.NETHER_STAR || stack.getItem() == Items.PLAYER_HEAD;
            }

            if (isWorldItem) {
                String name = stack.getDisplayName().getString();
                if (!name.contains("стрелка") && !name.contains("Стрелка") &&
                        !name.contains("Вперед") && !name.contains("Назад") &&
                        stack.getItem() != Items.BARRIER &&
                        stack.getItem() != Items.RED_STAINED_GLASS_PANE) {
                    validSlots.add(i);
                }
            }
        }

        if (!validSlots.isEmpty()) {
            int randomIndex = (int) (Math.random() * validSlots.size());
            return validSlots.get(randomIndex);
        }

        return -1;
    }

    private boolean needsSecondMenu() {
        String mode = serverMode.get();
        return mode.equals("Гриф") ||
                mode.equals("Мега Гриф") ||
                mode.equals("Гриферские выживания (RU)");
    }

    @Override
    public boolean onDisable() {
        super.onDisable();
        stage = 0;
        compassOpened = false;
        modeClicked = false;
        worldClicked = false;
        lastClickedSlot = -1;
        lastWorld = null;
        return false;
    }
}
вот вопрос нахуя
 
Хай YouGame
Я новый пастер вот решил с вами поделиться часть функционала ну для какой то пасты либо в свой проект то самое то


Java:
Expand Collapse Copy
package client.main.module.impl.misc;

import client.events.EventUpdate;
import client.main.module.api.Category;
import client.main.module.api.Feature;
import client.main.module.api.FeatureInfo;
import client.main.module.settings.implObjects.CheckBoxObject;
import client.main.module.settings.implObjects.SelectObject;
import client.main.module.settings.implObjects.SliderObject;
import client.util.math.StopWatch;
import com.google.common.eventbus.Subscribe;
import net.minecraft.inventory.container.ClickType;
import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.Hand;
import net.minecraft.util.text.TextFormatting;

@FeatureInfo(name = "ReallyWorld Joiner", type = Category.Misc, desc = "Автоматически заходит на ReallyWorld сервера ")
public class ReallyWorldJoiner extends Feature {

    private final SelectObject serverMode = new SelectObject("Режим сервера", "Гриф",
            "Анархия", "Гриф", "Мега Гриф", "Гриферские выживания (RU)");

    private final SliderObject serverNumber = new SliderObject("Номер сервера", 1f, 1f, 54f, 1f)
            .setVisible(() -> !serverMode.is("Гриферские выживания (RU)") && !serverMode.is("Мега Гриф") && !serverMode.is("Анархия"));

    private final SliderObject survivalNumber = new SliderObject("Номер выживания", 1f, 1f, 6f, 1f)
            .setVisible(() -> serverMode.is("Гриферские выживания (RU)"));

    private final SliderObject clickDelay = new SliderObject("Задержка клика (мс)", 800f, 5f, 2000f, 50f);

    private final SliderObject spamSpeed = new SliderObject("Скорость спама (мс)", 50f, 1f, 500f, 10f);

    private final CheckBoxObject autoDisable = new CheckBoxObject("Автовыключение", true);

    private final CheckBoxObject autoOpen = new CheckBoxObject("Авто-открытие компаса", true);

    private final CheckBoxObject randomServer = new CheckBoxObject("Случайный сервер", false);

    private final CheckBoxObject notifyActions = new CheckBoxObject("Уведомления", true);

    private final StopWatch clickTimer = new StopWatch();
    private boolean compassOpened = false;
    private boolean modeClicked = false;
    private boolean worldClicked = false;
    private int stage = 0;
    private int lastClickedSlot = -1;
    private net.minecraft.world.World lastWorld;

    public ReallyWorldJoiner() {
        addSettings(serverMode, serverNumber, survivalNumber, clickDelay, spamSpeed, autoOpen, randomServer, autoDisable, notifyActions);
    }

    @Override
    public boolean onEnable() {
        super.onEnable();
        stage = 0;
        compassOpened = false;
        modeClicked = false;
        worldClicked = false;
        lastClickedSlot = -1;
        lastWorld = mc.world;
        clickTimer.reset();

        if (notifyActions.get()) {
            if (randomServer.get()) {
                print("Ищем компас для подключения к случайному " + serverMode.get() + "...");
            } else {
                if (needsSecondMenu()) {
                    if (serverMode.is("Гриферские выживания (RU)")) {
                        print("Ищем компас для подключения к " + serverMode.get() + " #" + (int)survivalNumber.get().floatValue() + "...");
                    } else {
                        print("Ищем компас для подключения к " + serverMode.get() + " #" + (int)serverNumber.get().floatValue() + "...");
                    }
                } else {
                    print("Ищем компас для подключения к " + serverMode.get() + "...");
                }
            }
        }
        return false;
    }

    @Subscribe
    private void onUpdate(EventUpdate event) {
        if (mc.player == null || mc.world == null) return;

        if (stage == 0 && autoOpen.get()) {
            int compassSlot = findCompassInInventory();

            if (compassSlot != -1) {
                if (notifyActions.get()) {
                    print("Компас найден в слоте " + (compassSlot + 1) + ". Открываем...");
                }

                mc.player.inventory.currentItem = compassSlot;
                mc.playerController.processRightClick(mc.player, mc.world, Hand.MAIN_HAND);
                stage = 1;
                clickTimer.reset();
            } else {
                if (notifyActions.get() && clickTimer.isReached(1000)) {
                    print(TextFormatting.RED + "Компас не найден в хотбаре!");
                    clickTimer.reset();
                }
            }
        }

        if (stage == 1) {
            if (mc.currentScreen != null && mc.player.openContainer != null &&
                    mc.player.openContainer != mc.player.container) {
                compassOpened = true;
                stage = 2;

                if (notifyActions.get()) {
                    print("Меню компаса открыто. Ищем режим " + serverMode.get() + "...");
                }
                clickTimer.reset();
            }
        }

        if (stage == 2 && mc.currentScreen != null && mc.player.openContainer != null) {
            Container container = mc.player.openContainer;
            int modeSlot = findModeSlot(container);

            if (modeSlot != -1 && lastClickedSlot != modeSlot) {
                Slot slot = container.getSlot(modeSlot);

                if (slot == null || slot.getStack().isEmpty()) {
                    if (notifyActions.get() && clickTimer.isReached(500)) {
                        print(TextFormatting.RED + "Слот режима пуст! Повторная попытка...");
                        clickTimer.reset();
                    }
                    return;
                }

                if (notifyActions.get()) {
                    String modeName = slot.getStack().getDisplayName().getString();
                    print("Выбираем режим: " + TextFormatting.AQUA + modeName);
                }

                mc.playerController.windowClick(
                        container.windowId,
                        modeSlot,
                        0,
                        ClickType.PICKUP,
                        mc.player
                );

                lastClickedSlot = modeSlot;
                modeClicked = true;

                if (needsSecondMenu()) {
                    stage = 3;
                    lastClickedSlot = -1;
                    if (notifyActions.get()) {
                        print("Ожидаем меню выбора мира...");
                    }
                } else {
                    stage = 4;
                    lastClickedSlot = -1;
                    if (notifyActions.get()) {
                        print("Подключаемся к " + serverMode.get() + "...");
                    }
                }

                clickTimer.reset();
            } else if (modeSlot == -1 && clickTimer.isReached(500)) {
                if (notifyActions.get()) {
                    print(TextFormatting.RED + "Режим " + serverMode.get() + " не найден в меню! Повторная попытка...");
                }
                stage = 0;
                clickTimer.reset();
            }
        }

        if (stage == 3 && mc.currentScreen != null && mc.player.openContainer != null) {
            Container container = mc.player.openContainer;
            PageInfo pageInfo = parsePageFromTitle(container);
            int currentPage = pageInfo.currentPage;
            int totalPages = pageInfo.totalPages;
            int targetPage = getTargetPage();

            int worldSlot = findWorldSlot(container);

            if (worldSlot != -1 && lastClickedSlot != worldSlot) {
                Slot slot = container.getSlot(worldSlot);
                ItemStack stack = slot.getStack();

                if (slot == null || stack.isEmpty()) {
                    if (notifyActions.get() && clickTimer.isReached(500)) {
                        print(TextFormatting.RED + "Слот мира пуст! Повторная попытка...");
                        clickTimer.reset();
                    }
                    return;
                }

                if (stack.getItem() == Items.BARRIER ||
                        stack.getItem() == Items.RED_STAINED_GLASS_PANE ||
                        stack.getDisplayName().getString().contains("Закрыт") ||
                        stack.getDisplayName().getString().contains("закрыт")) {

                    int targetNum = serverMode.is("Гриферские выживания (RU)")
                            ? (int)survivalNumber.get().floatValue()
                            : (int)serverNumber.get().floatValue();

                    if (notifyActions.get()) {
                        print(TextFormatting.RED + "Сервер #" + targetNum + " заблокирован! Повторная попытка...");
                    }
                    stage = 0;
                    clickTimer.reset();
                    return;
                }

                String worldName = stack.getDisplayName().getString();
                int worldNum = extractNumberFromName(worldName);

                if (notifyActions.get()) {
                    print("Подключаемся к миру #" + worldNum + " (" + TextFormatting.AQUA + worldName + TextFormatting.WHITE + ")");
                }

                mc.playerController.windowClick(
                        container.windowId,
                        worldSlot,
                        0,
                        ClickType.PICKUP,
                        mc.player
                );

                lastClickedSlot = worldSlot;
                worldClicked = true;
                stage = 4;
                clickTimer.reset();
                return;
            }

            if (currentPage < targetPage && currentPage < totalPages) {
                int nextButton = findPageButton(container, "next");

                if (nextButton != -1) {
                    if (notifyActions.get()) {
                        print("Листаем на страницу " + (currentPage + 1) + "...");
                    }

                    mc.playerController.windowClick(
                            container.windowId,
                            nextButton,
                            0,
                            ClickType.PICKUP,
                            mc.player
                    );

                    lastClickedSlot = -1;
                    clickTimer.reset();
                    return;
                }
            }

            if (currentPage > targetPage) {
                int prevButton = findPageButton(container, "prev");

                if (prevButton != -1) {
                    if (notifyActions.get()) {
                        print("Возвращаемся на страницу " + (currentPage - 1) + "...");
                    }

                    mc.playerController.windowClick(
                            container.windowId,
                            prevButton,
                            0,
                            ClickType.PICKUP,
                            mc.player
                    );

                    lastClickedSlot = -1;
                    clickTimer.reset();
                    return;
                }
            }

            if (clickTimer.isReached(1000)) {
                int targetNum = serverMode.is("Гриферские выживания (RU)")
                        ? (int)survivalNumber.get().floatValue()
                        : (int)serverNumber.get().floatValue();

                if (notifyActions.get()) {
                    print(TextFormatting.RED + "Мир #" + targetNum + " не найден! Повторная попытка...");
                }
                stage = 0;
                clickTimer.reset();
            }
        }

        if (stage == 4 && mc.currentScreen != null && mc.player.openContainer != null) {
            if (clickTimer.isReached(spamSpeed.get().longValue())) {
                Container container = mc.player.openContainer;

                int targetSlot = -1;

                if (needsSecondMenu()) {
                    targetSlot = findWorldSlot(container);
                } else {
                    targetSlot = findModeSlot(container);
                }

                if (targetSlot != -1) {
                    Slot slot = container.getSlot(targetSlot);

                    if (slot != null && !slot.getStack().isEmpty()) {
                        mc.playerController.windowClick(
                                container.windowId,
                                targetSlot,
                                0,
                                ClickType.PICKUP,
                                mc.player
                        );
                        clickTimer.reset();
                    }
                } else {
                    if (notifyActions.get() && clickTimer.isReached(1000)) {
                        print(TextFormatting.GREEN + "Подключение к серверу...");
                        clickTimer.reset();
                    }
                }
            }
        }

        if (stage >= 2 && mc.world != lastWorld && mc.world != null) {
            if (notifyActions.get()) {
                print(TextFormatting.GREEN + "Успешно подключились к серверу!");
            }

            if (autoDisable.get()) {
                toggle();
            } else {
                stage = 0;
                lastWorld = mc.world;
            }
        }

        if (stage == 4 && mc.currentScreen == null && clickTimer.isReached(2000)) {
            if (notifyActions.get()) {
                print(TextFormatting.GREEN + "Меню закрылось - возможно подключились!");
            }

            if (autoDisable.get()) {
                toggle();
            } else {
                stage = 0;
            }
        }
    }

    private int findCompassInInventory() {
        for (int i = 0; i < 9; i++) {
            ItemStack stack = mc.player.inventory.getStackInSlot(i);
            if (!stack.isEmpty() && stack.getItem() == Items.COMPASS) {
                return i;
            }
        }
        return -1;
    }

    private int findModeSlot(Container container) {
        for (int i = 0; i < container.inventorySlots.size(); i++) {
            ItemStack stack = container.getSlot(i).getStack();
            if (stack.isEmpty()) continue;

            String displayName = stack.getDisplayName().getString().toLowerCase();

            switch (serverMode.get()) {
                case "Гриф":
                    if (displayName.contains("гриф") && !displayName.contains("мега") ||
                            stack.getItem() == Items.CRAFTING_TABLE) {
                        return i;
                    }
                    break;

                case "Мега Гриф":
                    if (displayName.contains("мега") ||
                            (stack.getItem() == Items.PLAYER_HEAD && displayName.contains("гриф"))) {
                        return i;
                    }
                    break;

                case "Анархия":
                    if (displayName.contains("анархия") ||
                            stack.getItem() == Items.NETHER_STAR) {
                        return i;
                    }
                    break;

                case "Гриферские выживания (RU)":
                    if (stack.getItem() == Items.FURNACE) {
                        return i;
                    }
                    if (displayName.contains("печь") || displayName.contains("furnace")) {
                        return i;
                    }
                    break;
            }
        }
        return -1;
    }

    private int getTargetPage() {
        if (serverMode.is("Гриферские выживания (RU)")) {
            return 1;
        }

        int num = (int) serverNumber.get().floatValue();
        if (num <= 36) return 1;
        if (num <= 54) return 2;
        return 1;
    }

    private int extractNumberFromName(String displayName) {
        String clean = displayName.replaceAll("§[0-9a-fk-or]", "");
        java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("\\d+");
        java.util.regex.Matcher matcher = pattern.matcher(clean);
        if (matcher.find()) {
            try {
                return Integer.parseInt(matcher.group());
            } catch (NumberFormatException e) {
                return -1;
            }
        }
        return -1;
    }

    private static class PageInfo {
        int currentPage;
        int totalPages;

        PageInfo(int current, int total) {
            this.currentPage = current;
            this.totalPages = total;
        }
    }

    private PageInfo parsePageFromTitle(Container container) {
        String title = "";

        if (mc.currentScreen != null) {
            title = mc.currentScreen.getTitle().getString();
        }

        java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("(\\d+)/(\\d+)");
        java.util.regex.Matcher matcher = pattern.matcher(title);

        if (matcher.find()) {
            int current = Integer.parseInt(matcher.group(1));
            int total = Integer.parseInt(matcher.group(2));
            return new PageInfo(current, total);
        }

        return new PageInfo(1, 1);
    }

    private int findPageButton(Container container, String direction) {
        for (int i = 0; i < container.inventorySlots.size(); i++) {
            Slot slot = container.getSlot(i);
            ItemStack stack = slot.getStack();

            if (stack.isEmpty()) continue;

            if (stack.getItem() == Items.ARROW) {
                return i;
            }
        }

        if (container.inventorySlots.size() > 53) {
            Slot slot = container.getSlot(53);
            if (!slot.getStack().isEmpty()) {
                return 53;
            }
        }

        if (container.inventorySlots.size() > 45) {
            Slot slot = container.getSlot(45);
            if (!slot.getStack().isEmpty()) {
                return 45;
            }
        }

        return -1;
    }

    private int findWorldSlot(Container container) {
        String mode = serverMode.get();
        boolean isGriffMode = mode.equals("Гриф") || mode.equals("Гриферские выживания (RU)") ||
                mode.equals("Грифовское выживание");

        if (randomServer.get()) {
            return findRandomWorldSlot(container, isGriffMode);
        } else {
            return findSpecificWorldSlot(container, isGriffMode);
        }
    }

    private int findSpecificWorldSlot(Container container, boolean isGriffMode) {
        int targetNumber;

        if (serverMode.is("Гриферские выживания (RU)")) {
            targetNumber = (int) survivalNumber.get().floatValue();
        } else {
            targetNumber = (int) serverNumber.get().floatValue();
        }

        for (int i = 0; i < container.inventorySlots.size(); i++) {
            Slot slot = container.getSlot(i);
            ItemStack stack = slot.getStack();

            if (stack.isEmpty()) continue;

            if (stack.getItem() != Items.PLAYER_HEAD) continue;

            if (stack.getItem() == Items.BARRIER || stack.getItem() == Items.RED_STAINED_GLASS_PANE) continue;

            String displayName = stack.getDisplayName().getString();

            int foundNumber = extractNumberFromName(displayName);

            if (foundNumber == targetNumber) {
                return i;
            }
        }

        return -1;
    }

    private int findRandomWorldSlot(Container container, boolean isGriffMode) {
        java.util.List<Integer> validSlots = new java.util.ArrayList<>();

        for (int i = 0; i < container.inventorySlots.size(); i++) {
            Slot slot = container.getSlot(i);
            ItemStack stack = slot.getStack();

            if (stack.isEmpty()) continue;

            boolean isWorldItem = false;
            if (isGriffMode) {
                isWorldItem = stack.getItem() == Items.PLAYER_HEAD;
            } else {
                isWorldItem = stack.getItem() == Items.NETHER_STAR || stack.getItem() == Items.PLAYER_HEAD;
            }

            if (isWorldItem) {
                String name = stack.getDisplayName().getString();
                if (!name.contains("стрелка") && !name.contains("Стрелка") &&
                        !name.contains("Вперед") && !name.contains("Назад") &&
                        stack.getItem() != Items.BARRIER &&
                        stack.getItem() != Items.RED_STAINED_GLASS_PANE) {
                    validSlots.add(i);
                }
            }
        }

        if (!validSlots.isEmpty()) {
            int randomIndex = (int) (Math.random() * validSlots.size());
            return validSlots.get(randomIndex);
        }

        return -1;
    }

    private boolean needsSecondMenu() {
        String mode = serverMode.get();
        return mode.equals("Гриф") ||
                mode.equals("Мега Гриф") ||
                mode.equals("Гриферские выживания (RU)");
    }

    @Override
    public boolean onDisable() {
        super.onDisable();
        stage = 0;
        compassOpened = false;
        modeClicked = false;
        worldClicked = false;
        lastClickedSlot = -1;
        lastWorld = null;
        return false;
    }
}
уже 1000 раз сливали + гпт код
 
Хай YouGame
Я новый пастер вот решил с вами поделиться часть функционала ну для какой то пасты либо в свой проект то самое то


Java:
Expand Collapse Copy
package client.main.module.impl.misc;

import client.events.EventUpdate;
import client.main.module.api.Category;
import client.main.module.api.Feature;
import client.main.module.api.FeatureInfo;
import client.main.module.settings.implObjects.CheckBoxObject;
import client.main.module.settings.implObjects.SelectObject;
import client.main.module.settings.implObjects.SliderObject;
import client.util.math.StopWatch;
import com.google.common.eventbus.Subscribe;
import net.minecraft.inventory.container.ClickType;
import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.Hand;
import net.minecraft.util.text.TextFormatting;

@FeatureInfo(name = "ReallyWorld Joiner", type = Category.Misc, desc = "Автоматически заходит на ReallyWorld сервера ")
public class ReallyWorldJoiner extends Feature {

    private final SelectObject serverMode = new SelectObject("Режим сервера", "Гриф",
            "Анархия", "Гриф", "Мега Гриф", "Гриферские выживания (RU)");

    private final SliderObject serverNumber = new SliderObject("Номер сервера", 1f, 1f, 54f, 1f)
            .setVisible(() -> !serverMode.is("Гриферские выживания (RU)") && !serverMode.is("Мега Гриф") && !serverMode.is("Анархия"));

    private final SliderObject survivalNumber = new SliderObject("Номер выживания", 1f, 1f, 6f, 1f)
            .setVisible(() -> serverMode.is("Гриферские выживания (RU)"));

    private final SliderObject clickDelay = new SliderObject("Задержка клика (мс)", 800f, 5f, 2000f, 50f);

    private final SliderObject spamSpeed = new SliderObject("Скорость спама (мс)", 50f, 1f, 500f, 10f);

    private final CheckBoxObject autoDisable = new CheckBoxObject("Автовыключение", true);

    private final CheckBoxObject autoOpen = new CheckBoxObject("Авто-открытие компаса", true);

    private final CheckBoxObject randomServer = new CheckBoxObject("Случайный сервер", false);

    private final CheckBoxObject notifyActions = new CheckBoxObject("Уведомления", true);

    private final StopWatch clickTimer = new StopWatch();
    private boolean compassOpened = false;
    private boolean modeClicked = false;
    private boolean worldClicked = false;
    private int stage = 0;
    private int lastClickedSlot = -1;
    private net.minecraft.world.World lastWorld;

    public ReallyWorldJoiner() {
        addSettings(serverMode, serverNumber, survivalNumber, clickDelay, spamSpeed, autoOpen, randomServer, autoDisable, notifyActions);
    }

    @Override
    public boolean onEnable() {
        super.onEnable();
        stage = 0;
        compassOpened = false;
        modeClicked = false;
        worldClicked = false;
        lastClickedSlot = -1;
        lastWorld = mc.world;
        clickTimer.reset();

        if (notifyActions.get()) {
            if (randomServer.get()) {
                print("Ищем компас для подключения к случайному " + serverMode.get() + "...");
            } else {
                if (needsSecondMenu()) {
                    if (serverMode.is("Гриферские выживания (RU)")) {
                        print("Ищем компас для подключения к " + serverMode.get() + " #" + (int)survivalNumber.get().floatValue() + "...");
                    } else {
                        print("Ищем компас для подключения к " + serverMode.get() + " #" + (int)serverNumber.get().floatValue() + "...");
                    }
                } else {
                    print("Ищем компас для подключения к " + serverMode.get() + "...");
                }
            }
        }
        return false;
    }

    @Subscribe
    private void onUpdate(EventUpdate event) {
        if (mc.player == null || mc.world == null) return;

        if (stage == 0 && autoOpen.get()) {
            int compassSlot = findCompassInInventory();

            if (compassSlot != -1) {
                if (notifyActions.get()) {
                    print("Компас найден в слоте " + (compassSlot + 1) + ". Открываем...");
                }

                mc.player.inventory.currentItem = compassSlot;
                mc.playerController.processRightClick(mc.player, mc.world, Hand.MAIN_HAND);
                stage = 1;
                clickTimer.reset();
            } else {
                if (notifyActions.get() && clickTimer.isReached(1000)) {
                    print(TextFormatting.RED + "Компас не найден в хотбаре!");
                    clickTimer.reset();
                }
            }
        }

        if (stage == 1) {
            if (mc.currentScreen != null && mc.player.openContainer != null &&
                    mc.player.openContainer != mc.player.container) {
                compassOpened = true;
                stage = 2;

                if (notifyActions.get()) {
                    print("Меню компаса открыто. Ищем режим " + serverMode.get() + "...");
                }
                clickTimer.reset();
            }
        }

        if (stage == 2 && mc.currentScreen != null && mc.player.openContainer != null) {
            Container container = mc.player.openContainer;
            int modeSlot = findModeSlot(container);

            if (modeSlot != -1 && lastClickedSlot != modeSlot) {
                Slot slot = container.getSlot(modeSlot);

                if (slot == null || slot.getStack().isEmpty()) {
                    if (notifyActions.get() && clickTimer.isReached(500)) {
                        print(TextFormatting.RED + "Слот режима пуст! Повторная попытка...");
                        clickTimer.reset();
                    }
                    return;
                }

                if (notifyActions.get()) {
                    String modeName = slot.getStack().getDisplayName().getString();
                    print("Выбираем режим: " + TextFormatting.AQUA + modeName);
                }

                mc.playerController.windowClick(
                        container.windowId,
                        modeSlot,
                        0,
                        ClickType.PICKUP,
                        mc.player
                );

                lastClickedSlot = modeSlot;
                modeClicked = true;

                if (needsSecondMenu()) {
                    stage = 3;
                    lastClickedSlot = -1;
                    if (notifyActions.get()) {
                        print("Ожидаем меню выбора мира...");
                    }
                } else {
                    stage = 4;
                    lastClickedSlot = -1;
                    if (notifyActions.get()) {
                        print("Подключаемся к " + serverMode.get() + "...");
                    }
                }

                clickTimer.reset();
            } else if (modeSlot == -1 && clickTimer.isReached(500)) {
                if (notifyActions.get()) {
                    print(TextFormatting.RED + "Режим " + serverMode.get() + " не найден в меню! Повторная попытка...");
                }
                stage = 0;
                clickTimer.reset();
            }
        }

        if (stage == 3 && mc.currentScreen != null && mc.player.openContainer != null) {
            Container container = mc.player.openContainer;
            PageInfo pageInfo = parsePageFromTitle(container);
            int currentPage = pageInfo.currentPage;
            int totalPages = pageInfo.totalPages;
            int targetPage = getTargetPage();

            int worldSlot = findWorldSlot(container);

            if (worldSlot != -1 && lastClickedSlot != worldSlot) {
                Slot slot = container.getSlot(worldSlot);
                ItemStack stack = slot.getStack();

                if (slot == null || stack.isEmpty()) {
                    if (notifyActions.get() && clickTimer.isReached(500)) {
                        print(TextFormatting.RED + "Слот мира пуст! Повторная попытка...");
                        clickTimer.reset();
                    }
                    return;
                }

                if (stack.getItem() == Items.BARRIER ||
                        stack.getItem() == Items.RED_STAINED_GLASS_PANE ||
                        stack.getDisplayName().getString().contains("Закрыт") ||
                        stack.getDisplayName().getString().contains("закрыт")) {

                    int targetNum = serverMode.is("Гриферские выживания (RU)")
                            ? (int)survivalNumber.get().floatValue()
                            : (int)serverNumber.get().floatValue();

                    if (notifyActions.get()) {
                        print(TextFormatting.RED + "Сервер #" + targetNum + " заблокирован! Повторная попытка...");
                    }
                    stage = 0;
                    clickTimer.reset();
                    return;
                }

                String worldName = stack.getDisplayName().getString();
                int worldNum = extractNumberFromName(worldName);

                if (notifyActions.get()) {
                    print("Подключаемся к миру #" + worldNum + " (" + TextFormatting.AQUA + worldName + TextFormatting.WHITE + ")");
                }

                mc.playerController.windowClick(
                        container.windowId,
                        worldSlot,
                        0,
                        ClickType.PICKUP,
                        mc.player
                );

                lastClickedSlot = worldSlot;
                worldClicked = true;
                stage = 4;
                clickTimer.reset();
                return;
            }

            if (currentPage < targetPage && currentPage < totalPages) {
                int nextButton = findPageButton(container, "next");

                if (nextButton != -1) {
                    if (notifyActions.get()) {
                        print("Листаем на страницу " + (currentPage + 1) + "...");
                    }

                    mc.playerController.windowClick(
                            container.windowId,
                            nextButton,
                            0,
                            ClickType.PICKUP,
                            mc.player
                    );

                    lastClickedSlot = -1;
                    clickTimer.reset();
                    return;
                }
            }

            if (currentPage > targetPage) {
                int prevButton = findPageButton(container, "prev");

                if (prevButton != -1) {
                    if (notifyActions.get()) {
                        print("Возвращаемся на страницу " + (currentPage - 1) + "...");
                    }

                    mc.playerController.windowClick(
                            container.windowId,
                            prevButton,
                            0,
                            ClickType.PICKUP,
                            mc.player
                    );

                    lastClickedSlot = -1;
                    clickTimer.reset();
                    return;
                }
            }

            if (clickTimer.isReached(1000)) {
                int targetNum = serverMode.is("Гриферские выживания (RU)")
                        ? (int)survivalNumber.get().floatValue()
                        : (int)serverNumber.get().floatValue();

                if (notifyActions.get()) {
                    print(TextFormatting.RED + "Мир #" + targetNum + " не найден! Повторная попытка...");
                }
                stage = 0;
                clickTimer.reset();
            }
        }

        if (stage == 4 && mc.currentScreen != null && mc.player.openContainer != null) {
            if (clickTimer.isReached(spamSpeed.get().longValue())) {
                Container container = mc.player.openContainer;

                int targetSlot = -1;

                if (needsSecondMenu()) {
                    targetSlot = findWorldSlot(container);
                } else {
                    targetSlot = findModeSlot(container);
                }

                if (targetSlot != -1) {
                    Slot slot = container.getSlot(targetSlot);

                    if (slot != null && !slot.getStack().isEmpty()) {
                        mc.playerController.windowClick(
                                container.windowId,
                                targetSlot,
                                0,
                                ClickType.PICKUP,
                                mc.player
                        );
                        clickTimer.reset();
                    }
                } else {
                    if (notifyActions.get() && clickTimer.isReached(1000)) {
                        print(TextFormatting.GREEN + "Подключение к серверу...");
                        clickTimer.reset();
                    }
                }
            }
        }

        if (stage >= 2 && mc.world != lastWorld && mc.world != null) {
            if (notifyActions.get()) {
                print(TextFormatting.GREEN + "Успешно подключились к серверу!");
            }

            if (autoDisable.get()) {
                toggle();
            } else {
                stage = 0;
                lastWorld = mc.world;
            }
        }

        if (stage == 4 && mc.currentScreen == null && clickTimer.isReached(2000)) {
            if (notifyActions.get()) {
                print(TextFormatting.GREEN + "Меню закрылось - возможно подключились!");
            }

            if (autoDisable.get()) {
                toggle();
            } else {
                stage = 0;
            }
        }
    }

    private int findCompassInInventory() {
        for (int i = 0; i < 9; i++) {
            ItemStack stack = mc.player.inventory.getStackInSlot(i);
            if (!stack.isEmpty() && stack.getItem() == Items.COMPASS) {
                return i;
            }
        }
        return -1;
    }

    private int findModeSlot(Container container) {
        for (int i = 0; i < container.inventorySlots.size(); i++) {
            ItemStack stack = container.getSlot(i).getStack();
            if (stack.isEmpty()) continue;

            String displayName = stack.getDisplayName().getString().toLowerCase();

            switch (serverMode.get()) {
                case "Гриф":
                    if (displayName.contains("гриф") && !displayName.contains("мега") ||
                            stack.getItem() == Items.CRAFTING_TABLE) {
                        return i;
                    }
                    break;

                case "Мега Гриф":
                    if (displayName.contains("мега") ||
                            (stack.getItem() == Items.PLAYER_HEAD && displayName.contains("гриф"))) {
                        return i;
                    }
                    break;

                case "Анархия":
                    if (displayName.contains("анархия") ||
                            stack.getItem() == Items.NETHER_STAR) {
                        return i;
                    }
                    break;

                case "Гриферские выживания (RU)":
                    if (stack.getItem() == Items.FURNACE) {
                        return i;
                    }
                    if (displayName.contains("печь") || displayName.contains("furnace")) {
                        return i;
                    }
                    break;
            }
        }
        return -1;
    }

    private int getTargetPage() {
        if (serverMode.is("Гриферские выживания (RU)")) {
            return 1;
        }

        int num = (int) serverNumber.get().floatValue();
        if (num <= 36) return 1;
        if (num <= 54) return 2;
        return 1;
    }

    private int extractNumberFromName(String displayName) {
        String clean = displayName.replaceAll("§[0-9a-fk-or]", "");
        java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("\\d+");
        java.util.regex.Matcher matcher = pattern.matcher(clean);
        if (matcher.find()) {
            try {
                return Integer.parseInt(matcher.group());
            } catch (NumberFormatException e) {
                return -1;
            }
        }
        return -1;
    }

    private static class PageInfo {
        int currentPage;
        int totalPages;

        PageInfo(int current, int total) {
            this.currentPage = current;
            this.totalPages = total;
        }
    }

    private PageInfo parsePageFromTitle(Container container) {
        String title = "";

        if (mc.currentScreen != null) {
            title = mc.currentScreen.getTitle().getString();
        }

        java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("(\\d+)/(\\d+)");
        java.util.regex.Matcher matcher = pattern.matcher(title);

        if (matcher.find()) {
            int current = Integer.parseInt(matcher.group(1));
            int total = Integer.parseInt(matcher.group(2));
            return new PageInfo(current, total);
        }

        return new PageInfo(1, 1);
    }

    private int findPageButton(Container container, String direction) {
        for (int i = 0; i < container.inventorySlots.size(); i++) {
            Slot slot = container.getSlot(i);
            ItemStack stack = slot.getStack();

            if (stack.isEmpty()) continue;

            if (stack.getItem() == Items.ARROW) {
                return i;
            }
        }

        if (container.inventorySlots.size() > 53) {
            Slot slot = container.getSlot(53);
            if (!slot.getStack().isEmpty()) {
                return 53;
            }
        }

        if (container.inventorySlots.size() > 45) {
            Slot slot = container.getSlot(45);
            if (!slot.getStack().isEmpty()) {
                return 45;
            }
        }

        return -1;
    }

    private int findWorldSlot(Container container) {
        String mode = serverMode.get();
        boolean isGriffMode = mode.equals("Гриф") || mode.equals("Гриферские выживания (RU)") ||
                mode.equals("Грифовское выживание");

        if (randomServer.get()) {
            return findRandomWorldSlot(container, isGriffMode);
        } else {
            return findSpecificWorldSlot(container, isGriffMode);
        }
    }

    private int findSpecificWorldSlot(Container container, boolean isGriffMode) {
        int targetNumber;

        if (serverMode.is("Гриферские выживания (RU)")) {
            targetNumber = (int) survivalNumber.get().floatValue();
        } else {
            targetNumber = (int) serverNumber.get().floatValue();
        }

        for (int i = 0; i < container.inventorySlots.size(); i++) {
            Slot slot = container.getSlot(i);
            ItemStack stack = slot.getStack();

            if (stack.isEmpty()) continue;

            if (stack.getItem() != Items.PLAYER_HEAD) continue;

            if (stack.getItem() == Items.BARRIER || stack.getItem() == Items.RED_STAINED_GLASS_PANE) continue;

            String displayName = stack.getDisplayName().getString();

            int foundNumber = extractNumberFromName(displayName);

            if (foundNumber == targetNumber) {
                return i;
            }
        }

        return -1;
    }

    private int findRandomWorldSlot(Container container, boolean isGriffMode) {
        java.util.List<Integer> validSlots = new java.util.ArrayList<>();

        for (int i = 0; i < container.inventorySlots.size(); i++) {
            Slot slot = container.getSlot(i);
            ItemStack stack = slot.getStack();

            if (stack.isEmpty()) continue;

            boolean isWorldItem = false;
            if (isGriffMode) {
                isWorldItem = stack.getItem() == Items.PLAYER_HEAD;
            } else {
                isWorldItem = stack.getItem() == Items.NETHER_STAR || stack.getItem() == Items.PLAYER_HEAD;
            }

            if (isWorldItem) {
                String name = stack.getDisplayName().getString();
                if (!name.contains("стрелка") && !name.contains("Стрелка") &&
                        !name.contains("Вперед") && !name.contains("Назад") &&
                        stack.getItem() != Items.BARRIER &&
                        stack.getItem() != Items.RED_STAINED_GLASS_PANE) {
                    validSlots.add(i);
                }
            }
        }

        if (!validSlots.isEmpty()) {
            int randomIndex = (int) (Math.random() * validSlots.size());
            return validSlots.get(randomIndex);
        }

        return -1;
    }

    private boolean needsSecondMenu() {
        String mode = serverMode.get();
        return mode.equals("Гриф") ||
                mode.equals("Мега Гриф") ||
                mode.equals("Гриферские выживания (RU)");
    }

    @Override
    public boolean onDisable() {
        super.onDisable();
        stage = 0;
        compassOpened = false;
        modeClicked = false;
        worldClicked = false;
        lastClickedSlot = -1;
        lastWorld = null;
        return false;
    }
}
что там блять можно делать на 600 строк??
 
Хай YouGame
Я новый пастер вот решил с вами поделиться часть функционала ну для какой то пасты либо в свой проект то самое то


Java:
Expand Collapse Copy
package client.main.module.impl.misc;

import client.events.EventUpdate;
import client.main.module.api.Category;
import client.main.module.api.Feature;
import client.main.module.api.FeatureInfo;
import client.main.module.settings.implObjects.CheckBoxObject;
import client.main.module.settings.implObjects.SelectObject;
import client.main.module.settings.implObjects.SliderObject;
import client.util.math.StopWatch;
import com.google.common.eventbus.Subscribe;
import net.minecraft.inventory.container.ClickType;
import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.Hand;
import net.minecraft.util.text.TextFormatting;

@FeatureInfo(name = "ReallyWorld Joiner", type = Category.Misc, desc = "Автоматически заходит на ReallyWorld сервера ")
public class ReallyWorldJoiner extends Feature {

    private final SelectObject serverMode = new SelectObject("Режим сервера", "Гриф",
            "Анархия", "Гриф", "Мега Гриф", "Гриферские выживания (RU)");

    private final SliderObject serverNumber = new SliderObject("Номер сервера", 1f, 1f, 54f, 1f)
            .setVisible(() -> !serverMode.is("Гриферские выживания (RU)") && !serverMode.is("Мега Гриф") && !serverMode.is("Анархия"));

    private final SliderObject survivalNumber = new SliderObject("Номер выживания", 1f, 1f, 6f, 1f)
            .setVisible(() -> serverMode.is("Гриферские выживания (RU)"));

    private final SliderObject clickDelay = new SliderObject("Задержка клика (мс)", 800f, 5f, 2000f, 50f);

    private final SliderObject spamSpeed = new SliderObject("Скорость спама (мс)", 50f, 1f, 500f, 10f);

    private final CheckBoxObject autoDisable = new CheckBoxObject("Автовыключение", true);

    private final CheckBoxObject autoOpen = new CheckBoxObject("Авто-открытие компаса", true);

    private final CheckBoxObject randomServer = new CheckBoxObject("Случайный сервер", false);

    private final CheckBoxObject notifyActions = new CheckBoxObject("Уведомления", true);

    private final StopWatch clickTimer = new StopWatch();
    private boolean compassOpened = false;
    private boolean modeClicked = false;
    private boolean worldClicked = false;
    private int stage = 0;
    private int lastClickedSlot = -1;
    private net.minecraft.world.World lastWorld;

    public ReallyWorldJoiner() {
        addSettings(serverMode, serverNumber, survivalNumber, clickDelay, spamSpeed, autoOpen, randomServer, autoDisable, notifyActions);
    }

    @Override
    public boolean onEnable() {
        super.onEnable();
        stage = 0;
        compassOpened = false;
        modeClicked = false;
        worldClicked = false;
        lastClickedSlot = -1;
        lastWorld = mc.world;
        clickTimer.reset();

        if (notifyActions.get()) {
            if (randomServer.get()) {
                print("Ищем компас для подключения к случайному " + serverMode.get() + "...");
            } else {
                if (needsSecondMenu()) {
                    if (serverMode.is("Гриферские выживания (RU)")) {
                        print("Ищем компас для подключения к " + serverMode.get() + " #" + (int)survivalNumber.get().floatValue() + "...");
                    } else {
                        print("Ищем компас для подключения к " + serverMode.get() + " #" + (int)serverNumber.get().floatValue() + "...");
                    }
                } else {
                    print("Ищем компас для подключения к " + serverMode.get() + "...");
                }
            }
        }
        return false;
    }

    @Subscribe
    private void onUpdate(EventUpdate event) {
        if (mc.player == null || mc.world == null) return;

        if (stage == 0 && autoOpen.get()) {
            int compassSlot = findCompassInInventory();

            if (compassSlot != -1) {
                if (notifyActions.get()) {
                    print("Компас найден в слоте " + (compassSlot + 1) + ". Открываем...");
                }

                mc.player.inventory.currentItem = compassSlot;
                mc.playerController.processRightClick(mc.player, mc.world, Hand.MAIN_HAND);
                stage = 1;
                clickTimer.reset();
            } else {
                if (notifyActions.get() && clickTimer.isReached(1000)) {
                    print(TextFormatting.RED + "Компас не найден в хотбаре!");
                    clickTimer.reset();
                }
            }
        }

        if (stage == 1) {
            if (mc.currentScreen != null && mc.player.openContainer != null &&
                    mc.player.openContainer != mc.player.container) {
                compassOpened = true;
                stage = 2;

                if (notifyActions.get()) {
                    print("Меню компаса открыто. Ищем режим " + serverMode.get() + "...");
                }
                clickTimer.reset();
            }
        }

        if (stage == 2 && mc.currentScreen != null && mc.player.openContainer != null) {
            Container container = mc.player.openContainer;
            int modeSlot = findModeSlot(container);

            if (modeSlot != -1 && lastClickedSlot != modeSlot) {
                Slot slot = container.getSlot(modeSlot);

                if (slot == null || slot.getStack().isEmpty()) {
                    if (notifyActions.get() && clickTimer.isReached(500)) {
                        print(TextFormatting.RED + "Слот режима пуст! Повторная попытка...");
                        clickTimer.reset();
                    }
                    return;
                }

                if (notifyActions.get()) {
                    String modeName = slot.getStack().getDisplayName().getString();
                    print("Выбираем режим: " + TextFormatting.AQUA + modeName);
                }

                mc.playerController.windowClick(
                        container.windowId,
                        modeSlot,
                        0,
                        ClickType.PICKUP,
                        mc.player
                );

                lastClickedSlot = modeSlot;
                modeClicked = true;

                if (needsSecondMenu()) {
                    stage = 3;
                    lastClickedSlot = -1;
                    if (notifyActions.get()) {
                        print("Ожидаем меню выбора мира...");
                    }
                } else {
                    stage = 4;
                    lastClickedSlot = -1;
                    if (notifyActions.get()) {
                        print("Подключаемся к " + serverMode.get() + "...");
                    }
                }

                clickTimer.reset();
            } else if (modeSlot == -1 && clickTimer.isReached(500)) {
                if (notifyActions.get()) {
                    print(TextFormatting.RED + "Режим " + serverMode.get() + " не найден в меню! Повторная попытка...");
                }
                stage = 0;
                clickTimer.reset();
            }
        }

        if (stage == 3 && mc.currentScreen != null && mc.player.openContainer != null) {
            Container container = mc.player.openContainer;
            PageInfo pageInfo = parsePageFromTitle(container);
            int currentPage = pageInfo.currentPage;
            int totalPages = pageInfo.totalPages;
            int targetPage = getTargetPage();

            int worldSlot = findWorldSlot(container);

            if (worldSlot != -1 && lastClickedSlot != worldSlot) {
                Slot slot = container.getSlot(worldSlot);
                ItemStack stack = slot.getStack();

                if (slot == null || stack.isEmpty()) {
                    if (notifyActions.get() && clickTimer.isReached(500)) {
                        print(TextFormatting.RED + "Слот мира пуст! Повторная попытка...");
                        clickTimer.reset();
                    }
                    return;
                }

                if (stack.getItem() == Items.BARRIER ||
                        stack.getItem() == Items.RED_STAINED_GLASS_PANE ||
                        stack.getDisplayName().getString().contains("Закрыт") ||
                        stack.getDisplayName().getString().contains("закрыт")) {

                    int targetNum = serverMode.is("Гриферские выживания (RU)")
                            ? (int)survivalNumber.get().floatValue()
                            : (int)serverNumber.get().floatValue();

                    if (notifyActions.get()) {
                        print(TextFormatting.RED + "Сервер #" + targetNum + " заблокирован! Повторная попытка...");
                    }
                    stage = 0;
                    clickTimer.reset();
                    return;
                }

                String worldName = stack.getDisplayName().getString();
                int worldNum = extractNumberFromName(worldName);

                if (notifyActions.get()) {
                    print("Подключаемся к миру #" + worldNum + " (" + TextFormatting.AQUA + worldName + TextFormatting.WHITE + ")");
                }

                mc.playerController.windowClick(
                        container.windowId,
                        worldSlot,
                        0,
                        ClickType.PICKUP,
                        mc.player
                );

                lastClickedSlot = worldSlot;
                worldClicked = true;
                stage = 4;
                clickTimer.reset();
                return;
            }

            if (currentPage < targetPage && currentPage < totalPages) {
                int nextButton = findPageButton(container, "next");

                if (nextButton != -1) {
                    if (notifyActions.get()) {
                        print("Листаем на страницу " + (currentPage + 1) + "...");
                    }

                    mc.playerController.windowClick(
                            container.windowId,
                            nextButton,
                            0,
                            ClickType.PICKUP,
                            mc.player
                    );

                    lastClickedSlot = -1;
                    clickTimer.reset();
                    return;
                }
            }

            if (currentPage > targetPage) {
                int prevButton = findPageButton(container, "prev");

                if (prevButton != -1) {
                    if (notifyActions.get()) {
                        print("Возвращаемся на страницу " + (currentPage - 1) + "...");
                    }

                    mc.playerController.windowClick(
                            container.windowId,
                            prevButton,
                            0,
                            ClickType.PICKUP,
                            mc.player
                    );

                    lastClickedSlot = -1;
                    clickTimer.reset();
                    return;
                }
            }

            if (clickTimer.isReached(1000)) {
                int targetNum = serverMode.is("Гриферские выживания (RU)")
                        ? (int)survivalNumber.get().floatValue()
                        : (int)serverNumber.get().floatValue();

                if (notifyActions.get()) {
                    print(TextFormatting.RED + "Мир #" + targetNum + " не найден! Повторная попытка...");
                }
                stage = 0;
                clickTimer.reset();
            }
        }

        if (stage == 4 && mc.currentScreen != null && mc.player.openContainer != null) {
            if (clickTimer.isReached(spamSpeed.get().longValue())) {
                Container container = mc.player.openContainer;

                int targetSlot = -1;

                if (needsSecondMenu()) {
                    targetSlot = findWorldSlot(container);
                } else {
                    targetSlot = findModeSlot(container);
                }

                if (targetSlot != -1) {
                    Slot slot = container.getSlot(targetSlot);

                    if (slot != null && !slot.getStack().isEmpty()) {
                        mc.playerController.windowClick(
                                container.windowId,
                                targetSlot,
                                0,
                                ClickType.PICKUP,
                                mc.player
                        );
                        clickTimer.reset();
                    }
                } else {
                    if (notifyActions.get() && clickTimer.isReached(1000)) {
                        print(TextFormatting.GREEN + "Подключение к серверу...");
                        clickTimer.reset();
                    }
                }
            }
        }

        if (stage >= 2 && mc.world != lastWorld && mc.world != null) {
            if (notifyActions.get()) {
                print(TextFormatting.GREEN + "Успешно подключились к серверу!");
            }

            if (autoDisable.get()) {
                toggle();
            } else {
                stage = 0;
                lastWorld = mc.world;
            }
        }

        if (stage == 4 && mc.currentScreen == null && clickTimer.isReached(2000)) {
            if (notifyActions.get()) {
                print(TextFormatting.GREEN + "Меню закрылось - возможно подключились!");
            }

            if (autoDisable.get()) {
                toggle();
            } else {
                stage = 0;
            }
        }
    }

    private int findCompassInInventory() {
        for (int i = 0; i < 9; i++) {
            ItemStack stack = mc.player.inventory.getStackInSlot(i);
            if (!stack.isEmpty() && stack.getItem() == Items.COMPASS) {
                return i;
            }
        }
        return -1;
    }

    private int findModeSlot(Container container) {
        for (int i = 0; i < container.inventorySlots.size(); i++) {
            ItemStack stack = container.getSlot(i).getStack();
            if (stack.isEmpty()) continue;

            String displayName = stack.getDisplayName().getString().toLowerCase();

            switch (serverMode.get()) {
                case "Гриф":
                    if (displayName.contains("гриф") && !displayName.contains("мега") ||
                            stack.getItem() == Items.CRAFTING_TABLE) {
                        return i;
                    }
                    break;

                case "Мега Гриф":
                    if (displayName.contains("мега") ||
                            (stack.getItem() == Items.PLAYER_HEAD && displayName.contains("гриф"))) {
                        return i;
                    }
                    break;

                case "Анархия":
                    if (displayName.contains("анархия") ||
                            stack.getItem() == Items.NETHER_STAR) {
                        return i;
                    }
                    break;

                case "Гриферские выживания (RU)":
                    if (stack.getItem() == Items.FURNACE) {
                        return i;
                    }
                    if (displayName.contains("печь") || displayName.contains("furnace")) {
                        return i;
                    }
                    break;
            }
        }
        return -1;
    }

    private int getTargetPage() {
        if (serverMode.is("Гриферские выживания (RU)")) {
            return 1;
        }

        int num = (int) serverNumber.get().floatValue();
        if (num <= 36) return 1;
        if (num <= 54) return 2;
        return 1;
    }

    private int extractNumberFromName(String displayName) {
        String clean = displayName.replaceAll("§[0-9a-fk-or]", "");
        java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("\\d+");
        java.util.regex.Matcher matcher = pattern.matcher(clean);
        if (matcher.find()) {
            try {
                return Integer.parseInt(matcher.group());
            } catch (NumberFormatException e) {
                return -1;
            }
        }
        return -1;
    }

    private static class PageInfo {
        int currentPage;
        int totalPages;

        PageInfo(int current, int total) {
            this.currentPage = current;
            this.totalPages = total;
        }
    }

    private PageInfo parsePageFromTitle(Container container) {
        String title = "";

        if (mc.currentScreen != null) {
            title = mc.currentScreen.getTitle().getString();
        }

        java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("(\\d+)/(\\d+)");
        java.util.regex.Matcher matcher = pattern.matcher(title);

        if (matcher.find()) {
            int current = Integer.parseInt(matcher.group(1));
            int total = Integer.parseInt(matcher.group(2));
            return new PageInfo(current, total);
        }

        return new PageInfo(1, 1);
    }

    private int findPageButton(Container container, String direction) {
        for (int i = 0; i < container.inventorySlots.size(); i++) {
            Slot slot = container.getSlot(i);
            ItemStack stack = slot.getStack();

            if (stack.isEmpty()) continue;

            if (stack.getItem() == Items.ARROW) {
                return i;
            }
        }

        if (container.inventorySlots.size() > 53) {
            Slot slot = container.getSlot(53);
            if (!slot.getStack().isEmpty()) {
                return 53;
            }
        }

        if (container.inventorySlots.size() > 45) {
            Slot slot = container.getSlot(45);
            if (!slot.getStack().isEmpty()) {
                return 45;
            }
        }

        return -1;
    }

    private int findWorldSlot(Container container) {
        String mode = serverMode.get();
        boolean isGriffMode = mode.equals("Гриф") || mode.equals("Гриферские выживания (RU)") ||
                mode.equals("Грифовское выживание");

        if (randomServer.get()) {
            return findRandomWorldSlot(container, isGriffMode);
        } else {
            return findSpecificWorldSlot(container, isGriffMode);
        }
    }

    private int findSpecificWorldSlot(Container container, boolean isGriffMode) {
        int targetNumber;

        if (serverMode.is("Гриферские выживания (RU)")) {
            targetNumber = (int) survivalNumber.get().floatValue();
        } else {
            targetNumber = (int) serverNumber.get().floatValue();
        }

        for (int i = 0; i < container.inventorySlots.size(); i++) {
            Slot slot = container.getSlot(i);
            ItemStack stack = slot.getStack();

            if (stack.isEmpty()) continue;

            if (stack.getItem() != Items.PLAYER_HEAD) continue;

            if (stack.getItem() == Items.BARRIER || stack.getItem() == Items.RED_STAINED_GLASS_PANE) continue;

            String displayName = stack.getDisplayName().getString();

            int foundNumber = extractNumberFromName(displayName);

            if (foundNumber == targetNumber) {
                return i;
            }
        }

        return -1;
    }

    private int findRandomWorldSlot(Container container, boolean isGriffMode) {
        java.util.List<Integer> validSlots = new java.util.ArrayList<>();

        for (int i = 0; i < container.inventorySlots.size(); i++) {
            Slot slot = container.getSlot(i);
            ItemStack stack = slot.getStack();

            if (stack.isEmpty()) continue;

            boolean isWorldItem = false;
            if (isGriffMode) {
                isWorldItem = stack.getItem() == Items.PLAYER_HEAD;
            } else {
                isWorldItem = stack.getItem() == Items.NETHER_STAR || stack.getItem() == Items.PLAYER_HEAD;
            }

            if (isWorldItem) {
                String name = stack.getDisplayName().getString();
                if (!name.contains("стрелка") && !name.contains("Стрелка") &&
                        !name.contains("Вперед") && !name.contains("Назад") &&
                        stack.getItem() != Items.BARRIER &&
                        stack.getItem() != Items.RED_STAINED_GLASS_PANE) {
                    validSlots.add(i);
                }
            }
        }

        if (!validSlots.isEmpty()) {
            int randomIndex = (int) (Math.random() * validSlots.size());
            return validSlots.get(randomIndex);
        }

        return -1;
    }

    private boolean needsSecondMenu() {
        String mode = serverMode.get();
        return mode.equals("Гриф") ||
                mode.equals("Мега Гриф") ||
                mode.equals("Гриферские выживания (RU)");
    }

    @Override
    public boolean onDisable() {
        super.onDisable();
        stage = 0;
        compassOpened = false;
        modeClicked = false;
        worldClicked = false;
        lastClickedSlot = -1;
        lastWorld = null;
        return false;
    }
}
Ты это когда вбивал чат гпт, молился? Просто 600 строчек за это, ну это слишком круто
 
Назад
Сверху Снизу