Гайд Добавляем Теги "RW,HW,FT" к модулям

Начинающий
Статус
Онлайн
Регистрация
29 Апр 2023
Сообщения
597
Реакции[?]
4
Поинты[?]
5K

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

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

Спасибо!

1.Создаем в functions/api Новый класс ServerGroup.java с содержимым ниже:

Код:
package moonlight.solutions.functions.api;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.awt.*;

@Getter
@AllArgsConstructor
public enum ServerGroup {

    RW("RW", new Color(0xFFA600)),
    FT("FT", new Color(0xFF243D)),
    HW("HW", new Color(0x24E5FF)),
    NO("", new Color(0x0024E5FF, true));

    private final String name;
    private final Color color;



    public static Color getColorByGroupName(String groupName) {
        for (ServerGroup group : values()) {
            if (group.getName().equals(groupName)) {
                return group.getColor();
            }
        }
        return Color.WHITE;
    }
}
2.Регаем это всё чудо в FunctionRegister( у меня ModReg)

Код:
@Retention(value = RetentionPolicy.RUNTIME)
public @interface ModReg {
    String name();
    String desc() default "У этого модуля нет описания.";
    ServerGroup server();
    int key() default 0;
    ModGroup category();
}
3. Регаем в Module(у меня это Mod) Подсветил нужные для изменения строки

Код:
    final String name;
    final String desc;
    final ServerGroup server;
    final ModGroup modGroup;
    boolean state;
    [USER=1132491]@setter[/USER]
    int bind;
    final List<Setting<?>> settings = new ObjectArrayList<>();

    final Animation animation = new Animation();

    public Mod() {
        this.name = getClass().getAnnotation(ModReg.class).name();
        this.desc = getClass().getAnnotation(ModReg.class).desc();
        this.server = getClass().getAnnotation(ModReg.class).server();
        this.modGroup = getClass().getAnnotation(ModReg.class).category();
        this.bind = getClass().getAnnotation(ModReg.class).key();
    }

    public Mod(String name, String desc, ModGroup modGroup, ServerGroup server) {
        this.name = name;
        this.modGroup = modGroup;
        this.desc = desc;
        this.server = server;
    }

    public void addSettings(Setting<?>... settings) {
        this.settings.addAll(List.of(settings));
    }

    public List<Setting<?>> getAllValues() {
        java.util.ArrayList<Setting<?>> allValues = new java.util.ArrayList<>();

        settings.forEach(value -> {
            allValues.add((Setting<?>) settings);
        });

        return allValues;
    }

    public boolean onEnable() {
        animation.animate(1, 0.25f, Easings.CIRC_OUT);
        Main.getInstance().getEventBus().register(this);
        return false;
    }

    public void onDisable() {
        animation.animate(0, 0.25f, Easings.CIRC_OUT);
        Main.getInstance().getEventBus().unregister(this);
    }


    public final void toggle() {
        setState(!state, false);
    }

    public final void setState(boolean newState, boolean config) {
        if (state == newState) {
            return;
        }

        state = newState;

        try {
            if (state) {
                onEnable();
                Main.getInstance().getNotifyManager().add(0, new SuccessNotify("Модуль " + this.name + " был " + TextFormatting.GREEN + "включен.", 1000));
            } else {
                onDisable();
                Main.getInstance().getNotifyManager().add(0, new NoNotify("Модуль " + this.name + " был " + TextFormatting.RED + "выключен.", 1000));
            }
            if (!config) {
                ModMngr modMngr = Main.getInstance().getModMngr();
                ClientTune clientTune = modMngr.getClientTune();

                if (clientTune != null && clientTune.isState()) {
                    String fileName = clientTune.getFileName(state);
                    float volume = clientTune.volume.get();
                    ClientUtil.playSound(fileName, volume, false);
                }
            }
        } catch (Exception e) {
            handleException(state ? "onEnable" : "onDisable", e);
        }

    }

    private void handleException(String methodName, Exception e) {
        if (mc.player != null) {
            print("[" + name + "] Произошла ошибка в методе " + TextFormatting.RED + methodName + TextFormatting.WHITE
                    + "() Предоставьте это сообщение разработчику (discord: maniaqw): " + TextFormatting.GRAY + e.getMessage());
            e.printStackTrace();
        } else {
            System.out.println("[" + name + " Error" + methodName + "() Message: " + e.getMessage());
            e.printStackTrace();
        }
    }
}
4.Далее идем в ModuleComponent и в методе отрисовки имён модулей добавляем строку
Код:
ClientFonts.msBold[17].drawCenteredString(stack, mod.getServer().getName(), (int)( getX() + getWidth() / 2f) - 45, getY() + 7.5F, ServerGroup.getColorByGroupName(mod.getServer().getName()).getRGB());
Если у вас другая система шрифтов - перепишите под себя, оставте только перменную в getserver и getcolorByGroupByName

