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

Часть функционала TargetHud v2 || Rich 1.21.4

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
26 Янв 2026
Сообщения
13
Реакции
0
Выберите загрузчик игры
  1. Fabric
увидел что многие срут за мой таргет худик любименький
жоские $$$$elfcode:
Expand Collapse Copy
package fun.rich.display.hud;
import fun.rich.Rich;
import fun.rich.utils.interactions.interact.PlayerInteractionHelper;
import fun.rich.utils.math.time.StopWatch;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.network.AbstractClientPlayerEntity;
import net.minecraft.client.render.RenderLayer;
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.entity.player.PlayerInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import fun.rich.utils.client.managers.api.draggable.AbstractDraggable;
import fun.rich.features.impl.combat.Aura;
import fun.rich.features.impl.render.Hud;
import fun.rich.common.animation.Animation;
import fun.rich.common.animation.Direction;
import fun.rich.common.animation.implement.Decelerate;
import fun.rich.utils.display.font.FontRenderer;
import fun.rich.utils.display.font.Fonts;
import fun.rich.utils.display.shape.ShapeProperties;
import fun.rich.utils.display.color.ColorAssist;
import fun.rich.utils.interactions.item.ItemTask;
import fun.rich.utils.math.calc.Calculate;
import fun.rich.utils.display.geometry.Render2D;
import fun.rich.utils.display.scissor.ScissorAssist;
import fun.rich.utils.client.packet.network.Network;
import java.awt.*;
import java.util.function.Function;

public class TargetHud extends AbstractDraggable {
    private final Animation animation = new Decelerate().setMs(650).setValue(1);
    private final Animation faceAlphaAnimation = new Decelerate().setMs(125).setValue(1);
    private final StopWatch stopWatch = new StopWatch();
    private final StopWatch distanceUpdateTimer = new StopWatch();
    private LivingEntity lastTarget;
    private Item lastItem = Items.AIR;
    private float health;
    private float absorption;
    private float displayedDistance;

    public TargetHud() {
        super("Target Hud", 10, 80, 100, 36, true);
    }

    @Override
    public boolean visible() {
        return scaleAnimation.isDirection(Direction.FORWARDS);
    }

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

    @Override
    public void drawDraggable(DrawContext context) {
        if (Hud.getInstance().interfaceSettings.isSelected("Target Hud") && Hud.getInstance().state) {
            if (lastTarget != null) {
                MatrixStack matrix = context.getMatrices();
                drawUsingItem(context, matrix);
                drawMain(context, matrix);
                drawArmor(context, matrix);
                drawFace(context);
            }
        }
    }

    private void drawMain(DrawContext context, MatrixStack matrix) {

        if (lastTarget == null) return;

        float baseX = getX();
        float baseY = getY();

        float hp = lastTarget.getHealth();
        float maxHp = lastTarget.getMaxHealth();
        float percent = MathHelper.clamp(hp / maxHp, 0F, 1F);

        health = Calculate.interpolateSmooth(0.35f, health, percent);

        float distance = mc.player.distanceTo(lastTarget);
        displayedDistance = Calculate.interpolateSmooth(0.35f, displayedDistance, distance);

        float width = 102f;
        float height = 34f;

        setWidth((int) width);
        setHeight((int) height);

        rectangle.render(ShapeProperties.create(matrix, baseX, baseY, width, height)
                .round(8)
                .color(new Color(20, 20, 24, 210).getRGB())
                .build());

        Fonts.getSize(15, Fonts.Type.SEMI).drawString(
                matrix,
                lastTarget.getName().getString(),
                baseX + 32,
                baseY + 5,
                Color.WHITE.getRGB()
        );

        Fonts.getSize(10, Fonts.Type.REGULAR).drawString(
                matrix,
                String.format("%.1fm", displayedDistance),
                baseX + 32,
                baseY + 15,
                new Color(170, 170, 170).getRGB()
        );

        float barWidth = 55f;
        float current = barWidth * health;

        rectangle.render(ShapeProperties.create(matrix,
                        baseX + 32,
                        baseY + 24,
                        barWidth,
                        4)
                .round(3)
                .color(new Color(45, 45, 45).getRGB())
                .build());

        Color hpColor = percent > 0.5f
                ? new Color(80, 200, 120)
                : percent > 0.25f
                ? new Color(255, 170, 0)
                : new Color(255, 70, 70);

        rectangle.render(ShapeProperties.create(matrix,
                        baseX + 32,
                        baseY + 24,
                        current,
                        4)
                .round(3)
                .color(hpColor.getRGB())
                .build());
    }

    private void drawArmor(DrawContext context, MatrixStack matrix) {

        if (lastTarget == null) return;

        ItemStack[] armor = new 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 = getX() + 30;
        float startY = getY() + 36;

        float size = 12f;
        float spacing = 14f;

        matrix.push();
        matrix.translate(startX, startY, 0);

        for (int i = 0; i < armor.length; i++) {

            float x = i * spacing;

            rectangle.render(ShapeProperties.create(matrix,
                            x,
                            0,
                            size,
                            size)
                    .round(4)
                    .color(new Color(28, 28, 32, 200).getRGB())
                    .build());

            if (!armor[i].isEmpty()) {
                Render2D.defaultDrawStack(context, armor[i], x + 1.5f, 1.5f, false, false, 0.6f);
            }
        }

        matrix.pop();
    }

