• Я зарабатываю 100 000 RUB / месяц на этом сайте!

    А знаешь как? Я всего-лишь публикую (создаю темы), а админ мне платит. Трачу деньги на мороженое, робуксы и сервера в Minecraft. А ещё на паль из Китая. 

    Хочешь так же? Пиши и узнавай условия: https://t.me/alex_redact
    Реклама: https://t.me/yougame_official

Визуальная часть Skid catlavan hud I EXP 2.0

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
20 Мар 2024
Сообщения
16
Реакции
0
Выберите загрузчик игры
  1. Прочие моды
Сделал по скольку понравился тх а так хз зачем это нужно и я знаю уже была тема с худом катлавана но
он там старый + баги с кейбиндами которые я пофиксил и переделал тх + вт (ожидаю уже что напишут слил говно, без хейта пж)

взял под основу эту тему
мне лень самому делать

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

вот это в RenderUtil

drawRoundFace:
Expand Collapse Copy
public static void drawRoundFace(float x, float y, float width, float height, float radius, float alpha, AbstractClientPlayerEntity target) {
            try {
                ResourceLocation skin = target.getLocationSkin();
                mc.getTextureManager().bindTexture(skin);
                // Вычисляем процент повреждения
                float hurtPercent = getHurtPercent(target);

                RenderSystem.pushMatrix();
                RenderSystem.enableBlend();
                RenderSystem.blendFunc(770, 771);
                // Подключаем шейдер для округлой головы
                ShaderUtil.FACE_ROUND.attach();

                // Передаем данные в шейдер
                ShaderUtil.FACE_ROUND.setUniform("location", x * 2, sr.getHeight() - height * 2 - y * 2);
                ShaderUtil.FACE_ROUND.setUniform("size", width * 2, height * 2);
                ShaderUtil.FACE_ROUND.setUniform("texture", 0);
                ShaderUtil.FACE_ROUND.setUniform("radius", radius * 2);
                ShaderUtil.FACE_ROUND.setUniform("alpha", alpha);
                ShaderUtil.FACE_ROUND.setUniform("hurtPercent", hurtPercent);  // Передаем процент повреждений в шейдер
                ShaderUtil.FACE_ROUND.setUniform("u", (1f / 64) * 8);
                ShaderUtil.FACE_ROUND.setUniform("v", (1f / 64) * 8);
                ShaderUtil.FACE_ROUND.setUniform("w", 1f / 8);
                ShaderUtil.FACE_ROUND.setUniform("h", 1f / 8);


                quadsBegin(x, y, width, height, 7);

                // Отключаем шейдер
                ShaderUtil.FACE_ROUND.detach();

                RenderSystem.disableBlend();
                RenderSystem.popMatrix();
            } catch(Exception e){
                e.printStackTrace();
            }
        }

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


Сам худ
HUD2:
Expand Collapse Copy
package wtf.expensive.modules.impl.render;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import net.minecraft.client.MainWindow;
import net.minecraft.client.entity.player.AbstractClientPlayerEntity;
import net.minecraft.client.gui.DisplayEffectsScreen;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.client.network.play.NetworkPlayerInfo;
import net.minecraft.client.renderer.texture.PotionSpriteUploader;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.AirItem;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.potion.Effect;
import net.minecraft.potion.EffectInstance;
import net.minecraft.potion.EffectUtils;
import net.minecraft.scoreboard.ScorePlayerTeam;
import net.minecraft.scoreboard.Team;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector4f;
import net.minecraft.util.text.ITextComponent;
import org.joml.Vector4i;
import wtf.expensive.Initilization;
import wtf.expensive.events.Event;
import wtf.expensive.events.impl.player.EventUpdate;
import wtf.expensive.events.impl.render.EventRender;
import wtf.expensive.managment.Managment;
import wtf.expensive.modules.Function;
import wtf.expensive.modules.FunctionAnnotation;
import wtf.expensive.modules.FunctionManager;
import wtf.expensive.modules.Type;
import wtf.expensive.modules.settings.imp.BooleanOption;
import wtf.expensive.modules.settings.imp.MultiBoxSetting;
import wtf.expensive.modules.settings.imp.SliderSetting;
import wtf.expensive.util.BetterText;
import wtf.expensive.util.ClientUtil;
import wtf.expensive.util.IMinecraft;
import wtf.expensive.util.animations.Animation;
import wtf.expensive.util.animations.Direction;
import wtf.expensive.util.animations.impl.EaseBackIn;
import wtf.expensive.util.drag.Dragging;
import wtf.expensive.util.font.Fonts;
import wtf.expensive.util.font.styled.StyledFont;
import wtf.expensive.util.math.MathUtil;
import wtf.expensive.util.misc.HudUtil;
import wtf.expensive.util.render.BloomHelper;
import wtf.expensive.util.render.ColorUtil;
import wtf.expensive.util.render.RenderUtil;
import wtf.expensive.util.render.animation.AnimationMath;

import java.awt.*;
import java.util.*;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
import java.util.regex.Pattern;

import static wtf.expensive.util.render.RenderUtil.Render2D.drawFace;