5.Далее самое весёлое, вам нужно во все свои модули добавить в аннотацию FunctionRegister новый параметр - server.
Вот так его нужно добавлять
Код:
@ModReg(name = "WorldTweaks", category = ModGroup.Render, server = ServerGroup.NO)
Теперь по группам, Если группа NO - ничего не рендерится
RW - рендерится текст РВ
с фт и хв так же

что у нас вышло
1730544161227.png
 
Начинающий
Статус
Оффлайн
Регистрация
29 Мар 2024
Сообщения
166
Реакции[?]
2
Поинты[?]
0
1.Создаем в functions/api Новый класс ServerGroup.java с содержимым ниже:

Код:
package moonlight.solutions.functions.api;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.awt.*;

@Getter
@AllArgsConstructor
public enum ServerGroup {

    RW("RW", new Color(0xFFA600)),
    FT("FT", new Color(0xFF243D)),
    HW("HW", new Color(0x24E5FF)),
    NO("", new Color(0x0024E5FF, true));

    private final String name;
    private final Color color;



    public static Color getColorByGroupName(String groupName) {
        for (ServerGroup group : values()) {
            if (group.getName().equals(groupName)) {
                return group.getColor();
            }
        }
        return Color.WHITE;
    }
}
2.Регаем это всё чудо в FunctionRegister( у меня ModReg)

Код:
@Retention(value = RetentionPolicy.RUNTIME)
public @interface ModReg {
    String name();
    String desc() default "У этого модуля нет описания.";
    ServerGroup server();
    int key() default 0;
    ModGroup category();
}
3. Регаем в Module(у меня это Mod) Подсветил нужные для изменения строки

Код:
    final String name;
    final String desc;
    final ServerGroup server;
    final ModGroup modGroup;
    boolean state;
    [USER=1132491]@setter[/USER]
    int bind;
    final List<Setting<?>> settings = new ObjectArrayList<>();

    final Animation animation = new Animation();

    public Mod() {
        this.name = getClass().getAnnotation(ModReg.class).name();
        this.desc = getClass().getAnnotation(ModReg.class).desc();
        this.server = getClass().getAnnotation(ModReg.class).server();
        this.modGroup = getClass().getAnnotation(ModReg.class).category();
        this.bind = getClass().getAnnotation(ModReg.class).key();
    }

    public Mod(String name, String desc, ModGroup modGroup, ServerGroup server) {
        this.name = name;
        this.modGroup = modGroup;
        this.desc = desc;
        this.server = server;
    }

    public void addSettings(Setting<?>... settings) {
        this.settings.addAll(List.of(settings));
    }

    public List<Setting<?>> getAllValues() {
        java.util.ArrayList<Setting<?>> allValues = new java.util.ArrayList<>();

        settings.forEach(value -> {
            allValues.add((Setting<?>) settings);
        });

        return allValues;
    }

    public boolean onEnable() {
        animation.animate(1, 0.25f, Easings.CIRC_OUT);
        Main.getInstance().getEventBus().register(this);
        return false;
    }

    public void onDisable() {
        animation.animate(0, 0.25f, Easings.CIRC_OUT);
        Main.getInstance().getEventBus().unregister(this);
    }


    public final void toggle() {
        setState(!state, false);
    }

    public final void setState(boolean newState, boolean config) {
        if (state == newState) {
            return;
        }

        state = newState;

        try {
            if (state) {
                onEnable();
                Main.getInstance().getNotifyManager().add(0, new SuccessNotify("Модуль " + this.name + " был " + TextFormatting.GREEN + "включен.", 1000));
            } else {
                onDisable();
                Main.getInstance().getNotifyManager().add(0, new NoNotify("Модуль " + this.name + " был " + TextFormatting.RED + "выключен.", 1000));
            }
            if (!config) {
                ModMngr modMngr = Main.getInstance().getModMngr();
                ClientTune clientTune = modMngr.getClientTune();

                if (clientTune != null && clientTune.isState()) {
                    String fileName = clientTune.getFileName(state);
                    float volume = clientTune.volume.get();
                    ClientUtil.playSound(fileName, volume, false);
                }
            }
        } catch (Exception e) {
            handleException(state ? "onEnable" : "onDisable", e);
        }

    }

    private void handleException(String methodName, Exception e) {
        if (mc.player != null) {
            print("[" + name + "] Произошла ошибка в методе " + TextFormatting.RED + methodName + TextFormatting.WHITE
                    + "() Предоставьте это сообщение разработчику (discord: maniaqw): " + TextFormatting.GRAY + e.getMessage());
            e.printStackTrace();
        } else {
            System.out.println("[" + name + " Error" + methodName + "() Message: " + e.getMessage());
            e.printStackTrace();
        }
    }
}
4.Далее идем в ModuleComponent и в методе отрисовки имён модулей добавляем строку
Код:
ClientFonts.msBold[17].drawCenteredString(stack, mod.getServer().getName(), (int)( getX() + getWidth() / 2f) - 45, getY() + 7.5F, ServerGroup.getColorByGroupName(mod.getServer().getName()).getRGB());
Если у вас другая система шрифтов - перепишите под себя, оставте только перменную в getserver и getcolorByGroupByName