    private void drawUsingItem(DrawContext context, MatrixStack matrix) {
        animation.setDirection(lastTarget.isUsingItem() ? Direction.FORWARDS : Direction.BACKWARDS);
        if (!lastTarget.getActiveItem().isEmpty() && lastTarget.getActiveItem().getCount() != 0) {
            lastItem = lastTarget.getActiveItem().getItem();
        }
        if (!animation.isFinished(Direction.BACKWARDS) && !lastItem.equals(Items.AIR)) {
            int size = 24;
            float anim = animation.getOutput().floatValue();
            float progress = (lastTarget.getItemUseTime() + tickCounter.getTickDelta(false)) / ItemTask.maxUseTick(lastItem) * 360;
            float x = getX() - (size + 5) * anim;
            float y = getY() + 4;
            ScissorAssist scissorManager = Rich.getInstance().getScissorManager();
            scissorManager.push(matrix.peek().getPositionMatrix(), getX() - 50, getY(), 50, getHeight());
            Calculate.setAlpha(anim, () -> {
                blur.render(ShapeProperties.create(matrix, x, y, size, size).quality(5)
                        .round(12).softness(1).thickness(2).outlineColor(ColorAssist.getOutline(0)).color(ColorAssist.getRect(0.7F)).build());
                arc.render(ShapeProperties.create(matrix, x, y, size, size).round(0.38F).thickness(0.30f).end(progress)
                        .color(ColorAssist.fade(0), ColorAssist.fade(200), ColorAssist.fade(0), ColorAssist.fade(200)).build());
                Render2D.defaultDrawStack(context, lastItem.getDefaultStack(), x + 3f, y + 3f, false, false, 1f);
            });
            scissorManager.pop();
        }
    }

    private void drawFace(DrawContext context) {

        LivingEntity entityToRender;

        if (Aura.getInstance().getTarget() != null) {
            entityToRender = Aura.getInstance().getTarget();
        } else if (PlayerInteractionHelper.isChat(mc.currentScreen)) {
            entityToRender = mc.player;
        } else {
            entityToRender = null;
        }

        if (entityToRender == null) return;

        EntityRenderer<? super LivingEntity, ?> baseRenderer =
                mc.getEntityRenderDispatcher().getRenderer(entityToRender);

        if (!(baseRenderer instanceof LivingEntityRenderer<?, ?, ?>)) return;

        @SuppressWarnings("unchecked")
        LivingEntityRenderer<LivingEntity, LivingEntityRenderState, ?> renderer =
                (LivingEntityRenderer<LivingEntity, LivingEntityRenderState, ?>) baseRenderer;

        LivingEntityRenderState state =
                renderer.getAndUpdateRenderState(entityToRender, tickCounter.getTickDelta(false));

        Identifier texture = renderer.getTexture(state);

        float alpha = faceAlphaAnimation.getOutput().floatValue();

        Calculate.setAlpha(alpha, () -> {

            float baseX = getX();
            float baseY = getY();
            float faceWidth = 22;  // ширина под фон
            float faceHeight = 22; // высота под фон
            float textureSize = 20; // размер головы

            rectangle.render(ShapeProperties.create(context.getMatrices(),
                            baseX + 4,
                            baseY + 6,
                            faceWidth,
                            faceHeight)
                    .round(5)
                    .color(new Color(30, 30, 32, 200).getRGB())
                    .build());

            Render2D.drawTexture(context,
                    texture,
                    baseX + 5,
                    baseY + 7,
                    textureSize,
                    textureSize,
                    8,
                    8,
                    64,
                    Color.WHITE.getRGB(),
                    ColorAssist.multRed(-1, 1 + entityToRender.hurtTime / 4F));
        });
    }
}
переделал его к чёрту
 

Вложения

  • Знімок екрана 2026-03-03 211429.png
    Знімок екрана 2026-03-03 211429.png
    21.5 KB · Просмотры: 398
увидел что многие срут за мой таргет худик любименький
жоские $$$$elfcode:
Expand Collapse Copy
package fun.rich.display.hud;
import fun.rich.Rich;
import fun.rich.utils.interactions.interact.PlayerInteractionHelper;
import fun.rich.utils.math.time.StopWatch;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.network.AbstractClientPlayerEntity;
import net.minecraft.client.render.RenderLayer;
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.entity.player.PlayerInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import fun.rich.utils.client.managers.api.draggable.AbstractDraggable;
import fun.rich.features.impl.combat.Aura;
import fun.rich.features.impl.render.Hud;
import fun.rich.common.animation.Animation;
import fun.rich.common.animation.Direction;
import fun.rich.common.animation.implement.Decelerate;
import fun.rich.utils.display.font.FontRenderer;
import fun.rich.utils.display.font.Fonts;
import fun.rich.utils.display.shape.ShapeProperties;
import fun.rich.utils.display.color.ColorAssist;
import fun.rich.utils.interactions.item.ItemTask;
import fun.rich.utils.math.calc.Calculate;
import fun.rich.utils.display.geometry.Render2D;
import fun.rich.utils.display.scissor.ScissorAssist;
import fun.rich.utils.client.packet.network.Network;
import java.awt.*;
import java.util.function.Function;

public class TargetHud extends AbstractDraggable {
    private final Animation animation = new Decelerate().setMs(650).setValue(1);
    private final Animation faceAlphaAnimation = new Decelerate().setMs(125).setValue(1);
    private final StopWatch stopWatch = new StopWatch();
    private final StopWatch distanceUpdateTimer = new StopWatch();
    private LivingEntity lastTarget;
    private Item lastItem = Items.AIR;
    private float health;
    private float absorption;
    private float displayedDistance;

    public TargetHud() {
        super("Target Hud", 10, 80, 100, 36, true);
    }

    @Override
    public boolean visible() {
        return scaleAnimation.isDirection(Direction.FORWARDS);
    }

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

