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

Часть функционала AutoJoin | Really World - новый грифы | 3.1 Readyyy

Начинающий
Начинающий
Статус
Онлайн
Регистрация
23 Сен 2024
Сообщения
386
Реакции
3
Выберите загрузчик игры
  1. Прочие моды
Всем привет, так как на рилик добавили новые грифы и старые AutoJoin'ы уже не работают нормально, я попросил у кодекса сделать нормально, знаю что хуйня и бесполезно и легко, но все же, мне просто нехуй делать

chat $pt $olutions:
Expand Collapse Copy
package vesence.modules.impl.player;

import com.google.common.eventbus.Subscribe;
import net.minecraft.client.gui.screen.inventory.ChestScreen;
import net.minecraft.client.gui.screen.inventory.ContainerScreen;
import net.minecraft.inventory.container.ChestContainer;
import net.minecraft.inventory.container.ClickType;
import net.minecraft.network.play.client.CPlayerTryUseItemPacket;
import net.minecraft.network.play.server.SChatPacket;
import net.minecraft.network.play.server.SJoinGamePacket;
import net.minecraft.util.Hand;
import net.minecraft.util.text.TextFormatting;
import vesence.events.Event;
import vesence.events.EventPacket;
import vesence.events.EventUpdate;
import vesence.modules.api.Category;
import vesence.modules.api.Module;
import vesence.modules.api.ModuleInfo;
import vesence.modules.api.impl.ModeSetting;
import vesence.modules.api.impl.SliderSetting;
import vesence.util.client.main.IMinecraft;
import vesence.util.client.main.PlayerUtil;
import vesence.util.math.main.StopWatch;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

@ModuleInfo(name = "AutoJoin", type = Category.Player, desc = "Автоматически заходит на сервер")
public class Joiner extends Module {
    private static final String REALLYWORLD_GRIEF_MENU_TITLE = "\u0412\u044B\u0431\u043E\u0440 \u043C\u0438\u0440\u0430 \u0433\u0440\u0438\u0444\u0430";
    private static final Pattern PAGE_PATTERN = Pattern.compile("(\\d+)/(\\d+)");
    private static final int PREVIOUS_PAGE_SLOT = 36;
    private static final int NEXT_PAGE_SLOT = 44;
    private static final int PAGE_SWITCH_TIMEOUT = 500;
    private static final int[] GRIEF_PAGE_SLOTS = {
            0, 1, 2, 3, 5, 6, 7, 8,
            9, 10, 11, 12, 14, 15, 16, 17,
            18, 19, 20, 21, 23, 24, 25, 26,
            27, 28, 29, 30, 32, 33, 34, 35
    };
    private static final int[] LAST_GRIEF_PAGE_SLOTS = {0, 1, 2, 3, 5, 6, 7, 8, 9, 10};

    public final ModeSetting mode = new ModeSetting("Режим", "ReallyWorld", "ReallyWorld", "Spooky дуэли");
    private final SliderSetting griefSelection = new SliderSetting("Гриферский мир", 1, 1, 74, 1).setVisible(() -> mode.is("ReallyWorld"));
    private final SliderSetting speed = new SliderSetting("Скорость", 3, 1, 10, 1).setVisible(() -> mode.is("ReallyWorld"));
    private final StopWatch timerUtil = new StopWatch();
    private final StopWatch pageSwitchWatch = new StopWatch();
    private int waitingForPage = -1;

    public Joiner() {
        addSettings(mode, griefSelection, speed);
    }

    @Override
    public boolean onEnable() {
        waitingForPage = -1;
        timerUtil.reset();
        pageSwitchWatch.reset();
        PlayerUtil.selectCompass();
        mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
        super.onEnable();
        return false;
    }

