Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Визуальная часть Watermark 3.1 (50/50)

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
10 Июл 2025
Сообщения
18
Реакции
0
Выберите загрузчик игры
  1. Vanilla
  2. Прочие моды
Ватермарка в которой можно настраивать что показывать

super mega xyeta:
Expand Collapse Copy
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:
Expand Collapse Copy
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:
Expand Collapse Copy
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():
Expand Collapse Copy
addSettings(watermarkElements);


вроде всё, если что-то забыл то пишите
SS :
1760899948577.png
1760899952571.png

Пожалуйста, авторизуйтесь для просмотра ссылки.


:roflanBuldiga:
 
Последнее редактирование:
Ватермарка в которой можно настраивать что показывать

super mega xyeta:
Expand Collapse Copy
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:
Expand Collapse Copy
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:
Expand Collapse Copy
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():
Expand Collapse Copy
addSettings(watermarkElements);


вроде всё, если что-то забыл то пишите
SS :
Посмотреть вложение 317917Посмотреть вложение 317918
Пожалуйста, авторизуйтесь для просмотра ссылки.


:roflanBuldiga:
не а чо прикольной квадратный ватермарк Выглядит ахуено, и как-то будто я такого ещё не видел, шрифт пиздатый
 
Ватермарка в которой можно настраивать что показывать

super mega xyeta:
Expand Collapse Copy
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:
Expand Collapse Copy
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:
Expand Collapse Copy
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():
Expand Collapse Copy
addSettings(watermarkElements);


вроде всё, если что-то забыл то пишите
SS :
Посмотреть вложение 317917Посмотреть вложение 317918
Пожалуйста, авторизуйтесь для просмотра ссылки.


:roflanBuldiga:
шрифт название клиента пиздатое а так сама ватермарка слишком устаревшая тема
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
говно не заливай ниче
 
Ватермарка в которой можно настраивать что показывать

super mega xyeta:
Expand Collapse Copy
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:
Expand Collapse Copy
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:
Expand Collapse Copy
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():
Expand Collapse Copy
addSettings(watermarkElements);


вроде всё, если что-то забыл то пишите
SS :
Посмотреть вложение 317917Посмотреть вложение 317918
Пожалуйста, авторизуйтесь для просмотра ссылки.


:roflanBuldiga:
Арбуз завидует, я бы сказал не 50/50, а 75/25(круто)
 
Ватермарка в которой можно настраивать что показывать

super mega xyeta:
Expand Collapse Copy
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:
Expand Collapse Copy
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:
Expand Collapse Copy
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():
Expand Collapse Copy
addSettings(watermarkElements);


вроде всё, если что-то забыл то пишите
SS :
Посмотреть вложение 317917Посмотреть вложение 317918
Пожалуйста, авторизуйтесь для просмотра ссылки.


:roflanBuldiga:
ебать крута
 
Назад
Сверху Снизу