    @Override
    public void drawDraggable(DrawContext context) {
        if (Hud.getInstance().interfaceSettings.isSelected("Target Hud") && Hud.getInstance().state) {
            if (lastTarget != null) {
                MatrixStack matrix = context.getMatrices();
                drawUsingItem(context, matrix);
                drawMain(context, matrix);
                drawArmor(context, matrix);
                drawFace(context);
            }
        }
    }

    private void drawMain(DrawContext context, MatrixStack matrix) {

        if (lastTarget == null) return;

        float baseX = getX();
        float baseY = getY();

        float hp = lastTarget.getHealth();
        float maxHp = lastTarget.getMaxHealth();
        float percent = MathHelper.clamp(hp / maxHp, 0F, 1F);

        health = Calculate.interpolateSmooth(0.35f, health, percent);

        float distance = mc.player.distanceTo(lastTarget);
        displayedDistance = Calculate.interpolateSmooth(0.35f, displayedDistance, distance);

        float width = 102f;
        float height = 34f;

        setWidth((int) width);
        setHeight((int) height);

        rectangle.render(ShapeProperties.create(matrix, baseX, baseY, width, height)
                .round(8)
                .color(new Color(20, 20, 24, 210).getRGB())
                .build());

        Fonts.getSize(15, Fonts.Type.SEMI).drawString(
                matrix,
                lastTarget.getName().getString(),
                baseX + 32,
                baseY + 5,
                Color.WHITE.getRGB()
        );

        Fonts.getSize(10, Fonts.Type.REGULAR).drawString(
                matrix,
                String.format("%.1fm", displayedDistance),
                baseX + 32,
                baseY + 15,
                new Color(170, 170, 170).getRGB()
        );

        float barWidth = 55f;
        float current = barWidth * health;

        rectangle.render(ShapeProperties.create(matrix,
                        baseX + 32,
                        baseY + 24,
                        barWidth,
                        4)
                .round(3)
                .color(new Color(45, 45, 45).getRGB())
                .build());

        Color hpColor = percent > 0.5f
                ? new Color(80, 200, 120)
                : percent > 0.25f
                ? new Color(255, 170, 0)
                : new Color(255, 70, 70);

        rectangle.render(ShapeProperties.create(matrix,
                        baseX + 32,
                        baseY + 24,
                        current,
                        4)
                .round(3)
                .color(hpColor.getRGB())
                .build());
    }

    private void drawArmor(DrawContext context, MatrixStack matrix) {

        if (lastTarget == null) return;

        ItemStack[] armor = new 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 = getX() + 30;
        float startY = getY() + 36;

        float size = 12f;
        float spacing = 14f;

        matrix.push();
        matrix.translate(startX, startY, 0);

        for (int i = 0; i < armor.length; i++) {

            float x = i * spacing;

            rectangle.render(ShapeProperties.create(matrix,
                            x,
                            0,
                            size,
                            size)
                    .round(4)
                    .color(new Color(28, 28, 32, 200).getRGB())
                    .build());

            if (!armor[i].isEmpty()) {
                Render2D.defaultDrawStack(context, armor[i], x + 1.5f, 1.5f, false, false, 0.6f);
            }
        }

        matrix.pop();
    }

    private void drawUsingItem(DrawContext context, MatrixStack matrix) {
        animation.setDirection(lastTarget.isUsingItem() ? Direction.FORWARDS : Direction.BACKWARDS);
        if (!lastTarget.getActiveItem().isEmpty() && lastTarget.getActiveItem().getCount() != 0) {
            lastItem = lastTarget.getActiveItem().getItem();
        }
        if (!animation.isFinished(Direction.BACKWARDS) && !lastItem.equals(Items.AIR)) {
            int size = 24;
            float anim = animation.getOutput().floatValue();
            float progress = (lastTarget.getItemUseTime() + tickCounter.getTickDelta(false)) / ItemTask.maxUseTick(lastItem) * 360;
            float x = getX() - (size + 5) * anim;
            float y = getY() + 4;
            ScissorAssist scissorManager = Rich.getInstance().getScissorManager();
            scissorManager.push(matrix.peek().getPositionMatrix(), getX() - 50, getY(), 50, getHeight());
            Calculate.setAlpha(anim, () -> {
                blur.render(ShapeProperties.create(matrix, x, y, size, size).quality(5)
                        .round(12).softness(1).thickness(2).outlineColor(ColorAssist.getOutline(0)).color(ColorAssist.getRect(0.7F)).build());
                arc.render(ShapeProperties.create(matrix, x, y, size, size).round(0.38F).thickness(0.30f).end(progress)
                        .color(ColorAssist.fade(0), ColorAssist.fade(200), ColorAssist.fade(0), ColorAssist.fade(200)).build());
                Render2D.defaultDrawStack(context, lastItem.getDefaultStack(), x + 3f, y + 3f, false, false, 1f);
            });
            scissorManager.pop();
        }
    }