    @Subscribe
    public boolean onEvent(Event event) {
        if (event instanceof EventUpdate) {
            handleEventUpdate();
        }
        if (event instanceof EventPacket eventPacket) {
            if (eventPacket.getPacket() instanceof SJoinGamePacket) {
                try {
                    if (IMinecraft.mc.ingameGUI.getTabList().header == null) {
                        return false;
                    }
                    String string = TextFormatting.getTextWithoutFormattingCodes(IMinecraft.mc.ingameGUI.getTabList().header.getString());
                    if (!string.contains("Lobby")) {
                        return false;
                    }
                } catch (Exception ignored) {
                }
            }
            if (eventPacket.getPacket() instanceof SChatPacket packet) {
                String message = TextFormatting.getTextWithoutFormattingCodes(packet.getChatComponent().getString());
                if (message.contains("К сожалению сервер переполнен") || message.contains("Подождите 20 секунд!") || message.contains("большой поток игроков")) {
                    PlayerUtil.selectCompass();
                    IMinecraft.mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
                }
            }
        }
        return false;
    }

    private void handleEventUpdate() {
        if (IMinecraft.mc.currentScreen == null) {
            waitingForPage = -1;
            if (IMinecraft.mc.player.ticksExisted < 3) {
                IMinecraft.mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
            }
        } else if (IMinecraft.mc.currentScreen instanceof ChestScreen) {
            try {
                if (mode.is("ReallyWorld") && handleReallyWorldChest((ChestScreen) IMinecraft.mc.currentScreen)) {
                    return;
                }

                ContainerScreen container = (ContainerScreen) IMinecraft.mc.currentScreen;
                for (int i = 0; i < container.getContainer().inventorySlots.size(); i++) {
                    String s = container.getContainer().inventorySlots.get(i).getStack().getDisplayName().getString();
                    if (mode.is("ReallyWorld")) {
                        int numberGrief = griefSelection.get().intValue();
                        if (s.contains("ГРИФЕРСКОЕ ВЫЖИВАНИЕ") || s.contains("ГРИФ #" + numberGrief + " (1.16.5+)")) {
                            if (timerUtil.hasTimeElapsed(speed.get().intValue())) {
                                IMinecraft.mc.playerController.windowClick(IMinecraft.mc.player.openContainer.windowId, i, 0, ClickType.PICKUP, IMinecraft.mc.player);
                                timerUtil.reset();
                            }
                        }
                    } else if (mode.is("Spooky дуэли")) {
                        if (s.contains("Дуэли")) {
                            if (timerUtil.hasTimeElapsed(speed.get().intValue())) {
                                IMinecraft.mc.playerController.windowClick(IMinecraft.mc.player.openContainer.windowId, i, 0, ClickType.PICKUP, IMinecraft.mc.player);
                                timerUtil.reset();
                            }
                        }
                    }
                }
            } catch (Exception ignored) {
            }
        }
    }

    private boolean handleReallyWorldChest(ChestScreen screen) {
        if (!(IMinecraft.mc.player.openContainer instanceof ChestContainer chest)) {
            waitingForPage = -1;
            return false;
        }

        String title = TextFormatting.getTextWithoutFormattingCodes(screen.getTitle().getString());
        if (!title.contains(REALLYWORLD_GRIEF_MENU_TITLE)) {
            waitingForPage = -1;
            return false;
        }

        int currentPage = extractCurrentPage(title);
        if (currentPage == -1) {
            return true;
        }

        if (waitingForPage != -1) {
            if (currentPage == waitingForPage) {
                waitingForPage = -1;
            } else if (!pageSwitchWatch.hasTimeElapsed(PAGE_SWITCH_TIMEOUT)) {
                return true;
            } else {
                waitingForPage = -1;
            }
        }

        int targetGrief = griefSelection.get().intValue();
        int targetPage = getTargetPage(targetGrief);
        int targetSlot = getTargetSlot(targetGrief);
        if (targetSlot == -1) {
            return true;
        }

        if (currentPage != targetPage) {
            if (!timerUtil.hasTimeElapsed(speed.get().intValue())) {
                return true;
            }

            int pageButtonSlot = currentPage < targetPage ? NEXT_PAGE_SLOT : PREVIOUS_PAGE_SLOT;
            IMinecraft.mc.playerController.windowClick(chest.windowId, pageButtonSlot, 0, ClickType.PICKUP, IMinecraft.mc.player);
            waitingForPage = currentPage < targetPage ? currentPage + 1 : currentPage - 1;
            pageSwitchWatch.reset();
            timerUtil.reset();
            return true;
        }

        if (timerUtil.hasTimeElapsed(speed.get().intValue())) {
            IMinecraft.mc.playerController.windowClick(chest.windowId, targetSlot, 0, ClickType.PICKUP, IMinecraft.mc.player);
            timerUtil.reset();
        }
        return true;
    }

