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

Визуальная часть Targethud sk3d wild 1.21.4

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
7 Мар 2025
Сообщения
97
Реакции
2
Выберите загрузчик игры
  1. Vanilla
самое худшее что я делал скид вилда но вообще не похоже ну короче вот вам говно говно

SS -
1773419931517.png


Code -
сарделька:
Expand Collapse Copy
package dev.sk3d.display.hud;

import dev.sk3d.Hawen;
import dev.sk3d.common.animation.Animation;
import dev.sk3d.common.animation.implement.Decelerate;
import dev.sk3d.utils.display.render.post.KawaseBlur;
import dev.sk3d.utils.interactions.interact.PlayerInteractionHelper;
import dev.sk3d.utils.math.time.StopWatch;
import dev.sk3d.utils.theme.ThemeManager;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.entity.EntityRenderer;
import net.minecraft.client.render.entity.LivingEntityRenderer;
import net.minecraft.client.render.entity.state.LivingEntityRenderState;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.LivingEntity;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import dev.sk3d.utils.client.managers.api.draggable.AbstractDraggable;
import dev.sk3d.features.impl.combat.Aura;
import dev.sk3d.features.impl.render.Hud;
import dev.sk3d.common.animation.Direction;
import dev.sk3d.common.animation.implement.EaseOut;
import dev.sk3d.utils.display.render.font.FontRenderer;
import dev.sk3d.utils.display.render.font.Fonts;
import dev.sk3d.utils.display.render.shape.ShapeProperties;
import dev.sk3d.utils.display.color.ColorAssist;
import dev.sk3d.utils.math.calc.Calculate;
import dev.sk3d.utils.display.render.geometry.Render2D;
import dev.sk3d.utils.display.scissor.ScissorAssist;
import java.awt.*;
import java.util.HashMap;
import java.util.Map;

public class TargetHud extends AbstractDraggable {
    private final Animation faceAlphaAnimation = new Decelerate().setMs(125).setValue(1);
    private final StopWatch stopWatch = new StopWatch();
    private LivingEntity lastTarget;
    private float health;
    
