Исходник RWJoiner | Expensive 3.1

Начинающий
Статус
Оффлайн
Регистрация
13 Июн 2022
Сообщения
135
Реакции[?]
4
Поинты[?]
3K

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

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

Спасибо!

Думаю, пастерам понравится :roflanEbalo:
RWJoiner.java:
package im.expensive.functions.impl.misc;

import com.google.common.eventbus.Subscribe;
import im.expensive.events.EventUpdate;
import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import im.expensive.functions.settings.impl.ModeSetting;
import im.expensive.functions.settings.impl.SliderSetting;
import im.expensive.utils.client.ClientUtil;
import lombok.AccessLevel;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.inventory.ContainerScreen;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.container.ChestContainer;
import net.minecraft.inventory.container.ClickType;
import net.minecraft.item.ItemStack;
import net.minecraft.util.text.ITextComponent;

@FieldDefaults(level = AccessLevel.PRIVATE)
@FunctionRegister(name = "RWJoiner", type = Category.Misc)
public class RWJoiner extends Function {

    ModeSetting mode = new ModeSetting("Тип", "Гриф", "Гриф", "Мега-гриф", "Анархия");
    SliderSetting grief = new SliderSetting("Гриф", 1.0f, 1.0f, 42.0f, 1.0f).setVisible(() -> mode.is("Гриф"));
    SliderSetting anarchy = new SliderSetting("Анархия", 1.0f, 1.0f, 7.0f, 1.0f).setVisible(() -> mode.is("Анархия"));

    public RWJoiner() {
        addSettings(mode, grief, anarchy);
    }

    @Override
    public void onEnable() {
        super.onEnable();
        if (!ClientUtil.isConnectedToServer("reallyworld")) {
            print("Данная функция работает только на ReallyWorld!");
            toggle();
        }
    }

    @Subscribe
    public void onUpdate(EventUpdate e) {
        if (!(mc.player.openContainer instanceof ChestContainer container)) return;
        if (mode.is("Гриф")) {
            if (isTitle(container, "Выбор сервера")) {
                clickItem(container, 21);
            } else if (isTitle(container, "Выбор мира грифа")) {
                clickItemSlot(container, grief.get().intValue());
                toggle();
            }
        } else if (mode.is("Мега-гриф")) {
            if (isTitle(container, "Выбор сервера")) {
                clickItem(container, 19);
                toggle();
            }
        } else if (mode.is("Анархия")) {
            if (isTitle(container, "Выбор сервера")) {
                clickItem(container, 25);
            } else if (isTitle(container, "Выбор мира")) {
                clickItemSlot(container, anarchy.get().intValue());
                toggle();
            }
        }
    }

    private void clickItem(ChestContainer container, int slotIndex) {
        ItemStack stack = container.getLowerChestInventory().getStackInSlot(slotIndex);
        if (!stack.isEmpty()) {
            mc.playerController.windowClick(container.windowId, slotIndex, 0, ClickType.QUICK_MOVE, mc.player);
        }
    }

    private boolean isTitle(ChestContainer container, String phrase) {
        Screen currentScreen = mc.currentScreen;
        if (currentScreen instanceof ContainerScreen) {
            ITextComponent title = ((ContainerScreen<?>) currentScreen).getTitle();
            return title.getString().contains(phrase);
        }
        return false;
    }

    private void clickItemSlot(ChestContainer container, int targetCount) {
        IInventory lowerChestInventory = container.getLowerChestInventory();
        for (int index = 0; index < lowerChestInventory.getSizeInventory(); ++index) {
            ItemStack stack = lowerChestInventory.getStackInSlot(index);
            if (!stack.isEmpty() && stack.getCount() == targetCount) {
                mc.playerController.windowClick(container.windowId, index, 0, ClickType.PICKUP, mc.player);
                break;
            }
        }
    }
}
 
Начинающий
Статус
Оффлайн
Регистрация
2 Июн 2024
Сообщения
34
Реакции[?]
0
Поинты[?]
0
Думаю, пастерам понравится :roflanEbalo:
RWJoiner.java:
package im.expensive.functions.impl.misc;