    private int extractCurrentPage(String title) {
        Matcher matcher = PAGE_PATTERN.matcher(title);
        if (!matcher.find()) {
            return -1;
        }
        return Integer.parseInt(matcher.group(1));
    }

    private int getTargetPage(int grief) {
        if (grief <= 32) {
            return 1;
        }
        if (grief <= 64) {
            return 2;
        }
        return 3;
    }

    private int getTargetSlot(int grief) {
        if (grief < 1 || grief > 74) {
            return -1;
        }

        if (grief <= 32) {
            return GRIEF_PAGE_SLOTS[grief - 1];
        }
        if (grief <= 64) {
            return GRIEF_PAGE_SLOTS[grief - 33];
        }
        return LAST_GRIEF_PAGE_SLOTS[grief - 65];
    }
}
 
Всем привет, так как на рилик добавили новые грифы и старые AutoJoin'ы уже не работают нормально, я попросил у кодекса сделать нормально, знаю что хуйня и бесполезно и легко, но все же, мне просто нехуй делать

chat $pt $olutions:
Expand Collapse Copy
package vesence.modules.impl.player;

import com.google.common.eventbus.Subscribe;
import net.minecraft.client.gui.screen.inventory.ChestScreen;
import net.minecraft.client.gui.screen.inventory.ContainerScreen;
import net.minecraft.inventory.container.ChestContainer;
import net.minecraft.inventory.container.ClickType;
import net.minecraft.network.play.client.CPlayerTryUseItemPacket;
import net.minecraft.network.play.server.SChatPacket;
import net.minecraft.network.play.server.SJoinGamePacket;
import net.minecraft.util.Hand;
import net.minecraft.util.text.TextFormatting;
import vesence.events.Event;
import vesence.events.EventPacket;
import vesence.events.EventUpdate;
import vesence.modules.api.Category;
import vesence.modules.api.Module;
import vesence.modules.api.ModuleInfo;
import vesence.modules.api.impl.ModeSetting;
import vesence.modules.api.impl.SliderSetting;
import vesence.util.client.main.IMinecraft;
import vesence.util.client.main.PlayerUtil;
import vesence.util.math.main.StopWatch;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

@ModuleInfo(name = "AutoJoin", type = Category.Player, desc = "Автоматически заходит на сервер")
public class Joiner extends Module {
    private static final String REALLYWORLD_GRIEF_MENU_TITLE = "\u0412\u044B\u0431\u043E\u0440 \u043C\u0438\u0440\u0430 \u0433\u0440\u0438\u0444\u0430";
    private static final Pattern PAGE_PATTERN = Pattern.compile("(\\d+)/(\\d+)");
    private static final int PREVIOUS_PAGE_SLOT = 36;
    private static final int NEXT_PAGE_SLOT = 44;
    private static final int PAGE_SWITCH_TIMEOUT = 500;
    private static final int[] GRIEF_PAGE_SLOTS = {
            0, 1, 2, 3, 5, 6, 7, 8,
            9, 10, 11, 12, 14, 15, 16, 17,
            18, 19, 20, 21, 23, 24, 25, 26,
            27, 28, 29, 30, 32, 33, 34, 35
    };
    private static final int[] LAST_GRIEF_PAGE_SLOTS = {0, 1, 2, 3, 5, 6, 7, 8, 9, 10};

