Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Визуальная часть Waterwark | rich 1.21.11

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
8 Сен 2024
Сообщения
7
Реакции
0
Выберите загрузчик игры
  1. Fabric
мой 1 гпт код, так волнительно
увидел я пост https://yougame.biz/threads/374622/#post-3488597 и решил чуть гпт поработать и вот что получилось
шрифт с kiro делал поэтому сами
ss-
Пожалуйста, авторизуйтесь для просмотра ссылки.

само чудо

Java:
Expand Collapse Copy
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());
}
}
 
мой 1 гпт код, так волнительно
увидел я пост https://yougame.biz/threads/374622/#post-3488597 и решил чуть гпт поработать и вот что получилось
шрифт с kiro делал поэтому сами
ss-
Пожалуйста, авторизуйтесь для просмотра ссылки.

само чудо

Java:
Expand Collapse Copy
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());
}
}
для первой работы мб пойдет
 
Назад
Сверху Снизу