@FunctionAnnotation(name="Hud", type=Type.Render)
public class HUD2
        extends Function {
    public static MultiBoxSetting elements = new MultiBoxSetting("Elements",
            new BooleanOption("Active Target", true),
            new BooleanOption("Logo", true),
            new BooleanOption("Coordinates", true),
            new BooleanOption("Speed", true),
            new BooleanOption("Effects", true),
            new BooleanOption("Active Binds", true),
            new BooleanOption("Active Staff", true),
            new BooleanOption("Armor", true),
            new BooleanOption("Cooldown", true));
    public BooleanOption hp = new BooleanOption("Хп под тему", false);

    private final SliderSetting offsetEffects = new SliderSetting("\u0420\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432", 24.0f, 23.0f, 26.0f, 0.1f).setVisible(() -> elements.get(5));
    final Dragging TargetHUD = Initilization.createDrag(this, "TargetHUD7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Logo = Initilization.createDrag(this, "Logo7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Coords = Initilization.createDrag(this, "Coords7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging BPS = Initilization.createDrag(this, "BPS7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Effects = Initilization.createDrag(this, "Effects7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging KeyBinds = Initilization.createDrag(this, "KeyBinds7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging StaffActive = Initilization.createDrag(this, "StaffActive7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Cooldown = Initilization.createDrag(this, "Cooldown7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    int activeStaff = 0;
    private final Pattern namePattern = Pattern.compile("^\\w{3,16}$");
    int activeBind = 0;
    float heightAnimation = 0.0f;
    private float perc;
    private final Animation targetHudAnimation = new EaseBackIn(270, 1.0, 1.5f);
    private double scale = 0.0;
    private LivingEntity target = null;
    float health = 0.0f;
    float absorpation = 0.0f;

    public HUD2() {
        this.addSettings(elements,hp, this.offsetEffects);
    }

    [USER=1367676]@override[/USER]
    public void onEvent(Event event) {
        if (event instanceof EventRender) {
            EventRender eventRender = (EventRender)event;
            MatrixStack stack = eventRender.matrixStack;
            if (elements.get(0)) {
                this.TargetHUD(stack);
            }
            if (elements.get(2)) {
                this.Logo(stack);
            }
            if (elements.get(3)) {
                this.Coords(stack);
            }
            if (elements.get(4)) {
                this.BPS(stack);
            }
            if (elements.get(5)) {
                this.Effects(stack);
            }
            if (elements.get(6)) {
                this.KeyBinds(stack);
            }
            if (elements.get(7)) {
                this.StaffActive(stack);
            }
            if (elements.get(8)) {
                this.ArmorHUD(stack, eventRender);
            }
        }
    }

    public void ArmorHUD(MatrixStack stack, EventRender eventRender) {
        int off;
        int count = 0;
        for (int i = 0; i < HUD2.mc.player.inventory.getSizeInventory(); ++i) {
            ItemStack s = HUD2.mc.player.inventory.getStackInSlot(i);
            if (s.getItem() != Items.TOTEM_OF_UNDYING) continue;
            ++count;
        }
        float xPos = (float)eventRender.scaledResolution.scaledWidth() / 2.0f;
        float yPos = eventRender.scaledResolution.scaledHeight();
        boolean totemInInv = HUD2.mc.player.inventory.mainInventory.stream().map(ItemStack::getItem).toList().contains(Items.TOTEM_OF_UNDYING);
        int n = off = totemInInv ? 5 : 0;
        if (HUD2.mc.player.isCreative()) {
            yPos += 17.0f;
        }
        for (ItemStack s : HUD2.mc.player.inventory.armorInventory) {
            ESPFunction.drawItemStack(s, xPos - (float)off + 74.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), yPos - 56.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), null, false);
            off += 15;
        }
        if (totemInInv) {
            ESPFunction.drawItemStack(new ItemStack(Items.TOTEM_OF_UNDYING), xPos - (float)off + 73.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), yPos - 56.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), String.valueOf(count), false);
        }
    }

    public void StaffActive(MatrixStack stack) {
        float x = this.StaffActive.getX();
        float y = this.StaffActive.getY();
        float offset = 9.0f;
        float height2 = 20.5f;
        float width2 = 100.0f;
        height2 += offset * (float)this.activeStaff - 4.0f;
        float xStaff = x + 26.0f;
        if (this.activeStaff == 0) {
            height2 -= 1.5f;
            width2 -= 25.0f;
            xStaff -= 12.5f;
        }
        RenderUtil.Render2D.drawRoundedCorner(x, y, width2, height2, 3, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Staff Active", (double)xStaff, (double)(y + 6.0f), new Color(255, 255, 255, 255).getRGB());
        int i = 0;
        for (ScorePlayerTeam team : HUD2.mc.world.getScoreboard().getTeams().stream().sorted(Comparator.comparing(Team::getName)).toList()) {
            String name = team.getMembershipCollection().toString();
            if (!this.namePattern.matcher(name = name.substring(1, name.length() - 1)).matches()) continue;
            boolean vanish = true;
            boolean near = false;
            boolean active = false;
            for (AbstractClientPlayerEntity player : HUD2.mc.world.getPlayers()) {
                if (!player.getNameClear().equals(name)) continue;
                near = true;
            }
            for (NetworkPlayerInfo info : mc.getConnection().getPlayerInfoMap()) {
                if (!info.getGameProfile().getName().equals(name)) continue;
                vanish = false;
                if (near) continue;
                active = true;
            }
            if (!vanish && !Managment.STAFF_MANAGER.isStaff(name)) continue;
            String Name2 = name.substring(0, Math.min(name.length(), 10));
            StyledFont small = Fonts.msSemiBold[13];
            StyledFont small2 = Fonts.msSemiBold[14];
            float yText = y + 17.0f;
            small2.drawString(stack, Name2, (double)(x + 4.0f), (double)yText, new Color(255, 255, 255, 255).getRGB());
            if (vanish) {
                small.drawString(stack, "Спектатор", (double)(x + 63.5f), (double)yText, new Color(255, 0, 0, 255).getRGB());
            } else if (active) {
                small.drawString(stack, "Активен", (double)(x + 74f), (double)yText, new Color(4, 255, 0, 255).getRGB());
            } else if (near) {
                small.drawString(stack, "Рядом", (double)(x + 80.8f), (double)yText, new Color(255, 136, 0, 255).getRGB());
            }
            y += offset;
            ++i;
        }
        this.activeStaff = i;
        this.StaffActive.setWidth(width2);
        this.StaffActive.setHeight(height2);
    }

    public void KeyBinds(MatrixStack stack) {
        float x = this.KeyBinds.getX();
        float y = this.KeyBinds.getY();
        float offset = 9.5f;
        float height2 = 21.0f;
        float width2 = 75.0f;
        height2 += offset * (float)this.activeBind - 5.0f;
        if (this.activeBind == 0) {
            height2 -= 1.0f;
        }
        RenderUtil.Render2D.drawRoundedCorner(x, y, width2, this.heightAnimation, 3, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Key Binds", (x + 18.0f), (y + 6.0f), new Color(255, 255, 255, 255).getRGB());
        int i = 0;
        for (Function f : Managment.FUNCTION_MANAGER.getFunctions()) {
            String text;
            if (f.bind == 0 || !f.state || (text = ClientUtil.getKey(f.bind)) == null) continue;
            StyledFont small = Fonts.msSemiBold[13];
            String sss = f.name;
            String fname = sss.substring(0, Math.min(sss.length(), 13));;
            String bindText = text.toUpperCase();
            float yText = y + 17.0f;
            RenderUtil.SmartScissor.push();
            RenderUtil.SmartScissor.setFromComponentCoordinates(x, y, width2, this.heightAnimation);
            small.drawString(stack, fname, (x + 4.0f), yText, new Color(255, 255, 255, 255).getRGB());
            small.drawString(stack, "[" + bindText + "]", (x + 62.0f), yText, new Color(255, 255, 255, 255).getRGB());
            RenderUtil.SmartScissor.unset();
            RenderUtil.SmartScissor.pop();
            y += offset;
            ++i;
        }
        this.heightAnimation = AnimationMath.fast(this.heightAnimation, height2, 11.0f);
        this.activeBind = i;
        this.KeyBinds.setWidth(width2);
        this.KeyBinds.setHeight(height2);
    }

    public void Effects(MatrixStack stack) {
        float x = 3;
        float y = 270;
        float offset = this.offsetEffects.getValue().floatValue();
        float height2 = 21.3f;
        StyledFont small = Fonts.msSemiBold[13];
        int counterEffect = 0;
        for (EffectInstance effectInstance : HUD2.mc.player.getActivePotionEffects()) {
            String levelpotion = String.valueOf(effectInstance.getAmplifier() + 1);
            float textWidthBonus = 27.3f;
            if (levelpotion.contains("1")) {
                levelpotion = "";
                textWidthBonus -= 5.0f;
            }
            String durationText = EffectUtils.getPotionDurationString(effectInstance, 1.0f);
            String text = I18n.format(effectInstance.getEffectName(), new Object[0]);
            float textWidth = small.getWidth(text + effectInstance.getAmplifier() + levelpotion) + textWidthBonus - 0.6f;
            RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
            small.drawString(stack, text + " " + levelpotion, (double)(x + 22.3f), (double)(y + 5.5f), new Color(255, 255, 255, 255).getRGB());
            small.drawString(stack, durationText, (double)(x + 22.3f), (double)(y + 13.5f), new Color(255, 255, 255, 255).getRGB());
            PotionSpriteUploader potionspriteuploader = mc.getPotionSpriteUploader();
            Effect effect = effectInstance.getPotion();
            TextureAtlasSprite textureatlassprite = potionspriteuploader.getSprite(effect);
            mc.getTextureManager().bindTexture(textureatlassprite.getAtlasTexture().getTextureLocation());
            DisplayEffectsScreen.blit(stack, (int)(x + 2.0f), (int)y + 2, 10, 18, 18, textureatlassprite);
            y += offset;
            ++counterEffect;
            this.Effects.setWidth(textWidth);
        }
        float setHeight = offset / 8.0f * (float)counterEffect;
        this.Effects.setHeight(height2 * (float)counterEffect + setHeight);
    }

    public void BPS(MatrixStack stack) {
        float x = 3;
        float y = 507;
        float height2 = 15.0f;
        float textWidth = Fonts.msSemiBold[14].getWidth("Speed: " + String.format("%.2f", Math.hypot(mc.player.getPosX() - mc.player.prevPosX, mc.player.getPosZ() - mc.player.prevPosZ) * 20.0)) + 8.5f;
        RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Speed: " + String.format("%.2f", Math.hypot(mc.player.getPosX() - mc.player.prevPosX, mc.player.getPosZ() - mc.player.prevPosZ) * 20.0), (x + 4.5f), (double)y + 6.3, new Color(255, 255, 255, 255).getRGB());
        this.BPS.setWidth(textWidth);
        this.BPS.setHeight(height2);
    }

    public void Coords(MatrixStack stack) {
        float x = 3;
        float y = 524;
        float height2 = 15.0f;
        int X = (int)HUD2.mc.player.getPosX();
        int Y = (int)HUD2.mc.player.getPosY();
        int Z2 = (int)HUD2.mc.player.getPosZ();
        float textWidth = Fonts.msSemiBold[14].getWidth("Coords: X: " + X + " Y: " + Y + " Z: " + Z2) + 8.5f;
        RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Coords: X: " + X + " Y: " + Y + " Z: " + Z2, (x + 4.5f), (y + 6.0f), new Color(255, 255, 255, 255).getRGB());
        this.Coords.setWidth(textWidth);
        this.Coords.setHeight(height2);
    }

    public void Logo(MatrixStack stack) {
        float x = 3;
        float y = 3;
        float height2 = 17.0f;

        float textWidth = Fonts.msSemiBold[15].getWidth("Catlavan I " + ClientUtil.me.getName()) + 20;
        RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[15].drawString(stack, "Catlavan I " + ClientUtil.me.getName(), x + 16.0f, y + 6.5f, new Color(255, 255, 255, 255).getRGB());
        Fonts.icons1[15].drawString(stack, "A",x + 5, y + 8,new Color(255, 255, 255, 255).getRGB());
        this.Logo.setWidth(textWidth);
        this.Logo.setHeight(height2);
    }

    public void TargetHUD(MatrixStack stack) {
        float x = this.TargetHUD.getX();
        float y = this.TargetHUD.getY();
        float width2 = 95.0f;
        float height2 = 34.0f;
        float widthFace = 34.0f;
        this.target = this.getTarget(this.target);
        this.targetHudAnimation.setDuration(280);
        this.scale = this.targetHudAnimation.getOutput();
        if (this.scale == 0.0) {
            this.target = null;
        }
        if (this.target == null) {
            return;
        }
        GlStateManager.pushMatrix();
        AnimationMath.sizeAnimation(x + width2 / 2.0f, y + 15.0f, this.scale);
        RenderUtil.Render2D.drawRoundedCorner(x, y, width2 - 5, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        RenderUtil.Render2D.drawRoundFace(x + 3, y + 3.5f, 27, 27, 3, 1F, (AbstractClientPlayerEntity) this.target);
        float xHP = x + widthFace + 3.8f;
        float yHP = y + 21.3f;
        float widthHP = 52.0f;
        this.health = AnimationMath.fast(this.health, this.target.getHealth() / this.target.getMaxHealth(), 6.0f);
        this.health = MathHelper.clamp(this.health, 0.0f, 1.0f);
        this.absorpation = AnimationMath.fast(this.absorpation, this.target.getAbsorptionAmount() / this.target.getMaxHealth(), 6.0f);
        this.absorpation = MathHelper.clamp(this.absorpation, 0.0f, 1.0f);
        if (hp.get()) {
            RenderUtil.Render2D.drawRoundedRect(xHP - 5, yHP - 1, 52.0f * this.health, 10f, 1f, ColorUtil.getColorStyle(0.0f));
        } else{
            if (this.target.getHealth() >= 15.0F) {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(12, 71, 0, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(0, 204, 0, 68), ColorUtil.rgba(0, 153, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(12, 71, 0, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(0, 204, 0, 250), ColorUtil.rgba(0, 153, 0, 250));

            } else if (this.target.getHealth() >= 5.0F) {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(62, 71, 0, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(255, 255, 0, 170), ColorUtil.rgba(153, 153, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(62, 71, 0, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(255, 255, 0, 250), ColorUtil.rgba(153, 153, 0, 250));
            } else if (this.target.getHealth() >= 1000.0F) {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(255, 255, 255, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(255, 255, 255, 170), ColorUtil.rgba(204, 0, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(255, 255, 255, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(255, 255, 255, 250), ColorUtil.rgba(204, 0, 0, 250));
            } else {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(71, 0, 0, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(102, 0, 0, 68), ColorUtil.rgba(204, 0, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(71, 0, 0, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(102, 0, 0, 250), ColorUtil.rgba(204, 0, 0, 250));
            }
        }
        RenderUtil.Render2D.drawRoundedCorner(xHP - 4.5f, yHP - 2, 52.0f * this.absorpation, 1f, 0, new Color(222, 211, 14, 255).getRGB());
        String targetName = this.target.getName().getString();
        String targetnamop = targetName.substring(0, Math.min(targetName.length(), 9));
        RenderUtil.SmartScissor.push();
        RenderUtil.SmartScissor.setFromComponentCoordinates(x, y, width2 - 6.0f, height2);
        Fonts.msSemiBold[14].drawString(stack, targetnamop, (double)xHP - 5, (double)(yHP - 16.3f), new Color(255, 255, 255, 255).getRGB());
        RenderUtil.SmartScissor.unset();
        RenderUtil.SmartScissor.pop();
        String HP = String.valueOf(this.target.getHealth());
        String StringHP = HP.substring(0, Math.min(HP.length(), 4));
        if (this.target.getHealth() + this.target.getAbsorptionAmount() < 10.0f) {
            StringHP = HP.substring(0, Math.min(HP.length(), 3));
        }
        Fonts.msSemiBold[12].drawString(stack, "HP: " + StringHP + " + " + mc.player.getAbsorptionAmount(), (double)xHP - 5, (double)(yHP - 7.7f), new Color(255, 255, 255, 255).getRGB());
        this.drawItemStack(x, y - 12.0f, 10.5f, 0.7f);
        GlStateManager.popMatrix();
        this.TargetHUD.setWidth(width2);
        this.TargetHUD.setHeight(height2);
    }

    private void drawItemStack(float x, float y, float offset, float scaleValue) {
        ArrayList<ItemStack> stackList = new ArrayList<ItemStack>(Arrays.asList(this.target.getHeldItemMainhand(), this.target.getHeldItemOffhand()));
        stackList.addAll((Collection)this.target.getArmorInventoryList());
        AtomicReference<Float> posX = new AtomicReference<Float>(Float.valueOf(x));
        stackList.stream().filter(stack -> !stack.isEmpty()).forEach(stack -> HudUtil.drawItemStack(stack, posX.getAndAccumulate(Float.valueOf(offset), Float::sum).floatValue(), y, true, true, scaleValue));
    }

    private LivingEntity getTarget(LivingEntity nullTarget) {
        LivingEntity target = nullTarget;
        FunctionManager functionManager = Managment.FUNCTION_MANAGER;
        if (functionManager.auraFunction.getTarget() instanceof LivingEntity) {
            FunctionManager functionManager2 = Managment.FUNCTION_MANAGER;
            target = functionManager2.auraFunction.getTarget();
            this.targetHudAnimation.setDirection(Direction.FORWARDS);
        } else if (IMinecraft.mc.currentScreen instanceof ChatScreen) {
            target = IMinecraft.mc.player;
            this.targetHudAnimation.setDirection(Direction.FORWARDS);
        } else {
            this.targetHudAnimation.setDirection(Direction.BACKWARDS);
        }
        return target;
    }
}
 
имба +rep
 
Сделал по скольку понравился тх а так хз зачем это нужно и я знаю уже была тема с худом катлавана но
он там старый + баги с кейбиндами которые я пофиксил и переделал тх + вт (ожидаю уже что напишут слил говно, без хейта пж)

взял под основу эту тему
мне лень самому делать

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

вот это в RenderUtil

drawRoundFace:
Expand Collapse Copy
public static void drawRoundFace(float x, float y, float width, float height, float radius, float alpha, AbstractClientPlayerEntity target) {
            try {
                ResourceLocation skin = target.getLocationSkin();
                mc.getTextureManager().bindTexture(skin);
                // Вычисляем процент повреждения
                float hurtPercent = getHurtPercent(target);

                RenderSystem.pushMatrix();
                RenderSystem.enableBlend();
                RenderSystem.blendFunc(770, 771);
                // Подключаем шейдер для округлой головы
                ShaderUtil.FACE_ROUND.attach();

                // Передаем данные в шейдер
                ShaderUtil.FACE_ROUND.setUniform("location", x * 2, sr.getHeight() - height * 2 - y * 2);
                ShaderUtil.FACE_ROUND.setUniform("size", width * 2, height * 2);
                ShaderUtil.FACE_ROUND.setUniform("texture", 0);
                ShaderUtil.FACE_ROUND.setUniform("radius", radius * 2);
                ShaderUtil.FACE_ROUND.setUniform("alpha", alpha);
                ShaderUtil.FACE_ROUND.setUniform("hurtPercent", hurtPercent);  // Передаем процент повреждений в шейдер
                ShaderUtil.FACE_ROUND.setUniform("u", (1f / 64) * 8);
                ShaderUtil.FACE_ROUND.setUniform("v", (1f / 64) * 8);
                ShaderUtil.FACE_ROUND.setUniform("w", 1f / 8);
                ShaderUtil.FACE_ROUND.setUniform("h", 1f / 8);


                quadsBegin(x, y, width, height, 7);

                // Отключаем шейдер
                ShaderUtil.FACE_ROUND.detach();

                RenderSystem.disableBlend();
                RenderSystem.popMatrix();
            } catch(Exception e){
                e.printStackTrace();
            }
        }

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


Сам худ
HUD2:
Expand Collapse Copy
package wtf.expensive.modules.impl.render;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import net.minecraft.client.MainWindow;
import net.minecraft.client.entity.player.AbstractClientPlayerEntity;
import net.minecraft.client.gui.DisplayEffectsScreen;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.client.network.play.NetworkPlayerInfo;
import net.minecraft.client.renderer.texture.PotionSpriteUploader;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.AirItem;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.potion.Effect;
import net.minecraft.potion.EffectInstance;
import net.minecraft.potion.EffectUtils;
import net.minecraft.scoreboard.ScorePlayerTeam;
import net.minecraft.scoreboard.Team;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector4f;
import net.minecraft.util.text.ITextComponent;
import org.joml.Vector4i;
import wtf.expensive.Initilization;
import wtf.expensive.events.Event;
import wtf.expensive.events.impl.player.EventUpdate;
import wtf.expensive.events.impl.render.EventRender;
import wtf.expensive.managment.Managment;
import wtf.expensive.modules.Function;
import wtf.expensive.modules.FunctionAnnotation;
import wtf.expensive.modules.FunctionManager;
import wtf.expensive.modules.Type;
import wtf.expensive.modules.settings.imp.BooleanOption;
import wtf.expensive.modules.settings.imp.MultiBoxSetting;
import wtf.expensive.modules.settings.imp.SliderSetting;
import wtf.expensive.util.BetterText;
import wtf.expensive.util.ClientUtil;
import wtf.expensive.util.IMinecraft;
import wtf.expensive.util.animations.Animation;
import wtf.expensive.util.animations.Direction;
import wtf.expensive.util.animations.impl.EaseBackIn;
import wtf.expensive.util.drag.Dragging;
import wtf.expensive.util.font.Fonts;
import wtf.expensive.util.font.styled.StyledFont;
import wtf.expensive.util.math.MathUtil;
import wtf.expensive.util.misc.HudUtil;
import wtf.expensive.util.render.BloomHelper;
import wtf.expensive.util.render.ColorUtil;
import wtf.expensive.util.render.RenderUtil;
import wtf.expensive.util.render.animation.AnimationMath;

import java.awt.*;
import java.util.*;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
import java.util.regex.Pattern;

import static wtf.expensive.util.render.RenderUtil.Render2D.drawFace;

@FunctionAnnotation(name="Hud", type=Type.Render)
public class HUD2
        extends Function {
    public static MultiBoxSetting elements = new MultiBoxSetting("Elements",
            new BooleanOption("Active Target", true),
            new BooleanOption("Logo", true),
            new BooleanOption("Coordinates", true),
            new BooleanOption("Speed", true),
            new BooleanOption("Effects", true),
            new BooleanOption("Active Binds", true),
            new BooleanOption("Active Staff", true),
            new BooleanOption("Armor", true),
            new BooleanOption("Cooldown", true));
    public BooleanOption hp = new BooleanOption("Хп под тему", false);

    private final SliderSetting offsetEffects = new SliderSetting("\u0420\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432", 24.0f, 23.0f, 26.0f, 0.1f).setVisible(() -> elements.get(5));
    final Dragging TargetHUD = Initilization.createDrag(this, "TargetHUD7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Logo = Initilization.createDrag(this, "Logo7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Coords = Initilization.createDrag(this, "Coords7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging BPS = Initilization.createDrag(this, "BPS7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Effects = Initilization.createDrag(this, "Effects7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging KeyBinds = Initilization.createDrag(this, "KeyBinds7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging StaffActive = Initilization.createDrag(this, "StaffActive7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Cooldown = Initilization.createDrag(this, "Cooldown7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    int activeStaff = 0;
    private final Pattern namePattern = Pattern.compile("^\\w{3,16}$");
    int activeBind = 0;
    float heightAnimation = 0.0f;
    private float perc;
    private final Animation targetHudAnimation = new EaseBackIn(270, 1.0, 1.5f);
    private double scale = 0.0;
    private LivingEntity target = null;
    float health = 0.0f;
    float absorpation = 0.0f;

    public HUD2() {
        this.addSettings(elements,hp, this.offsetEffects);
    }

    [USER=1367676]@override[/USER]
    public void onEvent(Event event) {
        if (event instanceof EventRender) {
            EventRender eventRender = (EventRender)event;
            MatrixStack stack = eventRender.matrixStack;
            if (elements.get(0)) {
                this.TargetHUD(stack);
            }
            if (elements.get(2)) {
                this.Logo(stack);
            }
            if (elements.get(3)) {
                this.Coords(stack);
            }
            if (elements.get(4)) {
                this.BPS(stack);
            }
            if (elements.get(5)) {
                this.Effects(stack);
            }
            if (elements.get(6)) {
                this.KeyBinds(stack);
            }
            if (elements.get(7)) {
                this.StaffActive(stack);
            }
            if (elements.get(8)) {
                this.ArmorHUD(stack, eventRender);
            }
        }
    }

    public void ArmorHUD(MatrixStack stack, EventRender eventRender) {
        int off;
        int count = 0;
        for (int i = 0; i < HUD2.mc.player.inventory.getSizeInventory(); ++i) {
            ItemStack s = HUD2.mc.player.inventory.getStackInSlot(i);
            if (s.getItem() != Items.TOTEM_OF_UNDYING) continue;
            ++count;
        }
        float xPos = (float)eventRender.scaledResolution.scaledWidth() / 2.0f;
        float yPos = eventRender.scaledResolution.scaledHeight();
        boolean totemInInv = HUD2.mc.player.inventory.mainInventory.stream().map(ItemStack::getItem).toList().contains(Items.TOTEM_OF_UNDYING);
        int n = off = totemInInv ? 5 : 0;
        if (HUD2.mc.player.isCreative()) {
            yPos += 17.0f;
        }
        for (ItemStack s : HUD2.mc.player.inventory.armorInventory) {
            ESPFunction.drawItemStack(s, xPos - (float)off + 74.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), yPos - 56.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), null, false);
            off += 15;
        }
        if (totemInInv) {
            ESPFunction.drawItemStack(new ItemStack(Items.TOTEM_OF_UNDYING), xPos - (float)off + 73.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), yPos - 56.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), String.valueOf(count), false);
        }
    }

    public void StaffActive(MatrixStack stack) {
        float x = this.StaffActive.getX();
        float y = this.StaffActive.getY();
        float offset = 9.0f;
        float height2 = 20.5f;
        float width2 = 100.0f;
        height2 += offset * (float)this.activeStaff - 4.0f;
        float xStaff = x + 26.0f;
        if (this.activeStaff == 0) {
            height2 -= 1.5f;
            width2 -= 25.0f;
            xStaff -= 12.5f;
        }
        RenderUtil.Render2D.drawRoundedCorner(x, y, width2, height2, 3, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Staff Active", (double)xStaff, (double)(y + 6.0f), new Color(255, 255, 255, 255).getRGB());
        int i = 0;
        for (ScorePlayerTeam team : HUD2.mc.world.getScoreboard().getTeams().stream().sorted(Comparator.comparing(Team::getName)).toList()) {
            String name = team.getMembershipCollection().toString();
            if (!this.namePattern.matcher(name = name.substring(1, name.length() - 1)).matches()) continue;
            boolean vanish = true;
            boolean near = false;
            boolean active = false;
            for (AbstractClientPlayerEntity player : HUD2.mc.world.getPlayers()) {
                if (!player.getNameClear().equals(name)) continue;
                near = true;
            }
            for (NetworkPlayerInfo info : mc.getConnection().getPlayerInfoMap()) {
                if (!info.getGameProfile().getName().equals(name)) continue;
                vanish = false;
                if (near) continue;
                active = true;
            }
            if (!vanish && !Managment.STAFF_MANAGER.isStaff(name)) continue;
            String Name2 = name.substring(0, Math.min(name.length(), 10));
            StyledFont small = Fonts.msSemiBold[13];
            StyledFont small2 = Fonts.msSemiBold[14];
            float yText = y + 17.0f;
            small2.drawString(stack, Name2, (double)(x + 4.0f), (double)yText, new Color(255, 255, 255, 255).getRGB());
            if (vanish) {
                small.drawString(stack, "Спектатор", (double)(x + 63.5f), (double)yText, new Color(255, 0, 0, 255).getRGB());
            } else if (active) {
                small.drawString(stack, "Активен", (double)(x + 74f), (double)yText, new Color(4, 255, 0, 255).getRGB());
            } else if (near) {
                small.drawString(stack, "Рядом", (double)(x + 80.8f), (double)yText, new Color(255, 136, 0, 255).getRGB());
            }
            y += offset;
            ++i;
        }
        this.activeStaff = i;
        this.StaffActive.setWidth(width2);
        this.StaffActive.setHeight(height2);
    }

    public void KeyBinds(MatrixStack stack) {
        float x = this.KeyBinds.getX();
        float y = this.KeyBinds.getY();
        float offset = 9.5f;
        float height2 = 21.0f;
        float width2 = 75.0f;
        height2 += offset * (float)this.activeBind - 5.0f;
        if (this.activeBind == 0) {
            height2 -= 1.0f;
        }
        RenderUtil.Render2D.drawRoundedCorner(x, y, width2, this.heightAnimation, 3, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Key Binds", (x + 18.0f), (y + 6.0f), new Color(255, 255, 255, 255).getRGB());
        int i = 0;
        for (Function f : Managment.FUNCTION_MANAGER.getFunctions()) {
            String text;
            if (f.bind == 0 || !f.state || (text = ClientUtil.getKey(f.bind)) == null) continue;
            StyledFont small = Fonts.msSemiBold[13];
            String sss = f.name;
            String fname = sss.substring(0, Math.min(sss.length(), 13));;
            String bindText = text.toUpperCase();
            float yText = y + 17.0f;
            RenderUtil.SmartScissor.push();
            RenderUtil.SmartScissor.setFromComponentCoordinates(x, y, width2, this.heightAnimation);
            small.drawString(stack, fname, (x + 4.0f), yText, new Color(255, 255, 255, 255).getRGB());
            small.drawString(stack, "[" + bindText + "]", (x + 62.0f), yText, new Color(255, 255, 255, 255).getRGB());
            RenderUtil.SmartScissor.unset();
            RenderUtil.SmartScissor.pop();
            y += offset;
            ++i;
        }
        this.heightAnimation = AnimationMath.fast(this.heightAnimation, height2, 11.0f);
        this.activeBind = i;
        this.KeyBinds.setWidth(width2);
        this.KeyBinds.setHeight(height2);
    }

    public void Effects(MatrixStack stack) {
        float x = 3;
        float y = 270;
        float offset = this.offsetEffects.getValue().floatValue();
        float height2 = 21.3f;
        StyledFont small = Fonts.msSemiBold[13];
        int counterEffect = 0;
        for (EffectInstance effectInstance : HUD2.mc.player.getActivePotionEffects()) {
            String levelpotion = String.valueOf(effectInstance.getAmplifier() + 1);
            float textWidthBonus = 27.3f;
            if (levelpotion.contains("1")) {
                levelpotion = "";
                textWidthBonus -= 5.0f;
            }
            String durationText = EffectUtils.getPotionDurationString(effectInstance, 1.0f);
            String text = I18n.format(effectInstance.getEffectName(), new Object[0]);
            float textWidth = small.getWidth(text + effectInstance.getAmplifier() + levelpotion) + textWidthBonus - 0.6f;
            RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
            small.drawString(stack, text + " " + levelpotion, (double)(x + 22.3f), (double)(y + 5.5f), new Color(255, 255, 255, 255).getRGB());
            small.drawString(stack, durationText, (double)(x + 22.3f), (double)(y + 13.5f), new Color(255, 255, 255, 255).getRGB());
            PotionSpriteUploader potionspriteuploader = mc.getPotionSpriteUploader();
            Effect effect = effectInstance.getPotion();
            TextureAtlasSprite textureatlassprite = potionspriteuploader.getSprite(effect);
            mc.getTextureManager().bindTexture(textureatlassprite.getAtlasTexture().getTextureLocation());
            DisplayEffectsScreen.blit(stack, (int)(x + 2.0f), (int)y + 2, 10, 18, 18, textureatlassprite);
            y += offset;
            ++counterEffect;
            this.Effects.setWidth(textWidth);
        }
        float setHeight = offset / 8.0f * (float)counterEffect;
        this.Effects.setHeight(height2 * (float)counterEffect + setHeight);
    }

    public void BPS(MatrixStack stack) {
        float x = 3;
        float y = 507;
        float height2 = 15.0f;
        float textWidth = Fonts.msSemiBold[14].getWidth("Speed: " + String.format("%.2f", Math.hypot(mc.player.getPosX() - mc.player.prevPosX, mc.player.getPosZ() - mc.player.prevPosZ) * 20.0)) + 8.5f;
        RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Speed: " + String.format("%.2f", Math.hypot(mc.player.getPosX() - mc.player.prevPosX, mc.player.getPosZ() - mc.player.prevPosZ) * 20.0), (x + 4.5f), (double)y + 6.3, new Color(255, 255, 255, 255).getRGB());
        this.BPS.setWidth(textWidth);
        this.BPS.setHeight(height2);
    }

    public void Coords(MatrixStack stack) {
        float x = 3;
        float y = 524;
        float height2 = 15.0f;
        int X = (int)HUD2.mc.player.getPosX();
        int Y = (int)HUD2.mc.player.getPosY();
        int Z2 = (int)HUD2.mc.player.getPosZ();
        float textWidth = Fonts.msSemiBold[14].getWidth("Coords: X: " + X + " Y: " + Y + " Z: " + Z2) + 8.5f;
        RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Coords: X: " + X + " Y: " + Y + " Z: " + Z2, (x + 4.5f), (y + 6.0f), new Color(255, 255, 255, 255).getRGB());
        this.Coords.setWidth(textWidth);
        this.Coords.setHeight(height2);
    }

    public void Logo(MatrixStack stack) {
        float x = 3;
        float y = 3;
        float height2 = 17.0f;

        float textWidth = Fonts.msSemiBold[15].getWidth("Catlavan I " + ClientUtil.me.getName()) + 20;
        RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[15].drawString(stack, "Catlavan I " + ClientUtil.me.getName(), x + 16.0f, y + 6.5f, new Color(255, 255, 255, 255).getRGB());
        Fonts.icons1[15].drawString(stack, "A",x + 5, y + 8,new Color(255, 255, 255, 255).getRGB());
        this.Logo.setWidth(textWidth);
        this.Logo.setHeight(height2);
    }

    public void TargetHUD(MatrixStack stack) {
        float x = this.TargetHUD.getX();
        float y = this.TargetHUD.getY();
        float width2 = 95.0f;
        float height2 = 34.0f;
        float widthFace = 34.0f;
        this.target = this.getTarget(this.target);
        this.targetHudAnimation.setDuration(280);
        this.scale = this.targetHudAnimation.getOutput();
        if (this.scale == 0.0) {
            this.target = null;
        }
        if (this.target == null) {
            return;
        }
        GlStateManager.pushMatrix();
        AnimationMath.sizeAnimation(x + width2 / 2.0f, y + 15.0f, this.scale);
        RenderUtil.Render2D.drawRoundedCorner(x, y, width2 - 5, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        RenderUtil.Render2D.drawRoundFace(x + 3, y + 3.5f, 27, 27, 3, 1F, (AbstractClientPlayerEntity) this.target);
        float xHP = x + widthFace + 3.8f;
        float yHP = y + 21.3f;
        float widthHP = 52.0f;
        this.health = AnimationMath.fast(this.health, this.target.getHealth() / this.target.getMaxHealth(), 6.0f);
        this.health = MathHelper.clamp(this.health, 0.0f, 1.0f);
        this.absorpation = AnimationMath.fast(this.absorpation, this.target.getAbsorptionAmount() / this.target.getMaxHealth(), 6.0f);
        this.absorpation = MathHelper.clamp(this.absorpation, 0.0f, 1.0f);
        if (hp.get()) {
            RenderUtil.Render2D.drawRoundedRect(xHP - 5, yHP - 1, 52.0f * this.health, 10f, 1f, ColorUtil.getColorStyle(0.0f));
        } else{
            if (this.target.getHealth() >= 15.0F) {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(12, 71, 0, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(0, 204, 0, 68), ColorUtil.rgba(0, 153, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(12, 71, 0, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(0, 204, 0, 250), ColorUtil.rgba(0, 153, 0, 250));

            } else if (this.target.getHealth() >= 5.0F) {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(62, 71, 0, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(255, 255, 0, 170), ColorUtil.rgba(153, 153, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(62, 71, 0, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(255, 255, 0, 250), ColorUtil.rgba(153, 153, 0, 250));
            } else if (this.target.getHealth() >= 1000.0F) {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(255, 255, 255, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(255, 255, 255, 170), ColorUtil.rgba(204, 0, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(255, 255, 255, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(255, 255, 255, 250), ColorUtil.rgba(204, 0, 0, 250));
            } else {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(71, 0, 0, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(102, 0, 0, 68), ColorUtil.rgba(204, 0, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(71, 0, 0, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(102, 0, 0, 250), ColorUtil.rgba(204, 0, 0, 250));
            }
        }
        RenderUtil.Render2D.drawRoundedCorner(xHP - 4.5f, yHP - 2, 52.0f * this.absorpation, 1f, 0, new Color(222, 211, 14, 255).getRGB());
        String targetName = this.target.getName().getString();
        String targetnamop = targetName.substring(0, Math.min(targetName.length(), 9));
        RenderUtil.SmartScissor.push();
        RenderUtil.SmartScissor.setFromComponentCoordinates(x, y, width2 - 6.0f, height2);
        Fonts.msSemiBold[14].drawString(stack, targetnamop, (double)xHP - 5, (double)(yHP - 16.3f), new Color(255, 255, 255, 255).getRGB());
        RenderUtil.SmartScissor.unset();
        RenderUtil.SmartScissor.pop();
        String HP = String.valueOf(this.target.getHealth());
        String StringHP = HP.substring(0, Math.min(HP.length(), 4));
        if (this.target.getHealth() + this.target.getAbsorptionAmount() < 10.0f) {
            StringHP = HP.substring(0, Math.min(HP.length(), 3));
        }
        Fonts.msSemiBold[12].drawString(stack, "HP: " + StringHP + " + " + mc.player.getAbsorptionAmount(), (double)xHP - 5, (double)(yHP - 7.7f), new Color(255, 255, 255, 255).getRGB());
        this.drawItemStack(x, y - 12.0f, 10.5f, 0.7f);
        GlStateManager.popMatrix();
        this.TargetHUD.setWidth(width2);
        this.TargetHUD.setHeight(height2);
    }

    private void drawItemStack(float x, float y, float offset, float scaleValue) {
        ArrayList<ItemStack> stackList = new ArrayList<ItemStack>(Arrays.asList(this.target.getHeldItemMainhand(), this.target.getHeldItemOffhand()));
        stackList.addAll((Collection)this.target.getArmorInventoryList());
        AtomicReference<Float> posX = new AtomicReference<Float>(Float.valueOf(x));
        stackList.stream().filter(stack -> !stack.isEmpty()).forEach(stack -> HudUtil.drawItemStack(stack, posX.getAndAccumulate(Float.valueOf(offset), Float::sum).floatValue(), y, true, true, scaleValue));
    }

    private LivingEntity getTarget(LivingEntity nullTarget) {
        LivingEntity target = nullTarget;
        FunctionManager functionManager = Managment.FUNCTION_MANAGER;
        if (functionManager.auraFunction.getTarget() instanceof LivingEntity) {
            FunctionManager functionManager2 = Managment.FUNCTION_MANAGER;
            target = functionManager2.auraFunction.getTarget();
            this.targetHudAnimation.setDirection(Direction.FORWARDS);
        } else if (IMinecraft.mc.currentScreen instanceof ChatScreen) {
            target = IMinecraft.mc.player;
            this.targetHudAnimation.setDirection(Direction.FORWARDS);
        } else {
            this.targetHudAnimation.setDirection(Direction.BACKWARDS);
        }
        return target;
    }
}
че вам всем нравиться мой старый скид на катлу /: я его сделал буквально на солях
 
че вам всем нравиться мой старый скид на катлу /: я его сделал буквально на солях
какие тебе соли, школьник // не понимаю зачем такое делают, ибо в катлаване самый дефолтный худ
 
Сделал по скольку понравился тх а так хз зачем это нужно и я знаю уже была тема с худом катлавана но
он там старый + баги с кейбиндами которые я пофиксил и переделал тх + вт (ожидаю уже что напишут слил говно, без хейта пж)

взял под основу эту тему
мне лень самому делать

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

вот это в RenderUtil

drawRoundFace:
Expand Collapse Copy
public static void drawRoundFace(float x, float y, float width, float height, float radius, float alpha, AbstractClientPlayerEntity target) {
            try {
                ResourceLocation skin = target.getLocationSkin();
                mc.getTextureManager().bindTexture(skin);
                // Вычисляем процент повреждения
                float hurtPercent = getHurtPercent(target);

                RenderSystem.pushMatrix();
                RenderSystem.enableBlend();
                RenderSystem.blendFunc(770, 771);
                // Подключаем шейдер для округлой головы
                ShaderUtil.FACE_ROUND.attach();

                // Передаем данные в шейдер
                ShaderUtil.FACE_ROUND.setUniform("location", x * 2, sr.getHeight() - height * 2 - y * 2);
                ShaderUtil.FACE_ROUND.setUniform("size", width * 2, height * 2);
                ShaderUtil.FACE_ROUND.setUniform("texture", 0);
                ShaderUtil.FACE_ROUND.setUniform("radius", radius * 2);
                ShaderUtil.FACE_ROUND.setUniform("alpha", alpha);
                ShaderUtil.FACE_ROUND.setUniform("hurtPercent", hurtPercent);  // Передаем процент повреждений в шейдер
                ShaderUtil.FACE_ROUND.setUniform("u", (1f / 64) * 8);
                ShaderUtil.FACE_ROUND.setUniform("v", (1f / 64) * 8);
                ShaderUtil.FACE_ROUND.setUniform("w", 1f / 8);
                ShaderUtil.FACE_ROUND.setUniform("h", 1f / 8);


                quadsBegin(x, y, width, height, 7);

                // Отключаем шейдер
                ShaderUtil.FACE_ROUND.detach();

                RenderSystem.disableBlend();
                RenderSystem.popMatrix();
            } catch(Exception e){
                e.printStackTrace();
            }
        }

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


Сам худ
HUD2:
Expand Collapse Copy
package wtf.expensive.modules.impl.render;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import net.minecraft.client.MainWindow;
import net.minecraft.client.entity.player.AbstractClientPlayerEntity;
import net.minecraft.client.gui.DisplayEffectsScreen;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.client.network.play.NetworkPlayerInfo;
import net.minecraft.client.renderer.texture.PotionSpriteUploader;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.AirItem;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.potion.Effect;
import net.minecraft.potion.EffectInstance;
import net.minecraft.potion.EffectUtils;
import net.minecraft.scoreboard.ScorePlayerTeam;
import net.minecraft.scoreboard.Team;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector4f;
import net.minecraft.util.text.ITextComponent;
import org.joml.Vector4i;
import wtf.expensive.Initilization;
import wtf.expensive.events.Event;
import wtf.expensive.events.impl.player.EventUpdate;
import wtf.expensive.events.impl.render.EventRender;
import wtf.expensive.managment.Managment;
import wtf.expensive.modules.Function;
import wtf.expensive.modules.FunctionAnnotation;
import wtf.expensive.modules.FunctionManager;
import wtf.expensive.modules.Type;
import wtf.expensive.modules.settings.imp.BooleanOption;
import wtf.expensive.modules.settings.imp.MultiBoxSetting;
import wtf.expensive.modules.settings.imp.SliderSetting;
import wtf.expensive.util.BetterText;
import wtf.expensive.util.ClientUtil;
import wtf.expensive.util.IMinecraft;
import wtf.expensive.util.animations.Animation;
import wtf.expensive.util.animations.Direction;
import wtf.expensive.util.animations.impl.EaseBackIn;
import wtf.expensive.util.drag.Dragging;
import wtf.expensive.util.font.Fonts;
import wtf.expensive.util.font.styled.StyledFont;
import wtf.expensive.util.math.MathUtil;
import wtf.expensive.util.misc.HudUtil;
import wtf.expensive.util.render.BloomHelper;
import wtf.expensive.util.render.ColorUtil;
import wtf.expensive.util.render.RenderUtil;
import wtf.expensive.util.render.animation.AnimationMath;

import java.awt.*;
import java.util.*;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
import java.util.regex.Pattern;

import static wtf.expensive.util.render.RenderUtil.Render2D.drawFace;

@FunctionAnnotation(name="Hud", type=Type.Render)
public class HUD2
        extends Function {
    public static MultiBoxSetting elements = new MultiBoxSetting("Elements",
            new BooleanOption("Active Target", true),
            new BooleanOption("Logo", true),
            new BooleanOption("Coordinates", true),
            new BooleanOption("Speed", true),
            new BooleanOption("Effects", true),
            new BooleanOption("Active Binds", true),
            new BooleanOption("Active Staff", true),
            new BooleanOption("Armor", true),
            new BooleanOption("Cooldown", true));
    public BooleanOption hp = new BooleanOption("Хп под тему", false);

    private final SliderSetting offsetEffects = new SliderSetting("\u0420\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432", 24.0f, 23.0f, 26.0f, 0.1f).setVisible(() -> elements.get(5));
    final Dragging TargetHUD = Initilization.createDrag(this, "TargetHUD7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Logo = Initilization.createDrag(this, "Logo7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Coords = Initilization.createDrag(this, "Coords7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging BPS = Initilization.createDrag(this, "BPS7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Effects = Initilization.createDrag(this, "Effects7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging KeyBinds = Initilization.createDrag(this, "KeyBinds7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging StaffActive = Initilization.createDrag(this, "StaffActive7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Cooldown = Initilization.createDrag(this, "Cooldown7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    int activeStaff = 0;
    private final Pattern namePattern = Pattern.compile("^\\w{3,16}$");
    int activeBind = 0;
    float heightAnimation = 0.0f;
    private float perc;
    private final Animation targetHudAnimation = new EaseBackIn(270, 1.0, 1.5f);
    private double scale = 0.0;
    private LivingEntity target = null;
    float health = 0.0f;
    float absorpation = 0.0f;

    public HUD2() {
        this.addSettings(elements,hp, this.offsetEffects);
    }

    [USER=1367676]@override[/USER]
    public void onEvent(Event event) {
        if (event instanceof EventRender) {
            EventRender eventRender = (EventRender)event;
            MatrixStack stack = eventRender.matrixStack;
            if (elements.get(0)) {
                this.TargetHUD(stack);
            }
            if (elements.get(2)) {
                this.Logo(stack);
            }
            if (elements.get(3)) {
                this.Coords(stack);
            }
            if (elements.get(4)) {
                this.BPS(stack);
            }
            if (elements.get(5)) {
                this.Effects(stack);
            }
            if (elements.get(6)) {
                this.KeyBinds(stack);
            }
            if (elements.get(7)) {
                this.StaffActive(stack);
            }
            if (elements.get(8)) {
                this.ArmorHUD(stack, eventRender);
            }
        }
    }

    public void ArmorHUD(MatrixStack stack, EventRender eventRender) {
        int off;
        int count = 0;
        for (int i = 0; i < HUD2.mc.player.inventory.getSizeInventory(); ++i) {
            ItemStack s = HUD2.mc.player.inventory.getStackInSlot(i);
            if (s.getItem() != Items.TOTEM_OF_UNDYING) continue;
            ++count;
        }
        float xPos = (float)eventRender.scaledResolution.scaledWidth() / 2.0f;
        float yPos = eventRender.scaledResolution.scaledHeight();
        boolean totemInInv = HUD2.mc.player.inventory.mainInventory.stream().map(ItemStack::getItem).toList().contains(Items.TOTEM_OF_UNDYING);
        int n = off = totemInInv ? 5 : 0;
        if (HUD2.mc.player.isCreative()) {
            yPos += 17.0f;
        }
        for (ItemStack s : HUD2.mc.player.inventory.armorInventory) {
            ESPFunction.drawItemStack(s, xPos - (float)off + 74.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), yPos - 56.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), null, false);
            off += 15;
        }
        if (totemInInv) {
            ESPFunction.drawItemStack(new ItemStack(Items.TOTEM_OF_UNDYING), xPos - (float)off + 73.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), yPos - 56.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), String.valueOf(count), false);
        }
    }

    public void StaffActive(MatrixStack stack) {
        float x = this.StaffActive.getX();
        float y = this.StaffActive.getY();
        float offset = 9.0f;
        float height2 = 20.5f;
        float width2 = 100.0f;
        height2 += offset * (float)this.activeStaff - 4.0f;
        float xStaff = x + 26.0f;
        if (this.activeStaff == 0) {
            height2 -= 1.5f;
            width2 -= 25.0f;
            xStaff -= 12.5f;
        }
        RenderUtil.Render2D.drawRoundedCorner(x, y, width2, height2, 3, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Staff Active", (double)xStaff, (double)(y + 6.0f), new Color(255, 255, 255, 255).getRGB());
        int i = 0;
        for (ScorePlayerTeam team : HUD2.mc.world.getScoreboard().getTeams().stream().sorted(Comparator.comparing(Team::getName)).toList()) {
            String name = team.getMembershipCollection().toString();
            if (!this.namePattern.matcher(name = name.substring(1, name.length() - 1)).matches()) continue;
            boolean vanish = true;
            boolean near = false;
            boolean active = false;
            for (AbstractClientPlayerEntity player : HUD2.mc.world.getPlayers()) {
                if (!player.getNameClear().equals(name)) continue;
                near = true;
            }
            for (NetworkPlayerInfo info : mc.getConnection().getPlayerInfoMap()) {
                if (!info.getGameProfile().getName().equals(name)) continue;
                vanish = false;
                if (near) continue;
                active = true;
            }
            if (!vanish && !Managment.STAFF_MANAGER.isStaff(name)) continue;
            String Name2 = name.substring(0, Math.min(name.length(), 10));
            StyledFont small = Fonts.msSemiBold[13];
            StyledFont small2 = Fonts.msSemiBold[14];
            float yText = y + 17.0f;
            small2.drawString(stack, Name2, (double)(x + 4.0f), (double)yText, new Color(255, 255, 255, 255).getRGB());
            if (vanish) {
                small.drawString(stack, "Спектатор", (double)(x + 63.5f), (double)yText, new Color(255, 0, 0, 255).getRGB());
            } else if (active) {
                small.drawString(stack, "Активен", (double)(x + 74f), (double)yText, new Color(4, 255, 0, 255).getRGB());
            } else if (near) {
                small.drawString(stack, "Рядом", (double)(x + 80.8f), (double)yText, new Color(255, 136, 0, 255).getRGB());
            }
            y += offset;
            ++i;
        }
        this.activeStaff = i;
        this.StaffActive.setWidth(width2);
        this.StaffActive.setHeight(height2);
    }

    public void KeyBinds(MatrixStack stack) {
        float x = this.KeyBinds.getX();
        float y = this.KeyBinds.getY();
        float offset = 9.5f;
        float height2 = 21.0f;
        float width2 = 75.0f;
        height2 += offset * (float)this.activeBind - 5.0f;
        if (this.activeBind == 0) {
            height2 -= 1.0f;
        }
        RenderUtil.Render2D.drawRoundedCorner(x, y, width2, this.heightAnimation, 3, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Key Binds", (x + 18.0f), (y + 6.0f), new Color(255, 255, 255, 255).getRGB());
        int i = 0;
        for (Function f : Managment.FUNCTION_MANAGER.getFunctions()) {
            String text;
            if (f.bind == 0 || !f.state || (text = ClientUtil.getKey(f.bind)) == null) continue;
            StyledFont small = Fonts.msSemiBold[13];
            String sss = f.name;
            String fname = sss.substring(0, Math.min(sss.length(), 13));;
            String bindText = text.toUpperCase();
            float yText = y + 17.0f;
            RenderUtil.SmartScissor.push();
            RenderUtil.SmartScissor.setFromComponentCoordinates(x, y, width2, this.heightAnimation);
            small.drawString(stack, fname, (x + 4.0f), yText, new Color(255, 255, 255, 255).getRGB());
            small.drawString(stack, "[" + bindText + "]", (x + 62.0f), yText, new Color(255, 255, 255, 255).getRGB());
            RenderUtil.SmartScissor.unset();
            RenderUtil.SmartScissor.pop();
            y += offset;
            ++i;
        }
        this.heightAnimation = AnimationMath.fast(this.heightAnimation, height2, 11.0f);
        this.activeBind = i;
        this.KeyBinds.setWidth(width2);
        this.KeyBinds.setHeight(height2);
    }

    public void Effects(MatrixStack stack) {
        float x = 3;
        float y = 270;
        float offset = this.offsetEffects.getValue().floatValue();
        float height2 = 21.3f;
        StyledFont small = Fonts.msSemiBold[13];
        int counterEffect = 0;
        for (EffectInstance effectInstance : HUD2.mc.player.getActivePotionEffects()) {
            String levelpotion = String.valueOf(effectInstance.getAmplifier() + 1);
            float textWidthBonus = 27.3f;
            if (levelpotion.contains("1")) {
                levelpotion = "";
                textWidthBonus -= 5.0f;
            }
            String durationText = EffectUtils.getPotionDurationString(effectInstance, 1.0f);
            String text = I18n.format(effectInstance.getEffectName(), new Object[0]);
            float textWidth = small.getWidth(text + effectInstance.getAmplifier() + levelpotion) + textWidthBonus - 0.6f;
            RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
            small.drawString(stack, text + " " + levelpotion, (double)(x + 22.3f), (double)(y + 5.5f), new Color(255, 255, 255, 255).getRGB());
            small.drawString(stack, durationText, (double)(x + 22.3f), (double)(y + 13.5f), new Color(255, 255, 255, 255).getRGB());
            PotionSpriteUploader potionspriteuploader = mc.getPotionSpriteUploader();
            Effect effect = effectInstance.getPotion();
            TextureAtlasSprite textureatlassprite = potionspriteuploader.getSprite(effect);
            mc.getTextureManager().bindTexture(textureatlassprite.getAtlasTexture().getTextureLocation());
            DisplayEffectsScreen.blit(stack, (int)(x + 2.0f), (int)y + 2, 10, 18, 18, textureatlassprite);
            y += offset;
            ++counterEffect;
            this.Effects.setWidth(textWidth);
        }
        float setHeight = offset / 8.0f * (float)counterEffect;
        this.Effects.setHeight(height2 * (float)counterEffect + setHeight);
    }

    public void BPS(MatrixStack stack) {
        float x = 3;
        float y = 507;
        float height2 = 15.0f;
        float textWidth = Fonts.msSemiBold[14].getWidth("Speed: " + String.format("%.2f", Math.hypot(mc.player.getPosX() - mc.player.prevPosX, mc.player.getPosZ() - mc.player.prevPosZ) * 20.0)) + 8.5f;
        RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Speed: " + String.format("%.2f", Math.hypot(mc.player.getPosX() - mc.player.prevPosX, mc.player.getPosZ() - mc.player.prevPosZ) * 20.0), (x + 4.5f), (double)y + 6.3, new Color(255, 255, 255, 255).getRGB());
        this.BPS.setWidth(textWidth);
        this.BPS.setHeight(height2);
    }

    public void Coords(MatrixStack stack) {
        float x = 3;
        float y = 524;
        float height2 = 15.0f;
        int X = (int)HUD2.mc.player.getPosX();
        int Y = (int)HUD2.mc.player.getPosY();
        int Z2 = (int)HUD2.mc.player.getPosZ();
        float textWidth = Fonts.msSemiBold[14].getWidth("Coords: X: " + X + " Y: " + Y + " Z: " + Z2) + 8.5f;
        RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Coords: X: " + X + " Y: " + Y + " Z: " + Z2, (x + 4.5f), (y + 6.0f), new Color(255, 255, 255, 255).getRGB());
        this.Coords.setWidth(textWidth);
        this.Coords.setHeight(height2);
    }

    public void Logo(MatrixStack stack) {
        float x = 3;
        float y = 3;
        float height2 = 17.0f;

        float textWidth = Fonts.msSemiBold[15].getWidth("Catlavan I " + ClientUtil.me.getName()) + 20;
        RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[15].drawString(stack, "Catlavan I " + ClientUtil.me.getName(), x + 16.0f, y + 6.5f, new Color(255, 255, 255, 255).getRGB());
        Fonts.icons1[15].drawString(stack, "A",x + 5, y + 8,new Color(255, 255, 255, 255).getRGB());
        this.Logo.setWidth(textWidth);
        this.Logo.setHeight(height2);
    }

    public void TargetHUD(MatrixStack stack) {
        float x = this.TargetHUD.getX();
        float y = this.TargetHUD.getY();
        float width2 = 95.0f;
        float height2 = 34.0f;
        float widthFace = 34.0f;
        this.target = this.getTarget(this.target);
        this.targetHudAnimation.setDuration(280);
        this.scale = this.targetHudAnimation.getOutput();
        if (this.scale == 0.0) {
            this.target = null;
        }
        if (this.target == null) {
            return;
        }
        GlStateManager.pushMatrix();
        AnimationMath.sizeAnimation(x + width2 / 2.0f, y + 15.0f, this.scale);
        RenderUtil.Render2D.drawRoundedCorner(x, y, width2 - 5, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        RenderUtil.Render2D.drawRoundFace(x + 3, y + 3.5f, 27, 27, 3, 1F, (AbstractClientPlayerEntity) this.target);
        float xHP = x + widthFace + 3.8f;
        float yHP = y + 21.3f;
        float widthHP = 52.0f;
        this.health = AnimationMath.fast(this.health, this.target.getHealth() / this.target.getMaxHealth(), 6.0f);
        this.health = MathHelper.clamp(this.health, 0.0f, 1.0f);
        this.absorpation = AnimationMath.fast(this.absorpation, this.target.getAbsorptionAmount() / this.target.getMaxHealth(), 6.0f);
        this.absorpation = MathHelper.clamp(this.absorpation, 0.0f, 1.0f);
        if (hp.get()) {
            RenderUtil.Render2D.drawRoundedRect(xHP - 5, yHP - 1, 52.0f * this.health, 10f, 1f, ColorUtil.getColorStyle(0.0f));
        } else{
            if (this.target.getHealth() >= 15.0F) {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(12, 71, 0, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(0, 204, 0, 68), ColorUtil.rgba(0, 153, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(12, 71, 0, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(0, 204, 0, 250), ColorUtil.rgba(0, 153, 0, 250));

            } else if (this.target.getHealth() >= 5.0F) {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(62, 71, 0, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(255, 255, 0, 170), ColorUtil.rgba(153, 153, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(62, 71, 0, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(255, 255, 0, 250), ColorUtil.rgba(153, 153, 0, 250));
            } else if (this.target.getHealth() >= 1000.0F) {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(255, 255, 255, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(255, 255, 255, 170), ColorUtil.rgba(204, 0, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(255, 255, 255, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(255, 255, 255, 250), ColorUtil.rgba(204, 0, 0, 250));
            } else {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(71, 0, 0, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(102, 0, 0, 68), ColorUtil.rgba(204, 0, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(71, 0, 0, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(102, 0, 0, 250), ColorUtil.rgba(204, 0, 0, 250));
            }
        }
        RenderUtil.Render2D.drawRoundedCorner(xHP - 4.5f, yHP - 2, 52.0f * this.absorpation, 1f, 0, new Color(222, 211, 14, 255).getRGB());
        String targetName = this.target.getName().getString();
        String targetnamop = targetName.substring(0, Math.min(targetName.length(), 9));
        RenderUtil.SmartScissor.push();
        RenderUtil.SmartScissor.setFromComponentCoordinates(x, y, width2 - 6.0f, height2);
        Fonts.msSemiBold[14].drawString(stack, targetnamop, (double)xHP - 5, (double)(yHP - 16.3f), new Color(255, 255, 255, 255).getRGB());
        RenderUtil.SmartScissor.unset();
        RenderUtil.SmartScissor.pop();
        String HP = String.valueOf(this.target.getHealth());
        String StringHP = HP.substring(0, Math.min(HP.length(), 4));
        if (this.target.getHealth() + this.target.getAbsorptionAmount() < 10.0f) {
            StringHP = HP.substring(0, Math.min(HP.length(), 3));
        }
        Fonts.msSemiBold[12].drawString(stack, "HP: " + StringHP + " + " + mc.player.getAbsorptionAmount(), (double)xHP - 5, (double)(yHP - 7.7f), new Color(255, 255, 255, 255).getRGB());
        this.drawItemStack(x, y - 12.0f, 10.5f, 0.7f);
        GlStateManager.popMatrix();
        this.TargetHUD.setWidth(width2);
        this.TargetHUD.setHeight(height2);
    }

    private void drawItemStack(float x, float y, float offset, float scaleValue) {
        ArrayList<ItemStack> stackList = new ArrayList<ItemStack>(Arrays.asList(this.target.getHeldItemMainhand(), this.target.getHeldItemOffhand()));
        stackList.addAll((Collection)this.target.getArmorInventoryList());
        AtomicReference<Float> posX = new AtomicReference<Float>(Float.valueOf(x));
        stackList.stream().filter(stack -> !stack.isEmpty()).forEach(stack -> HudUtil.drawItemStack(stack, posX.getAndAccumulate(Float.valueOf(offset), Float::sum).floatValue(), y, true, true, scaleValue));
    }

    private LivingEntity getTarget(LivingEntity nullTarget) {
        LivingEntity target = nullTarget;
        FunctionManager functionManager = Managment.FUNCTION_MANAGER;
        if (functionManager.auraFunction.getTarget() instanceof LivingEntity) {
            FunctionManager functionManager2 = Managment.FUNCTION_MANAGER;
            target = functionManager2.auraFunction.getTarget();
            this.targetHudAnimation.setDirection(Direction.FORWARDS);
        } else if (IMinecraft.mc.currentScreen instanceof ChatScreen) {
            target = IMinecraft.mc.player;
            this.targetHudAnimation.setDirection(Direction.FORWARDS);
        } else {
            this.targetHudAnimation.setDirection(Direction.BACKWARDS);
        }
        return target;
    }
}
боль в глазах
1743574339010.png


Худ залупа, проще говоря
 
Сделал по скольку понравился тх а так хз зачем это нужно и я знаю уже была тема с худом катлавана но
он там старый + баги с кейбиндами которые я пофиксил и переделал тх + вт (ожидаю уже что напишут слил говно, без хейта пж)

взял под основу эту тему
мне лень самому делать

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

вот это в RenderUtil

drawRoundFace:
Expand Collapse Copy
public static void drawRoundFace(float x, float y, float width, float height, float radius, float alpha, AbstractClientPlayerEntity target) {
            try {
                ResourceLocation skin = target.getLocationSkin();
                mc.getTextureManager().bindTexture(skin);
                // Вычисляем процент повреждения
                float hurtPercent = getHurtPercent(target);

                RenderSystem.pushMatrix();
                RenderSystem.enableBlend();
                RenderSystem.blendFunc(770, 771);
                // Подключаем шейдер для округлой головы
                ShaderUtil.FACE_ROUND.attach();

                // Передаем данные в шейдер
                ShaderUtil.FACE_ROUND.setUniform("location", x * 2, sr.getHeight() - height * 2 - y * 2);
                ShaderUtil.FACE_ROUND.setUniform("size", width * 2, height * 2);
                ShaderUtil.FACE_ROUND.setUniform("texture", 0);
                ShaderUtil.FACE_ROUND.setUniform("radius", radius * 2);
                ShaderUtil.FACE_ROUND.setUniform("alpha", alpha);
                ShaderUtil.FACE_ROUND.setUniform("hurtPercent", hurtPercent);  // Передаем процент повреждений в шейдер
                ShaderUtil.FACE_ROUND.setUniform("u", (1f / 64) * 8);
                ShaderUtil.FACE_ROUND.setUniform("v", (1f / 64) * 8);
                ShaderUtil.FACE_ROUND.setUniform("w", 1f / 8);
                ShaderUtil.FACE_ROUND.setUniform("h", 1f / 8);


                quadsBegin(x, y, width, height, 7);

                // Отключаем шейдер
                ShaderUtil.FACE_ROUND.detach();

                RenderSystem.disableBlend();
                RenderSystem.popMatrix();
            } catch(Exception e){
                e.printStackTrace();
            }
        }

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


Сам худ
HUD2:
Expand Collapse Copy
package wtf.expensive.modules.impl.render;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import net.minecraft.client.MainWindow;
import net.minecraft.client.entity.player.AbstractClientPlayerEntity;
import net.minecraft.client.gui.DisplayEffectsScreen;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.client.network.play.NetworkPlayerInfo;
import net.minecraft.client.renderer.texture.PotionSpriteUploader;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.AirItem;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.potion.Effect;
import net.minecraft.potion.EffectInstance;
import net.minecraft.potion.EffectUtils;
import net.minecraft.scoreboard.ScorePlayerTeam;
import net.minecraft.scoreboard.Team;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector4f;
import net.minecraft.util.text.ITextComponent;
import org.joml.Vector4i;
import wtf.expensive.Initilization;
import wtf.expensive.events.Event;
import wtf.expensive.events.impl.player.EventUpdate;
import wtf.expensive.events.impl.render.EventRender;
import wtf.expensive.managment.Managment;
import wtf.expensive.modules.Function;
import wtf.expensive.modules.FunctionAnnotation;
import wtf.expensive.modules.FunctionManager;
import wtf.expensive.modules.Type;
import wtf.expensive.modules.settings.imp.BooleanOption;
import wtf.expensive.modules.settings.imp.MultiBoxSetting;
import wtf.expensive.modules.settings.imp.SliderSetting;
import wtf.expensive.util.BetterText;
import wtf.expensive.util.ClientUtil;
import wtf.expensive.util.IMinecraft;
import wtf.expensive.util.animations.Animation;
import wtf.expensive.util.animations.Direction;
import wtf.expensive.util.animations.impl.EaseBackIn;
import wtf.expensive.util.drag.Dragging;
import wtf.expensive.util.font.Fonts;
import wtf.expensive.util.font.styled.StyledFont;
import wtf.expensive.util.math.MathUtil;
import wtf.expensive.util.misc.HudUtil;
import wtf.expensive.util.render.BloomHelper;
import wtf.expensive.util.render.ColorUtil;
import wtf.expensive.util.render.RenderUtil;
import wtf.expensive.util.render.animation.AnimationMath;

import java.awt.*;
import java.util.*;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
import java.util.regex.Pattern;

import static wtf.expensive.util.render.RenderUtil.Render2D.drawFace;

@FunctionAnnotation(name="Hud", type=Type.Render)
public class HUD2
        extends Function {
    public static MultiBoxSetting elements = new MultiBoxSetting("Elements",
            new BooleanOption("Active Target", true),
            new BooleanOption("Logo", true),
            new BooleanOption("Coordinates", true),
            new BooleanOption("Speed", true),
            new BooleanOption("Effects", true),
            new BooleanOption("Active Binds", true),
            new BooleanOption("Active Staff", true),
            new BooleanOption("Armor", true),
            new BooleanOption("Cooldown", true));
    public BooleanOption hp = new BooleanOption("Хп под тему", false);

    private final SliderSetting offsetEffects = new SliderSetting("\u0420\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432", 24.0f, 23.0f, 26.0f, 0.1f).setVisible(() -> elements.get(5));
    final Dragging TargetHUD = Initilization.createDrag(this, "TargetHUD7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Logo = Initilization.createDrag(this, "Logo7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Coords = Initilization.createDrag(this, "Coords7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging BPS = Initilization.createDrag(this, "BPS7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Effects = Initilization.createDrag(this, "Effects7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging KeyBinds = Initilization.createDrag(this, "KeyBinds7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging StaffActive = Initilization.createDrag(this, "StaffActive7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Cooldown = Initilization.createDrag(this, "Cooldown7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    int activeStaff = 0;
    private final Pattern namePattern = Pattern.compile("^\\w{3,16}$");
    int activeBind = 0;
    float heightAnimation = 0.0f;
    private float perc;
    private final Animation targetHudAnimation = new EaseBackIn(270, 1.0, 1.5f);
    private double scale = 0.0;
    private LivingEntity target = null;
    float health = 0.0f;
    float absorpation = 0.0f;

    public HUD2() {
        this.addSettings(elements,hp, this.offsetEffects);
    }

    [USER=1367676]@override[/USER]
    public void onEvent(Event event) {
        if (event instanceof EventRender) {
            EventRender eventRender = (EventRender)event;
            MatrixStack stack = eventRender.matrixStack;
            if (elements.get(0)) {
                this.TargetHUD(stack);
            }
            if (elements.get(2)) {
                this.Logo(stack);
            }
            if (elements.get(3)) {
                this.Coords(stack);
            }
            if (elements.get(4)) {
                this.BPS(stack);
            }
            if (elements.get(5)) {
                this.Effects(stack);
            }
            if (elements.get(6)) {
                this.KeyBinds(stack);
            }
            if (elements.get(7)) {
                this.StaffActive(stack);
            }
            if (elements.get(8)) {
                this.ArmorHUD(stack, eventRender);
            }
        }
    }

    public void ArmorHUD(MatrixStack stack, EventRender eventRender) {
        int off;
        int count = 0;
        for (int i = 0; i < HUD2.mc.player.inventory.getSizeInventory(); ++i) {
            ItemStack s = HUD2.mc.player.inventory.getStackInSlot(i);
            if (s.getItem() != Items.TOTEM_OF_UNDYING) continue;
            ++count;
        }
        float xPos = (float)eventRender.scaledResolution.scaledWidth() / 2.0f;
        float yPos = eventRender.scaledResolution.scaledHeight();
        boolean totemInInv = HUD2.mc.player.inventory.mainInventory.stream().map(ItemStack::getItem).toList().contains(Items.TOTEM_OF_UNDYING);
        int n = off = totemInInv ? 5 : 0;
        if (HUD2.mc.player.isCreative()) {
            yPos += 17.0f;
        }
        for (ItemStack s : HUD2.mc.player.inventory.armorInventory) {
            ESPFunction.drawItemStack(s, xPos - (float)off + 74.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), yPos - 56.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), null, false);
            off += 15;
        }
        if (totemInInv) {
            ESPFunction.drawItemStack(new ItemStack(Items.TOTEM_OF_UNDYING), xPos - (float)off + 73.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), yPos - 56.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), String.valueOf(count), false);
        }
    }

    public void StaffActive(MatrixStack stack) {
        float x = this.StaffActive.getX();
        float y = this.StaffActive.getY();
        float offset = 9.0f;
        float height2 = 20.5f;
        float width2 = 100.0f;
        height2 += offset * (float)this.activeStaff - 4.0f;
        float xStaff = x + 26.0f;
        if (this.activeStaff == 0) {
            height2 -= 1.5f;
            width2 -= 25.0f;
            xStaff -= 12.5f;
        }
        RenderUtil.Render2D.drawRoundedCorner(x, y, width2, height2, 3, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Staff Active", (double)xStaff, (double)(y + 6.0f), new Color(255, 255, 255, 255).getRGB());
        int i = 0;
        for (ScorePlayerTeam team : HUD2.mc.world.getScoreboard().getTeams().stream().sorted(Comparator.comparing(Team::getName)).toList()) {
            String name = team.getMembershipCollection().toString();
            if (!this.namePattern.matcher(name = name.substring(1, name.length() - 1)).matches()) continue;
            boolean vanish = true;
            boolean near = false;
            boolean active = false;
            for (AbstractClientPlayerEntity player : HUD2.mc.world.getPlayers()) {
                if (!player.getNameClear().equals(name)) continue;
                near = true;
            }
            for (NetworkPlayerInfo info : mc.getConnection().getPlayerInfoMap()) {
                if (!info.getGameProfile().getName().equals(name)) continue;
                vanish = false;
                if (near) continue;
                active = true;
            }
            if (!vanish && !Managment.STAFF_MANAGER.isStaff(name)) continue;
            String Name2 = name.substring(0, Math.min(name.length(), 10));
            StyledFont small = Fonts.msSemiBold[13];
            StyledFont small2 = Fonts.msSemiBold[14];
            float yText = y + 17.0f;
            small2.drawString(stack, Name2, (double)(x + 4.0f), (double)yText, new Color(255, 255, 255, 255).getRGB());
            if (vanish) {
                small.drawString(stack, "Спектатор", (double)(x + 63.5f), (double)yText, new Color(255, 0, 0, 255).getRGB());
            } else if (active) {
                small.drawString(stack, "Активен", (double)(x + 74f), (double)yText, new Color(4, 255, 0, 255).getRGB());
            } else if (near) {
                small.drawString(stack, "Рядом", (double)(x + 80.8f), (double)yText, new Color(255, 136, 0, 255).getRGB());
            }
            y += offset;
            ++i;
        }
        this.activeStaff = i;
        this.StaffActive.setWidth(width2);
        this.StaffActive.setHeight(height2);
    }

    public void KeyBinds(MatrixStack stack) {
        float x = this.KeyBinds.getX();
        float y = this.KeyBinds.getY();
        float offset = 9.5f;
        float height2 = 21.0f;
        float width2 = 75.0f;
        height2 += offset * (float)this.activeBind - 5.0f;
        if (this.activeBind == 0) {
            height2 -= 1.0f;
        }
        RenderUtil.Render2D.drawRoundedCorner(x, y, width2, this.heightAnimation, 3, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Key Binds", (x + 18.0f), (y + 6.0f), new Color(255, 255, 255, 255).getRGB());
        int i = 0;
        for (Function f : Managment.FUNCTION_MANAGER.getFunctions()) {
            String text;
            if (f.bind == 0 || !f.state || (text = ClientUtil.getKey(f.bind)) == null) continue;
            StyledFont small = Fonts.msSemiBold[13];
            String sss = f.name;
            String fname = sss.substring(0, Math.min(sss.length(), 13));;
            String bindText = text.toUpperCase();
            float yText = y + 17.0f;
            RenderUtil.SmartScissor.push();
            RenderUtil.SmartScissor.setFromComponentCoordinates(x, y, width2, this.heightAnimation);
            small.drawString(stack, fname, (x + 4.0f), yText, new Color(255, 255, 255, 255).getRGB());
            small.drawString(stack, "[" + bindText + "]", (x + 62.0f), yText, new Color(255, 255, 255, 255).getRGB());
            RenderUtil.SmartScissor.unset();
            RenderUtil.SmartScissor.pop();
            y += offset;
            ++i;
        }
        this.heightAnimation = AnimationMath.fast(this.heightAnimation, height2, 11.0f);
        this.activeBind = i;
        this.KeyBinds.setWidth(width2);
        this.KeyBinds.setHeight(height2);
    }

    public void Effects(MatrixStack stack) {
        float x = 3;
        float y = 270;
        float offset = this.offsetEffects.getValue().floatValue();
        float height2 = 21.3f;
        StyledFont small = Fonts.msSemiBold[13];
        int counterEffect = 0;
        for (EffectInstance effectInstance : HUD2.mc.player.getActivePotionEffects()) {
            String levelpotion = String.valueOf(effectInstance.getAmplifier() + 1);
            float textWidthBonus = 27.3f;
            if (levelpotion.contains("1")) {
                levelpotion = "";
                textWidthBonus -= 5.0f;
            }
            String durationText = EffectUtils.getPotionDurationString(effectInstance, 1.0f);
            String text = I18n.format(effectInstance.getEffectName(), new Object[0]);
            float textWidth = small.getWidth(text + effectInstance.getAmplifier() + levelpotion) + textWidthBonus - 0.6f;
            RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
            small.drawString(stack, text + " " + levelpotion, (double)(x + 22.3f), (double)(y + 5.5f), new Color(255, 255, 255, 255).getRGB());
            small.drawString(stack, durationText, (double)(x + 22.3f), (double)(y + 13.5f), new Color(255, 255, 255, 255).getRGB());
            PotionSpriteUploader potionspriteuploader = mc.getPotionSpriteUploader();
            Effect effect = effectInstance.getPotion();
            TextureAtlasSprite textureatlassprite = potionspriteuploader.getSprite(effect);
            mc.getTextureManager().bindTexture(textureatlassprite.getAtlasTexture().getTextureLocation());
            DisplayEffectsScreen.blit(stack, (int)(x + 2.0f), (int)y + 2, 10, 18, 18, textureatlassprite);
            y += offset;
            ++counterEffect;
            this.Effects.setWidth(textWidth);
        }
        float setHeight = offset / 8.0f * (float)counterEffect;
        this.Effects.setHeight(height2 * (float)counterEffect + setHeight);
    }

    public void BPS(MatrixStack stack) {
        float x = 3;
        float y = 507;
        float height2 = 15.0f;
        float textWidth = Fonts.msSemiBold[14].getWidth("Speed: " + String.format("%.2f", Math.hypot(mc.player.getPosX() - mc.player.prevPosX, mc.player.getPosZ() - mc.player.prevPosZ) * 20.0)) + 8.5f;
        RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Speed: " + String.format("%.2f", Math.hypot(mc.player.getPosX() - mc.player.prevPosX, mc.player.getPosZ() - mc.player.prevPosZ) * 20.0), (x + 4.5f), (double)y + 6.3, new Color(255, 255, 255, 255).getRGB());
        this.BPS.setWidth(textWidth);
        this.BPS.setHeight(height2);
    }

    public void Coords(MatrixStack stack) {
        float x = 3;
        float y = 524;
        float height2 = 15.0f;
        int X = (int)HUD2.mc.player.getPosX();
        int Y = (int)HUD2.mc.player.getPosY();
        int Z2 = (int)HUD2.mc.player.getPosZ();
        float textWidth = Fonts.msSemiBold[14].getWidth("Coords: X: " + X + " Y: " + Y + " Z: " + Z2) + 8.5f;
        RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Coords: X: " + X + " Y: " + Y + " Z: " + Z2, (x + 4.5f), (y + 6.0f), new Color(255, 255, 255, 255).getRGB());
        this.Coords.setWidth(textWidth);
        this.Coords.setHeight(height2);
    }

    public void Logo(MatrixStack stack) {
        float x = 3;
        float y = 3;
        float height2 = 17.0f;

        float textWidth = Fonts.msSemiBold[15].getWidth("Catlavan I " + ClientUtil.me.getName()) + 20;
        RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[15].drawString(stack, "Catlavan I " + ClientUtil.me.getName(), x + 16.0f, y + 6.5f, new Color(255, 255, 255, 255).getRGB());
        Fonts.icons1[15].drawString(stack, "A",x + 5, y + 8,new Color(255, 255, 255, 255).getRGB());
        this.Logo.setWidth(textWidth);
        this.Logo.setHeight(height2);
    }

    public void TargetHUD(MatrixStack stack) {
        float x = this.TargetHUD.getX();
        float y = this.TargetHUD.getY();
        float width2 = 95.0f;
        float height2 = 34.0f;
        float widthFace = 34.0f;
        this.target = this.getTarget(this.target);
        this.targetHudAnimation.setDuration(280);
        this.scale = this.targetHudAnimation.getOutput();
        if (this.scale == 0.0) {
            this.target = null;
        }
        if (this.target == null) {
            return;
        }
        GlStateManager.pushMatrix();
        AnimationMath.sizeAnimation(x + width2 / 2.0f, y + 15.0f, this.scale);
        RenderUtil.Render2D.drawRoundedCorner(x, y, width2 - 5, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        RenderUtil.Render2D.drawRoundFace(x + 3, y + 3.5f, 27, 27, 3, 1F, (AbstractClientPlayerEntity) this.target);
        float xHP = x + widthFace + 3.8f;
        float yHP = y + 21.3f;
        float widthHP = 52.0f;
        this.health = AnimationMath.fast(this.health, this.target.getHealth() / this.target.getMaxHealth(), 6.0f);
        this.health = MathHelper.clamp(this.health, 0.0f, 1.0f);
        this.absorpation = AnimationMath.fast(this.absorpation, this.target.getAbsorptionAmount() / this.target.getMaxHealth(), 6.0f);
        this.absorpation = MathHelper.clamp(this.absorpation, 0.0f, 1.0f);
        if (hp.get()) {
            RenderUtil.Render2D.drawRoundedRect(xHP - 5, yHP - 1, 52.0f * this.health, 10f, 1f, ColorUtil.getColorStyle(0.0f));
        } else{
            if (this.target.getHealth() >= 15.0F) {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(12, 71, 0, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(0, 204, 0, 68), ColorUtil.rgba(0, 153, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(12, 71, 0, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(0, 204, 0, 250), ColorUtil.rgba(0, 153, 0, 250));

            } else if (this.target.getHealth() >= 5.0F) {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(62, 71, 0, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(255, 255, 0, 170), ColorUtil.rgba(153, 153, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(62, 71, 0, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(255, 255, 0, 250), ColorUtil.rgba(153, 153, 0, 250));
            } else if (this.target.getHealth() >= 1000.0F) {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(255, 255, 255, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(255, 255, 255, 170), ColorUtil.rgba(204, 0, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(255, 255, 255, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(255, 255, 255, 250), ColorUtil.rgba(204, 0, 0, 250));
            } else {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(71, 0, 0, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(102, 0, 0, 68), ColorUtil.rgba(204, 0, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(71, 0, 0, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(102, 0, 0, 250), ColorUtil.rgba(204, 0, 0, 250));
            }
        }
        RenderUtil.Render2D.drawRoundedCorner(xHP - 4.5f, yHP - 2, 52.0f * this.absorpation, 1f, 0, new Color(222, 211, 14, 255).getRGB());
        String targetName = this.target.getName().getString();
        String targetnamop = targetName.substring(0, Math.min(targetName.length(), 9));
        RenderUtil.SmartScissor.push();
        RenderUtil.SmartScissor.setFromComponentCoordinates(x, y, width2 - 6.0f, height2);
        Fonts.msSemiBold[14].drawString(stack, targetnamop, (double)xHP - 5, (double)(yHP - 16.3f), new Color(255, 255, 255, 255).getRGB());
        RenderUtil.SmartScissor.unset();
        RenderUtil.SmartScissor.pop();
        String HP = String.valueOf(this.target.getHealth());
        String StringHP = HP.substring(0, Math.min(HP.length(), 4));
        if (this.target.getHealth() + this.target.getAbsorptionAmount() < 10.0f) {
            StringHP = HP.substring(0, Math.min(HP.length(), 3));
        }
        Fonts.msSemiBold[12].drawString(stack, "HP: " + StringHP + " + " + mc.player.getAbsorptionAmount(), (double)xHP - 5, (double)(yHP - 7.7f), new Color(255, 255, 255, 255).getRGB());
        this.drawItemStack(x, y - 12.0f, 10.5f, 0.7f);
        GlStateManager.popMatrix();
        this.TargetHUD.setWidth(width2);
        this.TargetHUD.setHeight(height2);
    }

    private void drawItemStack(float x, float y, float offset, float scaleValue) {
        ArrayList<ItemStack> stackList = new ArrayList<ItemStack>(Arrays.asList(this.target.getHeldItemMainhand(), this.target.getHeldItemOffhand()));
        stackList.addAll((Collection)this.target.getArmorInventoryList());
        AtomicReference<Float> posX = new AtomicReference<Float>(Float.valueOf(x));
        stackList.stream().filter(stack -> !stack.isEmpty()).forEach(stack -> HudUtil.drawItemStack(stack, posX.getAndAccumulate(Float.valueOf(offset), Float::sum).floatValue(), y, true, true, scaleValue));
    }

    private LivingEntity getTarget(LivingEntity nullTarget) {
        LivingEntity target = nullTarget;
        FunctionManager functionManager = Managment.FUNCTION_MANAGER;
        if (functionManager.auraFunction.getTarget() instanceof LivingEntity) {
            FunctionManager functionManager2 = Managment.FUNCTION_MANAGER;
            target = functionManager2.auraFunction.getTarget();
            this.targetHudAnimation.setDirection(Direction.FORWARDS);
        } else if (IMinecraft.mc.currentScreen instanceof ChatScreen) {
            target = IMinecraft.mc.player;
            this.targetHudAnimation.setDirection(Direction.FORWARDS);
        } else {
            this.targetHudAnimation.setDirection(Direction.BACKWARDS);
        }
        return target;
    }
}
ну зачем блять, 1 рект, 1 текст, 1 иконка (по праздникам), худ
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
бляя, удалить тень и добавить прозрачность обычному худу экспы что ли настолько сложно? /del
 
ты гений? А ничо тот факт, то что я эту хуйню даже не скачивал и это со скрина автора темы?
пхах, сорян я не сразу понял, что это не у тебя ошибка, а со скрина взял.
ты гений? А ничо тот факт, то что я эту хуйню даже не скачивал и это со скрина автора темы?
я то подумал ты типо скачал, потом не все вписал и у тебя Gl ошибку выдает, поэтому говно
 
Сделал по скольку понравился тх а так хз зачем это нужно и я знаю уже была тема с худом катлавана но
он там старый + баги с кейбиндами которые я пофиксил и переделал тх + вт (ожидаю уже что напишут слил говно, без хейта пж)

взял под основу эту тему
мне лень самому делать

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

вот это в RenderUtil

drawRoundFace:
Expand Collapse Copy
public static void drawRoundFace(float x, float y, float width, float height, float radius, float alpha, AbstractClientPlayerEntity target) {
            try {
                ResourceLocation skin = target.getLocationSkin();
                mc.getTextureManager().bindTexture(skin);
                // Вычисляем процент повреждения
                float hurtPercent = getHurtPercent(target);

                RenderSystem.pushMatrix();
                RenderSystem.enableBlend();
                RenderSystem.blendFunc(770, 771);
                // Подключаем шейдер для округлой головы
                ShaderUtil.FACE_ROUND.attach();

                // Передаем данные в шейдер
                ShaderUtil.FACE_ROUND.setUniform("location", x * 2, sr.getHeight() - height * 2 - y * 2);
                ShaderUtil.FACE_ROUND.setUniform("size", width * 2, height * 2);
                ShaderUtil.FACE_ROUND.setUniform("texture", 0);
                ShaderUtil.FACE_ROUND.setUniform("radius", radius * 2);
                ShaderUtil.FACE_ROUND.setUniform("alpha", alpha);
                ShaderUtil.FACE_ROUND.setUniform("hurtPercent", hurtPercent);  // Передаем процент повреждений в шейдер
                ShaderUtil.FACE_ROUND.setUniform("u", (1f / 64) * 8);
                ShaderUtil.FACE_ROUND.setUniform("v", (1f / 64) * 8);
                ShaderUtil.FACE_ROUND.setUniform("w", 1f / 8);
                ShaderUtil.FACE_ROUND.setUniform("h", 1f / 8);


                quadsBegin(x, y, width, height, 7);

                // Отключаем шейдер
                ShaderUtil.FACE_ROUND.detach();

                RenderSystem.disableBlend();
                RenderSystem.popMatrix();
            } catch(Exception e){
                e.printStackTrace();
            }
        }

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


Сам худ
HUD2:
Expand Collapse Copy
package wtf.expensive.modules.impl.render;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import net.minecraft.client.MainWindow;
import net.minecraft.client.entity.player.AbstractClientPlayerEntity;
import net.minecraft.client.gui.DisplayEffectsScreen;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.client.network.play.NetworkPlayerInfo;
import net.minecraft.client.renderer.texture.PotionSpriteUploader;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.AirItem;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.potion.Effect;
import net.minecraft.potion.EffectInstance;
import net.minecraft.potion.EffectUtils;
import net.minecraft.scoreboard.ScorePlayerTeam;
import net.minecraft.scoreboard.Team;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector4f;
import net.minecraft.util.text.ITextComponent;
import org.joml.Vector4i;
import wtf.expensive.Initilization;
import wtf.expensive.events.Event;
import wtf.expensive.events.impl.player.EventUpdate;
import wtf.expensive.events.impl.render.EventRender;
import wtf.expensive.managment.Managment;
import wtf.expensive.modules.Function;
import wtf.expensive.modules.FunctionAnnotation;
import wtf.expensive.modules.FunctionManager;
import wtf.expensive.modules.Type;
import wtf.expensive.modules.settings.imp.BooleanOption;
import wtf.expensive.modules.settings.imp.MultiBoxSetting;
import wtf.expensive.modules.settings.imp.SliderSetting;
import wtf.expensive.util.BetterText;
import wtf.expensive.util.ClientUtil;
import wtf.expensive.util.IMinecraft;
import wtf.expensive.util.animations.Animation;
import wtf.expensive.util.animations.Direction;
import wtf.expensive.util.animations.impl.EaseBackIn;
import wtf.expensive.util.drag.Dragging;
import wtf.expensive.util.font.Fonts;
import wtf.expensive.util.font.styled.StyledFont;
import wtf.expensive.util.math.MathUtil;
import wtf.expensive.util.misc.HudUtil;
import wtf.expensive.util.render.BloomHelper;
import wtf.expensive.util.render.ColorUtil;
import wtf.expensive.util.render.RenderUtil;
import wtf.expensive.util.render.animation.AnimationMath;

import java.awt.*;
import java.util.*;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
import java.util.regex.Pattern;

import static wtf.expensive.util.render.RenderUtil.Render2D.drawFace;

@FunctionAnnotation(name="Hud", type=Type.Render)
public class HUD2
        extends Function {
    public static MultiBoxSetting elements = new MultiBoxSetting("Elements",
            new BooleanOption("Active Target", true),
            new BooleanOption("Logo", true),
            new BooleanOption("Coordinates", true),
            new BooleanOption("Speed", true),
            new BooleanOption("Effects", true),
            new BooleanOption("Active Binds", true),
            new BooleanOption("Active Staff", true),
            new BooleanOption("Armor", true),
            new BooleanOption("Cooldown", true));
    public BooleanOption hp = new BooleanOption("Хп под тему", false);

    private final SliderSetting offsetEffects = new SliderSetting("\u0420\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432", 24.0f, 23.0f, 26.0f, 0.1f).setVisible(() -> elements.get(5));
    final Dragging TargetHUD = Initilization.createDrag(this, "TargetHUD7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Logo = Initilization.createDrag(this, "Logo7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Coords = Initilization.createDrag(this, "Coords7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging BPS = Initilization.createDrag(this, "BPS7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Effects = Initilization.createDrag(this, "Effects7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging KeyBinds = Initilization.createDrag(this, "KeyBinds7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging StaffActive = Initilization.createDrag(this, "StaffActive7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Cooldown = Initilization.createDrag(this, "Cooldown7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    int activeStaff = 0;
    private final Pattern namePattern = Pattern.compile("^\\w{3,16}$");
    int activeBind = 0;
    float heightAnimation = 0.0f;
    private float perc;
    private final Animation targetHudAnimation = new EaseBackIn(270, 1.0, 1.5f);
    private double scale = 0.0;
    private LivingEntity target = null;
    float health = 0.0f;
    float absorpation = 0.0f;

    public HUD2() {
        this.addSettings(elements,hp, this.offsetEffects);
    }

    [USER=1367676]@override[/USER]
    public void onEvent(Event event) {
        if (event instanceof EventRender) {
            EventRender eventRender = (EventRender)event;
            MatrixStack stack = eventRender.matrixStack;
            if (elements.get(0)) {
                this.TargetHUD(stack);
            }
            if (elements.get(2)) {
                this.Logo(stack);
            }
            if (elements.get(3)) {
                this.Coords(stack);
            }
            if (elements.get(4)) {
                this.BPS(stack);
            }
            if (elements.get(5)) {
                this.Effects(stack);
            }
            if (elements.get(6)) {
                this.KeyBinds(stack);
            }
            if (elements.get(7)) {
                this.StaffActive(stack);
            }
            if (elements.get(8)) {
                this.ArmorHUD(stack, eventRender);
            }
        }
    }

    public void ArmorHUD(MatrixStack stack, EventRender eventRender) {
        int off;
        int count = 0;
        for (int i = 0; i < HUD2.mc.player.inventory.getSizeInventory(); ++i) {
            ItemStack s = HUD2.mc.player.inventory.getStackInSlot(i);
            if (s.getItem() != Items.TOTEM_OF_UNDYING) continue;
            ++count;
        }
        float xPos = (float)eventRender.scaledResolution.scaledWidth() / 2.0f;
        float yPos = eventRender.scaledResolution.scaledHeight();
        boolean totemInInv = HUD2.mc.player.inventory.mainInventory.stream().map(ItemStack::getItem).toList().contains(Items.TOTEM_OF_UNDYING);
        int n = off = totemInInv ? 5 : 0;
        if (HUD2.mc.player.isCreative()) {
            yPos += 17.0f;
        }
        for (ItemStack s : HUD2.mc.player.inventory.armorInventory) {
            ESPFunction.drawItemStack(s, xPos - (float)off + 74.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), yPos - 56.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), null, false);
            off += 15;
        }
        if (totemInInv) {
            ESPFunction.drawItemStack(new ItemStack(Items.TOTEM_OF_UNDYING), xPos - (float)off + 73.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), yPos - 56.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), String.valueOf(count), false);
        }
    }

    public void StaffActive(MatrixStack stack) {
        float x = this.StaffActive.getX();
        float y = this.StaffActive.getY();
        float offset = 9.0f;
        float height2 = 20.5f;
        float width2 = 100.0f;
        height2 += offset * (float)this.activeStaff - 4.0f;
        float xStaff = x + 26.0f;
        if (this.activeStaff == 0) {
            height2 -= 1.5f;
            width2 -= 25.0f;
            xStaff -= 12.5f;
        }
        RenderUtil.Render2D.drawRoundedCorner(x, y, width2, height2, 3, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Staff Active", (double)xStaff, (double)(y + 6.0f), new Color(255, 255, 255, 255).getRGB());
        int i = 0;
        for (ScorePlayerTeam team : HUD2.mc.world.getScoreboard().getTeams().stream().sorted(Comparator.comparing(Team::getName)).toList()) {
            String name = team.getMembershipCollection().toString();
            if (!this.namePattern.matcher(name = name.substring(1, name.length() - 1)).matches()) continue;
            boolean vanish = true;
            boolean near = false;
            boolean active = false;
            for (AbstractClientPlayerEntity player : HUD2.mc.world.getPlayers()) {
                if (!player.getNameClear().equals(name)) continue;
                near = true;
            }
            for (NetworkPlayerInfo info : mc.getConnection().getPlayerInfoMap()) {
                if (!info.getGameProfile().getName().equals(name)) continue;
                vanish = false;
                if (near) continue;
                active = true;
            }
            if (!vanish && !Managment.STAFF_MANAGER.isStaff(name)) continue;
            String Name2 = name.substring(0, Math.min(name.length(), 10));
            StyledFont small = Fonts.msSemiBold[13];
            StyledFont small2 = Fonts.msSemiBold[14];
            float yText = y + 17.0f;
            small2.drawString(stack, Name2, (double)(x + 4.0f), (double)yText, new Color(255, 255, 255, 255).getRGB());
            if (vanish) {
                small.drawString(stack, "Спектатор", (double)(x + 63.5f), (double)yText, new Color(255, 0, 0, 255).getRGB());
            } else if (active) {
                small.drawString(stack, "Активен", (double)(x + 74f), (double)yText, new Color(4, 255, 0, 255).getRGB());
            } else if (near) {
                small.drawString(stack, "Рядом", (double)(x + 80.8f), (double)yText, new Color(255, 136, 0, 255).getRGB());
            }
            y += offset;
            ++i;
        }
        this.activeStaff = i;
        this.StaffActive.setWidth(width2);
        this.StaffActive.setHeight(height2);
    }

    public void KeyBinds(MatrixStack stack) {
        float x = this.KeyBinds.getX();
        float y = this.KeyBinds.getY();
        float offset = 9.5f;
        float height2 = 21.0f;
        float width2 = 75.0f;
        height2 += offset * (float)this.activeBind - 5.0f;
        if (this.activeBind == 0) {
            height2 -= 1.0f;
        }
        RenderUtil.Render2D.drawRoundedCorner(x, y, width2, this.heightAnimation, 3, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Key Binds", (x + 18.0f), (y + 6.0f), new Color(255, 255, 255, 255).getRGB());
        int i = 0;
        for (Function f : Managment.FUNCTION_MANAGER.getFunctions()) {
            String text;
            if (f.bind == 0 || !f.state || (text = ClientUtil.getKey(f.bind)) == null) continue;
            StyledFont small = Fonts.msSemiBold[13];
            String sss = f.name;
            String fname = sss.substring(0, Math.min(sss.length(), 13));;
            String bindText = text.toUpperCase();
            float yText = y + 17.0f;
            RenderUtil.SmartScissor.push();
            RenderUtil.SmartScissor.setFromComponentCoordinates(x, y, width2, this.heightAnimation);
            small.drawString(stack, fname, (x + 4.0f), yText, new Color(255, 255, 255, 255).getRGB());
            small.drawString(stack, "[" + bindText + "]", (x + 62.0f), yText, new Color(255, 255, 255, 255).getRGB());
            RenderUtil.SmartScissor.unset();
            RenderUtil.SmartScissor.pop();
            y += offset;
            ++i;
        }
        this.heightAnimation = AnimationMath.fast(this.heightAnimation, height2, 11.0f);
        this.activeBind = i;
        this.KeyBinds.setWidth(width2);
        this.KeyBinds.setHeight(height2);
    }

    public void Effects(MatrixStack stack) {
        float x = 3;
        float y = 270;
        float offset = this.offsetEffects.getValue().floatValue();
        float height2 = 21.3f;
        StyledFont small = Fonts.msSemiBold[13];
        int counterEffect = 0;
        for (EffectInstance effectInstance : HUD2.mc.player.getActivePotionEffects()) {
            String levelpotion = String.valueOf(effectInstance.getAmplifier() + 1);
            float textWidthBonus = 27.3f;
            if (levelpotion.contains("1")) {
                levelpotion = "";
                textWidthBonus -= 5.0f;
            }
            String durationText = EffectUtils.getPotionDurationString(effectInstance, 1.0f);
            String text = I18n.format(effectInstance.getEffectName(), new Object[0]);
            float textWidth = small.getWidth(text + effectInstance.getAmplifier() + levelpotion) + textWidthBonus - 0.6f;
            RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
            small.drawString(stack, text + " " + levelpotion, (double)(x + 22.3f), (double)(y + 5.5f), new Color(255, 255, 255, 255).getRGB());
            small.drawString(stack, durationText, (double)(x + 22.3f), (double)(y + 13.5f), new Color(255, 255, 255, 255).getRGB());
            PotionSpriteUploader potionspriteuploader = mc.getPotionSpriteUploader();
            Effect effect = effectInstance.getPotion();
            TextureAtlasSprite textureatlassprite = potionspriteuploader.getSprite(effect);
            mc.getTextureManager().bindTexture(textureatlassprite.getAtlasTexture().getTextureLocation());
            DisplayEffectsScreen.blit(stack, (int)(x + 2.0f), (int)y + 2, 10, 18, 18, textureatlassprite);
            y += offset;
            ++counterEffect;
            this.Effects.setWidth(textWidth);
        }
        float setHeight = offset / 8.0f * (float)counterEffect;
        this.Effects.setHeight(height2 * (float)counterEffect + setHeight);
    }

    public void BPS(MatrixStack stack) {
        float x = 3;
        float y = 507;
        float height2 = 15.0f;
        float textWidth = Fonts.msSemiBold[14].getWidth("Speed: " + String.format("%.2f", Math.hypot(mc.player.getPosX() - mc.player.prevPosX, mc.player.getPosZ() - mc.player.prevPosZ) * 20.0)) + 8.5f;
        RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Speed: " + String.format("%.2f", Math.hypot(mc.player.getPosX() - mc.player.prevPosX, mc.player.getPosZ() - mc.player.prevPosZ) * 20.0), (x + 4.5f), (double)y + 6.3, new Color(255, 255, 255, 255).getRGB());
        this.BPS.setWidth(textWidth);
        this.BPS.setHeight(height2);
    }

    public void Coords(MatrixStack stack) {
        float x = 3;
        float y = 524;
        float height2 = 15.0f;
        int X = (int)HUD2.mc.player.getPosX();
        int Y = (int)HUD2.mc.player.getPosY();
        int Z2 = (int)HUD2.mc.player.getPosZ();
        float textWidth = Fonts.msSemiBold[14].getWidth("Coords: X: " + X + " Y: " + Y + " Z: " + Z2) + 8.5f;
        RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Coords: X: " + X + " Y: " + Y + " Z: " + Z2, (x + 4.5f), (y + 6.0f), new Color(255, 255, 255, 255).getRGB());
        this.Coords.setWidth(textWidth);
        this.Coords.setHeight(height2);
    }

    public void Logo(MatrixStack stack) {
        float x = 3;
        float y = 3;
        float height2 = 17.0f;

        float textWidth = Fonts.msSemiBold[15].getWidth("Catlavan I " + ClientUtil.me.getName()) + 20;
        RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[15].drawString(stack, "Catlavan I " + ClientUtil.me.getName(), x + 16.0f, y + 6.5f, new Color(255, 255, 255, 255).getRGB());
        Fonts.icons1[15].drawString(stack, "A",x + 5, y + 8,new Color(255, 255, 255, 255).getRGB());
        this.Logo.setWidth(textWidth);
        this.Logo.setHeight(height2);
    }

    public void TargetHUD(MatrixStack stack) {
        float x = this.TargetHUD.getX();
        float y = this.TargetHUD.getY();
        float width2 = 95.0f;
        float height2 = 34.0f;
        float widthFace = 34.0f;
        this.target = this.getTarget(this.target);
        this.targetHudAnimation.setDuration(280);
        this.scale = this.targetHudAnimation.getOutput();
        if (this.scale == 0.0) {
            this.target = null;
        }
        if (this.target == null) {
            return;
        }
        GlStateManager.pushMatrix();
        AnimationMath.sizeAnimation(x + width2 / 2.0f, y + 15.0f, this.scale);
        RenderUtil.Render2D.drawRoundedCorner(x, y, width2 - 5, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        RenderUtil.Render2D.drawRoundFace(x + 3, y + 3.5f, 27, 27, 3, 1F, (AbstractClientPlayerEntity) this.target);
        float xHP = x + widthFace + 3.8f;
        float yHP = y + 21.3f;
        float widthHP = 52.0f;
        this.health = AnimationMath.fast(this.health, this.target.getHealth() / this.target.getMaxHealth(), 6.0f);
        this.health = MathHelper.clamp(this.health, 0.0f, 1.0f);
        this.absorpation = AnimationMath.fast(this.absorpation, this.target.getAbsorptionAmount() / this.target.getMaxHealth(), 6.0f);
        this.absorpation = MathHelper.clamp(this.absorpation, 0.0f, 1.0f);
        if (hp.get()) {
            RenderUtil.Render2D.drawRoundedRect(xHP - 5, yHP - 1, 52.0f * this.health, 10f, 1f, ColorUtil.getColorStyle(0.0f));
        } else{
            if (this.target.getHealth() >= 15.0F) {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(12, 71, 0, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(0, 204, 0, 68), ColorUtil.rgba(0, 153, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(12, 71, 0, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(0, 204, 0, 250), ColorUtil.rgba(0, 153, 0, 250));

            } else if (this.target.getHealth() >= 5.0F) {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(62, 71, 0, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(255, 255, 0, 170), ColorUtil.rgba(153, 153, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(62, 71, 0, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(255, 255, 0, 250), ColorUtil.rgba(153, 153, 0, 250));
            } else if (this.target.getHealth() >= 1000.0F) {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(255, 255, 255, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(255, 255, 255, 170), ColorUtil.rgba(204, 0, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(255, 255, 255, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(255, 255, 255, 250), ColorUtil.rgba(204, 0, 0, 250));
            } else {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(71, 0, 0, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(102, 0, 0, 68), ColorUtil.rgba(204, 0, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(71, 0, 0, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(102, 0, 0, 250), ColorUtil.rgba(204, 0, 0, 250));
            }
        }
        RenderUtil.Render2D.drawRoundedCorner(xHP - 4.5f, yHP - 2, 52.0f * this.absorpation, 1f, 0, new Color(222, 211, 14, 255).getRGB());
        String targetName = this.target.getName().getString();
        String targetnamop = targetName.substring(0, Math.min(targetName.length(), 9));
        RenderUtil.SmartScissor.push();
        RenderUtil.SmartScissor.setFromComponentCoordinates(x, y, width2 - 6.0f, height2);
        Fonts.msSemiBold[14].drawString(stack, targetnamop, (double)xHP - 5, (double)(yHP - 16.3f), new Color(255, 255, 255, 255).getRGB());
        RenderUtil.SmartScissor.unset();
        RenderUtil.SmartScissor.pop();
        String HP = String.valueOf(this.target.getHealth());
        String StringHP = HP.substring(0, Math.min(HP.length(), 4));
        if (this.target.getHealth() + this.target.getAbsorptionAmount() < 10.0f) {
            StringHP = HP.substring(0, Math.min(HP.length(), 3));
        }
        Fonts.msSemiBold[12].drawString(stack, "HP: " + StringHP + " + " + mc.player.getAbsorptionAmount(), (double)xHP - 5, (double)(yHP - 7.7f), new Color(255, 255, 255, 255).getRGB());
        this.drawItemStack(x, y - 12.0f, 10.5f, 0.7f);
        GlStateManager.popMatrix();
        this.TargetHUD.setWidth(width2);
        this.TargetHUD.setHeight(height2);
    }

    private void drawItemStack(float x, float y, float offset, float scaleValue) {
        ArrayList<ItemStack> stackList = new ArrayList<ItemStack>(Arrays.asList(this.target.getHeldItemMainhand(), this.target.getHeldItemOffhand()));
        stackList.addAll((Collection)this.target.getArmorInventoryList());
        AtomicReference<Float> posX = new AtomicReference<Float>(Float.valueOf(x));
        stackList.stream().filter(stack -> !stack.isEmpty()).forEach(stack -> HudUtil.drawItemStack(stack, posX.getAndAccumulate(Float.valueOf(offset), Float::sum).floatValue(), y, true, true, scaleValue));
    }

    private LivingEntity getTarget(LivingEntity nullTarget) {
        LivingEntity target = nullTarget;
        FunctionManager functionManager = Managment.FUNCTION_MANAGER;
        if (functionManager.auraFunction.getTarget() instanceof LivingEntity) {
            FunctionManager functionManager2 = Managment.FUNCTION_MANAGER;
            target = functionManager2.auraFunction.getTarget();
            this.targetHudAnimation.setDirection(Direction.FORWARDS);
        } else if (IMinecraft.mc.currentScreen instanceof ChatScreen) {
            target = IMinecraft.mc.player;
            this.targetHudAnimation.setDirection(Direction.FORWARDS);
        } else {
            this.targetHudAnimation.setDirection(Direction.BACKWARDS);
        }
        return target;
    }
}
Данный скид очень легко сделать
 
final Dragging TargetHUD = Initilization.createDrag(this, "TargetHUD7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f); final Dragging Logo = Initilization.createDrag(this, "Logo7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f); final Dragging Coords = Initilization.createDrag(this, "Coords7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f); final Dragging BPS = Initilization.createDrag(this, "BPS7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f); final Dragging Effects = Initilization.createDrag(this, "Effects7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f); final Dragging KeyBinds = Initilization.createDrag(this, "KeyBinds7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f); final Dragging StaffActive = Initilization.createDrag(this, "StaffActive7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f); final Dragging Cooldown = Initilization.createDrag(this, "Cooldown7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
:roflanPominki:
 
Сделал по скольку понравился тх а так хз зачем это нужно и я знаю уже была тема с худом катлавана но
он там старый + баги с кейбиндами которые я пофиксил и переделал тх + вт (ожидаю уже что напишут слил говно, без хейта пж)

взял под основу эту тему
мне лень самому делать

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

вот это в RenderUtil

drawRoundFace:
Expand Collapse Copy
public static void drawRoundFace(float x, float y, float width, float height, float radius, float alpha, AbstractClientPlayerEntity target) {
            try {
                ResourceLocation skin = target.getLocationSkin();
                mc.getTextureManager().bindTexture(skin);
                // Вычисляем процент повреждения
                float hurtPercent = getHurtPercent(target);

                RenderSystem.pushMatrix();
                RenderSystem.enableBlend();
                RenderSystem.blendFunc(770, 771);
                // Подключаем шейдер для округлой головы
                ShaderUtil.FACE_ROUND.attach();

                // Передаем данные в шейдер
                ShaderUtil.FACE_ROUND.setUniform("location", x * 2, sr.getHeight() - height * 2 - y * 2);
                ShaderUtil.FACE_ROUND.setUniform("size", width * 2, height * 2);
                ShaderUtil.FACE_ROUND.setUniform("texture", 0);
                ShaderUtil.FACE_ROUND.setUniform("radius", radius * 2);
                ShaderUtil.FACE_ROUND.setUniform("alpha", alpha);
                ShaderUtil.FACE_ROUND.setUniform("hurtPercent", hurtPercent);  // Передаем процент повреждений в шейдер
                ShaderUtil.FACE_ROUND.setUniform("u", (1f / 64) * 8);
                ShaderUtil.FACE_ROUND.setUniform("v", (1f / 64) * 8);
                ShaderUtil.FACE_ROUND.setUniform("w", 1f / 8);
                ShaderUtil.FACE_ROUND.setUniform("h", 1f / 8);


                quadsBegin(x, y, width, height, 7);

                // Отключаем шейдер
                ShaderUtil.FACE_ROUND.detach();

                RenderSystem.disableBlend();
                RenderSystem.popMatrix();
            } catch(Exception e){
                e.printStackTrace();
            }
        }

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


Сам худ
HUD2:
Expand Collapse Copy
package wtf.expensive.modules.impl.render;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import net.minecraft.client.MainWindow;
import net.minecraft.client.entity.player.AbstractClientPlayerEntity;
import net.minecraft.client.gui.DisplayEffectsScreen;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.client.network.play.NetworkPlayerInfo;
import net.minecraft.client.renderer.texture.PotionSpriteUploader;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.AirItem;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.potion.Effect;
import net.minecraft.potion.EffectInstance;
import net.minecraft.potion.EffectUtils;
import net.minecraft.scoreboard.ScorePlayerTeam;
import net.minecraft.scoreboard.Team;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector4f;
import net.minecraft.util.text.ITextComponent;
import org.joml.Vector4i;
import wtf.expensive.Initilization;
import wtf.expensive.events.Event;
import wtf.expensive.events.impl.player.EventUpdate;
import wtf.expensive.events.impl.render.EventRender;
import wtf.expensive.managment.Managment;
import wtf.expensive.modules.Function;
import wtf.expensive.modules.FunctionAnnotation;
import wtf.expensive.modules.FunctionManager;
import wtf.expensive.modules.Type;
import wtf.expensive.modules.settings.imp.BooleanOption;
import wtf.expensive.modules.settings.imp.MultiBoxSetting;
import wtf.expensive.modules.settings.imp.SliderSetting;
import wtf.expensive.util.BetterText;
import wtf.expensive.util.ClientUtil;
import wtf.expensive.util.IMinecraft;
import wtf.expensive.util.animations.Animation;
import wtf.expensive.util.animations.Direction;
import wtf.expensive.util.animations.impl.EaseBackIn;
import wtf.expensive.util.drag.Dragging;
import wtf.expensive.util.font.Fonts;
import wtf.expensive.util.font.styled.StyledFont;
import wtf.expensive.util.math.MathUtil;
import wtf.expensive.util.misc.HudUtil;
import wtf.expensive.util.render.BloomHelper;
import wtf.expensive.util.render.ColorUtil;
import wtf.expensive.util.render.RenderUtil;
import wtf.expensive.util.render.animation.AnimationMath;

import java.awt.*;
import java.util.*;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
import java.util.regex.Pattern;

import static wtf.expensive.util.render.RenderUtil.Render2D.drawFace;

@FunctionAnnotation(name="Hud", type=Type.Render)
public class HUD2
        extends Function {
    public static MultiBoxSetting elements = new MultiBoxSetting("Elements",
            new BooleanOption("Active Target", true),
            new BooleanOption("Logo", true),
            new BooleanOption("Coordinates", true),
            new BooleanOption("Speed", true),
            new BooleanOption("Effects", true),
            new BooleanOption("Active Binds", true),
            new BooleanOption("Active Staff", true),
            new BooleanOption("Armor", true),
            new BooleanOption("Cooldown", true));
    public BooleanOption hp = new BooleanOption("Хп под тему", false);

    private final SliderSetting offsetEffects = new SliderSetting("\u0420\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432", 24.0f, 23.0f, 26.0f, 0.1f).setVisible(() -> elements.get(5));
    final Dragging TargetHUD = Initilization.createDrag(this, "TargetHUD7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Logo = Initilization.createDrag(this, "Logo7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Coords = Initilization.createDrag(this, "Coords7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging BPS = Initilization.createDrag(this, "BPS7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Effects = Initilization.createDrag(this, "Effects7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging KeyBinds = Initilization.createDrag(this, "KeyBinds7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging StaffActive = Initilization.createDrag(this, "StaffActive7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Cooldown = Initilization.createDrag(this, "Cooldown7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    int activeStaff = 0;
    private final Pattern namePattern = Pattern.compile("^\\w{3,16}$");
    int activeBind = 0;
    float heightAnimation = 0.0f;
    private float perc;
    private final Animation targetHudAnimation = new EaseBackIn(270, 1.0, 1.5f);
    private double scale = 0.0;
    private LivingEntity target = null;
    float health = 0.0f;
    float absorpation = 0.0f;

    public HUD2() {
        this.addSettings(elements,hp, this.offsetEffects);
    }

    [USER=1367676]@override[/USER]
    public void onEvent(Event event) {
        if (event instanceof EventRender) {
            EventRender eventRender = (EventRender)event;
            MatrixStack stack = eventRender.matrixStack;
            if (elements.get(0)) {
                this.TargetHUD(stack);
            }
            if (elements.get(2)) {
                this.Logo(stack);
            }
            if (elements.get(3)) {
                this.Coords(stack);
            }
            if (elements.get(4)) {
                this.BPS(stack);
            }
            if (elements.get(5)) {
                this.Effects(stack);
            }
            if (elements.get(6)) {
                this.KeyBinds(stack);
            }
            if (elements.get(7)) {
                this.StaffActive(stack);
            }
            if (elements.get(8)) {
                this.ArmorHUD(stack, eventRender);
            }
        }
    }

    public void ArmorHUD(MatrixStack stack, EventRender eventRender) {
        int off;
        int count = 0;
        for (int i = 0; i < HUD2.mc.player.inventory.getSizeInventory(); ++i) {
            ItemStack s = HUD2.mc.player.inventory.getStackInSlot(i);
            if (s.getItem() != Items.TOTEM_OF_UNDYING) continue;
            ++count;
        }
        float xPos = (float)eventRender.scaledResolution.scaledWidth() / 2.0f;
        float yPos = eventRender.scaledResolution.scaledHeight();
        boolean totemInInv = HUD2.mc.player.inventory.mainInventory.stream().map(ItemStack::getItem).toList().contains(Items.TOTEM_OF_UNDYING);
        int n = off = totemInInv ? 5 : 0;
        if (HUD2.mc.player.isCreative()) {
            yPos += 17.0f;
        }
        for (ItemStack s : HUD2.mc.player.inventory.armorInventory) {
            ESPFunction.drawItemStack(s, xPos - (float)off + 74.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), yPos - 56.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), null, false);
            off += 15;
        }
        if (totemInInv) {
            ESPFunction.drawItemStack(new ItemStack(Items.TOTEM_OF_UNDYING), xPos - (float)off + 73.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), yPos - 56.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), String.valueOf(count), false);
        }
    }

    public void StaffActive(MatrixStack stack) {
        float x = this.StaffActive.getX();
        float y = this.StaffActive.getY();
        float offset = 9.0f;
        float height2 = 20.5f;
        float width2 = 100.0f;
        height2 += offset * (float)this.activeStaff - 4.0f;
        float xStaff = x + 26.0f;
        if (this.activeStaff == 0) {
            height2 -= 1.5f;
            width2 -= 25.0f;
            xStaff -= 12.5f;
        }
        RenderUtil.Render2D.drawRoundedCorner(x, y, width2, height2, 3, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Staff Active", (double)xStaff, (double)(y + 6.0f), new Color(255, 255, 255, 255).getRGB());
        int i = 0;
        for (ScorePlayerTeam team : HUD2.mc.world.getScoreboard().getTeams().stream().sorted(Comparator.comparing(Team::getName)).toList()) {
            String name = team.getMembershipCollection().toString();
            if (!this.namePattern.matcher(name = name.substring(1, name.length() - 1)).matches()) continue;
            boolean vanish = true;
            boolean near = false;
            boolean active = false;
            for (AbstractClientPlayerEntity player : HUD2.mc.world.getPlayers()) {
                if (!player.getNameClear().equals(name)) continue;
                near = true;
            }
            for (NetworkPlayerInfo info : mc.getConnection().getPlayerInfoMap()) {
                if (!info.getGameProfile().getName().equals(name)) continue;
                vanish = false;
                if (near) continue;
                active = true;
            }
            if (!vanish && !Managment.STAFF_MANAGER.isStaff(name)) continue;
            String Name2 = name.substring(0, Math.min(name.length(), 10));
            StyledFont small = Fonts.msSemiBold[13];
            StyledFont small2 = Fonts.msSemiBold[14];
            float yText = y + 17.0f;
            small2.drawString(stack, Name2, (double)(x + 4.0f), (double)yText, new Color(255, 255, 255, 255).getRGB());
            if (vanish) {
                small.drawString(stack, "Спектатор", (double)(x + 63.5f), (double)yText, new Color(255, 0, 0, 255).getRGB());
            } else if (active) {
                small.drawString(stack, "Активен", (double)(x + 74f), (double)yText, new Color(4, 255, 0, 255).getRGB());
            } else if (near) {
                small.drawString(stack, "Рядом", (double)(x + 80.8f), (double)yText, new Color(255, 136, 0, 255).getRGB());
            }
            y += offset;
            ++i;
        }
        this.activeStaff = i;
        this.StaffActive.setWidth(width2);
        this.StaffActive.setHeight(height2);
    }

    public void KeyBinds(MatrixStack stack) {
        float x = this.KeyBinds.getX();
        float y = this.KeyBinds.getY();
        float offset = 9.5f;
        float height2 = 21.0f;
        float width2 = 75.0f;
        height2 += offset * (float)this.activeBind - 5.0f;
        if (this.activeBind == 0) {
            height2 -= 1.0f;
        }
        RenderUtil.Render2D.drawRoundedCorner(x, y, width2, this.heightAnimation, 3, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Key Binds", (x + 18.0f), (y + 6.0f), new Color(255, 255, 255, 255).getRGB());
        int i = 0;
        for (Function f : Managment.FUNCTION_MANAGER.getFunctions()) {
            String text;
            if (f.bind == 0 || !f.state || (text = ClientUtil.getKey(f.bind)) == null) continue;
            StyledFont small = Fonts.msSemiBold[13];
            String sss = f.name;
            String fname = sss.substring(0, Math.min(sss.length(), 13));;
            String bindText = text.toUpperCase();
            float yText = y + 17.0f;
            RenderUtil.SmartScissor.push();
            RenderUtil.SmartScissor.setFromComponentCoordinates(x, y, width2, this.heightAnimation);
            small.drawString(stack, fname, (x + 4.0f), yText, new Color(255, 255, 255, 255).getRGB());
            small.drawString(stack, "[" + bindText + "]", (x + 62.0f), yText, new Color(255, 255, 255, 255).getRGB());
            RenderUtil.SmartScissor.unset();
            RenderUtil.SmartScissor.pop();
            y += offset;
            ++i;
        }
        this.heightAnimation = AnimationMath.fast(this.heightAnimation, height2, 11.0f);
        this.activeBind = i;
        this.KeyBinds.setWidth(width2);
        this.KeyBinds.setHeight(height2);
    }

    public void Effects(MatrixStack stack) {
        float x = 3;
        float y = 270;
        float offset = this.offsetEffects.getValue().floatValue();
        float height2 = 21.3f;
        StyledFont small = Fonts.msSemiBold[13];
        int counterEffect = 0;
        for (EffectInstance effectInstance : HUD2.mc.player.getActivePotionEffects()) {
            String levelpotion = String.valueOf(effectInstance.getAmplifier() + 1);
            float textWidthBonus = 27.3f;
            if (levelpotion.contains("1")) {
                levelpotion = "";
                textWidthBonus -= 5.0f;
            }
            String durationText = EffectUtils.getPotionDurationString(effectInstance, 1.0f);
            String text = I18n.format(effectInstance.getEffectName(), new Object[0]);
            float textWidth = small.getWidth(text + effectInstance.getAmplifier() + levelpotion) + textWidthBonus - 0.6f;
            RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
            small.drawString(stack, text + " " + levelpotion, (double)(x + 22.3f), (double)(y + 5.5f), new Color(255, 255, 255, 255).getRGB());
            small.drawString(stack, durationText, (double)(x + 22.3f), (double)(y + 13.5f), new Color(255, 255, 255, 255).getRGB());
            PotionSpriteUploader potionspriteuploader = mc.getPotionSpriteUploader();
            Effect effect = effectInstance.getPotion();
            TextureAtlasSprite textureatlassprite = potionspriteuploader.getSprite(effect);
            mc.getTextureManager().bindTexture(textureatlassprite.getAtlasTexture().getTextureLocation());
            DisplayEffectsScreen.blit(stack, (int)(x + 2.0f), (int)y + 2, 10, 18, 18, textureatlassprite);
            y += offset;
            ++counterEffect;
            this.Effects.setWidth(textWidth);
        }
        float setHeight = offset / 8.0f * (float)counterEffect;
        this.Effects.setHeight(height2 * (float)counterEffect + setHeight);
    }

    public void BPS(MatrixStack stack) {
        float x = 3;
        float y = 507;
        float height2 = 15.0f;
        float textWidth = Fonts.msSemiBold[14].getWidth("Speed: " + String.format("%.2f", Math.hypot(mc.player.getPosX() - mc.player.prevPosX, mc.player.getPosZ() - mc.player.prevPosZ) * 20.0)) + 8.5f;
        RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Speed: " + String.format("%.2f", Math.hypot(mc.player.getPosX() - mc.player.prevPosX, mc.player.getPosZ() - mc.player.prevPosZ) * 20.0), (x + 4.5f), (double)y + 6.3, new Color(255, 255, 255, 255).getRGB());
        this.BPS.setWidth(textWidth);
        this.BPS.setHeight(height2);
    }

    public void Coords(MatrixStack stack) {
        float x = 3;
        float y = 524;
        float height2 = 15.0f;
        int X = (int)HUD2.mc.player.getPosX();
        int Y = (int)HUD2.mc.player.getPosY();
        int Z2 = (int)HUD2.mc.player.getPosZ();
        float textWidth = Fonts.msSemiBold[14].getWidth("Coords: X: " + X + " Y: " + Y + " Z: " + Z2) + 8.5f;
        RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Coords: X: " + X + " Y: " + Y + " Z: " + Z2, (x + 4.5f), (y + 6.0f), new Color(255, 255, 255, 255).getRGB());
        this.Coords.setWidth(textWidth);
        this.Coords.setHeight(height2);
    }

    public void Logo(MatrixStack stack) {
        float x = 3;
        float y = 3;
        float height2 = 17.0f;

        float textWidth = Fonts.msSemiBold[15].getWidth("Catlavan I " + ClientUtil.me.getName()) + 20;
        RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[15].drawString(stack, "Catlavan I " + ClientUtil.me.getName(), x + 16.0f, y + 6.5f, new Color(255, 255, 255, 255).getRGB());
        Fonts.icons1[15].drawString(stack, "A",x + 5, y + 8,new Color(255, 255, 255, 255).getRGB());
        this.Logo.setWidth(textWidth);
        this.Logo.setHeight(height2);
    }

    public void TargetHUD(MatrixStack stack) {
        float x = this.TargetHUD.getX();
        float y = this.TargetHUD.getY();
        float width2 = 95.0f;
        float height2 = 34.0f;
        float widthFace = 34.0f;
        this.target = this.getTarget(this.target);
        this.targetHudAnimation.setDuration(280);
        this.scale = this.targetHudAnimation.getOutput();
        if (this.scale == 0.0) {
            this.target = null;
        }
        if (this.target == null) {
            return;
        }
        GlStateManager.pushMatrix();
        AnimationMath.sizeAnimation(x + width2 / 2.0f, y + 15.0f, this.scale);
        RenderUtil.Render2D.drawRoundedCorner(x, y, width2 - 5, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        RenderUtil.Render2D.drawRoundFace(x + 3, y + 3.5f, 27, 27, 3, 1F, (AbstractClientPlayerEntity) this.target);
        float xHP = x + widthFace + 3.8f;
        float yHP = y + 21.3f;
        float widthHP = 52.0f;
        this.health = AnimationMath.fast(this.health, this.target.getHealth() / this.target.getMaxHealth(), 6.0f);
        this.health = MathHelper.clamp(this.health, 0.0f, 1.0f);
        this.absorpation = AnimationMath.fast(this.absorpation, this.target.getAbsorptionAmount() / this.target.getMaxHealth(), 6.0f);
        this.absorpation = MathHelper.clamp(this.absorpation, 0.0f, 1.0f);
        if (hp.get()) {
            RenderUtil.Render2D.drawRoundedRect(xHP - 5, yHP - 1, 52.0f * this.health, 10f, 1f, ColorUtil.getColorStyle(0.0f));
        } else{
            if (this.target.getHealth() >= 15.0F) {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(12, 71, 0, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(0, 204, 0, 68), ColorUtil.rgba(0, 153, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(12, 71, 0, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(0, 204, 0, 250), ColorUtil.rgba(0, 153, 0, 250));

            } else if (this.target.getHealth() >= 5.0F) {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(62, 71, 0, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(255, 255, 0, 170), ColorUtil.rgba(153, 153, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(62, 71, 0, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(255, 255, 0, 250), ColorUtil.rgba(153, 153, 0, 250));
            } else if (this.target.getHealth() >= 1000.0F) {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(255, 255, 255, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(255, 255, 255, 170), ColorUtil.rgba(204, 0, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(255, 255, 255, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(255, 255, 255, 250), ColorUtil.rgba(204, 0, 0, 250));
            } else {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(71, 0, 0, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(102, 0, 0, 68), ColorUtil.rgba(204, 0, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(71, 0, 0, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(102, 0, 0, 250), ColorUtil.rgba(204, 0, 0, 250));
            }
        }
        RenderUtil.Render2D.drawRoundedCorner(xHP - 4.5f, yHP - 2, 52.0f * this.absorpation, 1f, 0, new Color(222, 211, 14, 255).getRGB());
        String targetName = this.target.getName().getString();
        String targetnamop = targetName.substring(0, Math.min(targetName.length(), 9));
        RenderUtil.SmartScissor.push();
        RenderUtil.SmartScissor.setFromComponentCoordinates(x, y, width2 - 6.0f, height2);
        Fonts.msSemiBold[14].drawString(stack, targetnamop, (double)xHP - 5, (double)(yHP - 16.3f), new Color(255, 255, 255, 255).getRGB());
        RenderUtil.SmartScissor.unset();
        RenderUtil.SmartScissor.pop();
        String HP = String.valueOf(this.target.getHealth());
        String StringHP = HP.substring(0, Math.min(HP.length(), 4));
        if (this.target.getHealth() + this.target.getAbsorptionAmount() < 10.0f) {
            StringHP = HP.substring(0, Math.min(HP.length(), 3));
        }
        Fonts.msSemiBold[12].drawString(stack, "HP: " + StringHP + " + " + mc.player.getAbsorptionAmount(), (double)xHP - 5, (double)(yHP - 7.7f), new Color(255, 255, 255, 255).getRGB());
        this.drawItemStack(x, y - 12.0f, 10.5f, 0.7f);
        GlStateManager.popMatrix();
        this.TargetHUD.setWidth(width2);
        this.TargetHUD.setHeight(height2);
    }

    private void drawItemStack(float x, float y, float offset, float scaleValue) {
        ArrayList<ItemStack> stackList = new ArrayList<ItemStack>(Arrays.asList(this.target.getHeldItemMainhand(), this.target.getHeldItemOffhand()));
        stackList.addAll((Collection)this.target.getArmorInventoryList());
        AtomicReference<Float> posX = new AtomicReference<Float>(Float.valueOf(x));
        stackList.stream().filter(stack -> !stack.isEmpty()).forEach(stack -> HudUtil.drawItemStack(stack, posX.getAndAccumulate(Float.valueOf(offset), Float::sum).floatValue(), y, true, true, scaleValue));
    }

    private LivingEntity getTarget(LivingEntity nullTarget) {
        LivingEntity target = nullTarget;
        FunctionManager functionManager = Managment.FUNCTION_MANAGER;
        if (functionManager.auraFunction.getTarget() instanceof LivingEntity) {
            FunctionManager functionManager2 = Managment.FUNCTION_MANAGER;
            target = functionManager2.auraFunction.getTarget();
            this.targetHudAnimation.setDirection(Direction.FORWARDS);
        } else if (IMinecraft.mc.currentScreen instanceof ChatScreen) {
            target = IMinecraft.mc.player;
            this.targetHudAnimation.setDirection(Direction.FORWARDS);
        } else {
            this.targetHudAnimation.setDirection(Direction.BACKWARDS);
        }
        return target;
    }
}
годно so
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Сделал по скольку понравился тх а так хз зачем это нужно и я знаю уже была тема с худом катлавана но
он там старый + баги с кейбиндами которые я пофиксил и переделал тх + вт (ожидаю уже что напишут слил говно, без хейта пж)

взял под основу эту тему
мне лень самому делать

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

вот это в RenderUtil

drawRoundFace:
Expand Collapse Copy
public static void drawRoundFace(float x, float y, float width, float height, float radius, float alpha, AbstractClientPlayerEntity target) {
            try {
                ResourceLocation skin = target.getLocationSkin();
                mc.getTextureManager().bindTexture(skin);
                // Вычисляем процент повреждения
                float hurtPercent = getHurtPercent(target);

                RenderSystem.pushMatrix();
                RenderSystem.enableBlend();
                RenderSystem.blendFunc(770, 771);
                // Подключаем шейдер для округлой головы
                ShaderUtil.FACE_ROUND.attach();

                // Передаем данные в шейдер
                ShaderUtil.FACE_ROUND.setUniform("location", x * 2, sr.getHeight() - height * 2 - y * 2);
                ShaderUtil.FACE_ROUND.setUniform("size", width * 2, height * 2);
                ShaderUtil.FACE_ROUND.setUniform("texture", 0);
                ShaderUtil.FACE_ROUND.setUniform("radius", radius * 2);
                ShaderUtil.FACE_ROUND.setUniform("alpha", alpha);
                ShaderUtil.FACE_ROUND.setUniform("hurtPercent", hurtPercent);  // Передаем процент повреждений в шейдер
                ShaderUtil.FACE_ROUND.setUniform("u", (1f / 64) * 8);
                ShaderUtil.FACE_ROUND.setUniform("v", (1f / 64) * 8);
                ShaderUtil.FACE_ROUND.setUniform("w", 1f / 8);
                ShaderUtil.FACE_ROUND.setUniform("h", 1f / 8);


                quadsBegin(x, y, width, height, 7);

                // Отключаем шейдер
                ShaderUtil.FACE_ROUND.detach();

                RenderSystem.disableBlend();
                RenderSystem.popMatrix();
            } catch(Exception e){
                e.printStackTrace();
            }
        }

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


Сам худ
HUD2:
Expand Collapse Copy
package wtf.expensive.modules.impl.render;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import net.minecraft.client.MainWindow;
import net.minecraft.client.entity.player.AbstractClientPlayerEntity;
import net.minecraft.client.gui.DisplayEffectsScreen;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.client.network.play.NetworkPlayerInfo;
import net.minecraft.client.renderer.texture.PotionSpriteUploader;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.AirItem;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.potion.Effect;
import net.minecraft.potion.EffectInstance;
import net.minecraft.potion.EffectUtils;
import net.minecraft.scoreboard.ScorePlayerTeam;
import net.minecraft.scoreboard.Team;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector4f;
import net.minecraft.util.text.ITextComponent;
import org.joml.Vector4i;
import wtf.expensive.Initilization;
import wtf.expensive.events.Event;
import wtf.expensive.events.impl.player.EventUpdate;
import wtf.expensive.events.impl.render.EventRender;
import wtf.expensive.managment.Managment;
import wtf.expensive.modules.Function;
import wtf.expensive.modules.FunctionAnnotation;
import wtf.expensive.modules.FunctionManager;
import wtf.expensive.modules.Type;
import wtf.expensive.modules.settings.imp.BooleanOption;
import wtf.expensive.modules.settings.imp.MultiBoxSetting;
import wtf.expensive.modules.settings.imp.SliderSetting;
import wtf.expensive.util.BetterText;
import wtf.expensive.util.ClientUtil;
import wtf.expensive.util.IMinecraft;
import wtf.expensive.util.animations.Animation;
import wtf.expensive.util.animations.Direction;
import wtf.expensive.util.animations.impl.EaseBackIn;
import wtf.expensive.util.drag.Dragging;
import wtf.expensive.util.font.Fonts;
import wtf.expensive.util.font.styled.StyledFont;
import wtf.expensive.util.math.MathUtil;
import wtf.expensive.util.misc.HudUtil;
import wtf.expensive.util.render.BloomHelper;
import wtf.expensive.util.render.ColorUtil;
import wtf.expensive.util.render.RenderUtil;
import wtf.expensive.util.render.animation.AnimationMath;

import java.awt.*;
import java.util.*;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
import java.util.regex.Pattern;

import static wtf.expensive.util.render.RenderUtil.Render2D.drawFace;

@FunctionAnnotation(name="Hud", type=Type.Render)
public class HUD2
        extends Function {
    public static MultiBoxSetting elements = new MultiBoxSetting("Elements",
            new BooleanOption("Active Target", true),
            new BooleanOption("Logo", true),
            new BooleanOption("Coordinates", true),
            new BooleanOption("Speed", true),
            new BooleanOption("Effects", true),
            new BooleanOption("Active Binds", true),
            new BooleanOption("Active Staff", true),
            new BooleanOption("Armor", true),
            new BooleanOption("Cooldown", true));
    public BooleanOption hp = new BooleanOption("Хп под тему", false);

    private final SliderSetting offsetEffects = new SliderSetting("\u0420\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432", 24.0f, 23.0f, 26.0f, 0.1f).setVisible(() -> elements.get(5));
    final Dragging TargetHUD = Initilization.createDrag(this, "TargetHUD7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Logo = Initilization.createDrag(this, "Logo7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Coords = Initilization.createDrag(this, "Coords7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging BPS = Initilization.createDrag(this, "BPS7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Effects = Initilization.createDrag(this, "Effects7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging KeyBinds = Initilization.createDrag(this, "KeyBinds7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging StaffActive = Initilization.createDrag(this, "StaffActive7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    final Dragging Cooldown = Initilization.createDrag(this, "Cooldown7317", mc.getMainWindow().scaledWidth() / 2, (float)mc.getMainWindow().scaledHeight() / 2.0f);
    int activeStaff = 0;
    private final Pattern namePattern = Pattern.compile("^\\w{3,16}$");
    int activeBind = 0;
    float heightAnimation = 0.0f;
    private float perc;
    private final Animation targetHudAnimation = new EaseBackIn(270, 1.0, 1.5f);
    private double scale = 0.0;
    private LivingEntity target = null;
    float health = 0.0f;
    float absorpation = 0.0f;

    public HUD2() {
        this.addSettings(elements,hp, this.offsetEffects);
    }

    [USER=1367676]@override[/USER]
    public void onEvent(Event event) {
        if (event instanceof EventRender) {
            EventRender eventRender = (EventRender)event;
            MatrixStack stack = eventRender.matrixStack;
            if (elements.get(0)) {
                this.TargetHUD(stack);
            }
            if (elements.get(2)) {
                this.Logo(stack);
            }
            if (elements.get(3)) {
                this.Coords(stack);
            }
            if (elements.get(4)) {
                this.BPS(stack);
            }
            if (elements.get(5)) {
                this.Effects(stack);
            }
            if (elements.get(6)) {
                this.KeyBinds(stack);
            }
            if (elements.get(7)) {
                this.StaffActive(stack);
            }
            if (elements.get(8)) {
                this.ArmorHUD(stack, eventRender);
            }
        }
    }

    public void ArmorHUD(MatrixStack stack, EventRender eventRender) {
        int off;
        int count = 0;
        for (int i = 0; i < HUD2.mc.player.inventory.getSizeInventory(); ++i) {
            ItemStack s = HUD2.mc.player.inventory.getStackInSlot(i);
            if (s.getItem() != Items.TOTEM_OF_UNDYING) continue;
            ++count;
        }
        float xPos = (float)eventRender.scaledResolution.scaledWidth() / 2.0f;
        float yPos = eventRender.scaledResolution.scaledHeight();
        boolean totemInInv = HUD2.mc.player.inventory.mainInventory.stream().map(ItemStack::getItem).toList().contains(Items.TOTEM_OF_UNDYING);
        int n = off = totemInInv ? 5 : 0;
        if (HUD2.mc.player.isCreative()) {
            yPos += 17.0f;
        }
        for (ItemStack s : HUD2.mc.player.inventory.armorInventory) {
            ESPFunction.drawItemStack(s, xPos - (float)off + 74.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), yPos - 56.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), null, false);
            off += 15;
        }
        if (totemInInv) {
            ESPFunction.drawItemStack(new ItemStack(Items.TOTEM_OF_UNDYING), xPos - (float)off + 73.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), yPos - 56.0f * ((float)HUD2.mc.gameSettings.guiScale / 2.0f), String.valueOf(count), false);
        }
    }

    public void StaffActive(MatrixStack stack) {
        float x = this.StaffActive.getX();
        float y = this.StaffActive.getY();
        float offset = 9.0f;
        float height2 = 20.5f;
        float width2 = 100.0f;
        height2 += offset * (float)this.activeStaff - 4.0f;
        float xStaff = x + 26.0f;
        if (this.activeStaff == 0) {
            height2 -= 1.5f;
            width2 -= 25.0f;
            xStaff -= 12.5f;
        }
        RenderUtil.Render2D.drawRoundedCorner(x, y, width2, height2, 3, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Staff Active", (double)xStaff, (double)(y + 6.0f), new Color(255, 255, 255, 255).getRGB());
        int i = 0;
        for (ScorePlayerTeam team : HUD2.mc.world.getScoreboard().getTeams().stream().sorted(Comparator.comparing(Team::getName)).toList()) {
            String name = team.getMembershipCollection().toString();
            if (!this.namePattern.matcher(name = name.substring(1, name.length() - 1)).matches()) continue;
            boolean vanish = true;
            boolean near = false;
            boolean active = false;
            for (AbstractClientPlayerEntity player : HUD2.mc.world.getPlayers()) {
                if (!player.getNameClear().equals(name)) continue;
                near = true;
            }
            for (NetworkPlayerInfo info : mc.getConnection().getPlayerInfoMap()) {
                if (!info.getGameProfile().getName().equals(name)) continue;
                vanish = false;
                if (near) continue;
                active = true;
            }
            if (!vanish && !Managment.STAFF_MANAGER.isStaff(name)) continue;
            String Name2 = name.substring(0, Math.min(name.length(), 10));
            StyledFont small = Fonts.msSemiBold[13];
            StyledFont small2 = Fonts.msSemiBold[14];
            float yText = y + 17.0f;
            small2.drawString(stack, Name2, (double)(x + 4.0f), (double)yText, new Color(255, 255, 255, 255).getRGB());
            if (vanish) {
                small.drawString(stack, "Спектатор", (double)(x + 63.5f), (double)yText, new Color(255, 0, 0, 255).getRGB());
            } else if (active) {
                small.drawString(stack, "Активен", (double)(x + 74f), (double)yText, new Color(4, 255, 0, 255).getRGB());
            } else if (near) {
                small.drawString(stack, "Рядом", (double)(x + 80.8f), (double)yText, new Color(255, 136, 0, 255).getRGB());
            }
            y += offset;
            ++i;
        }
        this.activeStaff = i;
        this.StaffActive.setWidth(width2);
        this.StaffActive.setHeight(height2);
    }

    public void KeyBinds(MatrixStack stack) {
        float x = this.KeyBinds.getX();
        float y = this.KeyBinds.getY();
        float offset = 9.5f;
        float height2 = 21.0f;
        float width2 = 75.0f;
        height2 += offset * (float)this.activeBind - 5.0f;
        if (this.activeBind == 0) {
            height2 -= 1.0f;
        }
        RenderUtil.Render2D.drawRoundedCorner(x, y, width2, this.heightAnimation, 3, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Key Binds", (x + 18.0f), (y + 6.0f), new Color(255, 255, 255, 255).getRGB());
        int i = 0;
        for (Function f : Managment.FUNCTION_MANAGER.getFunctions()) {
            String text;
            if (f.bind == 0 || !f.state || (text = ClientUtil.getKey(f.bind)) == null) continue;
            StyledFont small = Fonts.msSemiBold[13];
            String sss = f.name;
            String fname = sss.substring(0, Math.min(sss.length(), 13));;
            String bindText = text.toUpperCase();
            float yText = y + 17.0f;
            RenderUtil.SmartScissor.push();
            RenderUtil.SmartScissor.setFromComponentCoordinates(x, y, width2, this.heightAnimation);
            small.drawString(stack, fname, (x + 4.0f), yText, new Color(255, 255, 255, 255).getRGB());
            small.drawString(stack, "[" + bindText + "]", (x + 62.0f), yText, new Color(255, 255, 255, 255).getRGB());
            RenderUtil.SmartScissor.unset();
            RenderUtil.SmartScissor.pop();
            y += offset;
            ++i;
        }
        this.heightAnimation = AnimationMath.fast(this.heightAnimation, height2, 11.0f);
        this.activeBind = i;
        this.KeyBinds.setWidth(width2);
        this.KeyBinds.setHeight(height2);
    }

    public void Effects(MatrixStack stack) {
        float x = 3;
        float y = 270;
        float offset = this.offsetEffects.getValue().floatValue();
        float height2 = 21.3f;
        StyledFont small = Fonts.msSemiBold[13];
        int counterEffect = 0;
        for (EffectInstance effectInstance : HUD2.mc.player.getActivePotionEffects()) {
            String levelpotion = String.valueOf(effectInstance.getAmplifier() + 1);
            float textWidthBonus = 27.3f;
            if (levelpotion.contains("1")) {
                levelpotion = "";
                textWidthBonus -= 5.0f;
            }
            String durationText = EffectUtils.getPotionDurationString(effectInstance, 1.0f);
            String text = I18n.format(effectInstance.getEffectName(), new Object[0]);
            float textWidth = small.getWidth(text + effectInstance.getAmplifier() + levelpotion) + textWidthBonus - 0.6f;
            RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
            small.drawString(stack, text + " " + levelpotion, (double)(x + 22.3f), (double)(y + 5.5f), new Color(255, 255, 255, 255).getRGB());
            small.drawString(stack, durationText, (double)(x + 22.3f), (double)(y + 13.5f), new Color(255, 255, 255, 255).getRGB());
            PotionSpriteUploader potionspriteuploader = mc.getPotionSpriteUploader();
            Effect effect = effectInstance.getPotion();
            TextureAtlasSprite textureatlassprite = potionspriteuploader.getSprite(effect);
            mc.getTextureManager().bindTexture(textureatlassprite.getAtlasTexture().getTextureLocation());
            DisplayEffectsScreen.blit(stack, (int)(x + 2.0f), (int)y + 2, 10, 18, 18, textureatlassprite);
            y += offset;
            ++counterEffect;
            this.Effects.setWidth(textWidth);
        }
        float setHeight = offset / 8.0f * (float)counterEffect;
        this.Effects.setHeight(height2 * (float)counterEffect + setHeight);
    }

    public void BPS(MatrixStack stack) {
        float x = 3;
        float y = 507;
        float height2 = 15.0f;
        float textWidth = Fonts.msSemiBold[14].getWidth("Speed: " + String.format("%.2f", Math.hypot(mc.player.getPosX() - mc.player.prevPosX, mc.player.getPosZ() - mc.player.prevPosZ) * 20.0)) + 8.5f;
        RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Speed: " + String.format("%.2f", Math.hypot(mc.player.getPosX() - mc.player.prevPosX, mc.player.getPosZ() - mc.player.prevPosZ) * 20.0), (x + 4.5f), (double)y + 6.3, new Color(255, 255, 255, 255).getRGB());
        this.BPS.setWidth(textWidth);
        this.BPS.setHeight(height2);
    }

    public void Coords(MatrixStack stack) {
        float x = 3;
        float y = 524;
        float height2 = 15.0f;
        int X = (int)HUD2.mc.player.getPosX();
        int Y = (int)HUD2.mc.player.getPosY();
        int Z2 = (int)HUD2.mc.player.getPosZ();
        float textWidth = Fonts.msSemiBold[14].getWidth("Coords: X: " + X + " Y: " + Y + " Z: " + Z2) + 8.5f;
        RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[14].drawString(stack, "Coords: X: " + X + " Y: " + Y + " Z: " + Z2, (x + 4.5f), (y + 6.0f), new Color(255, 255, 255, 255).getRGB());
        this.Coords.setWidth(textWidth);
        this.Coords.setHeight(height2);
    }

    public void Logo(MatrixStack stack) {
        float x = 3;
        float y = 3;
        float height2 = 17.0f;

        float textWidth = Fonts.msSemiBold[15].getWidth("Catlavan I " + ClientUtil.me.getName()) + 20;
        RenderUtil.Render2D.drawRoundedCorner(x, y, textWidth, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        Fonts.msSemiBold[15].drawString(stack, "Catlavan I " + ClientUtil.me.getName(), x + 16.0f, y + 6.5f, new Color(255, 255, 255, 255).getRGB());
        Fonts.icons1[15].drawString(stack, "A",x + 5, y + 8,new Color(255, 255, 255, 255).getRGB());
        this.Logo.setWidth(textWidth);
        this.Logo.setHeight(height2);
    }

    public void TargetHUD(MatrixStack stack) {
        float x = this.TargetHUD.getX();
        float y = this.TargetHUD.getY();
        float width2 = 95.0f;
        float height2 = 34.0f;
        float widthFace = 34.0f;
        this.target = this.getTarget(this.target);
        this.targetHudAnimation.setDuration(280);
        this.scale = this.targetHudAnimation.getOutput();
        if (this.scale == 0.0) {
            this.target = null;
        }
        if (this.target == null) {
            return;
        }
        GlStateManager.pushMatrix();
        AnimationMath.sizeAnimation(x + width2 / 2.0f, y + 15.0f, this.scale);
        RenderUtil.Render2D.drawRoundedCorner(x, y, width2 - 5, height2, 3.0f, new Color(0, 0, 0, 195).getRGB());
        RenderUtil.Render2D.drawRoundFace(x + 3, y + 3.5f, 27, 27, 3, 1F, (AbstractClientPlayerEntity) this.target);
        float xHP = x + widthFace + 3.8f;
        float yHP = y + 21.3f;
        float widthHP = 52.0f;
        this.health = AnimationMath.fast(this.health, this.target.getHealth() / this.target.getMaxHealth(), 6.0f);
        this.health = MathHelper.clamp(this.health, 0.0f, 1.0f);
        this.absorpation = AnimationMath.fast(this.absorpation, this.target.getAbsorptionAmount() / this.target.getMaxHealth(), 6.0f);
        this.absorpation = MathHelper.clamp(this.absorpation, 0.0f, 1.0f);
        if (hp.get()) {
            RenderUtil.Render2D.drawRoundedRect(xHP - 5, yHP - 1, 52.0f * this.health, 10f, 1f, ColorUtil.getColorStyle(0.0f));
        } else{
            if (this.target.getHealth() >= 15.0F) {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(12, 71, 0, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(0, 204, 0, 68), ColorUtil.rgba(0, 153, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(12, 71, 0, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(0, 204, 0, 250), ColorUtil.rgba(0, 153, 0, 250));

            } else if (this.target.getHealth() >= 5.0F) {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(62, 71, 0, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(255, 255, 0, 170), ColorUtil.rgba(153, 153, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(62, 71, 0, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(255, 255, 0, 250), ColorUtil.rgba(153, 153, 0, 250));
            } else if (this.target.getHealth() >= 1000.0F) {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(255, 255, 255, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(255, 255, 255, 170), ColorUtil.rgba(204, 0, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(255, 255, 255, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(255, 255, 255, 250), ColorUtil.rgba(204, 0, 0, 250));
            } else {
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(71, 0, 0, 68), ColorUtil.rgba(32, 32, 32, 68), ColorUtil.rgba(102, 0, 0, 68), ColorUtil.rgba(204, 0, 0, 68));
                RenderUtil.Render2D.drawGradientRound(xHP - 4, yHP, 48.0f * this.health, 8, 1f, ColorUtil.rgba(71, 0, 0, 250), ColorUtil.rgba(32, 32, 32, 250), ColorUtil.rgba(102, 0, 0, 250), ColorUtil.rgba(204, 0, 0, 250));
            }
        }
        RenderUtil.Render2D.drawRoundedCorner(xHP - 4.5f, yHP - 2, 52.0f * this.absorpation, 1f, 0, new Color(222, 211, 14, 255).getRGB());
        String targetName = this.target.getName().getString();
        String targetnamop = targetName.substring(0, Math.min(targetName.length(), 9));
        RenderUtil.SmartScissor.push();
        RenderUtil.SmartScissor.setFromComponentCoordinates(x, y, width2 - 6.0f, height2);
        Fonts.msSemiBold[14].drawString(stack, targetnamop, (double)xHP - 5, (double)(yHP - 16.3f), new Color(255, 255, 255, 255).getRGB());
        RenderUtil.SmartScissor.unset();
        RenderUtil.SmartScissor.pop();
        String HP = String.valueOf(this.target.getHealth());
        String StringHP = HP.substring(0, Math.min(HP.length(), 4));
        if (this.target.getHealth() + this.target.getAbsorptionAmount() < 10.0f) {
            StringHP = HP.substring(0, Math.min(HP.length(), 3));
        }
        Fonts.msSemiBold[12].drawString(stack, "HP: " + StringHP + " + " + mc.player.getAbsorptionAmount(), (double)xHP - 5, (double)(yHP - 7.7f), new Color(255, 255, 255, 255).getRGB());
        this.drawItemStack(x, y - 12.0f, 10.5f, 0.7f);
        GlStateManager.popMatrix();
        this.TargetHUD.setWidth(width2);
        this.TargetHUD.setHeight(height2);
    }

    private void drawItemStack(float x, float y, float offset, float scaleValue) {
        ArrayList<ItemStack> stackList = new ArrayList<ItemStack>(Arrays.asList(this.target.getHeldItemMainhand(), this.target.getHeldItemOffhand()));
        stackList.addAll((Collection)this.target.getArmorInventoryList());
        AtomicReference<Float> posX = new AtomicReference<Float>(Float.valueOf(x));
        stackList.stream().filter(stack -> !stack.isEmpty()).forEach(stack -> HudUtil.drawItemStack(stack, posX.getAndAccumulate(Float.valueOf(offset), Float::sum).floatValue(), y, true, true, scaleValue));
    }

    private LivingEntity getTarget(LivingEntity nullTarget) {
        LivingEntity target = nullTarget;
        FunctionManager functionManager = Managment.FUNCTION_MANAGER;
        if (functionManager.auraFunction.getTarget() instanceof LivingEntity) {
            FunctionManager functionManager2 = Managment.FUNCTION_MANAGER;
            target = functionManager2.auraFunction.getTarget();
            this.targetHudAnimation.setDirection(Direction.FORWARDS);
        } else if (IMinecraft.mc.currentScreen instanceof ChatScreen) {
            target = IMinecraft.mc.player;
            this.targetHudAnimation.setDirection(Direction.FORWARDS);
        } else {
            this.targetHudAnimation.setDirection(Direction.BACKWARDS);
        }
        return target;
    }
}
спастил все норм но чет спидов и кордов нету как фиксить
 
дайте тутор на иконку катлавана
 
Назад
Сверху Снизу