    public final ModeSetting mode = new ModeSetting("Режим", "ReallyWorld", "ReallyWorld", "Spooky дуэли");
    private final SliderSetting griefSelection = new SliderSetting("Гриферский мир", 1, 1, 74, 1).setVisible(() -> mode.is("ReallyWorld"));
    private final SliderSetting speed = new SliderSetting("Скорость", 3, 1, 10, 1).setVisible(() -> mode.is("ReallyWorld"));
    private final StopWatch timerUtil = new StopWatch();
    private final StopWatch pageSwitchWatch = new StopWatch();
    private int waitingForPage = -1;

    public Joiner() {
        addSettings(mode, griefSelection, speed);
    }

    @Override
    public boolean onEnable() {
        waitingForPage = -1;
        timerUtil.reset();
        pageSwitchWatch.reset();
        PlayerUtil.selectCompass();
        mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
        super.onEnable();
        return false;
    }

    @Subscribe
    public boolean onEvent(Event event) {
        if (event instanceof EventUpdate) {
            handleEventUpdate();
        }
        if (event instanceof EventPacket eventPacket) {
            if (eventPacket.getPacket() instanceof SJoinGamePacket) {
                try {
                    if (IMinecraft.mc.ingameGUI.getTabList().header == null) {
                        return false;
                    }
                    String string = TextFormatting.getTextWithoutFormattingCodes(IMinecraft.mc.ingameGUI.getTabList().header.getString());
                    if (!string.contains("Lobby")) {
                        return false;
                    }
                } catch (Exception ignored) {
                }
            }
            if (eventPacket.getPacket() instanceof SChatPacket packet) {
                String message = TextFormatting.getTextWithoutFormattingCodes(packet.getChatComponent().getString());
                if (message.contains("К сожалению сервер переполнен") || message.contains("Подождите 20 секунд!") || message.contains("большой поток игроков")) {
                    PlayerUtil.selectCompass();
                    IMinecraft.mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
                }
            }
        }
        return false;
    }

    private void handleEventUpdate() {
        if (IMinecraft.mc.currentScreen == null) {
            waitingForPage = -1;
            if (IMinecraft.mc.player.ticksExisted < 3) {
                IMinecraft.mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
            }
        } else if (IMinecraft.mc.currentScreen instanceof ChestScreen) {
            try {
                if (mode.is("ReallyWorld") && handleReallyWorldChest((ChestScreen) IMinecraft.mc.currentScreen)) {
                    return;
                }

                ContainerScreen container = (ContainerScreen) IMinecraft.mc.currentScreen;
                for (int i = 0; i < container.getContainer().inventorySlots.size(); i++) {
                    String s = container.getContainer().inventorySlots.get(i).getStack().getDisplayName().getString();
                    if (mode.is("ReallyWorld")) {
                        int numberGrief = griefSelection.get().intValue();
                        if (s.contains("ГРИФЕРСКОЕ ВЫЖИВАНИЕ") || s.contains("ГРИФ #" + numberGrief + " (1.16.5+)")) {
                            if (timerUtil.hasTimeElapsed(speed.get().intValue())) {
                                IMinecraft.mc.playerController.windowClick(IMinecraft.mc.player.openContainer.windowId, i, 0, ClickType.PICKUP, IMinecraft.mc.player);
                                timerUtil.reset();
                            }
                        }
                    } else if (mode.is("Spooky дуэли")) {
                        if (s.contains("Дуэли")) {
                            if (timerUtil.hasTimeElapsed(speed.get().intValue())) {
                                IMinecraft.mc.playerController.windowClick(IMinecraft.mc.player.openContainer.windowId, i, 0, ClickType.PICKUP, IMinecraft.mc.player);
                                timerUtil.reset();
                            }
                        }
                    }
                }
            } catch (Exception ignored) {
            }
        }
    }