    private void drawFace(DrawContext context) {

        LivingEntity entityToRender;

        if (Aura.getInstance().getTarget() != null) {
            entityToRender = Aura.getInstance().getTarget();
        } else if (PlayerInteractionHelper.isChat(mc.currentScreen)) {
            entityToRender = mc.player;
        } else {
            entityToRender = null;
        }

        if (entityToRender == null) return;

        EntityRenderer<? super LivingEntity, ?> baseRenderer =
                mc.getEntityRenderDispatcher().getRenderer(entityToRender);

        if (!(baseRenderer instanceof LivingEntityRenderer<?, ?, ?>)) return;

        @SuppressWarnings("unchecked")
        LivingEntityRenderer<LivingEntity, LivingEntityRenderState, ?> renderer =
                (LivingEntityRenderer<LivingEntity, LivingEntityRenderState, ?>) baseRenderer;

        LivingEntityRenderState state =
                renderer.getAndUpdateRenderState(entityToRender, tickCounter.getTickDelta(false));

        Identifier texture = renderer.getTexture(state);

        float alpha = faceAlphaAnimation.getOutput().floatValue();

        Calculate.setAlpha(alpha, () -> {

            float baseX = getX();
            float baseY = getY();
            float faceWidth = 22;  // ширина под фон
            float faceHeight = 22; // высота под фон
            float textureSize = 20; // размер головы

            rectangle.render(ShapeProperties.create(context.getMatrices(),
                            baseX + 4,
                            baseY + 6,
                            faceWidth,
                            faceHeight)
                    .round(5)
                    .color(new Color(30, 30, 32, 200).getRGB())
                    .build());

            Render2D.drawTexture(context,
                    texture,
                    baseX + 5,
                    baseY + 7,
                    textureSize,
                    textureSize,
                    8,
                    8,
                    64,
                    Color.WHITE.getRGB(),
                    ColorAssist.multRed(-1, 1 + entityToRender.hurtTime / 4F));
        });
    }
}
переделал его к чёрту
/del полная хуета, чат гпт и то лучше сделает
 
увидел что многие срут за мой таргет худик любименький
жоские $$$$elfcode:
Expand Collapse Copy
package fun.rich.display.hud;
import fun.rich.Rich;
import fun.rich.utils.interactions.interact.PlayerInteractionHelper;
import fun.rich.utils.math.time.StopWatch;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.network.AbstractClientPlayerEntity;
import net.minecraft.client.render.RenderLayer;
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.entity.player.PlayerInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import fun.rich.utils.client.managers.api.draggable.AbstractDraggable;
import fun.rich.features.impl.combat.Aura;
import fun.rich.features.impl.render.Hud;
import fun.rich.common.animation.Animation;
import fun.rich.common.animation.Direction;
import fun.rich.common.animation.implement.Decelerate;
import fun.rich.utils.display.font.FontRenderer;
import fun.rich.utils.display.font.Fonts;
import fun.rich.utils.display.shape.ShapeProperties;
import fun.rich.utils.display.color.ColorAssist;
import fun.rich.utils.interactions.item.ItemTask;
import fun.rich.utils.math.calc.Calculate;
import fun.rich.utils.display.geometry.Render2D;
import fun.rich.utils.display.scissor.ScissorAssist;
import fun.rich.utils.client.packet.network.Network;
import java.awt.*;
import java.util.function.Function;

public class TargetHud extends AbstractDraggable {
    private final Animation animation = new Decelerate().setMs(650).setValue(1);
    private final Animation faceAlphaAnimation = new Decelerate().setMs(125).setValue(1);
    private final StopWatch stopWatch = new StopWatch();
    private final StopWatch distanceUpdateTimer = new StopWatch();
    private LivingEntity lastTarget;
    private Item lastItem = Items.AIR;
    private float health;
    private float absorption;
    private float displayedDistance;

    public TargetHud() {
        super("Target Hud", 10, 80, 100, 36, true);
    }

    @Override
    public boolean visible() {
        return scaleAnimation.isDirection(Direction.FORWARDS);
    }

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

    @Override
    public void drawDraggable(DrawContext context) {
        if (Hud.getInstance().interfaceSettings.isSelected("Target Hud") && Hud.getInstance().state) {
            if (lastTarget != null) {
                MatrixStack matrix = context.getMatrices();
                drawUsingItem(context, matrix);
                drawMain(context, matrix);
                drawArmor(context, matrix);
                drawFace(context);
            }
        }
    }

    private void drawMain(DrawContext context, MatrixStack matrix) {

        if (lastTarget == null) return;

        float baseX = getX();
        float baseY = getY();

        float hp = lastTarget.getHealth();
        float maxHp = lastTarget.getMaxHealth();
        float percent = MathHelper.clamp(hp / maxHp, 0F, 1F);

        health = Calculate.interpolateSmooth(0.35f, health, percent);

        float distance = mc.player.distanceTo(lastTarget);
        displayedDistance = Calculate.interpolateSmooth(0.35f, displayedDistance, distance);

        float width = 102f;
        float height = 34f;

        setWidth((int) width);
        setHeight((int) height);

        rectangle.render(ShapeProperties.create(matrix, baseX, baseY, width, height)
                .round(8)
                .color(new Color(20, 20, 24, 210).getRGB())
                .build());

        Fonts.getSize(15, Fonts.Type.SEMI).drawString(
                matrix,
                lastTarget.getName().getString(),
                baseX + 32,
                baseY + 5,
                Color.WHITE.getRGB()
        );

        Fonts.getSize(10, Fonts.Type.REGULAR).drawString(
                matrix,
                String.format("%.1fm", displayedDistance),
                baseX + 32,
                baseY + 15,
                new Color(170, 170, 170).getRGB()
        );

        float barWidth = 55f;
        float current = barWidth * health;

        rectangle.render(ShapeProperties.create(matrix,
                        baseX + 32,
                        baseY + 24,
                        barWidth,
                        4)
                .round(3)
                .color(new Color(45, 45, 45).getRGB())
                .build());

        Color hpColor = percent > 0.5f
                ? new Color(80, 200, 120)
                : percent > 0.25f
                ? new Color(255, 170, 0)
                : new Color(255, 70, 70);

        rectangle.render(ShapeProperties.create(matrix,
                        baseX + 32,
                        baseY + 24,
                        current,
                        4)
                .round(3)
                .color(hpColor.getRGB())
                .build());
    }

