-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
1.Создаем в functions/api Новый класс ServerGroup.java с содержимым ниже:
2.Регаем это всё чудо в FunctionRegister( у меня ModReg)
3. Регаем в Module(у меня это Mod) Подсветил нужные для изменения строки
4.Далее идем в ModuleComponent и в методе отрисовки имён модулей добавляем строку
Если у вас другая система шрифтов - перепишите под себя, оставте только перменную в getserver и getcolorByGroupByName
5.Далее самое весёлое, вам нужно во все свои модули добавить в аннотацию FunctionRegister новый параметр - server.
Вот так его нужно добавлять
Теперь по группам, Если группа NO - ничего не рендерится
RW - рендерится текст РВ
с фт и хв так же
что у нас вышло
Код:
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;
}
}
Код:
@Retention(value = RetentionPolicy.RUNTIME)
public @interface ModReg {
String name();
String desc() default "У этого модуля нет описания.";
ServerGroup server();
int key() default 0;
ModGroup category();
}
Код:
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();
}
}
}
Код:
ClientFonts.msBold[17].drawCenteredString(stack, mod.getServer().getName(), (int)( getX() + getWidth() / 2f) - 45, getY() + 7.5F, ServerGroup.getColorByGroupName(mod.getServer().getName()).getRGB());
5.Далее самое весёлое, вам нужно во все свои модули добавить в аннотацию FunctionRegister новый параметр - server.
Вот так его нужно добавлять
Код:
@ModReg(name = "WorldTweaks", category = ModGroup.Render, server = ServerGroup.NO)
RW - рендерится текст РВ
с фт и хв так же
что у нас вышло