    private boolean handleReallyWorldChest(ChestScreen screen) {
        if (!(IMinecraft.mc.player.openContainer instanceof ChestContainer chest)) {
            waitingForPage = -1;
            return false;
        }

        String title = TextFormatting.getTextWithoutFormattingCodes(screen.getTitle().getString());
        if (!title.contains(REALLYWORLD_GRIEF_MENU_TITLE)) {
            waitingForPage = -1;
            return false;
        }

        int currentPage = extractCurrentPage(title);
        if (currentPage == -1) {
            return true;
        }

        if (waitingForPage != -1) {
            if (currentPage == waitingForPage) {
                waitingForPage = -1;
            } else if (!pageSwitchWatch.hasTimeElapsed(PAGE_SWITCH_TIMEOUT)) {
                return true;
            } else {
                waitingForPage = -1;
            }
        }

        int targetGrief = griefSelection.get().intValue();
        int targetPage = getTargetPage(targetGrief);
        int targetSlot = getTargetSlot(targetGrief);
        if (targetSlot == -1) {
            return true;
        }

        if (currentPage != targetPage) {
            if (!timerUtil.hasTimeElapsed(speed.get().intValue())) {
                return true;
            }

            int pageButtonSlot = currentPage < targetPage ? NEXT_PAGE_SLOT : PREVIOUS_PAGE_SLOT;
            IMinecraft.mc.playerController.windowClick(chest.windowId, pageButtonSlot, 0, ClickType.PICKUP, IMinecraft.mc.player);
            waitingForPage = currentPage < targetPage ? currentPage + 1 : currentPage - 1;
            pageSwitchWatch.reset();
            timerUtil.reset();
            return true;
        }

        if (timerUtil.hasTimeElapsed(speed.get().intValue())) {
            IMinecraft.mc.playerController.windowClick(chest.windowId, targetSlot, 0, ClickType.PICKUP, IMinecraft.mc.player);
            timerUtil.reset();
        }
        return true;
    }

    private int extractCurrentPage(String title) {
        Matcher matcher = PAGE_PATTERN.matcher(title);
        if (!matcher.find()) {
            return -1;
        }
        return Integer.parseInt(matcher.group(1));
    }

    private int getTargetPage(int grief) {
        if (grief <= 32) {
            return 1;
        }
        if (grief <= 64) {
            return 2;
        }
        return 3;
    }

    private int getTargetSlot(int grief) {
        if (grief < 1 || grief > 74) {
            return -1;
        }

        if (grief <= 32) {
            return GRIEF_PAGE_SLOTS[grief - 1];
        }
        if (grief <= 64) {
            return GRIEF_PAGE_SLOTS[grief - 33];
        }
        return LAST_GRIEF_PAGE_SLOTS[grief - 65];
    }
}
имба
 
Всем привет, так как на рилик добавили новые грифы и старые AutoJoin'ы уже не работают нормально, я попросил у кодекса сделать нормально, знаю что хуйня и бесполезно и легко, но все же, мне просто нехуй делать

chat $pt $olutions:
Expand Collapse Copy
package vesence.modules.impl.player;

import com.google.common.eventbus.Subscribe;
import net.minecraft.client.gui.screen.inventory.ChestScreen;
import net.minecraft.client.gui.screen.inventory.ContainerScreen;
import net.minecraft.inventory.container.ChestContainer;
import net.minecraft.inventory.container.ClickType;
import net.minecraft.network.play.client.CPlayerTryUseItemPacket;
import net.minecraft.network.play.server.SChatPacket;
import net.minecraft.network.play.server.SJoinGamePacket;
import net.minecraft.util.Hand;
import net.minecraft.util.text.TextFormatting;
import vesence.events.Event;
import vesence.events.EventPacket;
import vesence.events.EventUpdate;
import vesence.modules.api.Category;
import vesence.modules.api.Module;
import vesence.modules.api.ModuleInfo;
import vesence.modules.api.impl.ModeSetting;
import vesence.modules.api.impl.SliderSetting;
import vesence.util.client.main.IMinecraft;
import vesence.util.client.main.PlayerUtil;
import vesence.util.math.main.StopWatch;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