    private void drawArmor(DrawContext context, MatrixStack matrix) {

        if (lastTarget == null) return;

        ItemStack[] armor = new 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 = getX() + 30;
        float startY = getY() + 36;

        float size = 12f;
        float spacing = 14f;

        matrix.push();
        matrix.translate(startX, startY, 0);

        for (int i = 0; i < armor.length; i++) {

            float x = i * spacing;

            rectangle.render(ShapeProperties.create(matrix,
                            x,
                            0,
                            size,
                            size)
                    .round(4)
                    .color(new Color(28, 28, 32, 200).getRGB())
                    .build());

            if (!armor[i].isEmpty()) {
                Render2D.defaultDrawStack(context, armor[i], x + 1.5f, 1.5f, false, false, 0.6f);
            }
        }

        matrix.pop();
    }

    private void drawUsingItem(DrawContext context, MatrixStack matrix) {
        animation.setDirection(lastTarget.isUsingItem() ? Direction.FORWARDS : Direction.BACKWARDS);
        if (!lastTarget.getActiveItem().isEmpty() && lastTarget.getActiveItem().getCount() != 0) {
            lastItem = lastTarget.getActiveItem().getItem();
        }
        if (!animation.isFinished(Direction.BACKWARDS) && !lastItem.equals(Items.AIR)) {
            int size = 24;
            float anim = animation.getOutput().floatValue();
            float progress = (lastTarget.getItemUseTime() + tickCounter.getTickDelta(false)) / ItemTask.maxUseTick(lastItem) * 360;
            float x = getX() - (size + 5) * anim;
            float y = getY() + 4;
            ScissorAssist scissorManager = Rich.getInstance().getScissorManager();
            scissorManager.push(matrix.peek().getPositionMatrix(), getX() - 50, getY(), 50, getHeight());
            Calculate.setAlpha(anim, () -> {
                blur.render(ShapeProperties.create(matrix, x, y, size, size).quality(5)
                        .round(12).softness(1).thickness(2).outlineColor(ColorAssist.getOutline(0)).color(ColorAssist.getRect(0.7F)).build());
                arc.render(ShapeProperties.create(matrix, x, y, size, size).round(0.38F).thickness(0.30f).end(progress)
                        .color(ColorAssist.fade(0), ColorAssist.fade(200), ColorAssist.fade(0), ColorAssist.fade(200)).build());
                Render2D.defaultDrawStack(context, lastItem.getDefaultStack(), x + 3f, y + 3f, false, false, 1f);
            });
            scissorManager.pop();
        }
    }

    private void drawFace(DrawContext context) {

        LivingEntity entityToRender;

        if (Aura.getInstance().getTarget() != null) {
            entityToRender = Aura.getInstance().getTarget();
        } else if (PlayerInteractionHelper.isChat(mc.currentScreen)) {
            entityToRender = mc.player;
        } else {
            entityToRender = null;
        }

        if (entityToRender == null) return;

        EntityRenderer<? super LivingEntity, ?> baseRenderer =
                mc.getEntityRenderDispatcher().getRenderer(entityToRender);

        if (!(baseRenderer instanceof LivingEntityRenderer<?, ?, ?>)) return;

        @SuppressWarnings("unchecked")
        LivingEntityRenderer<LivingEntity, LivingEntityRenderState, ?> renderer =
                (LivingEntityRenderer<LivingEntity, LivingEntityRenderState, ?>) baseRenderer;

        LivingEntityRenderState state =
                renderer.getAndUpdateRenderState(entityToRender, tickCounter.getTickDelta(false));

        Identifier texture = renderer.getTexture(state);

        float alpha = faceAlphaAnimation.getOutput().floatValue();

        Calculate.setAlpha(alpha, () -> {

            float baseX = getX();
            float baseY = getY();
            float faceWidth = 22;  // ширина под фон
            float faceHeight = 22; // высота под фон
            float textureSize = 20; // размер головы

            rectangle.render(ShapeProperties.create(context.getMatrices(),
                            baseX + 4,
                            baseY + 6,
                            faceWidth,
                            faceHeight)
                    .round(5)
                    .color(new Color(30, 30, 32, 200).getRGB())
                    .build());

            Render2D.drawTexture(context,
                    texture,
                    baseX + 5,
                    baseY + 7,
                    textureSize,
                    textureSize,
                    8,
                    8,
                    64,
                    Color.WHITE.getRGB(),
                    ColorAssist.multRed(-1, 1 + entityToRender.hurtTime / 4F));
        });
    }
}
переделал его к чёрту
пиздец /del
 
увидел что многие срут за мой таргет худик любименький
жоские $$$$elfcode:
Expand Collapse Copy
package fun.rich.display.hud;
import fun.rich.Rich;
import fun.rich.utils.interactions.interact.PlayerInteractionHelper;
import fun.rich.utils.math.time.StopWatch;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.network.AbstractClientPlayerEntity;
import net.minecraft.client.render.RenderLayer;
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.entity.player.PlayerInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import fun.rich.utils.client.managers.api.draggable.AbstractDraggable;
import fun.rich.features.impl.combat.Aura;
import fun.rich.features.impl.render.Hud;
import fun.rich.common.animation.Animation;
import fun.rich.common.animation.Direction;
import fun.rich.common.animation.implement.Decelerate;
import fun.rich.utils.display.font.FontRenderer;
import fun.rich.utils.display.font.Fonts;
import fun.rich.utils.display.shape.ShapeProperties;
import fun.rich.utils.display.color.ColorAssist;
import fun.rich.utils.interactions.item.ItemTask;
import fun.rich.utils.math.calc.Calculate;
import fun.rich.utils.display.geometry.Render2D;
import fun.rich.utils.display.scissor.ScissorAssist;
import fun.rich.utils.client.packet.network.Network;
import java.awt.*;
import java.util.function.Function;

public class TargetHud extends AbstractDraggable {
    private final Animation animation = new Decelerate().setMs(650).setValue(1);
    private final Animation faceAlphaAnimation = new Decelerate().setMs(125).setValue(1);
    private final StopWatch stopWatch = new StopWatch();
    private final StopWatch distanceUpdateTimer = new StopWatch();
    private LivingEntity lastTarget;
    private Item lastItem = Items.AIR;
    private float health;
    private float absorption;
    private float displayedDistance;

    public TargetHud() {
        super("Target Hud", 10, 80, 100, 36, true);
    }

    @Override
    public boolean visible() {
        return scaleAnimation.isDirection(Direction.FORWARDS);
    }

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

    @Override
    public void drawDraggable(DrawContext context) {
        if (Hud.getInstance().interfaceSettings.isSelected("Target Hud") && Hud.getInstance().state) {
            if (lastTarget != null) {
                MatrixStack matrix = context.getMatrices();
                drawUsingItem(context, matrix);
                drawMain(context, matrix);
                drawArmor(context, matrix);
                drawFace(context);
            }
        }
    }

    private void drawMain(DrawContext context, MatrixStack matrix) {

        if (lastTarget == null) return;

        float baseX = getX();
        float baseY = getY();

        float hp = lastTarget.getHealth();
        float maxHp = lastTarget.getMaxHealth();
        float percent = MathHelper.clamp(hp / maxHp, 0F, 1F);

        health = Calculate.interpolateSmooth(0.35f, health, percent);

        float distance = mc.player.distanceTo(lastTarget);
        displayedDistance = Calculate.interpolateSmooth(0.35f, displayedDistance, distance);

        float width = 102f;
        float height = 34f;

        setWidth((int) width);
        setHeight((int) height);

        rectangle.render(ShapeProperties.create(matrix, baseX, baseY, width, height)
                .round(8)
                .color(new Color(20, 20, 24, 210).getRGB())
                .build());

        Fonts.getSize(15, Fonts.Type.SEMI).drawString(
                matrix,
                lastTarget.getName().getString(),
                baseX + 32,
                baseY + 5,
                Color.WHITE.getRGB()
        );

        Fonts.getSize(10, Fonts.Type.REGULAR).drawString(
                matrix,
                String.format("%.1fm", displayedDistance),
                baseX + 32,
                baseY + 15,
                new Color(170, 170, 170).getRGB()
        );

        float barWidth = 55f;
        float current = barWidth * health;

        rectangle.render(ShapeProperties.create(matrix,
                        baseX + 32,
                        baseY + 24,
                        barWidth,
                        4)
                .round(3)
                .color(new Color(45, 45, 45).getRGB())
                .build());

        Color hpColor = percent > 0.5f
                ? new Color(80, 200, 120)
                : percent > 0.25f
                ? new Color(255, 170, 0)
                : new Color(255, 70, 70);

        rectangle.render(ShapeProperties.create(matrix,
                        baseX + 32,
                        baseY + 24,
                        current,
                        4)
                .round(3)
                .color(hpColor.getRGB())
                .build());
    }

    private void drawArmor(DrawContext context, MatrixStack matrix) {

        if (lastTarget == null) return;

        ItemStack[] armor = new 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 = getX() + 30;
        float startY = getY() + 36;

        float size = 12f;
        float spacing = 14f;

        matrix.push();
        matrix.translate(startX, startY, 0);

        for (int i = 0; i < armor.length; i++) {

            float x = i * spacing;

            rectangle.render(ShapeProperties.create(matrix,
                            x,
                            0,
                            size,
                            size)
                    .round(4)
                    .color(new Color(28, 28, 32, 200).getRGB())
                    .build());

            if (!armor[i].isEmpty()) {
                Render2D.defaultDrawStack(context, armor[i], x + 1.5f, 1.5f, false, false, 0.6f);
            }
        }

        matrix.pop();
    }

    private void drawUsingItem(DrawContext context, MatrixStack matrix) {
        animation.setDirection(lastTarget.isUsingItem() ? Direction.FORWARDS : Direction.BACKWARDS);
        if (!lastTarget.getActiveItem().isEmpty() && lastTarget.getActiveItem().getCount() != 0) {
            lastItem = lastTarget.getActiveItem().getItem();
        }
        if (!animation.isFinished(Direction.BACKWARDS) && !lastItem.equals(Items.AIR)) {
            int size = 24;
            float anim = animation.getOutput().floatValue();
            float progress = (lastTarget.getItemUseTime() + tickCounter.getTickDelta(false)) / ItemTask.maxUseTick(lastItem) * 360;
            float x = getX() - (size + 5) * anim;
            float y = getY() + 4;
            ScissorAssist scissorManager = Rich.getInstance().getScissorManager();
            scissorManager.push(matrix.peek().getPositionMatrix(), getX() - 50, getY(), 50, getHeight());
            Calculate.setAlpha(anim, () -> {
                blur.render(ShapeProperties.create(matrix, x, y, size, size).quality(5)
                        .round(12).softness(1).thickness(2).outlineColor(ColorAssist.getOutline(0)).color(ColorAssist.getRect(0.7F)).build());
                arc.render(ShapeProperties.create(matrix, x, y, size, size).round(0.38F).thickness(0.30f).end(progress)
                        .color(ColorAssist.fade(0), ColorAssist.fade(200), ColorAssist.fade(0), ColorAssist.fade(200)).build());
                Render2D.defaultDrawStack(context, lastItem.getDefaultStack(), x + 3f, y + 3f, false, false, 1f);
            });
            scissorManager.pop();
        }
    }

