Начинающий
- Статус
- Оффлайн
- Регистрация
- 10 Июл 2025
- Сообщения
- 18
- Реакции
- 0
- Выберите загрузчик игры
- Vanilla
- Прочие моды
Ватермарка в которой можно настраивать что показывать
чтобы можно было настраивать заходим в класс худа
1. под ModeListSetting elements добавляем ModeListSetting с элементами ватермарки
2. Дальше в методе onDisplay под if (mc.gameSettings.showDebugInfo || e.getType() != EventDisplay.Type.POST) return; пишем
3. Указываем настройки в public HUD()
вроде всё, если что-то забыл то пишите
SS :

super mega xyeta:
package im.expensive.ui.hud2.impl;
import com.mojang.blaze3d.matrix.MatrixStack;
import im.expensive.events.EventDisplay;
import im.expensive.events.EventUpdate;
import im.expensive.ui.hud2.ElementRenderer;
import im.expensive.utils.render.ColorUtils;
import im.expensive.utils.render.DisplayUtils;
import im.expensive.utils.render.font.Fonts;
import im.expensive.utils.text.GradientUtil;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.Minecraft;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class WatermarkRenderer implements ElementRenderer {
public boolean showTitle = true;
public boolean showName = true;
public boolean showFps = true;
public boolean showPing = true;
public boolean showTime = true;
private final float fontSize = 8.4f;
private final float padding = 4f;
private final float spacing = 2f;
private final float lineHeight = 18f;
private final float borderRadius = 0.5f;
private final String title = "yougay client";
@Override
public void update(EventUpdate eventUpdate) {
}
@Override
public void render(EventDisplay eventDisplay) {
MatrixStack ms = eventDisplay.getMatrixStack();
Minecraft mc = Minecraft.getInstance();
String playerName = mc.player != null ? " " + mc.player.getName().getString() + " " : " Unknown ";
double fps = mc.getDebugFPS();
double ping = mc.getConnection() != null && mc.player != null ?
mc.getConnection().getPlayerInfo(mc.player.getGameProfile().getId()).getResponseTime() : 0;
LocalTime now = LocalTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
String time = now.format(formatter);
ITextComponent textTitle = GradientUtil.gradient(title);
ITextComponent textPlayer = new StringTextComponent(playerName);
ITextComponent textPing = new StringTextComponent(ping == -1 ? " " + "0 ms " : " " + String.valueOf((int) ping) + " ms ");
ITextComponent textFps = new StringTextComponent(" " + String.valueOf((int) fps) + " FPS ");
ITextComponent textTime = new StringTextComponent(" " + time + " ");
List<ITextComponent> elements = new ArrayList<>();
List<Float> widths = new ArrayList<>();
List<Boolean> isTitleList = new ArrayList<>();
if (showTitle) {
elements.add(textTitle);
widths.add(Fonts.radwave.getWidth(textTitle.getString(), fontSize));
isTitleList.add(true);
}
if (showName) {
elements.add(textPlayer);
widths.add(Fonts.sfui.getWidth(textPlayer.getString(), fontSize));
isTitleList.add(false);}
if (showPing) {
elements.add(textPing);
widths.add(Fonts.sfui.getWidth(textPing.getString(), fontSize));
isTitleList.add(false);}
if (showFps) {
elements.add(textFps);
widths.add(Fonts.sfui.getWidth(textFps.getString(), fontSize));
isTitleList.add(false);}
if (showTime) {
elements.add(textTime);
widths.add(Fonts.sfui.getWidth(textTime.getString(), fontSize));
isTitleList.add(false);}
float totalWidth = padding * 2;
int separatorCount = Math.max(0, elements.size() - 1);
for (float width : widths) {
totalWidth += width;}
totalWidth += separatorCount * (spacing * 2 + Fonts.sfui.getWidth("|", fontSize));
float x = 6f;
float y = 6f;
DisplayUtils.drawShadow(x, y, totalWidth, lineHeight, 8, ColorUtils.rgba(0, 0, 0, 40), ColorUtils.rgba(0, 0, 0, 40));
DisplayUtils.drawRoundedRect(x, y, totalWidth, lineHeight, borderRadius, ColorUtils.rgba(13, 13, 13, 255));
float currentX = x + padding;
float textY = y + (lineHeight - fontSize) / 2f;
for (int i = 0; i < elements.size(); i++) {
ITextComponent element = elements.get(i);
if (isTitleList.get(i)) {Fonts.radwave.drawText(ms, element, currentX, textY + 2, fontSize, ColorUtils.rgba(255, 255, 255, 255));}
else {Fonts.sfui.drawText(ms, element, currentX, textY, fontSize, ColorUtils.rgba(255, 255, 255, 255));}
currentX += widths.get(i);
if (i < elements.size() - 1) {
ITextComponent separator = new StringTextComponent("|");
float separatorWidth = Fonts.sfui.getWidth("|", fontSize);
Fonts.sfui.drawText(ms, separator, currentX + spacing, textY, fontSize, ColorUtils.rgba(255, 255, 255, 255));
currentX += separatorWidth + spacing * 2;
}
}
}
}
чтобы можно было настраивать заходим в класс худа
1. под ModeListSetting elements добавляем ModeListSetting с элементами ватермарки
ModeListSetting:
private final ModeListSetting watermarkElements = new ModeListSetting("Элементы ватермарки",
new BooleanSetting("Название чита", true),
new BooleanSetting("Имя игрока", true),
new BooleanSetting("FPS", true),
new BooleanSetting("Время", true),
new BooleanSetting("Ping", true)
).setVisible(() -> elements.getValueByName("Ватермарка").get());
2. Дальше в методе onDisplay под if (mc.gameSettings.showDebugInfo || e.getType() != EventDisplay.Type.POST) return; пишем
onDisplay:
if (elements.getValueByName("Ватермарка").get()) {
watermarkRenderer.showName = watermarkElements.getValueByName("Имя игрока").get();
watermarkRenderer.showFps = watermarkElements.getValueByName("FPS").get();
watermarkRenderer.showPing = watermarkElements.getValueByName("Ping").get();
watermarkRenderer.showTitle = watermarkElements.getValueByName("Название чита").get();
watermarkRenderer.showTime = watermarkElements.getValueByName("Время").get();
watermarkRenderer.render(e);
}
3. Указываем настройки в public HUD()
public HUD():
addSettings(watermarkElements);
вроде всё, если что-то забыл то пишите
SS :
Пожалуйста, авторизуйтесь для просмотра ссылки.

Последнее редактирование:
спасибо