Начинающий
- Статус
- Оффлайн
- Регистрация
- 15 Ноя 2025
- Сообщения
- 47
- Реакции
- 0
- Выберите загрузчик игры
- Fabric
говно:
package sweetie.evaware.client.ui.widget.overlay;
//артем хочет дилдо
import net.minecraft.client.network.PlayerListEntry;
import net.minecraft.client.util.math.MatrixStack;
import sweetie.evaware.api.system.backend.ClientInfo;
import sweetie.evaware.api.utils.math.MathUtil;
import sweetie.evaware.api.utils.color.UIColors;
import sweetie.evaware.api.utils.render.RenderUtil;
import sweetie.evaware.api.utils.render.fonts.Font;
import sweetie.evaware.client.ui.widget.Widget;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
public class WatermarkWidget extends Widget {
private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm:ss");
@Override
public String getName() {
return "Watermark";
}
public WatermarkWidget() {
super(3f, 3f);
}
@Override
public void render(MatrixStack matrixStack) {
float x = getDraggable().getX();
float y = getDraggable().getY();
float rowHeight = scaled(14.5f);
float betweenRows = scaled(2f);
float radius = scaled(3.5f);
float totalHeight = rowHeight * 2f + betweenRows;
boolean right = x > mc.getWindow().getScaledWidth() / 2f;
List<String> topRow = new ArrayList<>();
topRow.add(getClientName() + getClientVersion());
topRow.add(getFps() + " FPS");
topRow.add(LocalTime.now().format(TIME_FORMATTER));
List<String> bottomRow = new ArrayList<>();
bottomRow.add(getCoords());
bottomRow.add(getPing() + " MS");
bottomRow.add(String.format("%.1f", getBps()) + " BPS");
float topWidth = calcRowWidth(topRow, rowHeight);
float bottomWidth = calcRowWidth(bottomRow, rowHeight);
float maxWidth = Math.max(topWidth, bottomWidth);
float topY = y;
float bottomY = y + rowHeight + betweenRows;
float topX = right ? x + maxWidth - topWidth : x;
float bottomX = right ? x + maxWidth - bottomWidth : x;
drawRow(matrixStack, topRow, topX, topY, rowHeight, radius);
drawRow(matrixStack, bottomRow, bottomX, bottomY, rowHeight, radius);
getDraggable().setWidth(maxWidth);
getDraggable().setHeight(totalHeight);
}
private void drawRow(MatrixStack matrixStack, List<String> segments, float x, float y, float rowHeight, float radius) {
float currentX = x;
for (String segment : segments) {
boolean watermark = segment.startsWith(ClientInfo.NAME);
Font font = watermark ? getSemiBoldFont() : getMediumFont();
float fontSize = scaled(7f);
float contentWidth = font.getWidth(segment, fontSize);
float paddingX = scaled(5f);
float segWidth = contentWidth + paddingX * 2f;
RenderUtil.BLUR_RECT.draw(matrixStack, currentX, y, segWidth, rowHeight, radius, UIColors.widgetBlur());
float textY = y + rowHeight / 2f - fontSize / 2f;
float textX = currentX + paddingX;
if (watermark) {
String name = getClientName();
String version = getClientVersion();
float nameWidth = font.getWidth(name, fontSize);
font.drawGradientText(matrixStack, name, textX, textY, fontSize, UIColors.primary(), UIColors.secondary(), nameWidth / 4f);
font.drawText(matrixStack, version, textX + nameWidth, textY, fontSize, UIColors.inactiveTextColor());
} else {
font.drawText(matrixStack, segment, textX, textY, fontSize, UIColors.textColor());
}
currentX += segWidth + scaled(2f);
}
}
private float calcRowWidth(List<String> segments, float rowHeight) {
float width = 0f;
float fontSize = scaled(7f);
for (int i = 0; i < segments.size(); i++) {
String segment = segments.get(i);
Font font = segment.startsWith(ClientInfo.NAME) ? getSemiBoldFont() : getMediumFont();
width += font.getWidth(segment, fontSize) + scaled(10f);
if (i < segments.size() - 1) width += scaled(2f);
}
return Math.max(width, rowHeight * 2f);
}
private String getClientVersion() {
return " " + ClientInfo.VERSION;
}
private String getClientName() {
return ClientInfo.NAME;
}
private int getFps() {
return mc.getCurrentFps();
}
private String getCoords() {
if (mc.player == null) return "0, 0, 0";
return (int) mc.player.getX() + ", " + (int) mc.player.getY() + ", " + (int) mc.player.getZ();
}
private int getPing() {
if (mc.player == null || mc.getNetworkHandler() == null) return 0;
PlayerListEntry entry = mc.getNetworkHandler().getPlayerListEntry(mc.player.getUuid());
return entry != null ? entry.getLatency() : 0;
}
private double getBps() {
if (mc.player == null) return 0;
return MathUtil.getEntityBPS(mc.player);
}
}
я знаю что пиздец убого но как по мне вроде норм, иконок добавить и все какбудто .
можете меня срать разрешаю :)