Начинающий
- Статус
- Оффлайн
- Регистрация
- 8 Сен 2024
- Сообщения
- 7
- Реакции
- 0
- Выберите загрузчик игры
- Fabric
мой 1 гпт код, так волнительно
увидел я пост https://yougame.biz/threads/374622/#post-3488597 и решил чуть гпт поработать и вот что получилось
шрифт с kiro делал поэтому сами
ss-
само чудо
увидел я пост https://yougame.biz/threads/374622/#post-3488597 и решил чуть гпт поработать и вот что получилось
шрифт с kiro делал поэтому сами
ss-
Пожалуйста, авторизуйтесь для просмотра ссылки.
само чудо
Java:
package rich.screens.hud
import net.minecraft.client.gui.DrawContext;
import rich.client.draggables.AbstractHudElement;
import rich.util.render.Render2D;
import rich.util.render.font.Fonts;
import java.awt.*;
public class Watermark extends AbstractHudElement {
// Цвета
private static final Color BG = new Color(28, 28, 32, 220);
private static final Color ACCENT = new Color(155, 130, 210, 255); // фиолетовый
private static final Color WHITE = new Color(255, 255, 255, 255);
private static final Color DIVIDER = new Color(60, 60, 70, 200);
public Watermark() {
super("Watermark", 20, 5, 300, 22, true);
// Начальная позиция по центру сверху — пересчитается при первом рендере
startAnimation();
}
private boolean positionInitialized = false;
private void initPosition(float totalWidth) {
if (!positionInitialized) {
setX((int) ((mc.getWindow().getScaledWidth() - totalWidth) / 2f));
positionInitialized = true;
}
}
[USER=1367676]@override[/USER]
public void tick() {}
[USER=1367676]@override[/USER]
public void drawDraggable(DrawContext context, int alpha) {
if (alpha <= 0) return;
float fontSize = 7f;
float iconSize = 9f;
float height = 22f;
float pad = 8f; // отступ по краям блока
float gap = 5f; // отступ между иконкой и текстом
float divW = 1f; // ширина разделителя
float divGap = 6f; // отступ вокруг разделителя
float blockGap = 3f; // расстояние между блоком 1 и блоком 2
// ===== ДАННЫЕ =====
String username = mc.getSession().getUsername();
String fpsText = mc.getCurrentFps() + "fps";
String msText = "0ms";
if (mc.getCurrentServerEntry() != null)
msText = mc.getCurrentServerEntry().ping + "ms";
// ===== ИКОНКИ =====
String userIcon = "n"; // Fonts.ICONSTYPETHO — фигура/юзер
String fpsIcon = "D"; // Fonts.ICONS — стопки/слои
String msIcon = "U"; // Fonts.ICONS — пинг/сигнал
// ===== ШИРИНЫ =====
float eyeW = Fonts.GUI_ICONS.getWidth("D", iconSize);
float blumeW = Fonts.BOLD.getWidth("RICH", fontSize);
float block1W = pad + eyeW + gap + blumeW + pad;
float userW = Fonts.ICONSTYPETHO.getWidth(userIcon, iconSize);
float nameW = Fonts.BOLD.getWidth(username, fontSize);
float fpsIconW = Fonts.ICONS.getWidth(fpsIcon, iconSize);
float fpsW = Fonts.BOLD.getWidth(fpsText, fontSize);
float msIconW = Fonts.ICONS.getWidth(msIcon, iconSize);
float msW = Fonts.BOLD.getWidth(msText, fontSize);
// Блок 2: [userIcon gap name] [div] [fpsIcon gap fps] [div] [msIcon gap ms]
float block2W = pad
+ userW + gap + nameW
+ divGap + divW + divGap
+ fpsIconW + gap + fpsW
+ divGap + divW + divGap
+ msIconW + gap + msW
+ pad;
float totalWidth = block1W + blockGap + block2W;
setWidth((int) totalWidth);
setHeight((int) height);
initPosition(totalWidth);
float x = getX();
float y = getY();
float textY = y + (height - Fonts.BOLD.getHeight(fontSize)) / 2f;
float iconY = y + (height - Fonts.ICONS.getHeight(iconSize)) / 2f;
float iconYtho = y + (height - Fonts.ICONSTYPETHO.getHeight(iconSize)) / 2f;
// ===== БЛОК 1: RICH =====
Render2D.rect(x, y, block1W, height, BG.getRGB(), 8);
float cx = x + pad;
// Иконка глаза из шрифта ICONS символ "E" (unicode 69)
Fonts.GUI_ICONS.draw("D", cx, iconY, iconSize, ACCENT.getRGB());
cx += eyeW + gap;
Fonts.BOLD.draw("RICH", cx, textY, fontSize, ACCENT.getRGB());
// ===== БЛОК 2: ник | fps | ms =====
float bx = x + block1W + blockGap;
Render2D.rect(bx, y, block2W, height, BG.getRGB(), 8);
cx = bx + pad;
// Ник
Fonts.ICONSTYPETHO.draw(userIcon, cx, iconYtho, iconSize, ACCENT.getRGB());
cx += userW + gap;
Fonts.BOLD.draw(username, cx, textY, fontSize, WHITE.getRGB());
cx += nameW;
// Разделитель
cx += divGap;
Render2D.rect(cx, y + 4, divW, height - 8, DIVIDER.getRGB(), 0);
cx += divW + divGap;
// FPS
Fonts.ICONS.draw(fpsIcon, cx, iconY, iconSize, ACCENT.getRGB());
cx += fpsIconW + gap;
Fonts.BOLD.draw(fpsText, cx, textY, fontSize, WHITE.getRGB());
cx += fpsW;
// Разделитель
cx += divGap;
Render2D.rect(cx, y + 4, divW, height - 8, DIVIDER.getRGB(), 0);
cx += divW + divGap;
// MS
Fonts.ICONS.draw(msIcon, cx, iconY, iconSize, ACCENT.getRGB());
cx += msIconW + gap;
Fonts.BOLD.draw(msText, cx, textY, fontSize, WHITE.getRGB());
}
}