5.Далее самое весёлое, вам нужно во все свои модули добавить в аннотацию FunctionRegister новый параметр - server.
Вот так его нужно добавлять
Код:
@ModReg(name = "WorldTweaks", category = ModGroup.Render, server = ServerGroup.NO)
Теперь по группам, Если группа NO - ничего не рендерится
RW - рендерится текст РВ
с фт и хв так же

что у нас вышло
Посмотреть вложение 289329
можно было сделать легче, но что сделано то сделано, думаю многим зайдет
8/10
 
Начинающий
Статус
Онлайн
Регистрация
26 Дек 2023
Сообщения
178
Реакции[?]
0
Поинты[?]
0
1.Создаем в functions/api Новый класс ServerGroup.java с содержимым ниже:

Код:
package moonlight.solutions.functions.api;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.awt.*;

@Getter
@AllArgsConstructor
public enum ServerGroup {

    RW("RW", new Color(0xFFA600)),
    FT("FT", new Color(0xFF243D)),
    HW("HW", new Color(0x24E5FF)),
    NO("", new Color(0x0024E5FF, true));

    private final String name;
    private final Color color;



    public static Color getColorByGroupName(String groupName) {
        for (ServerGroup group : values()) {
            if (group.getName().equals(groupName)) {
                return group.getColor();
            }
        }
        return Color.WHITE;
    }
}
2.Регаем это всё чудо в FunctionRegister( у меня ModReg)

Код:
@Retention(value = RetentionPolicy.RUNTIME)
public @interface ModReg {
    String name();
    String desc() default "У этого модуля нет описания.";
    ServerGroup server();
    int key() default 0;
    ModGroup category();
}
3. Регаем в Module(у меня это Mod) Подсветил нужные для изменения строки

