Начинающий
- Статус
- Оффлайн
- Регистрация
- 31 Дек 2023
- Сообщения
- 7
- Реакции
- 1
Сделано для пастеров которые это хотят добавить в свой Halal Client/Recode/Release
Сделано на основе этой темы Кликай
Короче:
1) Создаем в functions/api Новый класс FunctionGroup с этой хуетой:
2) Регаем в FunctionRegister
3) Регаем в Function
4) Пиздуем в ModuleComponent и в drawText хуярим это:
В итоге мы получаем такое:
Нужна будет помощь - пишите.
Сделано на основе этой темы Кликай
Короче:
1) Создаем в functions/api Новый класс FunctionGroup с этой хуетой:
FunctionGroup:
package im.expensive.functions.api;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.awt.*;
@Getter
@AllArgsConstructor
public enum FunctionGroup {
RW("RW", new Color(0xFFA600)),
FT("FT", new Color(0xFF243D)),
HW("HW", new Color(0x24E5FF)),
PREMIUM("PREMIUM", new Color(0x002991)),
NO("", new Color(0x0024E5FF, true));
private final String name;
private final Color color;
public static Color getColorByGroupName(String groupName) {
for (FunctionGroup group : values()) {
if (group.getName().equals(groupName)) {
return group.getColor();
}
}
return Color.WHITE;
}
}
2) Регаем в FunctionRegister
FunctionRegister:
package im.expensive.functions.api;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(value = RetentionPolicy.RUNTIME)
public @interface FunctionRegister {
String name();
FunctionGroup group();
int key() default 0;
Category type();
}
3) Регаем в Function
Function:
package im.expensive.functions.api;
import im.expensive.Expensive;
import im.expensive.functions.impl.misc.ClientSounds;
import im.expensive.functions.settings.Setting;
import im.expensive.utils.client.ClientUtil;
import im.expensive.utils.client.IMinecraft;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.FieldDefaults;
import net.minecraft.util.text.TextFormatting;
import ru.hogoshi.Animation;
import ru.hogoshi.util.Easings;
import java.util.List;
@FieldDefaults(level = AccessLevel.PRIVATE)
@Getter
public abstract class Function implements IMinecraft {
final String name;
final Category category;
final FunctionGroup group;
boolean state;
@Setter
int bind;
final List<Setting<?>> settings = new ObjectArrayList<>();
final Animation animation = new Animation();
public Function() {
this.name = getClass().getAnnotation(FunctionRegister.class).name();
this.category = getClass().getAnnotation(FunctionRegister.class).type();
this.bind = getClass().getAnnotation(FunctionRegister.class).key();
this.group = getClass().getAnnotation(FunctionRegister.class).group();
}
public Function(String name, FunctionGroup group) {
this.name = name;
this.category = Category.Combat;
this.group = group;
}
public void addSettings(Setting<?>... settings) {
this.settings.addAll(List.of(settings));
}
public void onEnable() {
animation.animate(1, 0.25f, Easings.CIRC_OUT);
Expensive.getInstance().getEventBus().register(this);
}
public void onDisable() {
animation.animate(0, 0.25f, Easings.CIRC_OUT);
Expensive.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();
} else {
onDisable();
}
if (!config) {
FunctionRegistry functionRegistry = Expensive.getInstance().getFunctionRegistry();
ClientSounds clientSounds = functionRegistry.getClientSounds();
if (clientSounds != null && clientSounds.isState()) {
String fileName = clientSounds.getFileName(state);
float volume = clientSounds.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
+ "() Предоставьте это сообщение разработчику: " + TextFormatting.GRAY + e.getMessage());
e.printStackTrace();
} else {
System.out.println("[" + name + " Error" + methodName + "() Message: " + e.getMessage());
e.printStackTrace();
}
}
}
ModuleComponent:
Fonts.sfMedium.drawText(stack, function.getGroup().getName(),
getX() + getWidth() - 6.5f - 6 - Fonts.sfMedium.getWidth(function.getGroup().getName(), 7.7f, 0),
getY() + 6,
FunctionGroup.getColorByGroupName(function.getGroup().getName()).getRGB(), 7.7f, 0);
В итоге мы получаем такое:
Нужна будет помощь - пишите.
Последнее редактирование: