• На форуме разыгрывается более 300 ключей на приватные читы! Для этого нужно всего-лишь нажать соответствующую кнопку в теме!

    Подробности по ссылке:
    https://t.me/yougame_official/66

Вопрос Не отображаются функции в ClickGUI

Начинающий
Статус
Оффлайн
Регистрация
19 Дек 2023
Сообщения
57
Реакции[?]
1
Поинты[?]
0

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

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

Спасибо!

ClickGuiScreen:
package omg.sticky.gui;

import lombok.Getter;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.util.Window;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.text.LiteralText;
import net.minecraft.util.math.MathHelper;
import omg.sticky.Stickyclient;
import omg.sticky.fonts.Font;
import omg.sticky.fonts.Fonts;
import omg.sticky.gui.component.ModuleComponent;
import omg.sticky.module.api.Module;
import omg.sticky.util.MathUtils;
import omg.sticky.util.Scissor;
import omg.sticky.util.Wrapper;
import omg.sticky.util.shader.Rounds;

import java.awt.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ClickGuiScreen extends Screen implements Wrapper {
    [USER=270918]@Getter[/USER]
    private double x, y, width, height;

    private float scroll, scrollAnimated;

    private final Map<String, List<ModuleComponent>> categorizedComponents = new HashMap<>();
    private String selectedCategory = "Combat"; // По умолчанию первая категория

    public ClickGuiScreen() {
        super(new LiteralText("Sticky GUI"));
        create();
    }

    [USER=1367676]@override[/USER]
    public void resize(MinecraftClient client, int width, int height) {
        create();
        super.resize(client, width, height);
    }

    [USER=1367676]@override[/USER]
    public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) {
        // Фон GUI
        Rounds.drawRound(x, y, width, height, 14, new Color(0x111111));

        // Название GUI
        Font f = Fonts.Cygra.get(24);
        String text = "Sticky Client";
        double centeredX = x + (width - f.getWidth(text)) / 2;
        f.draw(text, centeredX, y + 4, -1);

        // Рендеринг вкладок категорий
        renderCategoryTabs(matrices);

        // Анимация скролла
        scrollAnimated = MathUtils.lerp(scrollAnimated, scroll, 8);

        // Список модулей в текущей категории
        List<ModuleComponent> components = categorizedComponents.get(selectedCategory);

        if (components == null || components.isEmpty()) {
            System.out.println("No components to render for category: " + selectedCategory);
        } else {
            System.out.println("Rendering " + components.size() + " modules in category: " + selectedCategory);

            Scissor.push();
            Scissor.setFromComponentCoordinates(x, y + 40, width, height - 50);

            float height = 10;
            for (ModuleComponent component : components) {
                component.scrollOffset = scrollAnimated;
                component.render(matrices, mouseX, mouseY);
                height += (float) component.height;
            }

            Scissor.pop();

            // Ограничение скролла
            scroll = (float) MathHelper.clamp(scroll, Math.min(0, -Math.abs(height - (this.height - 50))), 0);
        }

        super.render(matrices, mouseX, mouseY, delta);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseClicked(double mouseX, double mouseY, int button) {
        // Проверяем клики по вкладкам категорий
        if (checkCategoryTabClick(mouseX, mouseY)) {
            return true;
        }

        // Обрабатываем клики по модулям
        List<ModuleComponent> components = categorizedComponents.get(selectedCategory);
        if (components != null) {
            for (ModuleComponent moduleComponent : components) {
                moduleComponent.mouseClicked(mouseX, mouseY, button);
            }
        }

        return super.mouseClicked(mouseX, mouseY, button);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseReleased(double mouseX, double mouseY, int button) {
        List<ModuleComponent> components = categorizedComponents.get(selectedCategory);
        if (components != null) {
            for (ModuleComponent moduleComponent : components) {
                moduleComponent.mouseReleased();
            }
        }
        return super.mouseReleased(mouseX, mouseY, button);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseScrolled(double mouseX, double mouseY, double amount) {
        scroll += (float) (amount * 12f);
        return super.mouseScrolled(mouseX, mouseY, amount);
    }

    [USER=1367676]@override[/USER]
    public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
        List<ModuleComponent> components = categorizedComponents.get(selectedCategory);
        if (components != null) {
            for (ModuleComponent moduleComponent : components) {
                moduleComponent.keyPressed(keyCode);
            }
        }
        return super.keyPressed(keyCode, scanCode, modifiers);
    }

    [USER=1367676]@override[/USER]
    public boolean isPauseScreen() {
        return false;
    }

    private void create() {
        Window window = mc.getWindow();

        width = 500;
        height = 500;

        x = (window.getScaledWidth() - width) / 2;
        y = (window.getScaledHeight() - height) / 2;

        categorizedComponents.clear();

        System.out.println("Loading modules into GUI...");

        for (Module module : Stickyclient.getInstance().moduleStorage.getModules()) {
            if (module == null || module.getCategory() == null) {
                System.out.println("Skipped null module or module without category.");
                continue;
            }

            String category = module.getCategory();
            System.out.println("Module: " + module.getName() + ", Category: " + category);  // Логирование модуля

            categorizedComponents.computeIfAbsent(category, k -> new ArrayList<>())
                    .add(new ModuleComponent(module, this, 0));
        }

        System.out.println("Available categories: " + categorizedComponents.keySet());
    }

    private void renderCategoryTabs(MatrixStack matrices) {
        Font font = Fonts.Cygra.get(16);
        int tabWidth = 60; // Ширина одной вкладки
        int tabHeight = 20; // Высота вкладки

        int index = 0;
        for (String category : categorizedComponents.keySet()) {
            double tabX = x + 10 + index * (tabWidth + 10);
            double tabY = y + 30;

            // Подсвечиваем выбранную категорию
            Color color = category.equals(selectedCategory) ? new Color(0x5555FF) : new Color(0x333333);
            Rounds.drawRound(tabX, tabY, tabWidth, tabHeight, 6, color);

            // Название категории
            double textX = tabX + (tabWidth - font.getWidth(category)) / 2;
            double textY = tabY + (tabHeight - font.getHeight()) / 2;
            font.draw(category, textX, textY, -1);

            System.out.println("Rendering category tab: " + category);  // Логирование категорий

            index++;
        }
    }

    private boolean checkCategoryTabClick(double mouseX, double mouseY) {
        int tabWidth = 60;
        int tabHeight = 20;

        int index = 0;
        for (String category : categorizedComponents.keySet()) {
            double tabX = x + 10 + index * (tabWidth + 10);
            double tabY = y + 30;

            if (mouseX >= tabX && mouseX <= tabX + tabWidth && mouseY >= tabY && mouseY <= tabY + tabHeight) {
                selectedCategory = category; // Меняем выбранную категорию
                System.out.println("Selected category: " + category);  // Логирование выбранной категории
                return true;
            }

            index++;
        }

        return false;
    }
}

ModuleComponent:
package omg.sticky.gui.component;

import net.minecraft.client.util.math.MatrixStack;
import omg.sticky.gui.component.setting.BindSettingComponent;
import omg.sticky.module.api.setting.BindSetting;
import org.lwjgl.glfw.GLFW;
import omg.sticky.fonts.Font;
import omg.sticky.fonts.Fonts;
import omg.sticky.gui.ClickGuiScreen;
import omg.sticky.gui.component.setting.BooleanSettingComponent;
import omg.sticky.gui.component.setting.SettingComponent;
import omg.sticky.module.api.Module;
import omg.sticky.module.api.setting.BooleanSetting;
import omg.sticky.module.api.setting.Setting;
import omg.sticky.util.ChatUtil;
import omg.sticky.util.KeyUtil;
import omg.sticky.util.Scissor;
import omg.sticky.util.animation.Animation;
import omg.sticky.util.animation.util.Easings;
import omg.sticky.util.shader.Rounds;

import java.awt.*;
import java.util.ArrayList;
import java.util.List;

public class ModuleComponent extends Component {
    private final Module module;
    private boolean binding, extended;
    private double defaultHeight;
    private final Animation heightAnimation = new Animation();

    private final List<SettingComponent> components;

    public ModuleComponent(Module module, ClickGuiScreen clickGuiScreen, float offset) {
        super(clickGuiScreen.getX() + 4, clickGuiScreen.getY() + 4, clickGuiScreen.getWidth() - 8, 17, offset);
        this.module = module;
        this.defaultHeight = this.height;

        heightAnimation.setToValue(height).setValue(height);

        components = new ArrayList<>();

        float setOffset = (float) height;

        for (Setting setting : module.getSettings()) {
            if (setting instanceof BooleanSetting) {
                components.add(new BooleanSettingComponent(setting, this, setOffset));
            } else if (setting instanceof BindSetting) {
                components.add(new BindSettingComponent(setting, this, setOffset));
            }

            setOffset += (float) setting.getHeight();
        }
    }

    [USER=1367676]@override[/USER]
    public void render(MatrixStack matrixStack, int mouseX, int mouseY) {
        heightAnimation.update();
        height = heightAnimation.getValue();

        Rounds.drawRound(x, getFull(), width, height, 6, new Color(0x222222));
        Font f = Fonts.Inter.get(16);

        String keyName = KeyUtil.getKeyName(module.getKey());
        String text = binding ? "Bind: " + (keyName == null ? "None" : keyName) : module.getName();

        f.draw(text, x + 3, getFull() + 3, module.isEnabled() ? Color.GREEN.getRGB() : -1);

        Scissor.push();

        Scissor.setFromComponentCoordinates(x, getFull(), width, height);

        for (SettingComponent settingComponent : components)
            settingComponent.render(matrixStack, mouseX, mouseY);

        Scissor.pop();
    }

    [USER=1367676]@override[/USER]
    public void mouseClicked(double mouseX, double mouseY, int button) {
        if (extended)
            for (SettingComponent settingComponent : components)
                settingComponent.mouseClicked(mouseX, mouseY, button);

        if (isHovered(mouseX, mouseY)) {
            switch (button) {
                case 0:
                    module.toggle();
                    break;
                case 1:
                    extended = !extended;

                    double height = defaultHeight;

                    if (extended)
                        for (Setting setting : module.getSettings())
                            if (setting.isVisible())
                                height += setting.getHeight();

                    heightAnimation.animate(height, 0.2, Easings.QUAD_OUT);

                    break;
                case 2:
                    binding = true;
                    break;
            }
        }
    }

    [USER=1367676]@override[/USER]
    public void keyPressed(int keyCode) {
        for (SettingComponent settingComponent : components)
            settingComponent.keyPressed(keyCode);

        if (binding) {
            if (keyCode == GLFW.GLFW_KEY_DELETE) {
                module.setKey(0);
                ChatUtil.addMessage("Модуль " + module.getName() + " успешно разбинжен!");
            } else {
                module.setKey(keyCode);
                ChatUtil.addMessage("Модуль " + module.getName() + " успешно забинжен на клавишу: " + KeyUtil.getKeyName(keyCode));
            }

            binding = false;
        }
    }

    public boolean isHovered(double mouseX, double mouseY) {
        return mouseX >= x && mouseY >= getFull() && mouseX <= x + width && mouseY <= getFull() + defaultHeight;
    }
}
 
Начинающий
Статус
Оффлайн
Регистрация
3 Май 2023
Сообщения
561
Реакции[?]
4
Поинты[?]
3K
ClickGuiScreen:
package omg.sticky.gui;

import lombok.Getter;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.util.Window;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.text.LiteralText;
import net.minecraft.util.math.MathHelper;
import omg.sticky.Stickyclient;
import omg.sticky.fonts.Font;
import omg.sticky.fonts.Fonts;
import omg.sticky.gui.component.ModuleComponent;
import omg.sticky.module.api.Module;
import omg.sticky.util.MathUtils;
import omg.sticky.util.Scissor;
import omg.sticky.util.Wrapper;
import omg.sticky.util.shader.Rounds;

import java.awt.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ClickGuiScreen extends Screen implements Wrapper {
    [USER=270918]@Getter[/USER]
    private double x, y, width, height;

    private float scroll, scrollAnimated;

    private final Map<String, List<ModuleComponent>> categorizedComponents = new HashMap<>();
    private String selectedCategory = "Combat"; // По умолчанию первая категория

    public ClickGuiScreen() {
        super(new LiteralText("Sticky GUI"));
        create();
    }

    [USER=1367676]@override[/USER]
    public void resize(MinecraftClient client, int width, int height) {
        create();
        super.resize(client, width, height);
    }

    [USER=1367676]@override[/USER]
    public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) {
        // Фон GUI
        Rounds.drawRound(x, y, width, height, 14, new Color(0x111111));

        // Название GUI
        Font f = Fonts.Cygra.get(24);
        String text = "Sticky Client";
        double centeredX = x + (width - f.getWidth(text)) / 2;
        f.draw(text, centeredX, y + 4, -1);

        // Рендеринг вкладок категорий
        renderCategoryTabs(matrices);

        // Анимация скролла
        scrollAnimated = MathUtils.lerp(scrollAnimated, scroll, 8);

        // Список модулей в текущей категории
        List<ModuleComponent> components = categorizedComponents.get(selectedCategory);

        if (components == null || components.isEmpty()) {
            System.out.println("No components to render for category: " + selectedCategory);
        } else {
            System.out.println("Rendering " + components.size() + " modules in category: " + selectedCategory);

            Scissor.push();
            Scissor.setFromComponentCoordinates(x, y + 40, width, height - 50);

            float height = 10;
            for (ModuleComponent component : components) {
                component.scrollOffset = scrollAnimated;
                component.render(matrices, mouseX, mouseY);
                height += (float) component.height;
            }

            Scissor.pop();

            // Ограничение скролла
            scroll = (float) MathHelper.clamp(scroll, Math.min(0, -Math.abs(height - (this.height - 50))), 0);
        }

        super.render(matrices, mouseX, mouseY, delta);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseClicked(double mouseX, double mouseY, int button) {
        // Проверяем клики по вкладкам категорий
        if (checkCategoryTabClick(mouseX, mouseY)) {
            return true;
        }

        // Обрабатываем клики по модулям
        List<ModuleComponent> components = categorizedComponents.get(selectedCategory);
        if (components != null) {
            for (ModuleComponent moduleComponent : components) {
                moduleComponent.mouseClicked(mouseX, mouseY, button);
            }
        }

        return super.mouseClicked(mouseX, mouseY, button);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseReleased(double mouseX, double mouseY, int button) {
        List<ModuleComponent> components = categorizedComponents.get(selectedCategory);
        if (components != null) {
            for (ModuleComponent moduleComponent : components) {
                moduleComponent.mouseReleased();
            }
        }
        return super.mouseReleased(mouseX, mouseY, button);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseScrolled(double mouseX, double mouseY, double amount) {
        scroll += (float) (amount * 12f);
        return super.mouseScrolled(mouseX, mouseY, amount);
    }

    [USER=1367676]@override[/USER]
    public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
        List<ModuleComponent> components = categorizedComponents.get(selectedCategory);
        if (components != null) {
            for (ModuleComponent moduleComponent : components) {
                moduleComponent.keyPressed(keyCode);
            }
        }
        return super.keyPressed(keyCode, scanCode, modifiers);
    }

    [USER=1367676]@override[/USER]
    public boolean isPauseScreen() {
        return false;
    }

    private void create() {
        Window window = mc.getWindow();

        width = 500;
        height = 500;

        x = (window.getScaledWidth() - width) / 2;
        y = (window.getScaledHeight() - height) / 2;

        categorizedComponents.clear();

        System.out.println("Loading modules into GUI...");

        for (Module module : Stickyclient.getInstance().moduleStorage.getModules()) {
            if (module == null || module.getCategory() == null) {
                System.out.println("Skipped null module or module without category.");
                continue;
            }

            String category = module.getCategory();
            System.out.println("Module: " + module.getName() + ", Category: " + category);  // Логирование модуля

            categorizedComponents.computeIfAbsent(category, k -> new ArrayList<>())
                    .add(new ModuleComponent(module, this, 0));
        }

        System.out.println("Available categories: " + categorizedComponents.keySet());
    }

    private void renderCategoryTabs(MatrixStack matrices) {
        Font font = Fonts.Cygra.get(16);
        int tabWidth = 60; // Ширина одной вкладки
        int tabHeight = 20; // Высота вкладки

        int index = 0;
        for (String category : categorizedComponents.keySet()) {
            double tabX = x + 10 + index * (tabWidth + 10);
            double tabY = y + 30;

            // Подсвечиваем выбранную категорию
            Color color = category.equals(selectedCategory) ? new Color(0x5555FF) : new Color(0x333333);
            Rounds.drawRound(tabX, tabY, tabWidth, tabHeight, 6, color);

            // Название категории
            double textX = tabX + (tabWidth - font.getWidth(category)) / 2;
            double textY = tabY + (tabHeight - font.getHeight()) / 2;
            font.draw(category, textX, textY, -1);

            System.out.println("Rendering category tab: " + category);  // Логирование категорий

            index++;
        }
    }

    private boolean checkCategoryTabClick(double mouseX, double mouseY) {
        int tabWidth = 60;
        int tabHeight = 20;

        int index = 0;
        for (String category : categorizedComponents.keySet()) {
            double tabX = x + 10 + index * (tabWidth + 10);
            double tabY = y + 30;

            if (mouseX >= tabX && mouseX <= tabX + tabWidth && mouseY >= tabY && mouseY <= tabY + tabHeight) {
                selectedCategory = category; // Меняем выбранную категорию
                System.out.println("Selected category: " + category);  // Логирование выбранной категории
                return true;
            }

            index++;
        }

        return false;
    }
}

ModuleComponent:
package omg.sticky.gui.component;

import net.minecraft.client.util.math.MatrixStack;
import omg.sticky.gui.component.setting.BindSettingComponent;
import omg.sticky.module.api.setting.BindSetting;
import org.lwjgl.glfw.GLFW;
import omg.sticky.fonts.Font;
import omg.sticky.fonts.Fonts;
import omg.sticky.gui.ClickGuiScreen;
import omg.sticky.gui.component.setting.BooleanSettingComponent;
import omg.sticky.gui.component.setting.SettingComponent;
import omg.sticky.module.api.Module;
import omg.sticky.module.api.setting.BooleanSetting;
import omg.sticky.module.api.setting.Setting;
import omg.sticky.util.ChatUtil;
import omg.sticky.util.KeyUtil;
import omg.sticky.util.Scissor;
import omg.sticky.util.animation.Animation;
import omg.sticky.util.animation.util.Easings;
import omg.sticky.util.shader.Rounds;

import java.awt.*;
import java.util.ArrayList;
import java.util.List;

public class ModuleComponent extends Component {
    private final Module module;
    private boolean binding, extended;
    private double defaultHeight;
    private final Animation heightAnimation = new Animation();

    private final List<SettingComponent> components;

    public ModuleComponent(Module module, ClickGuiScreen clickGuiScreen, float offset) {
        super(clickGuiScreen.getX() + 4, clickGuiScreen.getY() + 4, clickGuiScreen.getWidth() - 8, 17, offset);
        this.module = module;
        this.defaultHeight = this.height;

        heightAnimation.setToValue(height).setValue(height);

        components = new ArrayList<>();

        float setOffset = (float) height;

        for (Setting setting : module.getSettings()) {
            if (setting instanceof BooleanSetting) {
                components.add(new BooleanSettingComponent(setting, this, setOffset));
            } else if (setting instanceof BindSetting) {
                components.add(new BindSettingComponent(setting, this, setOffset));
            }

            setOffset += (float) setting.getHeight();
        }
    }

    [USER=1367676]@override[/USER]
    public void render(MatrixStack matrixStack, int mouseX, int mouseY) {
        heightAnimation.update();
        height = heightAnimation.getValue();

        Rounds.drawRound(x, getFull(), width, height, 6, new Color(0x222222));
        Font f = Fonts.Inter.get(16);

        String keyName = KeyUtil.getKeyName(module.getKey());
        String text = binding ? "Bind: " + (keyName == null ? "None" : keyName) : module.getName();

        f.draw(text, x + 3, getFull() + 3, module.isEnabled() ? Color.GREEN.getRGB() : -1);

        Scissor.push();

        Scissor.setFromComponentCoordinates(x, getFull(), width, height);

        for (SettingComponent settingComponent : components)
            settingComponent.render(matrixStack, mouseX, mouseY);

        Scissor.pop();
    }

    [USER=1367676]@override[/USER]
    public void mouseClicked(double mouseX, double mouseY, int button) {
        if (extended)
            for (SettingComponent settingComponent : components)
                settingComponent.mouseClicked(mouseX, mouseY, button);

        if (isHovered(mouseX, mouseY)) {
            switch (button) {
                case 0:
                    module.toggle();
                    break;
                case 1:
                    extended = !extended;

                    double height = defaultHeight;

                    if (extended)
                        for (Setting setting : module.getSettings())
                            if (setting.isVisible())
                                height += setting.getHeight();

                    heightAnimation.animate(height, 0.2, Easings.QUAD_OUT);

                    break;
                case 2:
                    binding = true;
                    break;
            }
        }
    }

    [USER=1367676]@override[/USER]
    public void keyPressed(int keyCode) {
        for (SettingComponent settingComponent : components)
            settingComponent.keyPressed(keyCode);

        if (binding) {
            if (keyCode == GLFW.GLFW_KEY_DELETE) {
                module.setKey(0);
                ChatUtil.addMessage("Модуль " + module.getName() + " успешно разбинжен!");
            } else {
                module.setKey(keyCode);
                ChatUtil.addMessage("Модуль " + module.getName() + " успешно забинжен на клавишу: " + KeyUtil.getKeyName(keyCode));
            }

            binding = false;
        }
    }

    public boolean isHovered(double mouseX, double mouseY) {
        return mouseX >= x && mouseY >= getFull() && mouseX <= x + width && mouseY <= getFull() + defaultHeight;
    }
}
на чем пишешь
 
Начинающий
Статус
Оффлайн
Регистрация
19 Дек 2023
Сообщения
57
Реакции[?]
1
Поинты[?]
0
а ты главный класс твой запыхивал в Minecraft.java или что там у вас на фабрике
смотри, до того как я хотел сделать категории всё норм было, ну а щас они не отображаются
 
Начинающий
Статус
Оффлайн
Регистрация
15 Июн 2024
Сообщения
757
Реакции[?]
7
Поинты[?]
4K
ClickGuiScreen:
public class ClickGuiScreen extends Screen implements Wrapper {
    [USER=270918]@Getter[/USER]
    private double x, y, width, height;

    [USER=1367676]@override[/USER]
    public void resize(MinecraftClient client, int width, int height) {
        create();
        super.resize(client, width, height);
    }

    [USER=1367676]@override[/USER]
    public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) {

    [USER=1367676]@override[/USER]
    public boolean mouseClicked(double mouseX, double mouseY, int button) {
        // Проверяем клики по вкладкам категорий
        if (checkCategoryTabClick(mouseX, mouseY)) {
            return true;
        }

    [USER=1367676]@override[/USER]
    public boolean mouseReleased(double mouseX, double mouseY, int button) {
        List<ModuleComponent> components = categorizedComponents.get(selectedCategory);
        if (components != null) {
            for (ModuleComponent moduleComponent : components) {
                moduleComponent.mouseReleased();
            }
        }
        return super.mouseReleased(mouseX, mouseY, button);
    }

    [USER=1367676]@override[/USER]
    public boolean mouseScrolled(double mouseX, double mouseY, double amount) {
        scroll += (float) (amount * 12f);
        return super.mouseScrolled(mouseX, mouseY, amount);
    }

    [USER=1367676]@override[/USER]
            for (ModuleComponent moduleComponent : components) {
                moduleComponent.keyPressed(keyCode);
            }

    [USER=1367676]@override[/USER]
    public boolean isPauseScreen() {
        return false;
    }
:whyRly:
 
Сверху Снизу