Код:
    final String name;
    final String desc;
    final ServerGroup server;
    final ModGroup modGroup;
    boolean state;
    [USER=1132491]@setter[/USER]
    int bind;
    final List<Setting<?>> settings = new ObjectArrayList<>();

    final Animation animation = new Animation();

    public Mod() {
        this.name = getClass().getAnnotation(ModReg.class).name();
        this.desc = getClass().getAnnotation(ModReg.class).desc();
        this.server = getClass().getAnnotation(ModReg.class).server();
        this.modGroup = getClass().getAnnotation(ModReg.class).category();
        this.bind = getClass().getAnnotation(ModReg.class).key();
    }

    public Mod(String name, String desc, ModGroup modGroup, ServerGroup server) {
        this.name = name;
        this.modGroup = modGroup;
        this.desc = desc;
        this.server = server;
    }

    public void addSettings(Setting<?>... settings) {
        this.settings.addAll(List.of(settings));
    }

    public List<Setting<?>> getAllValues() {
        java.util.ArrayList<Setting<?>> allValues = new java.util.ArrayList<>();

        settings.forEach(value -> {
            allValues.add((Setting<?>) settings);
        });

        return allValues;
    }

    public boolean onEnable() {
        animation.animate(1, 0.25f, Easings.CIRC_OUT);
        Main.getInstance().getEventBus().register(this);
        return false;
    }

    public void onDisable() {
        animation.animate(0, 0.25f, Easings.CIRC_OUT);
        Main.getInstance().getEventBus().unregister(this);
    }


    public final void toggle() {
        setState(!state, false);
    }

    public final void setState(boolean newState, boolean config) {
        if (state == newState) {
            return;
        }

        state = newState;

        try {
            if (state) {
                onEnable();
                Main.getInstance().getNotifyManager().add(0, new SuccessNotify("Модуль " + this.name + " был " + TextFormatting.GREEN + "включен.", 1000));
            } else {
                onDisable();
                Main.getInstance().getNotifyManager().add(0, new NoNotify("Модуль " + this.name + " был " + TextFormatting.RED + "выключен.", 1000));
            }
            if (!config) {
                ModMngr modMngr = Main.getInstance().getModMngr();
                ClientTune clientTune = modMngr.getClientTune();

                if (clientTune != null && clientTune.isState()) {
                    String fileName = clientTune.getFileName(state);
                    float volume = clientTune.volume.get();
                    ClientUtil.playSound(fileName, volume, false);
                }
            }
        } catch (Exception e) {
            handleException(state ? "onEnable" : "onDisable", e);
        }

    }

    private void handleException(String methodName, Exception e) {
        if (mc.player != null) {
            print("[" + name + "] Произошла ошибка в методе " + TextFormatting.RED + methodName + TextFormatting.WHITE
                    + "() Предоставьте это сообщение разработчику (discord: maniaqw): " + TextFormatting.GRAY + e.getMessage());
            e.printStackTrace();
        } else {
            System.out.println("[" + name + " Error" + methodName + "() Message: " + e.getMessage());
            e.printStackTrace();
        }
    }
}
4.Далее идем в ModuleComponent и в методе отрисовки имён модулей добавляем строку
Код:
ClientFonts.msBold[17].drawCenteredString(stack, mod.getServer().getName(), (int)( getX() + getWidth() / 2f) - 45, getY() + 7.5F, ServerGroup.getColorByGroupName(mod.getServer().getName()).getRGB());
Если у вас другая система шрифтов - перепишите под себя, оставте только перменную в getserver и getcolorByGroupByName

5.Далее самое весёлое, вам нужно во все свои модули добавить в аннотацию FunctionRegister новый параметр - server.
Вот так его нужно добавлять
Код:
@ModReg(name = "WorldTweaks", category = ModGroup.Render, server = ServerGroup.NO)
Теперь по группам, Если группа NO - ничего не рендерится
RW - рендерится текст РВ
с фт и хв так же

что у нас вышло
Посмотреть вложение 289329
хз бля, можно было сделать в разы легче как и сказал тип сверху, но пойдет 9/10
 
Начинающий
Статус
Оффлайн
Регистрация
16 Дек 2023
Сообщения
480
Реакции[?]
8
Поинты[?]
4K
1.Создаем в functions/api Новый класс ServerGroup.java с содержимым ниже:

Код:
package moonlight.solutions.functions.api;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.awt.*;

@Getter
@AllArgsConstructor
public enum ServerGroup {

    RW("RW", new Color(0xFFA600)),
    FT("FT", new Color(0xFF243D)),
    HW("HW", new Color(0x24E5FF)),
    NO("", new Color(0x0024E5FF, true));

    private final String name;
    private final Color color;



    public static Color getColorByGroupName(String groupName) {
        for (ServerGroup group : values()) {
            if (group.getName().equals(groupName)) {
                return group.getColor();
            }
        }
        return Color.WHITE;
    }
}
2.Регаем это всё чудо в FunctionRegister( у меня ModReg)