    private void drawFace(DrawContext context) {

        LivingEntity entityToRender;

        if (Aura.getInstance().getTarget() != null) {
            entityToRender = Aura.getInstance().getTarget();
        } else if (PlayerInteractionHelper.isChat(mc.currentScreen)) {
            entityToRender = mc.player;
        } else {
            entityToRender = null;
        }

        if (entityToRender == null) return;

        EntityRenderer<? super LivingEntity, ?> baseRenderer =
                mc.getEntityRenderDispatcher().getRenderer(entityToRender);

        if (!(baseRenderer instanceof LivingEntityRenderer<?, ?, ?>)) return;

        @SuppressWarnings("unchecked")
        LivingEntityRenderer<LivingEntity, LivingEntityRenderState, ?> renderer =
                (LivingEntityRenderer<LivingEntity, LivingEntityRenderState, ?>) baseRenderer;

        LivingEntityRenderState state =
                renderer.getAndUpdateRenderState(entityToRender, tickCounter.getTickDelta(false));

        Identifier texture = renderer.getTexture(state);

        float alpha = faceAlphaAnimation.getOutput().floatValue();

        Calculate.setAlpha(alpha, () -> {

            float baseX = getX();
            float baseY = getY();
            float faceWidth = 22;  // ширина под фон
            float faceHeight = 22; // высота под фон
            float textureSize = 20; // размер головы

            rectangle.render(ShapeProperties.create(context.getMatrices(),
                            baseX + 4,
                            baseY + 6,
                            faceWidth,
                            faceHeight)
                    .round(5)
                    .color(new Color(30, 30, 32, 200).getRGB())
                    .build());

            Render2D.drawTexture(context,
                    texture,
                    baseX + 5,
                    baseY + 7,
                    textureSize,
                    textureSize,
                    8,
                    8,
                    64,
                    Color.WHITE.getRGB(),
                    ColorAssist.multRed(-1, 1 + entityToRender.hurtTime / 4F));
        });
    }
}
переделал его к чёрту
ты под кайфом?
 
Реально годный код с годной функциональностью. Юзать этот код можно во время любого настроения, всегда заходит, качественный код. Если вы ожидаете, что в конце будет шутка о том, что на самом деле это кал - то вы правы, это полный кал и я теперь слепой
 
увидел что многие срут за мой таргет худик любименький
жоские $$$$elfcode:
Expand Collapse Copy
package fun.rich.display.hud;
import fun.rich.Rich;
import fun.rich.utils.interactions.interact.PlayerInteractionHelper;
import fun.rich.utils.math.time.StopWatch;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.network.AbstractClientPlayerEntity;
import net.minecraft.client.render.RenderLayer;
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.entity.player.PlayerInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import fun.rich.utils.client.managers.api.draggable.AbstractDraggable;
import fun.rich.features.impl.combat.Aura;
import fun.rich.features.impl.render.Hud;
import fun.rich.common.animation.Animation;
import fun.rich.common.animation.Direction;
import fun.rich.common.animation.implement.Decelerate;
import fun.rich.utils.display.font.FontRenderer;
import fun.rich.utils.display.font.Fonts;
import fun.rich.utils.display.shape.ShapeProperties;
import fun.rich.utils.display.color.ColorAssist;
import fun.rich.utils.interactions.item.ItemTask;
import fun.rich.utils.math.calc.Calculate;
import fun.rich.utils.display.geometry.Render2D;
import fun.rich.utils.display.scissor.ScissorAssist;
import fun.rich.utils.client.packet.network.Network;
import java.awt.*;
import java.util.function.Function;

public class TargetHud extends AbstractDraggable {
    private final Animation animation = new Decelerate().setMs(650).setValue(1);
    private final Animation faceAlphaAnimation = new Decelerate().setMs(125).setValue(1);
    private final StopWatch stopWatch = new StopWatch();
    private final StopWatch distanceUpdateTimer = new StopWatch();
    private LivingEntity lastTarget;
    private Item lastItem = Items.AIR;
    private float health;
    private float absorption;
    private float displayedDistance;

    public TargetHud() {
        super("Target Hud", 10, 80, 100, 36, true);
    }

    @Override
    public boolean visible() {
        return scaleAnimation.isDirection(Direction.FORWARDS);
    }

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

    @Override
    public void drawDraggable(DrawContext context) {
        if (Hud.getInstance().interfaceSettings.isSelected("Target Hud") && Hud.getInstance().state) {
            if (lastTarget != null) {
                MatrixStack matrix = context.getMatrices();
                drawUsingItem(context, matrix);
                drawMain(context, matrix);
                drawArmor(context, matrix);
                drawFace(context);
            }
        }
    }