@ModuleInfo(name = "AutoJoin", type = Category.Player, desc = "Автоматически заходит на сервер")
public class Joiner extends Module {
    private static final String REALLYWORLD_GRIEF_MENU_TITLE = "\u0412\u044B\u0431\u043E\u0440 \u043C\u0438\u0440\u0430 \u0433\u0440\u0438\u0444\u0430";
    private static final Pattern PAGE_PATTERN = Pattern.compile("(\\d+)/(\\d+)");
    private static final int PREVIOUS_PAGE_SLOT = 36;
    private static final int NEXT_PAGE_SLOT = 44;
    private static final int PAGE_SWITCH_TIMEOUT = 500;
    private static final int[] GRIEF_PAGE_SLOTS = {
            0, 1, 2, 3, 5, 6, 7, 8,
            9, 10, 11, 12, 14, 15, 16, 17,
            18, 19, 20, 21, 23, 24, 25, 26,
            27, 28, 29, 30, 32, 33, 34, 35
    };
    private static final int[] LAST_GRIEF_PAGE_SLOTS = {0, 1, 2, 3, 5, 6, 7, 8, 9, 10};

    public final ModeSetting mode = new ModeSetting("Режим", "ReallyWorld", "ReallyWorld", "Spooky дуэли");
    private final SliderSetting griefSelection = new SliderSetting("Гриферский мир", 1, 1, 74, 1).setVisible(() -> mode.is("ReallyWorld"));
    private final SliderSetting speed = new SliderSetting("Скорость", 3, 1, 10, 1).setVisible(() -> mode.is("ReallyWorld"));
    private final StopWatch timerUtil = new StopWatch();
    private final StopWatch pageSwitchWatch = new StopWatch();
    private int waitingForPage = -1;

    public Joiner() {
        addSettings(mode, griefSelection, speed);
    }

    @Override
    public boolean onEnable() {
        waitingForPage = -1;
        timerUtil.reset();
        pageSwitchWatch.reset();
        PlayerUtil.selectCompass();
        mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
        super.onEnable();
        return false;
    }

    @Subscribe
    public boolean onEvent(Event event) {
        if (event instanceof EventUpdate) {
            handleEventUpdate();
        }
        if (event instanceof EventPacket eventPacket) {
            if (eventPacket.getPacket() instanceof SJoinGamePacket) {
                try {
                    if (IMinecraft.mc.ingameGUI.getTabList().header == null) {
                        return false;
                    }
                    String string = TextFormatting.getTextWithoutFormattingCodes(IMinecraft.mc.ingameGUI.getTabList().header.getString());
                    if (!string.contains("Lobby")) {
                        return false;
                    }
                } catch (Exception ignored) {
                }
            }
            if (eventPacket.getPacket() instanceof SChatPacket packet) {
                String message = TextFormatting.getTextWithoutFormattingCodes(packet.getChatComponent().getString());
                if (message.contains("К сожалению сервер переполнен") || message.contains("Подождите 20 секунд!") || message.contains("большой поток игроков")) {
                    PlayerUtil.selectCompass();
                    IMinecraft.mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
                }
            }
        }
        return false;
    }