import com.google.common.eventbus.Subscribe;
import im.expensive.events.EventUpdate;
import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import im.expensive.functions.settings.impl.ModeSetting;
import im.expensive.functions.settings.impl.SliderSetting;
import im.expensive.utils.client.ClientUtil;
import lombok.AccessLevel;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.inventory.ContainerScreen;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.container.ChestContainer;
import net.minecraft.inventory.container.ClickType;
import net.minecraft.item.ItemStack;
import net.minecraft.util.text.ITextComponent;

@FieldDefaults(level = AccessLevel.PRIVATE)
@FunctionRegister(name = "RWJoiner", type = Category.Misc)
public class RWJoiner extends Function {

    ModeSetting mode = new ModeSetting("Тип", "Гриф", "Гриф", "Мега-гриф", "Анархия");
    SliderSetting grief = new SliderSetting("Гриф", 1.0f, 1.0f, 42.0f, 1.0f).setVisible(() -> mode.is("Гриф"));
    SliderSetting anarchy = new SliderSetting("Анархия", 1.0f, 1.0f, 7.0f, 1.0f).setVisible(() -> mode.is("Анархия"));

    public RWJoiner() {
        addSettings(mode, grief, anarchy);
    }

    @Override
    public void onEnable() {
        super.onEnable();
        if (!ClientUtil.isConnectedToServer("reallyworld")) {
            print("Данная функция работает только на ReallyWorld!");
            toggle();
        }
    }

    @Subscribe
    public void onUpdate(EventUpdate e) {
        if (!(mc.player.openContainer instanceof ChestContainer container)) return;
        if (mode.is("Гриф")) {
            if (isTitle(container, "Выбор сервера")) {
                clickItem(container, 21);
            } else if (isTitle(container, "Выбор мира грифа")) {
                clickItemSlot(container, grief.get().intValue());
                toggle();
            }
        } else if (mode.is("Мега-гриф")) {
            if (isTitle(container, "Выбор сервера")) {
                clickItem(container, 19);
                toggle();
            }
        } else if (mode.is("Анархия")) {
            if (isTitle(container, "Выбор сервера")) {
                clickItem(container, 25);
            } else if (isTitle(container, "Выбор мира")) {
                clickItemSlot(container, anarchy.get().intValue());
                toggle();
            }
        }
    }

    private void clickItem(ChestContainer container, int slotIndex) {
        ItemStack stack = container.getLowerChestInventory().getStackInSlot(slotIndex);
        if (!stack.isEmpty()) {
            mc.playerController.windowClick(container.windowId, slotIndex, 0, ClickType.QUICK_MOVE, mc.player);
        }
    }

    private boolean isTitle(ChestContainer container, String phrase) {
        Screen currentScreen = mc.currentScreen;
        if (currentScreen instanceof ContainerScreen) {
            ITextComponent title = ((ContainerScreen<?>) currentScreen).getTitle();
            return title.getString().contains(phrase);
        }
        return false;
    }

    private void clickItemSlot(ChestContainer container, int targetCount) {
        IInventory lowerChestInventory = container.getLowerChestInventory();
        for (int index = 0; index < lowerChestInventory.getSizeInventory(); ++index) {
            ItemStack stack = lowerChestInventory.getStackInSlot(index);
            if (!stack.isEmpty() && stack.getCount() == targetCount) {
                mc.playerController.windowClick(container.windowId, index, 0, ClickType.PICKUP, mc.player);
                break;
            }
        }
    }
}
Не работает
 
Начинающий
Статус
Оффлайн
Регистрация
2 Июн 2024
Сообщения
34
Реакции[?]
0
Поинты[?]
0
Как не работает? Что-то в чат пишется? В консоль? Попробуй открыть меню выбора серверов
Ошибка в коде
Как не работает? Что-то в чат пишется? В консоль? Попробуй открыть меню выбора серверов
Если можешь помоги мне пофиксить код мой дс rostyanro
 
Начинающий
Статус
Оффлайн
Регистрация
25 Фев 2024
Сообщения
489
Реакции[?]
0
Поинты[?]
0
Сверху Снизу