Начинающий
- Статус
- Оффлайн
- Регистрация
- 7 Мар 2025
- Сообщения
- 97
- Реакции
- 2
- Выберите загрузчик игры
- Vanilla
вообще похоже но не похоже короче говно ну хз
SS -
Code -
SS -
Code -
сарделька:
package dev.sk3d.display.hud;
import dev.sk3d.features.impl.render.Hud;
import dev.sk3d.utils.display.render.geometry.Render2D;
import dev.sk3d.utils.display.render.post.KawaseBlur;
import dev.sk3d.utils.theme.ThemeManager;
import com.google.common.base.Suppliers;
import dev.sk3d.utils.client.managers.api.draggable.AbstractDraggable;
import dev.sk3d.utils.display.atlasfont.msdf.MsdfFont;
import dev.sk3d.utils.display.render.shape.ShapeProperties;
import dev.sk3d.utils.display.render.systemrender.builders.Builder;
import dev.sk3d.utils.display.color.ColorAssist;
import dev.sk3d.utils.display.render.font.FontRenderer;
import dev.sk3d.utils.display.render.font.Fonts;
import dev.sk3d.utils.display.scissor.ScissorAssist;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.util.math.MatrixStack;
import org.joml.Matrix4f;
import org.joml.Vector4f;
import java.awt.Color;
import java.util.function.Supplier;
public class Watermark extends AbstractDraggable {
private int fpsCount = 0;
private static final Supplier<MsdfFont> ICONS_FONT = Suppliers.memoize(() -> MsdfFont.builder().atlas("icons").data("icons").build());
private static final Supplier<MsdfFont> ICONS_FONT_1 = Suppliers.memoize(() -> MsdfFont.builder().atlas("clienticon1").data("clienticon1").build());
private static final Supplier<MsdfFont> BOLD_FONT = Suppliers.memoize(() -> MsdfFont.builder().atlas("medium").data("medium").build());
private static final Supplier<MsdfFont> ICONS = Suppliers.memoize(() -> MsdfFont.builder().atlas("medium").data("medium").build());
private static final Supplier<MsdfFont> HAWEN_FONT = Suppliers.memoize(() -> MsdfFont.builder().atlas("hawen").data("hawen").build());
private static final Supplier<MsdfFont> LITKA_FONT = Suppliers.memoize(() -> MsdfFont.builder().atlas("litkaicons").data("litkaicons").build());
private static final Supplier<MsdfFont> MEDIUM_FONT = Suppliers.memoize(() -> MsdfFont.builder().atlas("suisseintlmedium").data("suisseintlmedium").build());
private static final Supplier<MsdfFont> REGULAR_FONT = Suppliers.memoize(() -> MsdfFont.builder().atlas("suisseintlregular").data("suisseintlregular").build());
public Watermark() {
super("Watermark", 10, 10, 92, 16, true);
}
@Override
public void tick() {
fpsCount = mc.getCurrentFps();
}
@Override
public void drawDraggable(DrawContext e) {
MatrixStack matrix = e.getMatrices();
Matrix4f matrix4f = matrix.peek().getPositionMatrix();
String username = mc.player != null ? mc.player.getName().getString() : "Player";
String fpsNumber = String.valueOf(fpsCount);
String fpsLabel = "fps";
java.time.LocalTime currentTime = java.time.LocalTime.now();
String timeText = String.format("%02d:%02d", currentTime.getHour(), currentTime.getMinute());
String pingNumber = "1337";
String userIcon = "A";
String fpsIcon = "E";
String timeIcon = "C";
String pingIcon = "H";
float iconSizeSmall = 14f;
float iconSizeLarge = 14f;
float textSize = 6.5f;
float innerPadding = 6f;
float gap = 1f;
float panelHeight = 22f;
float innerBlockHeight = 16f;
float outerPadding = 2f;
float blockSpacing = 3f;
float logoSpacing = 1f;
float endPadding = 5f;
FontRenderer kefirebalFontSmall = Fonts.getSize((int)iconSizeSmall, Fonts.Type.KEFIREBAL);
FontRenderer kefirebalFontLarge = Fonts.getSize((int)iconSizeLarge, Fonts.Type.KEFIREBAL);
float iconWidthSmall = kefirebalFontSmall.getStringWidth(userIcon);
float iconWidthLarge = kefirebalFontLarge.getStringWidth(timeIcon);
float usernameWidth = MEDIUM_FONT.get().getWidth(username, textSize);
float fpsNumberWidth = MEDIUM_FONT.get().getWidth(fpsNumber, textSize);
float fpsLabelWidth = MEDIUM_FONT.get().getWidth(fpsLabel, textSize);
float fpsWidth = fpsNumberWidth + fpsLabelWidth;
float timeWidth = MEDIUM_FONT.get().getWidth(timeText, textSize);
float pingWidth = MEDIUM_FONT.get().getWidth(pingNumber, textSize);
float logoBlockWidth = 22f;
float usernameBlockWidth = iconWidthSmall + gap + usernameWidth + innerPadding * 2;
float fpsBlockWidth = iconWidthSmall + gap + fpsWidth + innerPadding * 2;
float timeBlockWidth = iconWidthLarge + gap + timeWidth + innerPadding * 2;
float pingBlockWidth = iconWidthLarge + gap + pingWidth + innerPadding * 2;
float totalWidth = outerPadding * 2 + logoBlockWidth + logoSpacing + usernameBlockWidth + blockSpacing + fpsBlockWidth + blockSpacing + timeBlockWidth + blockSpacing + pingBlockWidth + endPadding;
setWidth((int) totalWidth);
setHeight((int) panelHeight);
float panelX = getX();
float panelY = getY();
if (Hud.blur.isValue()) {
Render2D.rectangleWithMask(matrix4f, panelX, panelY, totalWidth, panelHeight, 7f, 0, KawaseBlur.INSTANCE.fbos.getFirst().getColorAttachment());
}
rectangle.render(ShapeProperties.create(matrix, panelX, panelY, totalWidth, panelHeight)
.round(8f)
.softness(1)
.color(ThemeManager.BackgroundGui.getColor())
.build());
float currentX = panelX + outerPadding;
float blockY = panelY + (panelHeight - innerBlockHeight) / 2f;
float logoWidth = 18f;
float logoHeight = 16f;
float logoX = currentX + (logoBlockWidth - logoWidth) / 2f;
float logoY = blockY + (innerBlockHeight - logoHeight) / 2f;
int gradientColor1 = ColorAssist.getClientColor();
int gradientColor2 = ColorAssist.getClientColor2();
rectangle.render(ShapeProperties.create(matrix, logoX, logoY, logoWidth, logoHeight)
.round(3f)
.color(gradientColor1, gradientColor2, gradientColor1, gradientColor2)
.build());
float iconLogoSize = 35f;
FontRenderer windaezkaFont = Fonts.getSize((int)iconLogoSize, Fonts.Type.WINDAEZKA1);
String logoText = "A";
float iconLogoWidth = windaezkaFont.getStringWidth(logoText);
float iconLogoX = logoX + (logoWidth - iconLogoWidth) / 2f + 1f;
float iconLogoY = logoY + (logoHeight - iconLogoSize) / 2f + 14f;
windaezkaFont.drawString(matrix, logoText, iconLogoX, iconLogoY, -1);
currentX += logoBlockWidth + logoSpacing;
float textBaselineHeight = HAWEN_FONT.get().getMetrics().baselineHeight();
float contentY = blockY + (innerBlockHeight / 2f) - (textBaselineHeight * textSize / 2f) - 0.5f;
float iconY = contentY + 3f;
rectangle.render(ShapeProperties.create(matrix, currentX, blockY, usernameBlockWidth, innerBlockHeight)
.round(3f)
.softness(1)
.color(ThemeManager.BackgroundSettings.getColor())
.build());
float iconX = currentX + innerPadding;
FontRenderer kefirebalIconFontSmall = Fonts.getSize((int)iconSizeSmall, Fonts.Type.KEFIREBAL);
kefirebalIconFontSmall.drawString(matrix, userIcon, iconX, iconY, ColorAssist.getClientColor());
try {
Builder.text()
.font(MEDIUM_FONT.get())
.text(username)
.size(textSize)
.color(ThemeManager.textColor.getColor())
.build()
.render(matrix4f, iconX + iconWidthSmall + gap, contentY);
} catch (Exception ignored) {}
currentX += usernameBlockWidth + blockSpacing;
rectangle.render(ShapeProperties.create(matrix, currentX, blockY, fpsBlockWidth, innerBlockHeight)
.round(3f)
.softness(1)
.color(ThemeManager.BackgroundSettings.getColor())
.build());
iconX = currentX + innerPadding;
kefirebalIconFontSmall.drawString(matrix, fpsIcon, iconX, iconY, ColorAssist.getClientColor());
try {
Builder.text()
.font(MEDIUM_FONT.get())
.text(fpsNumber)
.size(textSize)
.color(ThemeManager.textColor.getColor())
.build()
.render(matrix4f, iconX + iconWidthSmall + gap, contentY);
} catch (Exception ignored) {}
try {
Builder.text()
.font(MEDIUM_FONT.get())
.text(fpsLabel)
.size(textSize)
.rainbow(true).rainbowColors(ColorAssist.getClientColor(), ColorAssist.getClientColor2())
.build()
.render(matrix4f, iconX + iconWidthSmall + gap + fpsNumberWidth, contentY);
} catch (Exception ignored) {}
currentX += fpsBlockWidth + blockSpacing;
rectangle.render(ShapeProperties.create(matrix, currentX, blockY, timeBlockWidth, innerBlockHeight)
.round(3f)
.softness(1)
.color(ThemeManager.BackgroundSettings.getColor())
.build());
iconX = currentX + innerPadding;
FontRenderer kefirebalIconFontLarge = Fonts.getSize((int)iconSizeLarge, Fonts.Type.KEFIREBAL);
kefirebalIconFontLarge.drawString(matrix, timeIcon, iconX, iconY, ColorAssist.getClientColor());
try {
Builder.text()
.font(MEDIUM_FONT.get())
.text(timeText)
.size(textSize)
.color(ThemeManager.textColor.getColor())
.build()
.render(matrix4f, iconX + iconWidthLarge + gap, contentY);
} catch (Exception ignored) {}
currentX += timeBlockWidth + blockSpacing;
rectangle.render(ShapeProperties.create(matrix, currentX, blockY, pingBlockWidth, innerBlockHeight)
.round(3f)
.softness(1)
.color(ThemeManager.BackgroundSettings.getColor())
.build());
iconX = currentX + innerPadding;
kefirebalIconFontLarge.drawString(matrix, pingIcon, iconX, iconY, ColorAssist.getClientColor());
try {
Builder.text()
.font(MEDIUM_FONT.get())
.text(pingNumber)
.size(textSize)
.color(ThemeManager.textColor.getColor())
.build()
.render(matrix4f, iconX + iconWidthLarge + gap, contentY);
} catch (Exception ignored) {}
}
}