    private void handleEventUpdate() {
        if (IMinecraft.mc.currentScreen == null) {
            waitingForPage = -1;
            if (IMinecraft.mc.player.ticksExisted < 3) {
                IMinecraft.mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
            }
        } else if (IMinecraft.mc.currentScreen instanceof ChestScreen) {
            try {
                if (mode.is("ReallyWorld") && handleReallyWorldChest((ChestScreen) IMinecraft.mc.currentScreen)) {
                    return;
                }

                ContainerScreen container = (ContainerScreen) IMinecraft.mc.currentScreen;
                for (int i = 0; i < container.getContainer().inventorySlots.size(); i++) {
                    String s = container.getContainer().inventorySlots.get(i).getStack().getDisplayName().getString();
                    if (mode.is("ReallyWorld")) {
                        int numberGrief = griefSelection.get().intValue();
                        if (s.contains("ГРИФЕРСКОЕ ВЫЖИВАНИЕ") || s.contains("ГРИФ #" + numberGrief + " (1.16.5+)")) {
                            if (timerUtil.hasTimeElapsed(speed.get().intValue())) {
                                IMinecraft.mc.playerController.windowClick(IMinecraft.mc.player.openContainer.windowId, i, 0, ClickType.PICKUP, IMinecraft.mc.player);
                                timerUtil.reset();
                            }
                        }
                    } else if (mode.is("Spooky дуэли")) {
                        if (s.contains("Дуэли")) {
                            if (timerUtil.hasTimeElapsed(speed.get().intValue())) {
                                IMinecraft.mc.playerController.windowClick(IMinecraft.mc.player.openContainer.windowId, i, 0, ClickType.PICKUP, IMinecraft.mc.player);
                                timerUtil.reset();
                            }
                        }
                    }
                }
            } catch (Exception ignored) {
            }
        }
    }

    private boolean handleReallyWorldChest(ChestScreen screen) {
        if (!(IMinecraft.mc.player.openContainer instanceof ChestContainer chest)) {
            waitingForPage = -1;
            return false;
        }

        String title = TextFormatting.getTextWithoutFormattingCodes(screen.getTitle().getString());
        if (!title.contains(REALLYWORLD_GRIEF_MENU_TITLE)) {
            waitingForPage = -1;
            return false;
        }

        int currentPage = extractCurrentPage(title);
        if (currentPage == -1) {
            return true;
        }

        if (waitingForPage != -1) {
            if (currentPage == waitingForPage) {
                waitingForPage = -1;
            } else if (!pageSwitchWatch.hasTimeElapsed(PAGE_SWITCH_TIMEOUT)) {
                return true;
            } else {
                waitingForPage = -1;
            }
        }

        int targetGrief = griefSelection.get().intValue();
        int targetPage = getTargetPage(targetGrief);
        int targetSlot = getTargetSlot(targetGrief);
        if (targetSlot == -1) {
            return true;
        }

        if (currentPage != targetPage) {
            if (!timerUtil.hasTimeElapsed(speed.get().intValue())) {
                return true;
            }

            int pageButtonSlot = currentPage < targetPage ? NEXT_PAGE_SLOT : PREVIOUS_PAGE_SLOT;
            IMinecraft.mc.playerController.windowClick(chest.windowId, pageButtonSlot, 0, ClickType.PICKUP, IMinecraft.mc.player);
            waitingForPage = currentPage < targetPage ? currentPage + 1 : currentPage - 1;
            pageSwitchWatch.reset();
            timerUtil.reset();
            return true;
        }

        if (timerUtil.hasTimeElapsed(speed.get().intValue())) {
            IMinecraft.mc.playerController.windowClick(chest.windowId, targetSlot, 0, ClickType.PICKUP, IMinecraft.mc.player);
            timerUtil.reset();
        }
        return true;
    }

    private int extractCurrentPage(String title) {
        Matcher matcher = PAGE_PATTERN.matcher(title);
        if (!matcher.find()) {
            return -1;
        }
        return Integer.parseInt(matcher.group(1));
    }

    private int getTargetPage(int grief) {
        if (grief <= 32) {
            return 1;
        }
        if (grief <= 64) {
            return 2;
        }
        return 3;
    }

    private int getTargetSlot(int grief) {
        if (grief < 1 || grief > 74) {
            return -1;
        }

        if (grief <= 32) {
            return GRIEF_PAGE_SLOTS[grief - 1];
        }
        if (grief <= 64) {
            return GRIEF_PAGE_SLOTS[grief - 33];
        }
        return LAST_GRIEF_PAGE_SLOTS[grief - 65];
    }
}
как будто бы не нужно,но как будто кому то и нужно,50 на 50
 
Сделайте что бы посты могли делать только аккаунты с подтверждением что вам есть 16 лет...
что не так?...
1775593511936.png

выйгрышшшш, ты меня не засрал
 
Назад
Сверху Снизу