    private void drawMain(DrawContext context, MatrixStack matrix) {

        if (lastTarget == null) return;

        float baseX = getX();
        float baseY = getY();

        float hp = lastTarget.getHealth();
        float maxHp = lastTarget.getMaxHealth();
        float percent = MathHelper.clamp(hp / maxHp, 0F, 1F);

        health = Calculate.interpolateSmooth(0.35f, health, percent);

        float distance = mc.player.distanceTo(lastTarget);
        displayedDistance = Calculate.interpolateSmooth(0.35f, displayedDistance, distance);

        float width = 102f;
        float height = 34f;

        setWidth((int) width);
        setHeight((int) height);

        rectangle.render(ShapeProperties.create(matrix, baseX, baseY, width, height)
                .round(8)
                .color(new Color(20, 20, 24, 210).getRGB())
                .build());

        Fonts.getSize(15, Fonts.Type.SEMI).drawString(
                matrix,
                lastTarget.getName().getString(),
                baseX + 32,
                baseY + 5,
                Color.WHITE.getRGB()
        );

        Fonts.getSize(10, Fonts.Type.REGULAR).drawString(
                matrix,
                String.format("%.1fm", displayedDistance),
                baseX + 32,
                baseY + 15,
                new Color(170, 170, 170).getRGB()
        );

        float barWidth = 55f;
        float current = barWidth * health;

        rectangle.render(ShapeProperties.create(matrix,
                        baseX + 32,
                        baseY + 24,
                        barWidth,
                        4)
                .round(3)
                .color(new Color(45, 45, 45).getRGB())
                .build());

        Color hpColor = percent > 0.5f
                ? new Color(80, 200, 120)
                : percent > 0.25f
                ? new Color(255, 170, 0)
                : new Color(255, 70, 70);

        rectangle.render(ShapeProperties.create(matrix,
                        baseX + 32,
                        baseY + 24,
                        current,
                        4)
                .round(3)
                .color(hpColor.getRGB())
                .build());
    }

    private void drawArmor(DrawContext context, MatrixStack matrix) {

        if (lastTarget == null) return;

        ItemStack[] armor = new 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 = getX() + 30;
        float startY = getY() + 36;

        float size = 12f;
        float spacing = 14f;

        matrix.push();
        matrix.translate(startX, startY, 0);

        for (int i = 0; i < armor.length; i++) {

            float x = i * spacing;

            rectangle.render(ShapeProperties.create(matrix,
                            x,
                            0,
                            size,
                            size)
                    .round(4)
                    .color(new Color(28, 28, 32, 200).getRGB())
                    .build());

            if (!armor[i].isEmpty()) {
                Render2D.defaultDrawStack(context, armor[i], x + 1.5f, 1.5f, false, false, 0.6f);
            }
        }

        matrix.pop();
    }

    private void drawUsingItem(DrawContext context, MatrixStack matrix) {
        animation.setDirection(lastTarget.isUsingItem() ? Direction.FORWARDS : Direction.BACKWARDS);
        if (!lastTarget.getActiveItem().isEmpty() && lastTarget.getActiveItem().getCount() != 0) {
            lastItem = lastTarget.getActiveItem().getItem();
        }
        if (!animation.isFinished(Direction.BACKWARDS) && !lastItem.equals(Items.AIR)) {
            int size = 24;
            float anim = animation.getOutput().floatValue();
            float progress = (lastTarget.getItemUseTime() + tickCounter.getTickDelta(false)) / ItemTask.maxUseTick(lastItem) * 360;
            float x = getX() - (size + 5) * anim;
            float y = getY() + 4;
            ScissorAssist scissorManager = Rich.getInstance().getScissorManager();
            scissorManager.push(matrix.peek().getPositionMatrix(), getX() - 50, getY(), 50, getHeight());
            Calculate.setAlpha(anim, () -> {
                blur.render(ShapeProperties.create(matrix, x, y, size, size).quality(5)
                        .round(12).softness(1).thickness(2).outlineColor(ColorAssist.getOutline(0)).color(ColorAssist.getRect(0.7F)).build());
                arc.render(ShapeProperties.create(matrix, x, y, size, size).round(0.38F).thickness(0.30f).end(progress)
                        .color(ColorAssist.fade(0), ColorAssist.fade(200), ColorAssist.fade(0), ColorAssist.fade(200)).build());
                Render2D.defaultDrawStack(context, lastItem.getDefaultStack(), x + 3f, y + 3f, false, false, 1f);
            });
            scissorManager.pop();
        }
    }

    private void drawFace(DrawContext context) {

        LivingEntity entityToRender;

        if (Aura.getInstance().getTarget() != null) {
            entityToRender = Aura.getInstance().getTarget();
        } else if (PlayerInteractionHelper.isChat(mc.currentScreen)) {
            entityToRender = mc.player;
        } else {
            entityToRender = null;
        }

        if (entityToRender == null) return;

        EntityRenderer<? super LivingEntity, ?> baseRenderer =
                mc.getEntityRenderDispatcher().getRenderer(entityToRender);

        if (!(baseRenderer instanceof LivingEntityRenderer<?, ?, ?>)) return;

        @SuppressWarnings("unchecked")
        LivingEntityRenderer<LivingEntity, LivingEntityRenderState, ?> renderer =
                (LivingEntityRenderer<LivingEntity, LivingEntityRenderState, ?>) baseRenderer;

        LivingEntityRenderState state =
                renderer.getAndUpdateRenderState(entityToRender, tickCounter.getTickDelta(false));

        Identifier texture = renderer.getTexture(state);

        float alpha = faceAlphaAnimation.getOutput().floatValue();

        Calculate.setAlpha(alpha, () -> {

            float baseX = getX();
            float baseY = getY();
            float faceWidth = 22;  // ширина под фон
            float faceHeight = 22; // высота под фон
            float textureSize = 20; // размер головы

            rectangle.render(ShapeProperties.create(context.getMatrices(),
                            baseX + 4,
                            baseY + 6,
                            faceWidth,
                            faceHeight)
                    .round(5)
                    .color(new Color(30, 30, 32, 200).getRGB())
                    .build());

            Render2D.drawTexture(context,
                    texture,
                    baseX + 5,
                    baseY + 7,
                    textureSize,
                    textureSize,
                    8,
                    8,
                    64,
                    Color.WHITE.getRGB(),
                    ColorAssist.multRed(-1, 1 + entityToRender.hurtTime / 4F));
        });
    }
}
переделал его к чёрту
/del на понос даже приятней смотреть чем на это
 
Назад
Сверху Снизу