Код:
@Retention(value = RetentionPolicy.RUNTIME)
public @interface ModReg {
    String name();
    String desc() default "У этого модуля нет описания.";
    ServerGroup server();
    int key() default 0;
    ModGroup category();
}
3. Регаем в Module(у меня это Mod) Подсветил нужные для изменения строки

Код:
    final String name;
    final String desc;
    final ServerGroup server;
    final ModGroup modGroup;
    boolean state;
    [USER=1132491]@setter[/USER]
    int bind;
    final List<Setting<?>> settings = new ObjectArrayList<>();

    final Animation animation = new Animation();

    public Mod() {
        this.name = getClass().getAnnotation(ModReg.class).name();
        this.desc = getClass().getAnnotation(ModReg.class).desc();
        this.server = getClass().getAnnotation(ModReg.class).server();
        this.modGroup = getClass().getAnnotation(ModReg.class).category();
        this.bind = getClass().getAnnotation(ModReg.class).key();
    }

    public Mod(String name, String desc, ModGroup modGroup, ServerGroup server) {
        this.name = name;
        this.modGroup = modGroup;
        this.desc = desc;
        this.server = server;
    }

    public void addSettings(Setting<?>... settings) {
        this.settings.addAll(List.of(settings));
    }

    public List<Setting<?>> getAllValues() {
        java.util.ArrayList<Setting<?>> allValues = new java.util.ArrayList<>();

        settings.forEach(value -> {
            allValues.add((Setting<?>) settings);
        });

        return allValues;
    }

    public boolean onEnable() {
        animation.animate(1, 0.25f, Easings.CIRC_OUT);
        Main.getInstance().getEventBus().register(this);
        return false;
    }

    public void onDisable() {
        animation.animate(0, 0.25f, Easings.CIRC_OUT);
        Main.getInstance().getEventBus().unregister(this);
    }


    public final void toggle() {
        setState(!state, false);
    }

    public final void setState(boolean newState, boolean config) {
        if (state == newState) {
            return;
        }

        state = newState;

        try {
            if (state) {
                onEnable();
                Main.getInstance().getNotifyManager().add(0, new SuccessNotify("Модуль " + this.name + " был " + TextFormatting.GREEN + "включен.", 1000));
            } else {
                onDisable();
                Main.getInstance().getNotifyManager().add(0, new NoNotify("Модуль " + this.name + " был " + TextFormatting.RED + "выключен.", 1000));
            }
            if (!config) {
                ModMngr modMngr = Main.getInstance().getModMngr();
                ClientTune clientTune = modMngr.getClientTune();

                if (clientTune != null && clientTune.isState()) {
                    String fileName = clientTune.getFileName(state);
                    float volume = clientTune.volume.get();
                    ClientUtil.playSound(fileName, volume, false);
                }
            }
        } catch (Exception e) {
            handleException(state ? "onEnable" : "onDisable", e);
        }

    }

    private void handleException(String methodName, Exception e) {
        if (mc.player != null) {
            print("[" + name + "] Произошла ошибка в методе " + TextFormatting.RED + methodName + TextFormatting.WHITE
                    + "() Предоставьте это сообщение разработчику (discord: maniaqw): " + TextFormatting.GRAY + e.getMessage());
            e.printStackTrace();
        } else {
            System.out.println("[" + name + " Error" + methodName + "() Message: " + e.getMessage());
            e.printStackTrace();
        }
    }
}
4.Далее идем в ModuleComponent и в методе отрисовки имён модулей добавляем строку
Код:
ClientFonts.msBold[17].drawCenteredString(stack, mod.getServer().getName(), (int)( getX() + getWidth() / 2f) - 45, getY() + 7.5F, ServerGroup.getColorByGroupName(mod.getServer().getName()).getRGB());
Если у вас другая система шрифтов - перепишите под себя, оставте только перменную в getserver и getcolorByGroupByName

5.Далее самое весёлое, вам нужно во все свои модули добавить в аннотацию FunctionRegister новый параметр - server.
Вот так его нужно добавлять
Код:
@ModReg(name = "WorldTweaks", category = ModGroup.Render, server = ServerGroup.NO)
Теперь по группам, Если группа NO - ничего не рендерится
RW - рендерится текст РВ
с фт и хв так же

что у нас вышло
Посмотреть вложение 289329
можно было легче НАМНОГО,но пастерам пойдет
 
Сверху Снизу