    private static final Map<String, DonateInfo> DONAT_PREFIXES = new HashMap<>();
    static {
        DONAT_PREFIXES.put("ꔀ", new DonateInfo("PLAYER", new Color(170, 170, 170)));
        DONAT_PREFIXES.put("ꔄ", new DonateInfo("HERO", new Color(85, 85, 255)));
        DONAT_PREFIXES.put("ꔈ", new DonateInfo("TITAN", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔒ", new DonateInfo("AVENGER", new Color(85, 255, 85)));
        DONAT_PREFIXES.put("ꔖ", new DonateInfo("OVERLORD", new Color(85, 255, 255)));
        DONAT_PREFIXES.put("ꔠ", new DonateInfo("MAGISTER", new Color(255, 170, 0)));
        DONAT_PREFIXES.put("ꔤ", new DonateInfo("IMPERATOR", new Color(255, 85, 85)));
        DONAT_PREFIXES.put("ꔨ", new DonateInfo("DRAGON", new Color(255, 85, 255)));
        DONAT_PREFIXES.put("ꔲ", new DonateInfo("BULL", new Color(170, 0, 170)));
        DONAT_PREFIXES.put("ꕒ", new DonateInfo("RABBIT", new Color(255, 255, 255)));
        DONAT_PREFIXES.put("ꔶ", new DonateInfo("TIGER", new Color(255, 170, 0)));
        DONAT_PREFIXES.put("ꕄ", new DonateInfo("DRACULA", new Color(255, 85, 85)));
        DONAT_PREFIXES.put("ꕖ", new DonateInfo("BUNNY", new Color(255, 255, 255)));
        DONAT_PREFIXES.put("ꕀ", new DonateInfo("HYDRA", new Color(0, 170, 0)));
        DONAT_PREFIXES.put("ꕈ", new DonateInfo("COBRA", new Color(85, 255, 85)));
        DONAT_PREFIXES.put("ꕅ", new DonateInfo("VAMPIRE", new Color(255, 85, 85)));
        DONAT_PREFIXES.put("ꔁ", new DonateInfo("MEDIA", new Color(85, 85, 255)));
        DONAT_PREFIXES.put("ꔅ", new DonateInfo("YT", new Color(255, 85, 85)));
        DONAT_PREFIXES.put("ꕠ", new DonateInfo("D.HELPER", new Color(85, 255, 85)));
        DONAT_PREFIXES.put("ꔉ", new DonateInfo("HELPER", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔓ", new DonateInfo("ML.MODER", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔗ", new DonateInfo("MODER", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔡ", new DonateInfo("MODER+", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔥ", new DonateInfo("ST.MODER", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔩ", new DonateInfo("GL.MODER", new Color(255, 170, 0)));
        DONAT_PREFIXES.put("ꔳ", new DonateInfo("ML.ADMIN", new Color(255, 85, 85)));
        DONAT_PREFIXES.put("ꔷ", new DonateInfo("ADMIN", new Color(170, 0, 0)));
    }
    
    private record DonateInfo(String name, Color color) {}

    public TargetHud() {
        super("Target Hud", 10, 80, 120, 40, true);
        
        this.scaleAnimation = new EaseOut().setValue(1).setMs(150);
    }

    @Override
    public boolean visible() {
        if (Hud.getInstance() == null) return false;
        boolean isTargetHudSelected = Hud.getInstance().interfaceSettings.isSelected("Target Hud");
        boolean isHudEnabled = Hud.getInstance().state;
        boolean isActive = isTargetHudSelected && isHudEnabled;
        return isActive && scaleAnimation.isDirection(Direction.FORWARDS);
    }

    @Override
    public void tick() {
        if (!Hud.getInstance().interfaceSettings.isSelected("Target Hud") || !Hud.getInstance().state) {
            return;
        }

        LivingEntity auraTarget = Aura.getInstance().getTarget();
        if (auraTarget != null) {
            lastTarget = auraTarget;
            startAnimation();
            faceAlphaAnimation.setDirection(Direction.FORWARDS);
        } else if (PlayerInteractionHelper.isChat(mc.currentScreen) && mc.player != null) {
            lastTarget = mc.player;
            startAnimation();
            faceAlphaAnimation.setDirection(Direction.FORWARDS);
        } else if (stopWatch.finished(500)) {
            stopAnimation();
            faceAlphaAnimation.setDirection(Direction.BACKWARDS);
        }
    }

    @Override
    public void drawDraggable(DrawContext context) {
        boolean isActive = Hud.getInstance().interfaceSettings.isSelected("Target Hud") && Hud.getInstance().state;

        if (isActive && lastTarget != null) {
            MatrixStack matrix = context.getMatrices();
            drawTargetHud(context, matrix);
        }
    }

    private void drawTargetHud(DrawContext context, MatrixStack matrix) {
        float x = getX();
        float y = getY();
        float width = 120f;
        float height = 40f;
        
        setWidth((int) width);
        setHeight((int) height);

      
        float hp = PlayerInteractionHelper.getHealth(lastTarget);
        health = MathHelper.clamp(Calculate.interpolateSmooth(1, health, hp / lastTarget.getMaxHealth()), 0, 1);

      
        if (Hud.blur.isValue()) {
            Render2D.rectangleWithMask(matrix.peek().getPositionMatrix(), x, y, width, height, 5f, 0,
                    KawaseBlur.INSTANCE.fbos.getFirst().getColorAttachment());
        }
        
        rectangle.render(ShapeProperties.create(matrix, x, y, width, height)
                .round(5f)
                .color(ThemeManager.BackgroundGui.getColor())
                .build());

    
        float headSize = 32f;
        float headX = x + 3f;
        float headY = y + 5f;
        
  
        rectangle.render(ShapeProperties.create(matrix, headX, headY, headSize, headSize)
                .round(3f)
                .color(ThemeManager.BackgroundSettings.getColor())
                .build());


        float infoX = headX + headSize + 5f;
        float infoY = y + 4f;
        float infoWidth = width - headSize - 11f;
        
    
        float nameHeight = 12f;
        rectangle.render(ShapeProperties.create(matrix, infoX, infoY, infoWidth, nameHeight)
                .round(2f)
                .color(ThemeManager.BackgroundSettings.getColor())
                .build());


        FontRenderer nameFont = Fonts.getSize(12, Fonts.Type.BOLD);
        String playerName = lastTarget.getName().getString();
        

        DonateInfo donate = getDonateFromName(lastTarget.getDisplayName());
        
    
        if (donate != null) {
            FontRenderer donateFont = Fonts.getSize(8, Fonts.Type.BOLD);
            nameFont.drawString(matrix, playerName, infoX + 5f, infoY + 5f, ThemeManager.textColor.getColor());
            donateFont.drawString(matrix, donate.name(), infoX + 5f + nameFont.getStringWidth(playerName) + 3f, infoY + 5.5f, donate.color().getRGB());
        } else {
            nameFont.drawString(matrix, playerName, infoX + 5f, infoY + 5f, ThemeManager.textColor.getColor());
        }

 
        float bottomPanelY = infoY + nameHeight + 2f;
        float bottomPanelHeight = 18f;
        
        rectangle.render(ShapeProperties.create(matrix, infoX, bottomPanelY, infoWidth, bottomPanelHeight)
                .round(2f)
                .color(ThemeManager.BackgroundSettings.getColor())
                .build());

        drawArmor(context, matrix, infoX, bottomPanelY);

        float hpValue = hp;
        String hpNumber = String.format(java.util.Locale.US, "%.1f", hpValue);
        String hpLabel = " hp";
        FontRenderer hpFont = Fonts.getSize(12, Fonts.Type.BOLD);
        float hpNumberWidth = hpFont.getStringWidth(hpNumber);
        float hpLabelWidth = hpFont.getStringWidth(hpLabel);
        float hpTextX = infoX + infoWidth - hpNumberWidth - hpLabelWidth - 5f;
        
        hpFont.drawString(matrix, hpNumber, hpTextX, bottomPanelY + 5f, ThemeManager.textColor.getColor());
        hpFont.drawString(matrix, hpLabel, hpTextX + hpNumberWidth, bottomPanelY + 5f, new Color(150, 150, 150).getRGB());

        float hpBarX = infoX + 3f;
        float hpBarY = bottomPanelY + 13f;
        float hpBarWidth = infoWidth - 6f;
        float hpBarHeight = 3f;

        rectangle.render(ShapeProperties.create(matrix, hpBarX, hpBarY, hpBarWidth, hpBarHeight)
                .round(1.5f)
                .color(new Color(0, 0, 0, 100).getRGB())
                .build());

        float filledWidth = hpBarWidth * health;
        if (filledWidth > 0) {
            rectangle.render(ShapeProperties.create(matrix, hpBarX, hpBarY, filledWidth, hpBarHeight)
                    .round(1.5f)
                    .color(ColorAssist.getClientColor(), ColorAssist.getClientColor(),
                           ColorAssist.getClientColor2(), ColorAssist.getClientColor2())
                    .build());
        }
        
        drawFace(context, matrix, headX, headY, headSize);
    }

    private void drawArmor(DrawContext context, MatrixStack matrix, float panelX, float panelY) {
        if (lastTarget == null) return;
        
        net.minecraft.item.ItemStack[] armor = new net.minecraft.item.ItemStack[] {
                lastTarget.getEquippedStack(net.minecraft.entity.EquipmentSlot.HEAD),
                lastTarget.getEquippedStack(net.minecraft.entity.EquipmentSlot.CHEST),
                lastTarget.getEquippedStack(net.minecraft.entity.EquipmentSlot.LEGS),
                lastTarget.getEquippedStack(net.minecraft.entity.EquipmentSlot.FEET)
        };
        
        float startX = panelX + 3f;
        float y = panelY + 1f;
        float itemSpacing = 11f;
        float itemSize = 16 * 0.6F;
        
        for (int i = 0; i < 4; i++) {
            float currentX = startX + i * itemSpacing;
            if (!armor[i].isEmpty()) {
                matrix.push();
                matrix.translate(0, 0, 100);
                Render2D.defaultDrawStack(context, armor[i], currentX, y, true, true, 0.6F);
                matrix.pop();
            } else {
    
                String xText = "p";
                FontRenderer font = Fonts.getSize(10, Fonts.Type.HAWEN);
                float textWidth = font.getStringWidth(xText);
                float textHeight = font.getStringHeight(xText);
                float textX = currentX + (itemSize - textWidth) / 2.0F;
                float textY = y + (itemSize - textHeight) / 2.0F;
                font.drawString(matrix, xText, textX, textY + 5f, new Color(137, 137, 140, 255).getRGB());
            }
        }
    }

    private void drawFace(DrawContext context, MatrixStack matrix, float x, float y, float size) {
        if (mc.getEntityRenderDispatcher() == null || lastTarget == null) {
            return;
        }
        
        EntityRenderer<? super LivingEntity, ?> baseRenderer = mc.getEntityRenderDispatcher().getRenderer(lastTarget);
        if (baseRenderer == null || !(baseRenderer instanceof LivingEntityRenderer<?, ?, ?>)) {
            return;
        }
        
        @SuppressWarnings("unchecked")
        LivingEntityRenderer<LivingEntity, LivingEntityRenderState, ?> renderer =
                (LivingEntityRenderer<LivingEntity, LivingEntityRenderState, ?>) baseRenderer;
        LivingEntityRenderState state = renderer.getAndUpdateRenderState(lastTarget, tickCounter.getTickDelta(false));
        
        if (state == null) {
            return;
        }
        
        Identifier textureLocation = renderer.getTexture(state);
        float alpha = faceAlphaAnimation.getOutput().floatValue();
        
        Calculate.setAlpha(alpha, () -> {
            float padding = 4f;
            float faceSize = size - padding * 2;
            float faceX = x + padding;
            float faceY = y + padding;

      
            Render2D.drawTexture(context, textureLocation, faceX, faceY, faceSize, 3f, 8, 8, 64,
                    ColorAssist.getRect(1), ColorAssist.multRed(-1, 1 + lastTarget.hurtTime / 4F));
        });
    }
    
    private DonateInfo getDonateFromName(Text displayName) {
        String fullName = displayName.getString();
        for (Map.Entry<String, DonateInfo> entry : DONAT_PREFIXES.entrySet()) {
            if (fullName.contains(entry.getKey())) {
                return entry.getValue();
            }
        }
        return null;
    }
}
 
самое худшее что я делал скид вилда но вообще не похоже ну короче вот вам говно говно

SS - Посмотреть вложение 330216

Code -
сарделька:
Expand Collapse Copy
package dev.sk3d.display.hud;

import dev.sk3d.Hawen;
import dev.sk3d.common.animation.Animation;
import dev.sk3d.common.animation.implement.Decelerate;
import dev.sk3d.utils.display.render.post.KawaseBlur;
import dev.sk3d.utils.interactions.interact.PlayerInteractionHelper;
import dev.sk3d.utils.math.time.StopWatch;
import dev.sk3d.utils.theme.ThemeManager;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.entity.EntityRenderer;
import net.minecraft.client.render.entity.LivingEntityRenderer;
import net.minecraft.client.render.entity.state.LivingEntityRenderState;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.LivingEntity;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import dev.sk3d.utils.client.managers.api.draggable.AbstractDraggable;
import dev.sk3d.features.impl.combat.Aura;
import dev.sk3d.features.impl.render.Hud;
import dev.sk3d.common.animation.Direction;
import dev.sk3d.common.animation.implement.EaseOut;
import dev.sk3d.utils.display.render.font.FontRenderer;
import dev.sk3d.utils.display.render.font.Fonts;
import dev.sk3d.utils.display.render.shape.ShapeProperties;
import dev.sk3d.utils.display.color.ColorAssist;
import dev.sk3d.utils.math.calc.Calculate;
import dev.sk3d.utils.display.render.geometry.Render2D;
import dev.sk3d.utils.display.scissor.ScissorAssist;
import java.awt.*;
import java.util.HashMap;
import java.util.Map;

public class TargetHud extends AbstractDraggable {
    private final Animation faceAlphaAnimation = new Decelerate().setMs(125).setValue(1);
    private final StopWatch stopWatch = new StopWatch();
    private LivingEntity lastTarget;
    private float health;
   
    private static final Map<String, DonateInfo> DONAT_PREFIXES = new HashMap<>();
    static {
        DONAT_PREFIXES.put("ꔀ", new DonateInfo("PLAYER", new Color(170, 170, 170)));
        DONAT_PREFIXES.put("ꔄ", new DonateInfo("HERO", new Color(85, 85, 255)));
        DONAT_PREFIXES.put("ꔈ", new DonateInfo("TITAN", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔒ", new DonateInfo("AVENGER", new Color(85, 255, 85)));
        DONAT_PREFIXES.put("ꔖ", new DonateInfo("OVERLORD", new Color(85, 255, 255)));
        DONAT_PREFIXES.put("ꔠ", new DonateInfo("MAGISTER", new Color(255, 170, 0)));
        DONAT_PREFIXES.put("ꔤ", new DonateInfo("IMPERATOR", new Color(255, 85, 85)));
        DONAT_PREFIXES.put("ꔨ", new DonateInfo("DRAGON", new Color(255, 85, 255)));
        DONAT_PREFIXES.put("ꔲ", new DonateInfo("BULL", new Color(170, 0, 170)));
        DONAT_PREFIXES.put("ꕒ", new DonateInfo("RABBIT", new Color(255, 255, 255)));
        DONAT_PREFIXES.put("ꔶ", new DonateInfo("TIGER", new Color(255, 170, 0)));
        DONAT_PREFIXES.put("ꕄ", new DonateInfo("DRACULA", new Color(255, 85, 85)));
        DONAT_PREFIXES.put("ꕖ", new DonateInfo("BUNNY", new Color(255, 255, 255)));
        DONAT_PREFIXES.put("ꕀ", new DonateInfo("HYDRA", new Color(0, 170, 0)));
        DONAT_PREFIXES.put("ꕈ", new DonateInfo("COBRA", new Color(85, 255, 85)));
        DONAT_PREFIXES.put("ꕅ", new DonateInfo("VAMPIRE", new Color(255, 85, 85)));
        DONAT_PREFIXES.put("ꔁ", new DonateInfo("MEDIA", new Color(85, 85, 255)));
        DONAT_PREFIXES.put("ꔅ", new DonateInfo("YT", new Color(255, 85, 85)));
        DONAT_PREFIXES.put("ꕠ", new DonateInfo("D.HELPER", new Color(85, 255, 85)));
        DONAT_PREFIXES.put("ꔉ", new DonateInfo("HELPER", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔓ", new DonateInfo("ML.MODER", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔗ", new DonateInfo("MODER", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔡ", new DonateInfo("MODER+", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔥ", new DonateInfo("ST.MODER", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔩ", new DonateInfo("GL.MODER", new Color(255, 170, 0)));
        DONAT_PREFIXES.put("ꔳ", new DonateInfo("ML.ADMIN", new Color(255, 85, 85)));
        DONAT_PREFIXES.put("ꔷ", new DonateInfo("ADMIN", new Color(170, 0, 0)));
    }
   
    private record DonateInfo(String name, Color color) {}

    public TargetHud() {
        super("Target Hud", 10, 80, 120, 40, true);
       
        this.scaleAnimation = new EaseOut().setValue(1).setMs(150);
    }

    @Override
    public boolean visible() {
        if (Hud.getInstance() == null) return false;
        boolean isTargetHudSelected = Hud.getInstance().interfaceSettings.isSelected("Target Hud");
        boolean isHudEnabled = Hud.getInstance().state;
        boolean isActive = isTargetHudSelected && isHudEnabled;
        return isActive && scaleAnimation.isDirection(Direction.FORWARDS);
    }

    @Override
    public void tick() {
        if (!Hud.getInstance().interfaceSettings.isSelected("Target Hud") || !Hud.getInstance().state) {
            return;
        }

        LivingEntity auraTarget = Aura.getInstance().getTarget();
        if (auraTarget != null) {
            lastTarget = auraTarget;
            startAnimation();
            faceAlphaAnimation.setDirection(Direction.FORWARDS);
        } else if (PlayerInteractionHelper.isChat(mc.currentScreen) && mc.player != null) {
            lastTarget = mc.player;
            startAnimation();
            faceAlphaAnimation.setDirection(Direction.FORWARDS);
        } else if (stopWatch.finished(500)) {
            stopAnimation();
            faceAlphaAnimation.setDirection(Direction.BACKWARDS);
        }
    }

    @Override
    public void drawDraggable(DrawContext context) {
        boolean isActive = Hud.getInstance().interfaceSettings.isSelected("Target Hud") && Hud.getInstance().state;

        if (isActive && lastTarget != null) {
            MatrixStack matrix = context.getMatrices();
            drawTargetHud(context, matrix);
        }
    }

    private void drawTargetHud(DrawContext context, MatrixStack matrix) {
        float x = getX();
        float y = getY();
        float width = 120f;
        float height = 40f;
       
        setWidth((int) width);
        setHeight((int) height);

     
        float hp = PlayerInteractionHelper.getHealth(lastTarget);
        health = MathHelper.clamp(Calculate.interpolateSmooth(1, health, hp / lastTarget.getMaxHealth()), 0, 1);

     
        if (Hud.blur.isValue()) {
            Render2D.rectangleWithMask(matrix.peek().getPositionMatrix(), x, y, width, height, 5f, 0,
                    KawaseBlur.INSTANCE.fbos.getFirst().getColorAttachment());
        }
       
        rectangle.render(ShapeProperties.create(matrix, x, y, width, height)
                .round(5f)
                .color(ThemeManager.BackgroundGui.getColor())
                .build());

   
        float headSize = 32f;
        float headX = x + 3f;
        float headY = y + 5f;
       
 
        rectangle.render(ShapeProperties.create(matrix, headX, headY, headSize, headSize)
                .round(3f)
                .color(ThemeManager.BackgroundSettings.getColor())
                .build());


        float infoX = headX + headSize + 5f;
        float infoY = y + 4f;
        float infoWidth = width - headSize - 11f;
       
   
        float nameHeight = 12f;
        rectangle.render(ShapeProperties.create(matrix, infoX, infoY, infoWidth, nameHeight)
                .round(2f)
                .color(ThemeManager.BackgroundSettings.getColor())
                .build());


        FontRenderer nameFont = Fonts.getSize(12, Fonts.Type.BOLD);
        String playerName = lastTarget.getName().getString();
       

        DonateInfo donate = getDonateFromName(lastTarget.getDisplayName());
       
   
        if (donate != null) {
            FontRenderer donateFont = Fonts.getSize(8, Fonts.Type.BOLD);
            nameFont.drawString(matrix, playerName, infoX + 5f, infoY + 5f, ThemeManager.textColor.getColor());
            donateFont.drawString(matrix, donate.name(), infoX + 5f + nameFont.getStringWidth(playerName) + 3f, infoY + 5.5f, donate.color().getRGB());
        } else {
            nameFont.drawString(matrix, playerName, infoX + 5f, infoY + 5f, ThemeManager.textColor.getColor());
        }

 
        float bottomPanelY = infoY + nameHeight + 2f;
        float bottomPanelHeight = 18f;
       
        rectangle.render(ShapeProperties.create(matrix, infoX, bottomPanelY, infoWidth, bottomPanelHeight)
                .round(2f)
                .color(ThemeManager.BackgroundSettings.getColor())
                .build());

        drawArmor(context, matrix, infoX, bottomPanelY);

        float hpValue = hp;
        String hpNumber = String.format(java.util.Locale.US, "%.1f", hpValue);
        String hpLabel = " hp";
        FontRenderer hpFont = Fonts.getSize(12, Fonts.Type.BOLD);
        float hpNumberWidth = hpFont.getStringWidth(hpNumber);
        float hpLabelWidth = hpFont.getStringWidth(hpLabel);
        float hpTextX = infoX + infoWidth - hpNumberWidth - hpLabelWidth - 5f;
       
        hpFont.drawString(matrix, hpNumber, hpTextX, bottomPanelY + 5f, ThemeManager.textColor.getColor());
        hpFont.drawString(matrix, hpLabel, hpTextX + hpNumberWidth, bottomPanelY + 5f, new Color(150, 150, 150).getRGB());

        float hpBarX = infoX + 3f;
        float hpBarY = bottomPanelY + 13f;
        float hpBarWidth = infoWidth - 6f;
        float hpBarHeight = 3f;

        rectangle.render(ShapeProperties.create(matrix, hpBarX, hpBarY, hpBarWidth, hpBarHeight)
                .round(1.5f)
                .color(new Color(0, 0, 0, 100).getRGB())
                .build());

        float filledWidth = hpBarWidth * health;
        if (filledWidth > 0) {
            rectangle.render(ShapeProperties.create(matrix, hpBarX, hpBarY, filledWidth, hpBarHeight)
                    .round(1.5f)
                    .color(ColorAssist.getClientColor(), ColorAssist.getClientColor(),
                           ColorAssist.getClientColor2(), ColorAssist.getClientColor2())
                    .build());
        }
       
        drawFace(context, matrix, headX, headY, headSize);
    }

    private void drawArmor(DrawContext context, MatrixStack matrix, float panelX, float panelY) {
        if (lastTarget == null) return;
       
        net.minecraft.item.ItemStack[] armor = new net.minecraft.item.ItemStack[] {
                lastTarget.getEquippedStack(net.minecraft.entity.EquipmentSlot.HEAD),
                lastTarget.getEquippedStack(net.minecraft.entity.EquipmentSlot.CHEST),
                lastTarget.getEquippedStack(net.minecraft.entity.EquipmentSlot.LEGS),
                lastTarget.getEquippedStack(net.minecraft.entity.EquipmentSlot.FEET)
        };
       
        float startX = panelX + 3f;
        float y = panelY + 1f;
        float itemSpacing = 11f;
        float itemSize = 16 * 0.6F;
       
        for (int i = 0; i < 4; i++) {
            float currentX = startX + i * itemSpacing;
            if (!armor[i].isEmpty()) {
                matrix.push();
                matrix.translate(0, 0, 100);
                Render2D.defaultDrawStack(context, armor[i], currentX, y, true, true, 0.6F);
                matrix.pop();
            } else {
   
                String xText = "p";
                FontRenderer font = Fonts.getSize(10, Fonts.Type.HAWEN);
                float textWidth = font.getStringWidth(xText);
                float textHeight = font.getStringHeight(xText);
                float textX = currentX + (itemSize - textWidth) / 2.0F;
                float textY = y + (itemSize - textHeight) / 2.0F;
                font.drawString(matrix, xText, textX, textY + 5f, new Color(137, 137, 140, 255).getRGB());
            }
        }
    }

    private void drawFace(DrawContext context, MatrixStack matrix, float x, float y, float size) {
        if (mc.getEntityRenderDispatcher() == null || lastTarget == null) {
            return;
        }
       
        EntityRenderer<? super LivingEntity, ?> baseRenderer = mc.getEntityRenderDispatcher().getRenderer(lastTarget);
        if (baseRenderer == null || !(baseRenderer instanceof LivingEntityRenderer<?, ?, ?>)) {
            return;
        }
       
        @SuppressWarnings("unchecked")
        LivingEntityRenderer<LivingEntity, LivingEntityRenderState, ?> renderer =
                (LivingEntityRenderer<LivingEntity, LivingEntityRenderState, ?>) baseRenderer;
        LivingEntityRenderState state = renderer.getAndUpdateRenderState(lastTarget, tickCounter.getTickDelta(false));
       
        if (state == null) {
            return;
        }
       
        Identifier textureLocation = renderer.getTexture(state);
        float alpha = faceAlphaAnimation.getOutput().floatValue();
       
        Calculate.setAlpha(alpha, () -> {
            float padding = 4f;
            float faceSize = size - padding * 2;
            float faceX = x + padding;
            float faceY = y + padding;

     
            Render2D.drawTexture(context, textureLocation, faceX, faceY, faceSize, 3f, 8, 8, 64,
                    ColorAssist.getRect(1), ColorAssist.multRed(-1, 1 + lastTarget.hurtTime / 4F));
        });
    }
   
    private DonateInfo getDonateFromName(Text displayName) {
        String fullName = displayName.getString();
        for (Map.Entry<String, DonateInfo> entry : DONAT_PREFIXES.entrySet()) {
            if (fullName.contains(entry.getKey())) {
                return entry.getValue();
            }
        }
        return null;
    }
}
хуй знает но мне зашло
 
самое худшее что я делал скид вилда но вообще не похоже ну короче вот вам говно говно

SS - Посмотреть вложение 330216

Code -
сарделька:
Expand Collapse Copy
package dev.sk3d.display.hud;

import dev.sk3d.Hawen;
import dev.sk3d.common.animation.Animation;
import dev.sk3d.common.animation.implement.Decelerate;
import dev.sk3d.utils.display.render.post.KawaseBlur;
import dev.sk3d.utils.interactions.interact.PlayerInteractionHelper;
import dev.sk3d.utils.math.time.StopWatch;
import dev.sk3d.utils.theme.ThemeManager;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.entity.EntityRenderer;
import net.minecraft.client.render.entity.LivingEntityRenderer;
import net.minecraft.client.render.entity.state.LivingEntityRenderState;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.LivingEntity;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import dev.sk3d.utils.client.managers.api.draggable.AbstractDraggable;
import dev.sk3d.features.impl.combat.Aura;
import dev.sk3d.features.impl.render.Hud;
import dev.sk3d.common.animation.Direction;
import dev.sk3d.common.animation.implement.EaseOut;
import dev.sk3d.utils.display.render.font.FontRenderer;
import dev.sk3d.utils.display.render.font.Fonts;
import dev.sk3d.utils.display.render.shape.ShapeProperties;
import dev.sk3d.utils.display.color.ColorAssist;
import dev.sk3d.utils.math.calc.Calculate;
import dev.sk3d.utils.display.render.geometry.Render2D;
import dev.sk3d.utils.display.scissor.ScissorAssist;
import java.awt.*;
import java.util.HashMap;
import java.util.Map;

public class TargetHud extends AbstractDraggable {
    private final Animation faceAlphaAnimation = new Decelerate().setMs(125).setValue(1);
    private final StopWatch stopWatch = new StopWatch();
    private LivingEntity lastTarget;
    private float health;
   
    private static final Map<String, DonateInfo> DONAT_PREFIXES = new HashMap<>();
    static {
        DONAT_PREFIXES.put("ꔀ", new DonateInfo("PLAYER", new Color(170, 170, 170)));
        DONAT_PREFIXES.put("ꔄ", new DonateInfo("HERO", new Color(85, 85, 255)));
        DONAT_PREFIXES.put("ꔈ", new DonateInfo("TITAN", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔒ", new DonateInfo("AVENGER", new Color(85, 255, 85)));
        DONAT_PREFIXES.put("ꔖ", new DonateInfo("OVERLORD", new Color(85, 255, 255)));
        DONAT_PREFIXES.put("ꔠ", new DonateInfo("MAGISTER", new Color(255, 170, 0)));
        DONAT_PREFIXES.put("ꔤ", new DonateInfo("IMPERATOR", new Color(255, 85, 85)));
        DONAT_PREFIXES.put("ꔨ", new DonateInfo("DRAGON", new Color(255, 85, 255)));
        DONAT_PREFIXES.put("ꔲ", new DonateInfo("BULL", new Color(170, 0, 170)));
        DONAT_PREFIXES.put("ꕒ", new DonateInfo("RABBIT", new Color(255, 255, 255)));
        DONAT_PREFIXES.put("ꔶ", new DonateInfo("TIGER", new Color(255, 170, 0)));
        DONAT_PREFIXES.put("ꕄ", new DonateInfo("DRACULA", new Color(255, 85, 85)));
        DONAT_PREFIXES.put("ꕖ", new DonateInfo("BUNNY", new Color(255, 255, 255)));
        DONAT_PREFIXES.put("ꕀ", new DonateInfo("HYDRA", new Color(0, 170, 0)));
        DONAT_PREFIXES.put("ꕈ", new DonateInfo("COBRA", new Color(85, 255, 85)));
        DONAT_PREFIXES.put("ꕅ", new DonateInfo("VAMPIRE", new Color(255, 85, 85)));
        DONAT_PREFIXES.put("ꔁ", new DonateInfo("MEDIA", new Color(85, 85, 255)));
        DONAT_PREFIXES.put("ꔅ", new DonateInfo("YT", new Color(255, 85, 85)));
        DONAT_PREFIXES.put("ꕠ", new DonateInfo("D.HELPER", new Color(85, 255, 85)));
        DONAT_PREFIXES.put("ꔉ", new DonateInfo("HELPER", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔓ", new DonateInfo("ML.MODER", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔗ", new DonateInfo("MODER", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔡ", new DonateInfo("MODER+", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔥ", new DonateInfo("ST.MODER", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔩ", new DonateInfo("GL.MODER", new Color(255, 170, 0)));
        DONAT_PREFIXES.put("ꔳ", new DonateInfo("ML.ADMIN", new Color(255, 85, 85)));
        DONAT_PREFIXES.put("ꔷ", new DonateInfo("ADMIN", new Color(170, 0, 0)));
    }
   
    private record DonateInfo(String name, Color color) {}

    public TargetHud() {
        super("Target Hud", 10, 80, 120, 40, true);
       
        this.scaleAnimation = new EaseOut().setValue(1).setMs(150);
    }

    @Override
    public boolean visible() {
        if (Hud.getInstance() == null) return false;
        boolean isTargetHudSelected = Hud.getInstance().interfaceSettings.isSelected("Target Hud");
        boolean isHudEnabled = Hud.getInstance().state;
        boolean isActive = isTargetHudSelected && isHudEnabled;
        return isActive && scaleAnimation.isDirection(Direction.FORWARDS);
    }

    @Override
    public void tick() {
        if (!Hud.getInstance().interfaceSettings.isSelected("Target Hud") || !Hud.getInstance().state) {
            return;
        }

        LivingEntity auraTarget = Aura.getInstance().getTarget();
        if (auraTarget != null) {
            lastTarget = auraTarget;
            startAnimation();
            faceAlphaAnimation.setDirection(Direction.FORWARDS);
        } else if (PlayerInteractionHelper.isChat(mc.currentScreen) && mc.player != null) {
            lastTarget = mc.player;
            startAnimation();
            faceAlphaAnimation.setDirection(Direction.FORWARDS);
        } else if (stopWatch.finished(500)) {
            stopAnimation();
            faceAlphaAnimation.setDirection(Direction.BACKWARDS);
        }
    }

    @Override
    public void drawDraggable(DrawContext context) {
        boolean isActive = Hud.getInstance().interfaceSettings.isSelected("Target Hud") && Hud.getInstance().state;

        if (isActive && lastTarget != null) {
            MatrixStack matrix = context.getMatrices();
            drawTargetHud(context, matrix);
        }
    }

    private void drawTargetHud(DrawContext context, MatrixStack matrix) {
        float x = getX();
        float y = getY();
        float width = 120f;
        float height = 40f;
       
        setWidth((int) width);
        setHeight((int) height);

     
        float hp = PlayerInteractionHelper.getHealth(lastTarget);
        health = MathHelper.clamp(Calculate.interpolateSmooth(1, health, hp / lastTarget.getMaxHealth()), 0, 1);

     
        if (Hud.blur.isValue()) {
            Render2D.rectangleWithMask(matrix.peek().getPositionMatrix(), x, y, width, height, 5f, 0,
                    KawaseBlur.INSTANCE.fbos.getFirst().getColorAttachment());
        }
       
        rectangle.render(ShapeProperties.create(matrix, x, y, width, height)
                .round(5f)
                .color(ThemeManager.BackgroundGui.getColor())
                .build());

   
        float headSize = 32f;
        float headX = x + 3f;
        float headY = y + 5f;
       
 
        rectangle.render(ShapeProperties.create(matrix, headX, headY, headSize, headSize)
                .round(3f)
                .color(ThemeManager.BackgroundSettings.getColor())
                .build());


        float infoX = headX + headSize + 5f;
        float infoY = y + 4f;
        float infoWidth = width - headSize - 11f;
       
   
        float nameHeight = 12f;
        rectangle.render(ShapeProperties.create(matrix, infoX, infoY, infoWidth, nameHeight)
                .round(2f)
                .color(ThemeManager.BackgroundSettings.getColor())
                .build());


        FontRenderer nameFont = Fonts.getSize(12, Fonts.Type.BOLD);
        String playerName = lastTarget.getName().getString();
       

        DonateInfo donate = getDonateFromName(lastTarget.getDisplayName());
       
   
        if (donate != null) {
            FontRenderer donateFont = Fonts.getSize(8, Fonts.Type.BOLD);
            nameFont.drawString(matrix, playerName, infoX + 5f, infoY + 5f, ThemeManager.textColor.getColor());
            donateFont.drawString(matrix, donate.name(), infoX + 5f + nameFont.getStringWidth(playerName) + 3f, infoY + 5.5f, donate.color().getRGB());
        } else {
            nameFont.drawString(matrix, playerName, infoX + 5f, infoY + 5f, ThemeManager.textColor.getColor());
        }

 
        float bottomPanelY = infoY + nameHeight + 2f;
        float bottomPanelHeight = 18f;
       
        rectangle.render(ShapeProperties.create(matrix, infoX, bottomPanelY, infoWidth, bottomPanelHeight)
                .round(2f)
                .color(ThemeManager.BackgroundSettings.getColor())
                .build());

        drawArmor(context, matrix, infoX, bottomPanelY);

        float hpValue = hp;
        String hpNumber = String.format(java.util.Locale.US, "%.1f", hpValue);
        String hpLabel = " hp";
        FontRenderer hpFont = Fonts.getSize(12, Fonts.Type.BOLD);
        float hpNumberWidth = hpFont.getStringWidth(hpNumber);
        float hpLabelWidth = hpFont.getStringWidth(hpLabel);
        float hpTextX = infoX + infoWidth - hpNumberWidth - hpLabelWidth - 5f;
       
        hpFont.drawString(matrix, hpNumber, hpTextX, bottomPanelY + 5f, ThemeManager.textColor.getColor());
        hpFont.drawString(matrix, hpLabel, hpTextX + hpNumberWidth, bottomPanelY + 5f, new Color(150, 150, 150).getRGB());

        float hpBarX = infoX + 3f;
        float hpBarY = bottomPanelY + 13f;
        float hpBarWidth = infoWidth - 6f;
        float hpBarHeight = 3f;

        rectangle.render(ShapeProperties.create(matrix, hpBarX, hpBarY, hpBarWidth, hpBarHeight)
                .round(1.5f)
                .color(new Color(0, 0, 0, 100).getRGB())
                .build());

        float filledWidth = hpBarWidth * health;
        if (filledWidth > 0) {
            rectangle.render(ShapeProperties.create(matrix, hpBarX, hpBarY, filledWidth, hpBarHeight)
                    .round(1.5f)
                    .color(ColorAssist.getClientColor(), ColorAssist.getClientColor(),
                           ColorAssist.getClientColor2(), ColorAssist.getClientColor2())
                    .build());
        }
       
        drawFace(context, matrix, headX, headY, headSize);
    }

    private void drawArmor(DrawContext context, MatrixStack matrix, float panelX, float panelY) {
        if (lastTarget == null) return;
       
        net.minecraft.item.ItemStack[] armor = new net.minecraft.item.ItemStack[] {
                lastTarget.getEquippedStack(net.minecraft.entity.EquipmentSlot.HEAD),
                lastTarget.getEquippedStack(net.minecraft.entity.EquipmentSlot.CHEST),
                lastTarget.getEquippedStack(net.minecraft.entity.EquipmentSlot.LEGS),
                lastTarget.getEquippedStack(net.minecraft.entity.EquipmentSlot.FEET)
        };
       
        float startX = panelX + 3f;
        float y = panelY + 1f;
        float itemSpacing = 11f;
        float itemSize = 16 * 0.6F;
       
        for (int i = 0; i < 4; i++) {
            float currentX = startX + i * itemSpacing;
            if (!armor[i].isEmpty()) {
                matrix.push();
                matrix.translate(0, 0, 100);
                Render2D.defaultDrawStack(context, armor[i], currentX, y, true, true, 0.6F);
                matrix.pop();
            } else {
   
                String xText = "p";
                FontRenderer font = Fonts.getSize(10, Fonts.Type.HAWEN);
                float textWidth = font.getStringWidth(xText);
                float textHeight = font.getStringHeight(xText);
                float textX = currentX + (itemSize - textWidth) / 2.0F;
                float textY = y + (itemSize - textHeight) / 2.0F;
                font.drawString(matrix, xText, textX, textY + 5f, new Color(137, 137, 140, 255).getRGB());
            }
        }
    }

    private void drawFace(DrawContext context, MatrixStack matrix, float x, float y, float size) {
        if (mc.getEntityRenderDispatcher() == null || lastTarget == null) {
            return;
        }
       
        EntityRenderer<? super LivingEntity, ?> baseRenderer = mc.getEntityRenderDispatcher().getRenderer(lastTarget);
        if (baseRenderer == null || !(baseRenderer instanceof LivingEntityRenderer<?, ?, ?>)) {
            return;
        }
       
        @SuppressWarnings("unchecked")
        LivingEntityRenderer<LivingEntity, LivingEntityRenderState, ?> renderer =
                (LivingEntityRenderer<LivingEntity, LivingEntityRenderState, ?>) baseRenderer;
        LivingEntityRenderState state = renderer.getAndUpdateRenderState(lastTarget, tickCounter.getTickDelta(false));
       
        if (state == null) {
            return;
        }
       
        Identifier textureLocation = renderer.getTexture(state);
        float alpha = faceAlphaAnimation.getOutput().floatValue();
       
        Calculate.setAlpha(alpha, () -> {
            float padding = 4f;
            float faceSize = size - padding * 2;
            float faceX = x + padding;
            float faceY = y + padding;

     
            Render2D.drawTexture(context, textureLocation, faceX, faceY, faceSize, 3f, 8, 8, 64,
                    ColorAssist.getRect(1), ColorAssist.multRed(-1, 1 + lastTarget.hurtTime / 4F));
        });
    }
   
    private DonateInfo getDonateFromName(Text displayName) {
        String fullName = displayName.getString();
        for (Map.Entry<String, DonateInfo> entry : DONAT_PREFIXES.entrySet()) {
            if (fullName.contains(entry.getKey())) {
                return entry.getValue();
            }
        }
        return null;
    }
}
заебись
 
самое худшее что я делал скид вилда но вообще не похоже ну короче вот вам говно говно

SS - Посмотреть вложение 330216

Code -
сарделька:
Expand Collapse Copy
package dev.sk3d.display.hud;

import dev.sk3d.Hawen;
import dev.sk3d.common.animation.Animation;
import dev.sk3d.common.animation.implement.Decelerate;
import dev.sk3d.utils.display.render.post.KawaseBlur;
import dev.sk3d.utils.interactions.interact.PlayerInteractionHelper;
import dev.sk3d.utils.math.time.StopWatch;
import dev.sk3d.utils.theme.ThemeManager;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.entity.EntityRenderer;
import net.minecraft.client.render.entity.LivingEntityRenderer;
import net.minecraft.client.render.entity.state.LivingEntityRenderState;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.LivingEntity;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import dev.sk3d.utils.client.managers.api.draggable.AbstractDraggable;
import dev.sk3d.features.impl.combat.Aura;
import dev.sk3d.features.impl.render.Hud;
import dev.sk3d.common.animation.Direction;
import dev.sk3d.common.animation.implement.EaseOut;
import dev.sk3d.utils.display.render.font.FontRenderer;
import dev.sk3d.utils.display.render.font.Fonts;
import dev.sk3d.utils.display.render.shape.ShapeProperties;
import dev.sk3d.utils.display.color.ColorAssist;
import dev.sk3d.utils.math.calc.Calculate;
import dev.sk3d.utils.display.render.geometry.Render2D;
import dev.sk3d.utils.display.scissor.ScissorAssist;
import java.awt.*;
import java.util.HashMap;
import java.util.Map;

public class TargetHud extends AbstractDraggable {
    private final Animation faceAlphaAnimation = new Decelerate().setMs(125).setValue(1);
    private final StopWatch stopWatch = new StopWatch();
    private LivingEntity lastTarget;
    private float health;
   
    private static final Map<String, DonateInfo> DONAT_PREFIXES = new HashMap<>();
    static {
        DONAT_PREFIXES.put("ꔀ", new DonateInfo("PLAYER", new Color(170, 170, 170)));
        DONAT_PREFIXES.put("ꔄ", new DonateInfo("HERO", new Color(85, 85, 255)));
        DONAT_PREFIXES.put("ꔈ", new DonateInfo("TITAN", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔒ", new DonateInfo("AVENGER", new Color(85, 255, 85)));
        DONAT_PREFIXES.put("ꔖ", new DonateInfo("OVERLORD", new Color(85, 255, 255)));
        DONAT_PREFIXES.put("ꔠ", new DonateInfo("MAGISTER", new Color(255, 170, 0)));
        DONAT_PREFIXES.put("ꔤ", new DonateInfo("IMPERATOR", new Color(255, 85, 85)));
        DONAT_PREFIXES.put("ꔨ", new DonateInfo("DRAGON", new Color(255, 85, 255)));
        DONAT_PREFIXES.put("ꔲ", new DonateInfo("BULL", new Color(170, 0, 170)));
        DONAT_PREFIXES.put("ꕒ", new DonateInfo("RABBIT", new Color(255, 255, 255)));
        DONAT_PREFIXES.put("ꔶ", new DonateInfo("TIGER", new Color(255, 170, 0)));
        DONAT_PREFIXES.put("ꕄ", new DonateInfo("DRACULA", new Color(255, 85, 85)));
        DONAT_PREFIXES.put("ꕖ", new DonateInfo("BUNNY", new Color(255, 255, 255)));
        DONAT_PREFIXES.put("ꕀ", new DonateInfo("HYDRA", new Color(0, 170, 0)));
        DONAT_PREFIXES.put("ꕈ", new DonateInfo("COBRA", new Color(85, 255, 85)));
        DONAT_PREFIXES.put("ꕅ", new DonateInfo("VAMPIRE", new Color(255, 85, 85)));
        DONAT_PREFIXES.put("ꔁ", new DonateInfo("MEDIA", new Color(85, 85, 255)));
        DONAT_PREFIXES.put("ꔅ", new DonateInfo("YT", new Color(255, 85, 85)));
        DONAT_PREFIXES.put("ꕠ", new DonateInfo("D.HELPER", new Color(85, 255, 85)));
        DONAT_PREFIXES.put("ꔉ", new DonateInfo("HELPER", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔓ", new DonateInfo("ML.MODER", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔗ", new DonateInfo("MODER", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔡ", new DonateInfo("MODER+", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔥ", new DonateInfo("ST.MODER", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔩ", new DonateInfo("GL.MODER", new Color(255, 170, 0)));
        DONAT_PREFIXES.put("ꔳ", new DonateInfo("ML.ADMIN", new Color(255, 85, 85)));
        DONAT_PREFIXES.put("ꔷ", new DonateInfo("ADMIN", new Color(170, 0, 0)));
    }
   
    private record DonateInfo(String name, Color color) {}

    public TargetHud() {
        super("Target Hud", 10, 80, 120, 40, true);
       
        this.scaleAnimation = new EaseOut().setValue(1).setMs(150);
    }

    @Override
    public boolean visible() {
        if (Hud.getInstance() == null) return false;
        boolean isTargetHudSelected = Hud.getInstance().interfaceSettings.isSelected("Target Hud");
        boolean isHudEnabled = Hud.getInstance().state;
        boolean isActive = isTargetHudSelected && isHudEnabled;
        return isActive && scaleAnimation.isDirection(Direction.FORWARDS);
    }

    @Override
    public void tick() {
        if (!Hud.getInstance().interfaceSettings.isSelected("Target Hud") || !Hud.getInstance().state) {
            return;
        }

        LivingEntity auraTarget = Aura.getInstance().getTarget();
        if (auraTarget != null) {
            lastTarget = auraTarget;
            startAnimation();
            faceAlphaAnimation.setDirection(Direction.FORWARDS);
        } else if (PlayerInteractionHelper.isChat(mc.currentScreen) && mc.player != null) {
            lastTarget = mc.player;
            startAnimation();
            faceAlphaAnimation.setDirection(Direction.FORWARDS);
        } else if (stopWatch.finished(500)) {
            stopAnimation();
            faceAlphaAnimation.setDirection(Direction.BACKWARDS);
        }
    }

    @Override
    public void drawDraggable(DrawContext context) {
        boolean isActive = Hud.getInstance().interfaceSettings.isSelected("Target Hud") && Hud.getInstance().state;

        if (isActive && lastTarget != null) {
            MatrixStack matrix = context.getMatrices();
            drawTargetHud(context, matrix);
        }
    }

    private void drawTargetHud(DrawContext context, MatrixStack matrix) {
        float x = getX();
        float y = getY();
        float width = 120f;
        float height = 40f;
       
        setWidth((int) width);
        setHeight((int) height);

     
        float hp = PlayerInteractionHelper.getHealth(lastTarget);
        health = MathHelper.clamp(Calculate.interpolateSmooth(1, health, hp / lastTarget.getMaxHealth()), 0, 1);

     
        if (Hud.blur.isValue()) {
            Render2D.rectangleWithMask(matrix.peek().getPositionMatrix(), x, y, width, height, 5f, 0,
                    KawaseBlur.INSTANCE.fbos.getFirst().getColorAttachment());
        }
       
        rectangle.render(ShapeProperties.create(matrix, x, y, width, height)
                .round(5f)
                .color(ThemeManager.BackgroundGui.getColor())
                .build());

   
        float headSize = 32f;
        float headX = x + 3f;
        float headY = y + 5f;
       
 
        rectangle.render(ShapeProperties.create(matrix, headX, headY, headSize, headSize)
                .round(3f)
                .color(ThemeManager.BackgroundSettings.getColor())
                .build());


        float infoX = headX + headSize + 5f;
        float infoY = y + 4f;
        float infoWidth = width - headSize - 11f;
       
   
        float nameHeight = 12f;
        rectangle.render(ShapeProperties.create(matrix, infoX, infoY, infoWidth, nameHeight)
                .round(2f)
                .color(ThemeManager.BackgroundSettings.getColor())
                .build());


        FontRenderer nameFont = Fonts.getSize(12, Fonts.Type.BOLD);
        String playerName = lastTarget.getName().getString();
       

        DonateInfo donate = getDonateFromName(lastTarget.getDisplayName());
       
   
        if (donate != null) {
            FontRenderer donateFont = Fonts.getSize(8, Fonts.Type.BOLD);
            nameFont.drawString(matrix, playerName, infoX + 5f, infoY + 5f, ThemeManager.textColor.getColor());
            donateFont.drawString(matrix, donate.name(), infoX + 5f + nameFont.getStringWidth(playerName) + 3f, infoY + 5.5f, donate.color().getRGB());
        } else {
            nameFont.drawString(matrix, playerName, infoX + 5f, infoY + 5f, ThemeManager.textColor.getColor());
        }

 
        float bottomPanelY = infoY + nameHeight + 2f;
        float bottomPanelHeight = 18f;
       
        rectangle.render(ShapeProperties.create(matrix, infoX, bottomPanelY, infoWidth, bottomPanelHeight)
                .round(2f)
                .color(ThemeManager.BackgroundSettings.getColor())
                .build());

        drawArmor(context, matrix, infoX, bottomPanelY);

        float hpValue = hp;
        String hpNumber = String.format(java.util.Locale.US, "%.1f", hpValue);
        String hpLabel = " hp";
        FontRenderer hpFont = Fonts.getSize(12, Fonts.Type.BOLD);
        float hpNumberWidth = hpFont.getStringWidth(hpNumber);
        float hpLabelWidth = hpFont.getStringWidth(hpLabel);
        float hpTextX = infoX + infoWidth - hpNumberWidth - hpLabelWidth - 5f;
       
        hpFont.drawString(matrix, hpNumber, hpTextX, bottomPanelY + 5f, ThemeManager.textColor.getColor());
        hpFont.drawString(matrix, hpLabel, hpTextX + hpNumberWidth, bottomPanelY + 5f, new Color(150, 150, 150).getRGB());

        float hpBarX = infoX + 3f;
        float hpBarY = bottomPanelY + 13f;
        float hpBarWidth = infoWidth - 6f;
        float hpBarHeight = 3f;

        rectangle.render(ShapeProperties.create(matrix, hpBarX, hpBarY, hpBarWidth, hpBarHeight)
                .round(1.5f)
                .color(new Color(0, 0, 0, 100).getRGB())
                .build());

        float filledWidth = hpBarWidth * health;
        if (filledWidth > 0) {
            rectangle.render(ShapeProperties.create(matrix, hpBarX, hpBarY, filledWidth, hpBarHeight)
                    .round(1.5f)
                    .color(ColorAssist.getClientColor(), ColorAssist.getClientColor(),
                           ColorAssist.getClientColor2(), ColorAssist.getClientColor2())
                    .build());
        }
       
        drawFace(context, matrix, headX, headY, headSize);
    }

    private void drawArmor(DrawContext context, MatrixStack matrix, float panelX, float panelY) {
        if (lastTarget == null) return;
       
        net.minecraft.item.ItemStack[] armor = new net.minecraft.item.ItemStack[] {
                lastTarget.getEquippedStack(net.minecraft.entity.EquipmentSlot.HEAD),
                lastTarget.getEquippedStack(net.minecraft.entity.EquipmentSlot.CHEST),
                lastTarget.getEquippedStack(net.minecraft.entity.EquipmentSlot.LEGS),
                lastTarget.getEquippedStack(net.minecraft.entity.EquipmentSlot.FEET)
        };
       
        float startX = panelX + 3f;
        float y = panelY + 1f;
        float itemSpacing = 11f;
        float itemSize = 16 * 0.6F;
       
        for (int i = 0; i < 4; i++) {
            float currentX = startX + i * itemSpacing;
            if (!armor[i].isEmpty()) {
                matrix.push();
                matrix.translate(0, 0, 100);
                Render2D.defaultDrawStack(context, armor[i], currentX, y, true, true, 0.6F);
                matrix.pop();
            } else {
   
                String xText = "p";
                FontRenderer font = Fonts.getSize(10, Fonts.Type.HAWEN);
                float textWidth = font.getStringWidth(xText);
                float textHeight = font.getStringHeight(xText);
                float textX = currentX + (itemSize - textWidth) / 2.0F;
                float textY = y + (itemSize - textHeight) / 2.0F;
                font.drawString(matrix, xText, textX, textY + 5f, new Color(137, 137, 140, 255).getRGB());
            }
        }
    }

    private void drawFace(DrawContext context, MatrixStack matrix, float x, float y, float size) {
        if (mc.getEntityRenderDispatcher() == null || lastTarget == null) {
            return;
        }
       
        EntityRenderer<? super LivingEntity, ?> baseRenderer = mc.getEntityRenderDispatcher().getRenderer(lastTarget);
        if (baseRenderer == null || !(baseRenderer instanceof LivingEntityRenderer<?, ?, ?>)) {
            return;
        }
       
        @SuppressWarnings("unchecked")
        LivingEntityRenderer<LivingEntity, LivingEntityRenderState, ?> renderer =
                (LivingEntityRenderer<LivingEntity, LivingEntityRenderState, ?>) baseRenderer;
        LivingEntityRenderState state = renderer.getAndUpdateRenderState(lastTarget, tickCounter.getTickDelta(false));
       
        if (state == null) {
            return;
        }
       
        Identifier textureLocation = renderer.getTexture(state);
        float alpha = faceAlphaAnimation.getOutput().floatValue();
       
        Calculate.setAlpha(alpha, () -> {
            float padding = 4f;
            float faceSize = size - padding * 2;
            float faceX = x + padding;
            float faceY = y + padding;

     
            Render2D.drawTexture(context, textureLocation, faceX, faceY, faceSize, 3f, 8, 8, 64,
                    ColorAssist.getRect(1), ColorAssist.multRed(-1, 1 + lastTarget.hurtTime / 4F));
        });
    }
   
    private DonateInfo getDonateFromName(Text displayName) {
        String fullName = displayName.getString();
        for (Map.Entry<String, DonateInfo> entry : DONAT_PREFIXES.entrySet()) {
            if (fullName.contains(entry.getKey())) {
                return entry.getValue();
            }
        }
        return null;
    }
}
удаляй эту залупу, а с этой хуйни я ахуел
1773447579546.png
 
самое худшее что я делал скид вилда но вообще не похоже ну короче вот вам говно говно

SS - Посмотреть вложение 330216

Code -
сарделька:
Expand Collapse Copy
package dev.sk3d.display.hud;

import dev.sk3d.Hawen;
import dev.sk3d.common.animation.Animation;
import dev.sk3d.common.animation.implement.Decelerate;
import dev.sk3d.utils.display.render.post.KawaseBlur;
import dev.sk3d.utils.interactions.interact.PlayerInteractionHelper;
import dev.sk3d.utils.math.time.StopWatch;
import dev.sk3d.utils.theme.ThemeManager;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.entity.EntityRenderer;
import net.minecraft.client.render.entity.LivingEntityRenderer;
import net.minecraft.client.render.entity.state.LivingEntityRenderState;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.LivingEntity;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import dev.sk3d.utils.client.managers.api.draggable.AbstractDraggable;
import dev.sk3d.features.impl.combat.Aura;
import dev.sk3d.features.impl.render.Hud;
import dev.sk3d.common.animation.Direction;
import dev.sk3d.common.animation.implement.EaseOut;
import dev.sk3d.utils.display.render.font.FontRenderer;
import dev.sk3d.utils.display.render.font.Fonts;
import dev.sk3d.utils.display.render.shape.ShapeProperties;
import dev.sk3d.utils.display.color.ColorAssist;
import dev.sk3d.utils.math.calc.Calculate;
import dev.sk3d.utils.display.render.geometry.Render2D;
import dev.sk3d.utils.display.scissor.ScissorAssist;
import java.awt.*;
import java.util.HashMap;
import java.util.Map;

public class TargetHud extends AbstractDraggable {
    private final Animation faceAlphaAnimation = new Decelerate().setMs(125).setValue(1);
    private final StopWatch stopWatch = new StopWatch();
    private LivingEntity lastTarget;
    private float health;
   
    private static final Map<String, DonateInfo> DONAT_PREFIXES = new HashMap<>();
    static {
        DONAT_PREFIXES.put("ꔀ", new DonateInfo("PLAYER", new Color(170, 170, 170)));
        DONAT_PREFIXES.put("ꔄ", new DonateInfo("HERO", new Color(85, 85, 255)));
        DONAT_PREFIXES.put("ꔈ", new DonateInfo("TITAN", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔒ", new DonateInfo("AVENGER", new Color(85, 255, 85)));
        DONAT_PREFIXES.put("ꔖ", new DonateInfo("OVERLORD", new Color(85, 255, 255)));
        DONAT_PREFIXES.put("ꔠ", new DonateInfo("MAGISTER", new Color(255, 170, 0)));
        DONAT_PREFIXES.put("ꔤ", new DonateInfo("IMPERATOR", new Color(255, 85, 85)));
        DONAT_PREFIXES.put("ꔨ", new DonateInfo("DRAGON", new Color(255, 85, 255)));
        DONAT_PREFIXES.put("ꔲ", new DonateInfo("BULL", new Color(170, 0, 170)));
        DONAT_PREFIXES.put("ꕒ", new DonateInfo("RABBIT", new Color(255, 255, 255)));
        DONAT_PREFIXES.put("ꔶ", new DonateInfo("TIGER", new Color(255, 170, 0)));
        DONAT_PREFIXES.put("ꕄ", new DonateInfo("DRACULA", new Color(255, 85, 85)));
        DONAT_PREFIXES.put("ꕖ", new DonateInfo("BUNNY", new Color(255, 255, 255)));
        DONAT_PREFIXES.put("ꕀ", new DonateInfo("HYDRA", new Color(0, 170, 0)));
        DONAT_PREFIXES.put("ꕈ", new DonateInfo("COBRA", new Color(85, 255, 85)));
        DONAT_PREFIXES.put("ꕅ", new DonateInfo("VAMPIRE", new Color(255, 85, 85)));
        DONAT_PREFIXES.put("ꔁ", new DonateInfo("MEDIA", new Color(85, 85, 255)));
        DONAT_PREFIXES.put("ꔅ", new DonateInfo("YT", new Color(255, 85, 85)));
        DONAT_PREFIXES.put("ꕠ", new DonateInfo("D.HELPER", new Color(85, 255, 85)));
        DONAT_PREFIXES.put("ꔉ", new DonateInfo("HELPER", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔓ", new DonateInfo("ML.MODER", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔗ", new DonateInfo("MODER", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔡ", new DonateInfo("MODER+", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔥ", new DonateInfo("ST.MODER", new Color(255, 255, 85)));
        DONAT_PREFIXES.put("ꔩ", new DonateInfo("GL.MODER", new Color(255, 170, 0)));
        DONAT_PREFIXES.put("ꔳ", new DonateInfo("ML.ADMIN", new Color(255, 85, 85)));
        DONAT_PREFIXES.put("ꔷ", new DonateInfo("ADMIN", new Color(170, 0, 0)));
    }
   
    private record DonateInfo(String name, Color color) {}

    public TargetHud() {
        super("Target Hud", 10, 80, 120, 40, true);
       
        this.scaleAnimation = new EaseOut().setValue(1).setMs(150);
    }

    @Override
    public boolean visible() {
        if (Hud.getInstance() == null) return false;
        boolean isTargetHudSelected = Hud.getInstance().interfaceSettings.isSelected("Target Hud");
        boolean isHudEnabled = Hud.getInstance().state;
        boolean isActive = isTargetHudSelected && isHudEnabled;
        return isActive && scaleAnimation.isDirection(Direction.FORWARDS);
    }

    @Override
    public void tick() {
        if (!Hud.getInstance().interfaceSettings.isSelected("Target Hud") || !Hud.getInstance().state) {
            return;
        }

        LivingEntity auraTarget = Aura.getInstance().getTarget();
        if (auraTarget != null) {
            lastTarget = auraTarget;
            startAnimation();
            faceAlphaAnimation.setDirection(Direction.FORWARDS);
        } else if (PlayerInteractionHelper.isChat(mc.currentScreen) && mc.player != null) {
            lastTarget = mc.player;
            startAnimation();
            faceAlphaAnimation.setDirection(Direction.FORWARDS);
        } else if (stopWatch.finished(500)) {
            stopAnimation();
            faceAlphaAnimation.setDirection(Direction.BACKWARDS);
        }
    }

    @Override
    public void drawDraggable(DrawContext context) {
        boolean isActive = Hud.getInstance().interfaceSettings.isSelected("Target Hud") && Hud.getInstance().state;

        if (isActive && lastTarget != null) {
            MatrixStack matrix = context.getMatrices();
            drawTargetHud(context, matrix);
        }
    }

    private void drawTargetHud(DrawContext context, MatrixStack matrix) {
        float x = getX();
        float y = getY();
        float width = 120f;
        float height = 40f;
       
        setWidth((int) width);
        setHeight((int) height);

     
        float hp = PlayerInteractionHelper.getHealth(lastTarget);
        health = MathHelper.clamp(Calculate.interpolateSmooth(1, health, hp / lastTarget.getMaxHealth()), 0, 1);

     
        if (Hud.blur.isValue()) {
            Render2D.rectangleWithMask(matrix.peek().getPositionMatrix(), x, y, width, height, 5f, 0,
                    KawaseBlur.INSTANCE.fbos.getFirst().getColorAttachment());
        }
       
        rectangle.render(ShapeProperties.create(matrix, x, y, width, height)
                .round(5f)
                .color(ThemeManager.BackgroundGui.getColor())
                .build());

   
        float headSize = 32f;
        float headX = x + 3f;
        float headY = y + 5f;
       
 
        rectangle.render(ShapeProperties.create(matrix, headX, headY, headSize, headSize)
                .round(3f)
                .color(ThemeManager.BackgroundSettings.getColor())
                .build());


        float infoX = headX + headSize + 5f;
        float infoY = y + 4f;
        float infoWidth = width - headSize - 11f;
       
   
        float nameHeight = 12f;
        rectangle.render(ShapeProperties.create(matrix, infoX, infoY, infoWidth, nameHeight)
                .round(2f)
                .color(ThemeManager.BackgroundSettings.getColor())
                .build());


        FontRenderer nameFont = Fonts.getSize(12, Fonts.Type.BOLD);
        String playerName = lastTarget.getName().getString();
       

        DonateInfo donate = getDonateFromName(lastTarget.getDisplayName());
       
   
        if (donate != null) {
            FontRenderer donateFont = Fonts.getSize(8, Fonts.Type.BOLD);
            nameFont.drawString(matrix, playerName, infoX + 5f, infoY + 5f, ThemeManager.textColor.getColor());
            donateFont.drawString(matrix, donate.name(), infoX + 5f + nameFont.getStringWidth(playerName) + 3f, infoY + 5.5f, donate.color().getRGB());
        } else {
            nameFont.drawString(matrix, playerName, infoX + 5f, infoY + 5f, ThemeManager.textColor.getColor());
        }

 
        float bottomPanelY = infoY + nameHeight + 2f;
        float bottomPanelHeight = 18f;
       
        rectangle.render(ShapeProperties.create(matrix, infoX, bottomPanelY, infoWidth, bottomPanelHeight)
                .round(2f)
                .color(ThemeManager.BackgroundSettings.getColor())
                .build());

        drawArmor(context, matrix, infoX, bottomPanelY);

        float hpValue = hp;
        String hpNumber = String.format(java.util.Locale.US, "%.1f", hpValue);
        String hpLabel = " hp";
        FontRenderer hpFont = Fonts.getSize(12, Fonts.Type.BOLD);
        float hpNumberWidth = hpFont.getStringWidth(hpNumber);
        float hpLabelWidth = hpFont.getStringWidth(hpLabel);
        float hpTextX = infoX + infoWidth - hpNumberWidth - hpLabelWidth - 5f;
       
        hpFont.drawString(matrix, hpNumber, hpTextX, bottomPanelY + 5f, ThemeManager.textColor.getColor());
        hpFont.drawString(matrix, hpLabel, hpTextX + hpNumberWidth, bottomPanelY + 5f, new Color(150, 150, 150).getRGB());

        float hpBarX = infoX + 3f;
        float hpBarY = bottomPanelY + 13f;
        float hpBarWidth = infoWidth - 6f;
        float hpBarHeight = 3f;

        rectangle.render(ShapeProperties.create(matrix, hpBarX, hpBarY, hpBarWidth, hpBarHeight)
                .round(1.5f)
                .color(new Color(0, 0, 0, 100).getRGB())
                .build());

        float filledWidth = hpBarWidth * health;
        if (filledWidth > 0) {
            rectangle.render(ShapeProperties.create(matrix, hpBarX, hpBarY, filledWidth, hpBarHeight)
                    .round(1.5f)
                    .color(ColorAssist.getClientColor(), ColorAssist.getClientColor(),
                           ColorAssist.getClientColor2(), ColorAssist.getClientColor2())
                    .build());
        }
       
        drawFace(context, matrix, headX, headY, headSize);
    }

    private void drawArmor(DrawContext context, MatrixStack matrix, float panelX, float panelY) {
        if (lastTarget == null) return;
       
        net.minecraft.item.ItemStack[] armor = new net.minecraft.item.ItemStack[] {
                lastTarget.getEquippedStack(net.minecraft.entity.EquipmentSlot.HEAD),
                lastTarget.getEquippedStack(net.minecraft.entity.EquipmentSlot.CHEST),
                lastTarget.getEquippedStack(net.minecraft.entity.EquipmentSlot.LEGS),
                lastTarget.getEquippedStack(net.minecraft.entity.EquipmentSlot.FEET)
        };
       
        float startX = panelX + 3f;
        float y = panelY + 1f;
        float itemSpacing = 11f;
        float itemSize = 16 * 0.6F;
       
        for (int i = 0; i < 4; i++) {
            float currentX = startX + i * itemSpacing;
            if (!armor[i].isEmpty()) {
                matrix.push();
                matrix.translate(0, 0, 100);
                Render2D.defaultDrawStack(context, armor[i], currentX, y, true, true, 0.6F);
                matrix.pop();
            } else {
   
                String xText = "p";
                FontRenderer font = Fonts.getSize(10, Fonts.Type.HAWEN);
                float textWidth = font.getStringWidth(xText);
                float textHeight = font.getStringHeight(xText);
                float textX = currentX + (itemSize - textWidth) / 2.0F;
                float textY = y + (itemSize - textHeight) / 2.0F;
                font.drawString(matrix, xText, textX, textY + 5f, new Color(137, 137, 140, 255).getRGB());
            }
        }
    }

    private void drawFace(DrawContext context, MatrixStack matrix, float x, float y, float size) {
        if (mc.getEntityRenderDispatcher() == null || lastTarget == null) {
            return;
        }
       
        EntityRenderer<? super LivingEntity, ?> baseRenderer = mc.getEntityRenderDispatcher().getRenderer(lastTarget);
        if (baseRenderer == null || !(baseRenderer instanceof LivingEntityRenderer<?, ?, ?>)) {
            return;
        }
       
        @SuppressWarnings("unchecked")
        LivingEntityRenderer<LivingEntity, LivingEntityRenderState, ?> renderer =
                (LivingEntityRenderer<LivingEntity, LivingEntityRenderState, ?>) baseRenderer;
        LivingEntityRenderState state = renderer.getAndUpdateRenderState(lastTarget, tickCounter.getTickDelta(false));
       
        if (state == null) {
            return;
        }
       
        Identifier textureLocation = renderer.getTexture(state);
        float alpha = faceAlphaAnimation.getOutput().floatValue();
       
        Calculate.setAlpha(alpha, () -> {
            float padding = 4f;
            float faceSize = size - padding * 2;
            float faceX = x + padding;
            float faceY = y + padding;

     
            Render2D.drawTexture(context, textureLocation, faceX, faceY, faceSize, 3f, 8, 8, 64,
                    ColorAssist.getRect(1), ColorAssist.multRed(-1, 1 + lastTarget.hurtTime / 4F));
        });
    }
   
    private DonateInfo getDonateFromName(Text displayName) {
        String fullName = displayName.getString();
        for (Map.Entry<String, DonateInfo> entry : DONAT_PREFIXES.entrySet()) {
            if (fullName.contains(entry.getKey())) {
                return entry.getValue();
            }
        }
        return null;
    }
}
суука ты можешь в одну тему все закинуть
 
Назад
Сверху Снизу