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

Визуальная часть TargetHUD exp 3.1

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
12 Мар 2026
Сообщения
8
Реакции
0
Выберите загрузчик игры
  1. Vanilla
  2. OptiFine
Сделал самый вырвиглазный в мире TargetHUD для ваших PisynVisuals

ss -
1773493180129.png


code -

Java:
Expand Collapse Copy
package im.expensive.ui.display.impl;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import im.expensive.Expensive;
import im.expensive.events.EventDisplay;
import im.expensive.ui.display.ElementRenderer;
import im.expensive.ui.styles.Style;
import im.expensive.utils.animations.Animation;
import im.expensive.utils.animations.Direction;
import im.expensive.utils.animations.impl.EaseBackIn;
import im.expensive.utils.client.ClientUtil;
import im.expensive.utils.drag.Dragging;
import im.expensive.utils.math.MathUtil;
import im.expensive.utils.math.StopWatch;
import im.expensive.utils.math.Vector4i;
import im.expensive.utils.render.ColorUtils;
import im.expensive.utils.render.DisplayUtils;
import im.expensive.utils.render.Scissor;
import im.expensive.utils.render.Stencil;
import im.expensive.utils.render.font.Fonts;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.gui.AbstractGui;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.ItemStack;
import net.minecraft.scoreboard.Score;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector4f;
import org.lwjgl.opengl.GL11;

@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class TargetInfoRenderer implements ElementRenderer {
    final StopWatch stopWatch = new StopWatch();
    final Dragging drag;
    LivingEntity entity = null;
    boolean allow;
    final Animation animation = new EaseBackIn(400, 1, 1);
    float healthAnimation = 0.0f;
    float absorptionAnimation = 0.0f;

    @Override
    public void render(EventDisplay eventDisplay) {
        entity = getTarget(entity);
        float rounding = 6;
        boolean out = !allow || stopWatch.isReached(1000);
        animation.setDuration(out ? 400 : 300);
        animation.setDirection(out ? Direction.BACKWARDS : Direction.FORWARDS);

        if (animation.getOutput() == 0.0f) {
            entity = null;
        }

        if (entity != null) {
            String name = entity.getName().getString();

            float posX = drag.getX();
            float posY = drag.getY();
            float headSize = 32;
            float spacing = 6;
            float width = 150;
            float height = 58;
            drag.setWidth(width);
            drag.setHeight(height);

            Score score = mc.world.getScoreboard().getOrCreateScore(entity.getScoreboardName(), mc.world.getScoreboard().getObjectiveInDisplaySlot(2));

            float hp = entity.getHealth();
            float maxHp = entity.getMaxHealth();
            String header = mc.ingameGUI.getTabList().header == null ? " " : mc.ingameGUI.getTabList().header.getString().toLowerCase();

            if (mc.getCurrentServerData() != null && mc.getCurrentServerData().serverIP.contains("funtime")
                    && (header.contains("анархия") || header.contains("гриферский")) && entity instanceof PlayerEntity) {
                hp = score.getScorePoints();
                maxHp = 20;
            }
            healthAnimation = MathUtil.fast(healthAnimation, MathHelper.clamp(hp / maxHp, 0, 1), 10);
            absorptionAnimation = MathUtil.fast(absorptionAnimation, MathHelper.clamp(entity.getAbsorptionAmount() / maxHp, 0, 1), 10);

            float animationValue = (float) animation.getOutput();
            float halfAnimationValueRest = (1 - animationValue) / 2f;
            float testX = posX + (width * halfAnimationValueRest);
            float testY = posY + (height * halfAnimationValueRest);
            float testW = width * animationValue;
            float testH = height * animationValue;

            GlStateManager.pushMatrix();
            Style style = Expensive.getInstance().getStyleManager().getCurrentStyle();
            sizeAnimation(posX + (width / 2), posY + (height / 2), animation.getOutput());
            DisplayUtils.drawShadow(posX, posY, width, height, 10, ColorUtils.rgba(0, 0, 0, 128), ColorUtils.rgba(0, 0, 0, 128));
            DisplayUtils.drawRoundedRect(posX, posY, width, height, rounding, ColorUtils.rgba(0, 0, 0, 150));
            drawTargetHead(entity, posX + spacing, posY + spacing, headSize, headSize);

            float nameX = posX + headSize + spacing * 2;
            float nameY = posY + spacing + 2;
            Scissor.push();
            Scissor.setFromComponentCoordinates(testX, testY, testW - 6, testH);
            Fonts.sfui.drawText(eventDisplay.getMatrixStack(), entity.getName().getString(), nameX, nameY, -1, 8);
            Scissor.unset();
            Scissor.pop();

            //отрисовка слотов
            if (entity instanceof PlayerEntity) {
                PlayerEntity player = (PlayerEntity) entity;
                float itemX = nameX;
                float itemY = nameY + 12;
                float itemSize = 15;
                float itemSpacing = 17;

                drawItemStack(eventDisplay.getMatrixStack(), player.getHeldItemMainhand(), itemX, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.HEAD), itemX + itemSpacing, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.CHEST), itemX + itemSpacing * 2, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.LEGS), itemX + itemSpacing * 3, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.FEET), itemX + itemSpacing * 4, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getHeldItemOffhand(), itemX + itemSpacing * 5, itemY, itemSize);
            }

            float lineX = posX + spacing;
            float lineY = posY + height - 16;
            float lineWidth = width - spacing * 2;
            DisplayUtils.drawRoundedRect(lineX, lineY, lineWidth, 1, 0.5f, ColorUtils.rgba(255, 255, 255, 30));
            //здоровье
            float healthBarX = posX + spacing;
            float healthBarHeight = 5;
            float healthBarY = posY + height - spacing - healthBarHeight;
            String hpText = String.format("%.0fhp", hp);
            float textWidth = Fonts.sfui.getWidth(hpText, 8);
            float healthBarWidth = width - (spacing * 3) - textWidth;
            DisplayUtils.drawRoundedRect(healthBarX, healthBarY, healthBarWidth, healthBarHeight, 2.5f, ColorUtils.rgba(32, 32, 32, 200));
            DisplayUtils.drawRoundedRect(healthBarX, healthBarY, healthBarWidth * healthAnimation, healthBarHeight, 2.5f, ColorUtils.rgba(255, 105, 180, 255));
            Fonts.sfui.drawText(eventDisplay.getMatrixStack(), hpText, healthBarX + healthBarWidth + spacing, healthBarY - 1.5f, ColorUtils.rgba(255, 105, 180, 255), 8);
            GlStateManager.popMatrix();
        }
    }

    private LivingEntity getTarget(LivingEntity nullTarget) {
        LivingEntity auraTarget = Expensive.getInstance().getFunctionRegistry().getKillAura().getTarget();
        LivingEntity target = nullTarget;
        if (auraTarget != null) {
            stopWatch.reset();
            allow = true;
            target = auraTarget;
        } else if (mc.currentScreen instanceof ChatScreen) {
            stopWatch.reset();
            allow = true;
            target = mc.player;
        } else if (mc.pointedEntity instanceof LivingEntity) {
            stopWatch.reset();
            allow = true;
            target = (LivingEntity) mc.pointedEntity;
        } else {
            allow = false;
        }
        return target;
    }

    private void drawItemStack(MatrixStack matrixStack, ItemStack stack, float x, float y, float size) {
        if (stack.isEmpty()) {
            float crossSize = 7.5f;
            float thickness = 1.2f;
            int color = ColorUtils.rgba(100, 100, 100, 150);

            GlStateManager.pushMatrix();
            GlStateManager.translated(x + size / 2.0f, y + size / 2.0f, 0);
            GlStateManager.rotatef(45, 0, 0, 1);
            DisplayUtils.drawRoundedRect(-crossSize / 2.0f, -thickness / 2.0f, crossSize, thickness, 0.5f, color);
            GlStateManager.rotatef(90, 0, 0, 1);
            DisplayUtils.drawRoundedRect(-crossSize / 2.0f, -thickness / 2.0f, crossSize, thickness, 0.5f, color);
            GlStateManager.popMatrix();
            return;
        }

        GlStateManager.pushMatrix();
        GlStateManager.enableBlend();
        GlStateManager.blendFunc(770, 771);

        float scale = size / 16.0f;
        GlStateManager.scaled(scale, scale, scale);

        mc.getItemRenderer().renderItemAndEffectIntoGUI(stack, (int)(x / scale), (int)(y / scale));
        mc.getItemRenderer().renderItemOverlayIntoGUI(mc.fontRenderer, stack, (int)(x / scale), (int)(y / scale), null);

        GlStateManager.disableBlend();
        GlStateManager.popMatrix();
    }

    public void drawTargetHead(LivingEntity entity, float x, float y, float width, float height) {
        if (entity != null) {
            EntityRenderer<? super LivingEntity> rendererManager = mc.getRenderManager().getRenderer(entity);

            GlStateManager.pushMatrix();
            Stencil.initStencilToWrite();
            DisplayUtils.drawRoundedRect(x, y, width, height, 4, -1);
            Stencil.readStencilBuffer(1);
            drawFace(rendererManager.getEntityTexture(entity), x, y, 8F, 8F, 8F, 8F, width, height, 64F, 64F, entity);
            Stencil.uninitStencilBuffer();
            GlStateManager.popMatrix();
        }
    }

    public static void sizeAnimation(double width, double height, double scale) {
        GlStateManager.translated(width, height, 0);
        GlStateManager.scaled(scale, scale, scale);
        GlStateManager.translated(-width, -height, 0);
    }

    public void drawFace(ResourceLocation res, float d,
                         float y,
                         float u,
                         float v,
                         float uWidth,
                         float vHeight,
                         float width,
                         float height,
                         float tileWidth,
                         float tileHeight,
                         LivingEntity target) {
        GL11.glPushMatrix();
        GL11.glEnable(GL11.GL_BLEND);
        mc.getTextureManager().bindTexture(res);
        float hurtPercent = (target.hurtTime - (target.hurtTime != 0 ? mc.timer.renderPartialTicks : 0.0f)) / 10.0f;
        GL11.glColor4f(1, 1 - hurtPercent, 1 - hurtPercent, 1);
        AbstractGui.drawScaledCustomSizeModalRect(d, y, u, v, uWidth, vHeight, width, height, tileWidth, tileHeight);
        GL11.glColor4f(1, 1, 1, 1);
        GL11.glPopMatrix();
    }
}

Ну хз, не судите строго да не судимыми будете
 
Сделал самый вырвиглазный в мире TargetHUD для ваших PisynVisuals

ss - Посмотреть вложение 330297

code -

Java:
Expand Collapse Copy
package im.expensive.ui.display.impl;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import im.expensive.Expensive;
import im.expensive.events.EventDisplay;
import im.expensive.ui.display.ElementRenderer;
import im.expensive.ui.styles.Style;
import im.expensive.utils.animations.Animation;
import im.expensive.utils.animations.Direction;
import im.expensive.utils.animations.impl.EaseBackIn;
import im.expensive.utils.client.ClientUtil;
import im.expensive.utils.drag.Dragging;
import im.expensive.utils.math.MathUtil;
import im.expensive.utils.math.StopWatch;
import im.expensive.utils.math.Vector4i;
import im.expensive.utils.render.ColorUtils;
import im.expensive.utils.render.DisplayUtils;
import im.expensive.utils.render.Scissor;
import im.expensive.utils.render.Stencil;
import im.expensive.utils.render.font.Fonts;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.gui.AbstractGui;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.ItemStack;
import net.minecraft.scoreboard.Score;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector4f;
import org.lwjgl.opengl.GL11;

@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class TargetInfoRenderer implements ElementRenderer {
    final StopWatch stopWatch = new StopWatch();
    final Dragging drag;
    LivingEntity entity = null;
    boolean allow;
    final Animation animation = new EaseBackIn(400, 1, 1);
    float healthAnimation = 0.0f;
    float absorptionAnimation = 0.0f;

    @Override
    public void render(EventDisplay eventDisplay) {
        entity = getTarget(entity);
        float rounding = 6;
        boolean out = !allow || stopWatch.isReached(1000);
        animation.setDuration(out ? 400 : 300);
        animation.setDirection(out ? Direction.BACKWARDS : Direction.FORWARDS);

        if (animation.getOutput() == 0.0f) {
            entity = null;
        }

        if (entity != null) {
            String name = entity.getName().getString();

            float posX = drag.getX();
            float posY = drag.getY();
            float headSize = 32;
            float spacing = 6;
            float width = 150;
            float height = 58;
            drag.setWidth(width);
            drag.setHeight(height);

            Score score = mc.world.getScoreboard().getOrCreateScore(entity.getScoreboardName(), mc.world.getScoreboard().getObjectiveInDisplaySlot(2));

            float hp = entity.getHealth();
            float maxHp = entity.getMaxHealth();
            String header = mc.ingameGUI.getTabList().header == null ? " " : mc.ingameGUI.getTabList().header.getString().toLowerCase();

            if (mc.getCurrentServerData() != null && mc.getCurrentServerData().serverIP.contains("funtime")
                    && (header.contains("анархия") || header.contains("гриферский")) && entity instanceof PlayerEntity) {
                hp = score.getScorePoints();
                maxHp = 20;
            }
            healthAnimation = MathUtil.fast(healthAnimation, MathHelper.clamp(hp / maxHp, 0, 1), 10);
            absorptionAnimation = MathUtil.fast(absorptionAnimation, MathHelper.clamp(entity.getAbsorptionAmount() / maxHp, 0, 1), 10);

            float animationValue = (float) animation.getOutput();
            float halfAnimationValueRest = (1 - animationValue) / 2f;
            float testX = posX + (width * halfAnimationValueRest);
            float testY = posY + (height * halfAnimationValueRest);
            float testW = width * animationValue;
            float testH = height * animationValue;

            GlStateManager.pushMatrix();
            Style style = Expensive.getInstance().getStyleManager().getCurrentStyle();
            sizeAnimation(posX + (width / 2), posY + (height / 2), animation.getOutput());
            DisplayUtils.drawShadow(posX, posY, width, height, 10, ColorUtils.rgba(0, 0, 0, 128), ColorUtils.rgba(0, 0, 0, 128));
            DisplayUtils.drawRoundedRect(posX, posY, width, height, rounding, ColorUtils.rgba(0, 0, 0, 150));
            drawTargetHead(entity, posX + spacing, posY + spacing, headSize, headSize);

            float nameX = posX + headSize + spacing * 2;
            float nameY = posY + spacing + 2;
            Scissor.push();
            Scissor.setFromComponentCoordinates(testX, testY, testW - 6, testH);
            Fonts.sfui.drawText(eventDisplay.getMatrixStack(), entity.getName().getString(), nameX, nameY, -1, 8);
            Scissor.unset();
            Scissor.pop();

            //отрисовка слотов
            if (entity instanceof PlayerEntity) {
                PlayerEntity player = (PlayerEntity) entity;
                float itemX = nameX;
                float itemY = nameY + 12;
                float itemSize = 15;
                float itemSpacing = 17;

                drawItemStack(eventDisplay.getMatrixStack(), player.getHeldItemMainhand(), itemX, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.HEAD), itemX + itemSpacing, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.CHEST), itemX + itemSpacing * 2, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.LEGS), itemX + itemSpacing * 3, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.FEET), itemX + itemSpacing * 4, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getHeldItemOffhand(), itemX + itemSpacing * 5, itemY, itemSize);
            }

            float lineX = posX + spacing;
            float lineY = posY + height - 16;
            float lineWidth = width - spacing * 2;
            DisplayUtils.drawRoundedRect(lineX, lineY, lineWidth, 1, 0.5f, ColorUtils.rgba(255, 255, 255, 30));
            //здоровье
            float healthBarX = posX + spacing;
            float healthBarHeight = 5;
            float healthBarY = posY + height - spacing - healthBarHeight;
            String hpText = String.format("%.0fhp", hp);
            float textWidth = Fonts.sfui.getWidth(hpText, 8);
            float healthBarWidth = width - (spacing * 3) - textWidth;
            DisplayUtils.drawRoundedRect(healthBarX, healthBarY, healthBarWidth, healthBarHeight, 2.5f, ColorUtils.rgba(32, 32, 32, 200));
            DisplayUtils.drawRoundedRect(healthBarX, healthBarY, healthBarWidth * healthAnimation, healthBarHeight, 2.5f, ColorUtils.rgba(255, 105, 180, 255));
            Fonts.sfui.drawText(eventDisplay.getMatrixStack(), hpText, healthBarX + healthBarWidth + spacing, healthBarY - 1.5f, ColorUtils.rgba(255, 105, 180, 255), 8);
            GlStateManager.popMatrix();
        }
    }

    private LivingEntity getTarget(LivingEntity nullTarget) {
        LivingEntity auraTarget = Expensive.getInstance().getFunctionRegistry().getKillAura().getTarget();
        LivingEntity target = nullTarget;
        if (auraTarget != null) {
            stopWatch.reset();
            allow = true;
            target = auraTarget;
        } else if (mc.currentScreen instanceof ChatScreen) {
            stopWatch.reset();
            allow = true;
            target = mc.player;
        } else if (mc.pointedEntity instanceof LivingEntity) {
            stopWatch.reset();
            allow = true;
            target = (LivingEntity) mc.pointedEntity;
        } else {
            allow = false;
        }
        return target;
    }

    private void drawItemStack(MatrixStack matrixStack, ItemStack stack, float x, float y, float size) {
        if (stack.isEmpty()) {
            float crossSize = 7.5f;
            float thickness = 1.2f;
            int color = ColorUtils.rgba(100, 100, 100, 150);

            GlStateManager.pushMatrix();
            GlStateManager.translated(x + size / 2.0f, y + size / 2.0f, 0);
            GlStateManager.rotatef(45, 0, 0, 1);
            DisplayUtils.drawRoundedRect(-crossSize / 2.0f, -thickness / 2.0f, crossSize, thickness, 0.5f, color);
            GlStateManager.rotatef(90, 0, 0, 1);
            DisplayUtils.drawRoundedRect(-crossSize / 2.0f, -thickness / 2.0f, crossSize, thickness, 0.5f, color);
            GlStateManager.popMatrix();
            return;
        }

        GlStateManager.pushMatrix();
        GlStateManager.enableBlend();
        GlStateManager.blendFunc(770, 771);

        float scale = size / 16.0f;
        GlStateManager.scaled(scale, scale, scale);

        mc.getItemRenderer().renderItemAndEffectIntoGUI(stack, (int)(x / scale), (int)(y / scale));
        mc.getItemRenderer().renderItemOverlayIntoGUI(mc.fontRenderer, stack, (int)(x / scale), (int)(y / scale), null);

        GlStateManager.disableBlend();
        GlStateManager.popMatrix();
    }

    public void drawTargetHead(LivingEntity entity, float x, float y, float width, float height) {
        if (entity != null) {
            EntityRenderer<? super LivingEntity> rendererManager = mc.getRenderManager().getRenderer(entity);

            GlStateManager.pushMatrix();
            Stencil.initStencilToWrite();
            DisplayUtils.drawRoundedRect(x, y, width, height, 4, -1);
            Stencil.readStencilBuffer(1);
            drawFace(rendererManager.getEntityTexture(entity), x, y, 8F, 8F, 8F, 8F, width, height, 64F, 64F, entity);
            Stencil.uninitStencilBuffer();
            GlStateManager.popMatrix();
        }
    }

    public static void sizeAnimation(double width, double height, double scale) {
        GlStateManager.translated(width, height, 0);
        GlStateManager.scaled(scale, scale, scale);
        GlStateManager.translated(-width, -height, 0);
    }

    public void drawFace(ResourceLocation res, float d,
                         float y,
                         float u,
                         float v,
                         float uWidth,
                         float vHeight,
                         float width,
                         float height,
                         float tileWidth,
                         float tileHeight,
                         LivingEntity target) {
        GL11.glPushMatrix();
        GL11.glEnable(GL11.GL_BLEND);
        mc.getTextureManager().bindTexture(res);
        float hurtPercent = (target.hurtTime - (target.hurtTime != 0 ? mc.timer.renderPartialTicks : 0.0f)) / 10.0f;
        GL11.glColor4f(1, 1 - hurtPercent, 1 - hurtPercent, 1);
        AbstractGui.drawScaledCustomSizeModalRect(d, y, u, v, uWidth, vHeight, width, height, tileWidth, tileHeight);
        GL11.glColor4f(1, 1, 1, 1);
        GL11.glPopMatrix();
    }
}

Ну хз, не судите строго да не судимыми будете
Мне нравится очень, красиво, молодец
 
Сделал самый вырвиглазный в мире TargetHUD для ваших PisynVisuals

ss - Посмотреть вложение 330297

code -

Java:
Expand Collapse Copy
package im.expensive.ui.display.impl;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import im.expensive.Expensive;
import im.expensive.events.EventDisplay;
import im.expensive.ui.display.ElementRenderer;
import im.expensive.ui.styles.Style;
import im.expensive.utils.animations.Animation;
import im.expensive.utils.animations.Direction;
import im.expensive.utils.animations.impl.EaseBackIn;
import im.expensive.utils.client.ClientUtil;
import im.expensive.utils.drag.Dragging;
import im.expensive.utils.math.MathUtil;
import im.expensive.utils.math.StopWatch;
import im.expensive.utils.math.Vector4i;
import im.expensive.utils.render.ColorUtils;
import im.expensive.utils.render.DisplayUtils;
import im.expensive.utils.render.Scissor;
import im.expensive.utils.render.Stencil;
import im.expensive.utils.render.font.Fonts;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.gui.AbstractGui;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.ItemStack;
import net.minecraft.scoreboard.Score;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector4f;
import org.lwjgl.opengl.GL11;

@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class TargetInfoRenderer implements ElementRenderer {
    final StopWatch stopWatch = new StopWatch();
    final Dragging drag;
    LivingEntity entity = null;
    boolean allow;
    final Animation animation = new EaseBackIn(400, 1, 1);
    float healthAnimation = 0.0f;
    float absorptionAnimation = 0.0f;

    @Override
    public void render(EventDisplay eventDisplay) {
        entity = getTarget(entity);
        float rounding = 6;
        boolean out = !allow || stopWatch.isReached(1000);
        animation.setDuration(out ? 400 : 300);
        animation.setDirection(out ? Direction.BACKWARDS : Direction.FORWARDS);

        if (animation.getOutput() == 0.0f) {
            entity = null;
        }

        if (entity != null) {
            String name = entity.getName().getString();

            float posX = drag.getX();
            float posY = drag.getY();
            float headSize = 32;
            float spacing = 6;
            float width = 150;
            float height = 58;
            drag.setWidth(width);
            drag.setHeight(height);

            Score score = mc.world.getScoreboard().getOrCreateScore(entity.getScoreboardName(), mc.world.getScoreboard().getObjectiveInDisplaySlot(2));

            float hp = entity.getHealth();
            float maxHp = entity.getMaxHealth();
            String header = mc.ingameGUI.getTabList().header == null ? " " : mc.ingameGUI.getTabList().header.getString().toLowerCase();

            if (mc.getCurrentServerData() != null && mc.getCurrentServerData().serverIP.contains("funtime")
                    && (header.contains("анархия") || header.contains("гриферский")) && entity instanceof PlayerEntity) {
                hp = score.getScorePoints();
                maxHp = 20;
            }
            healthAnimation = MathUtil.fast(healthAnimation, MathHelper.clamp(hp / maxHp, 0, 1), 10);
            absorptionAnimation = MathUtil.fast(absorptionAnimation, MathHelper.clamp(entity.getAbsorptionAmount() / maxHp, 0, 1), 10);

            float animationValue = (float) animation.getOutput();
            float halfAnimationValueRest = (1 - animationValue) / 2f;
            float testX = posX + (width * halfAnimationValueRest);
            float testY = posY + (height * halfAnimationValueRest);
            float testW = width * animationValue;
            float testH = height * animationValue;

            GlStateManager.pushMatrix();
            Style style = Expensive.getInstance().getStyleManager().getCurrentStyle();
            sizeAnimation(posX + (width / 2), posY + (height / 2), animation.getOutput());
            DisplayUtils.drawShadow(posX, posY, width, height, 10, ColorUtils.rgba(0, 0, 0, 128), ColorUtils.rgba(0, 0, 0, 128));
            DisplayUtils.drawRoundedRect(posX, posY, width, height, rounding, ColorUtils.rgba(0, 0, 0, 150));
            drawTargetHead(entity, posX + spacing, posY + spacing, headSize, headSize);

            float nameX = posX + headSize + spacing * 2;
            float nameY = posY + spacing + 2;
            Scissor.push();
            Scissor.setFromComponentCoordinates(testX, testY, testW - 6, testH);
            Fonts.sfui.drawText(eventDisplay.getMatrixStack(), entity.getName().getString(), nameX, nameY, -1, 8);
            Scissor.unset();
            Scissor.pop();

            //отрисовка слотов
            if (entity instanceof PlayerEntity) {
                PlayerEntity player = (PlayerEntity) entity;
                float itemX = nameX;
                float itemY = nameY + 12;
                float itemSize = 15;
                float itemSpacing = 17;

                drawItemStack(eventDisplay.getMatrixStack(), player.getHeldItemMainhand(), itemX, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.HEAD), itemX + itemSpacing, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.CHEST), itemX + itemSpacing * 2, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.LEGS), itemX + itemSpacing * 3, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.FEET), itemX + itemSpacing * 4, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getHeldItemOffhand(), itemX + itemSpacing * 5, itemY, itemSize);
            }

            float lineX = posX + spacing;
            float lineY = posY + height - 16;
            float lineWidth = width - spacing * 2;
            DisplayUtils.drawRoundedRect(lineX, lineY, lineWidth, 1, 0.5f, ColorUtils.rgba(255, 255, 255, 30));
            //здоровье
            float healthBarX = posX + spacing;
            float healthBarHeight = 5;
            float healthBarY = posY + height - spacing - healthBarHeight;
            String hpText = String.format("%.0fhp", hp);
            float textWidth = Fonts.sfui.getWidth(hpText, 8);
            float healthBarWidth = width - (spacing * 3) - textWidth;
            DisplayUtils.drawRoundedRect(healthBarX, healthBarY, healthBarWidth, healthBarHeight, 2.5f, ColorUtils.rgba(32, 32, 32, 200));
            DisplayUtils.drawRoundedRect(healthBarX, healthBarY, healthBarWidth * healthAnimation, healthBarHeight, 2.5f, ColorUtils.rgba(255, 105, 180, 255));
            Fonts.sfui.drawText(eventDisplay.getMatrixStack(), hpText, healthBarX + healthBarWidth + spacing, healthBarY - 1.5f, ColorUtils.rgba(255, 105, 180, 255), 8);
            GlStateManager.popMatrix();
        }
    }

    private LivingEntity getTarget(LivingEntity nullTarget) {
        LivingEntity auraTarget = Expensive.getInstance().getFunctionRegistry().getKillAura().getTarget();
        LivingEntity target = nullTarget;
        if (auraTarget != null) {
            stopWatch.reset();
            allow = true;
            target = auraTarget;
        } else if (mc.currentScreen instanceof ChatScreen) {
            stopWatch.reset();
            allow = true;
            target = mc.player;
        } else if (mc.pointedEntity instanceof LivingEntity) {
            stopWatch.reset();
            allow = true;
            target = (LivingEntity) mc.pointedEntity;
        } else {
            allow = false;
        }
        return target;
    }

    private void drawItemStack(MatrixStack matrixStack, ItemStack stack, float x, float y, float size) {
        if (stack.isEmpty()) {
            float crossSize = 7.5f;
            float thickness = 1.2f;
            int color = ColorUtils.rgba(100, 100, 100, 150);

            GlStateManager.pushMatrix();
            GlStateManager.translated(x + size / 2.0f, y + size / 2.0f, 0);
            GlStateManager.rotatef(45, 0, 0, 1);
            DisplayUtils.drawRoundedRect(-crossSize / 2.0f, -thickness / 2.0f, crossSize, thickness, 0.5f, color);
            GlStateManager.rotatef(90, 0, 0, 1);
            DisplayUtils.drawRoundedRect(-crossSize / 2.0f, -thickness / 2.0f, crossSize, thickness, 0.5f, color);
            GlStateManager.popMatrix();
            return;
        }

        GlStateManager.pushMatrix();
        GlStateManager.enableBlend();
        GlStateManager.blendFunc(770, 771);

        float scale = size / 16.0f;
        GlStateManager.scaled(scale, scale, scale);

        mc.getItemRenderer().renderItemAndEffectIntoGUI(stack, (int)(x / scale), (int)(y / scale));
        mc.getItemRenderer().renderItemOverlayIntoGUI(mc.fontRenderer, stack, (int)(x / scale), (int)(y / scale), null);

        GlStateManager.disableBlend();
        GlStateManager.popMatrix();
    }

    public void drawTargetHead(LivingEntity entity, float x, float y, float width, float height) {
        if (entity != null) {
            EntityRenderer<? super LivingEntity> rendererManager = mc.getRenderManager().getRenderer(entity);

            GlStateManager.pushMatrix();
            Stencil.initStencilToWrite();
            DisplayUtils.drawRoundedRect(x, y, width, height, 4, -1);
            Stencil.readStencilBuffer(1);
            drawFace(rendererManager.getEntityTexture(entity), x, y, 8F, 8F, 8F, 8F, width, height, 64F, 64F, entity);
            Stencil.uninitStencilBuffer();
            GlStateManager.popMatrix();
        }
    }

    public static void sizeAnimation(double width, double height, double scale) {
        GlStateManager.translated(width, height, 0);
        GlStateManager.scaled(scale, scale, scale);
        GlStateManager.translated(-width, -height, 0);
    }

    public void drawFace(ResourceLocation res, float d,
                         float y,
                         float u,
                         float v,
                         float uWidth,
                         float vHeight,
                         float width,
                         float height,
                         float tileWidth,
                         float tileHeight,
                         LivingEntity target) {
        GL11.glPushMatrix();
        GL11.glEnable(GL11.GL_BLEND);
        mc.getTextureManager().bindTexture(res);
        float hurtPercent = (target.hurtTime - (target.hurtTime != 0 ? mc.timer.renderPartialTicks : 0.0f)) / 10.0f;
        GL11.glColor4f(1, 1 - hurtPercent, 1 - hurtPercent, 1);
        AbstractGui.drawScaledCustomSizeModalRect(d, y, u, v, uWidth, vHeight, width, height, tileWidth, tileHeight);
        GL11.glColor4f(1, 1, 1, 1);
        GL11.glPopMatrix();
    }
}

Ну хз, не судите строго да не судимыми будете
нормас сойдет
 
Сделал самый вырвиглазный в мире TargetHUD для ваших PisynVisuals

ss - Посмотреть вложение 330297

code -

Java:
Expand Collapse Copy
package im.expensive.ui.display.impl;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import im.expensive.Expensive;
import im.expensive.events.EventDisplay;
import im.expensive.ui.display.ElementRenderer;
import im.expensive.ui.styles.Style;
import im.expensive.utils.animations.Animation;
import im.expensive.utils.animations.Direction;
import im.expensive.utils.animations.impl.EaseBackIn;
import im.expensive.utils.client.ClientUtil;
import im.expensive.utils.drag.Dragging;
import im.expensive.utils.math.MathUtil;
import im.expensive.utils.math.StopWatch;
import im.expensive.utils.math.Vector4i;
import im.expensive.utils.render.ColorUtils;
import im.expensive.utils.render.DisplayUtils;
import im.expensive.utils.render.Scissor;
import im.expensive.utils.render.Stencil;
import im.expensive.utils.render.font.Fonts;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.gui.AbstractGui;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.ItemStack;
import net.minecraft.scoreboard.Score;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector4f;
import org.lwjgl.opengl.GL11;

@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class TargetInfoRenderer implements ElementRenderer {
    final StopWatch stopWatch = new StopWatch();
    final Dragging drag;
    LivingEntity entity = null;
    boolean allow;
    final Animation animation = new EaseBackIn(400, 1, 1);
    float healthAnimation = 0.0f;
    float absorptionAnimation = 0.0f;

    @Override
    public void render(EventDisplay eventDisplay) {
        entity = getTarget(entity);
        float rounding = 6;
        boolean out = !allow || stopWatch.isReached(1000);
        animation.setDuration(out ? 400 : 300);
        animation.setDirection(out ? Direction.BACKWARDS : Direction.FORWARDS);

        if (animation.getOutput() == 0.0f) {
            entity = null;
        }

        if (entity != null) {
            String name = entity.getName().getString();

            float posX = drag.getX();
            float posY = drag.getY();
            float headSize = 32;
            float spacing = 6;
            float width = 150;
            float height = 58;
            drag.setWidth(width);
            drag.setHeight(height);

            Score score = mc.world.getScoreboard().getOrCreateScore(entity.getScoreboardName(), mc.world.getScoreboard().getObjectiveInDisplaySlot(2));

            float hp = entity.getHealth();
            float maxHp = entity.getMaxHealth();
            String header = mc.ingameGUI.getTabList().header == null ? " " : mc.ingameGUI.getTabList().header.getString().toLowerCase();

            if (mc.getCurrentServerData() != null && mc.getCurrentServerData().serverIP.contains("funtime")
                    && (header.contains("анархия") || header.contains("гриферский")) && entity instanceof PlayerEntity) {
                hp = score.getScorePoints();
                maxHp = 20;
            }
            healthAnimation = MathUtil.fast(healthAnimation, MathHelper.clamp(hp / maxHp, 0, 1), 10);
            absorptionAnimation = MathUtil.fast(absorptionAnimation, MathHelper.clamp(entity.getAbsorptionAmount() / maxHp, 0, 1), 10);

            float animationValue = (float) animation.getOutput();
            float halfAnimationValueRest = (1 - animationValue) / 2f;
            float testX = posX + (width * halfAnimationValueRest);
            float testY = posY + (height * halfAnimationValueRest);
            float testW = width * animationValue;
            float testH = height * animationValue;

            GlStateManager.pushMatrix();
            Style style = Expensive.getInstance().getStyleManager().getCurrentStyle();
            sizeAnimation(posX + (width / 2), posY + (height / 2), animation.getOutput());
            DisplayUtils.drawShadow(posX, posY, width, height, 10, ColorUtils.rgba(0, 0, 0, 128), ColorUtils.rgba(0, 0, 0, 128));
            DisplayUtils.drawRoundedRect(posX, posY, width, height, rounding, ColorUtils.rgba(0, 0, 0, 150));
            drawTargetHead(entity, posX + spacing, posY + spacing, headSize, headSize);

            float nameX = posX + headSize + spacing * 2;
            float nameY = posY + spacing + 2;
            Scissor.push();
            Scissor.setFromComponentCoordinates(testX, testY, testW - 6, testH);
            Fonts.sfui.drawText(eventDisplay.getMatrixStack(), entity.getName().getString(), nameX, nameY, -1, 8);
            Scissor.unset();
            Scissor.pop();

            //отрисовка слотов
            if (entity instanceof PlayerEntity) {
                PlayerEntity player = (PlayerEntity) entity;
                float itemX = nameX;
                float itemY = nameY + 12;
                float itemSize = 15;
                float itemSpacing = 17;

                drawItemStack(eventDisplay.getMatrixStack(), player.getHeldItemMainhand(), itemX, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.HEAD), itemX + itemSpacing, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.CHEST), itemX + itemSpacing * 2, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.LEGS), itemX + itemSpacing * 3, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.FEET), itemX + itemSpacing * 4, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getHeldItemOffhand(), itemX + itemSpacing * 5, itemY, itemSize);
            }

            float lineX = posX + spacing;
            float lineY = posY + height - 16;
            float lineWidth = width - spacing * 2;
            DisplayUtils.drawRoundedRect(lineX, lineY, lineWidth, 1, 0.5f, ColorUtils.rgba(255, 255, 255, 30));
            //здоровье
            float healthBarX = posX + spacing;
            float healthBarHeight = 5;
            float healthBarY = posY + height - spacing - healthBarHeight;
            String hpText = String.format("%.0fhp", hp);
            float textWidth = Fonts.sfui.getWidth(hpText, 8);
            float healthBarWidth = width - (spacing * 3) - textWidth;
            DisplayUtils.drawRoundedRect(healthBarX, healthBarY, healthBarWidth, healthBarHeight, 2.5f, ColorUtils.rgba(32, 32, 32, 200));
            DisplayUtils.drawRoundedRect(healthBarX, healthBarY, healthBarWidth * healthAnimation, healthBarHeight, 2.5f, ColorUtils.rgba(255, 105, 180, 255));
            Fonts.sfui.drawText(eventDisplay.getMatrixStack(), hpText, healthBarX + healthBarWidth + spacing, healthBarY - 1.5f, ColorUtils.rgba(255, 105, 180, 255), 8);
            GlStateManager.popMatrix();
        }
    }

    private LivingEntity getTarget(LivingEntity nullTarget) {
        LivingEntity auraTarget = Expensive.getInstance().getFunctionRegistry().getKillAura().getTarget();
        LivingEntity target = nullTarget;
        if (auraTarget != null) {
            stopWatch.reset();
            allow = true;
            target = auraTarget;
        } else if (mc.currentScreen instanceof ChatScreen) {
            stopWatch.reset();
            allow = true;
            target = mc.player;
        } else if (mc.pointedEntity instanceof LivingEntity) {
            stopWatch.reset();
            allow = true;
            target = (LivingEntity) mc.pointedEntity;
        } else {
            allow = false;
        }
        return target;
    }

    private void drawItemStack(MatrixStack matrixStack, ItemStack stack, float x, float y, float size) {
        if (stack.isEmpty()) {
            float crossSize = 7.5f;
            float thickness = 1.2f;
            int color = ColorUtils.rgba(100, 100, 100, 150);

            GlStateManager.pushMatrix();
            GlStateManager.translated(x + size / 2.0f, y + size / 2.0f, 0);
            GlStateManager.rotatef(45, 0, 0, 1);
            DisplayUtils.drawRoundedRect(-crossSize / 2.0f, -thickness / 2.0f, crossSize, thickness, 0.5f, color);
            GlStateManager.rotatef(90, 0, 0, 1);
            DisplayUtils.drawRoundedRect(-crossSize / 2.0f, -thickness / 2.0f, crossSize, thickness, 0.5f, color);
            GlStateManager.popMatrix();
            return;
        }

        GlStateManager.pushMatrix();
        GlStateManager.enableBlend();
        GlStateManager.blendFunc(770, 771);

        float scale = size / 16.0f;
        GlStateManager.scaled(scale, scale, scale);

        mc.getItemRenderer().renderItemAndEffectIntoGUI(stack, (int)(x / scale), (int)(y / scale));
        mc.getItemRenderer().renderItemOverlayIntoGUI(mc.fontRenderer, stack, (int)(x / scale), (int)(y / scale), null);

        GlStateManager.disableBlend();
        GlStateManager.popMatrix();
    }

    public void drawTargetHead(LivingEntity entity, float x, float y, float width, float height) {
        if (entity != null) {
            EntityRenderer<? super LivingEntity> rendererManager = mc.getRenderManager().getRenderer(entity);

            GlStateManager.pushMatrix();
            Stencil.initStencilToWrite();
            DisplayUtils.drawRoundedRect(x, y, width, height, 4, -1);
            Stencil.readStencilBuffer(1);
            drawFace(rendererManager.getEntityTexture(entity), x, y, 8F, 8F, 8F, 8F, width, height, 64F, 64F, entity);
            Stencil.uninitStencilBuffer();
            GlStateManager.popMatrix();
        }
    }

    public static void sizeAnimation(double width, double height, double scale) {
        GlStateManager.translated(width, height, 0);
        GlStateManager.scaled(scale, scale, scale);
        GlStateManager.translated(-width, -height, 0);
    }

    public void drawFace(ResourceLocation res, float d,
                         float y,
                         float u,
                         float v,
                         float uWidth,
                         float vHeight,
                         float width,
                         float height,
                         float tileWidth,
                         float tileHeight,
                         LivingEntity target) {
        GL11.glPushMatrix();
        GL11.glEnable(GL11.GL_BLEND);
        mc.getTextureManager().bindTexture(res);
        float hurtPercent = (target.hurtTime - (target.hurtTime != 0 ? mc.timer.renderPartialTicks : 0.0f)) / 10.0f;
        GL11.glColor4f(1, 1 - hurtPercent, 1 - hurtPercent, 1);
        AbstractGui.drawScaledCustomSizeModalRect(d, y, u, v, uWidth, vHeight, width, height, tileWidth, tileHeight);
        GL11.glColor4f(1, 1, 1, 1);
        GL11.glPopMatrix();
    }
}

Ну хз, не судите строго да не судимыми будете
ахуеный скит литки
1773511954196.png
пизда-то 👍
 
Сделал самый вырвиглазный в мире TargetHUD для ваших PisynVisuals

ss - Посмотреть вложение 330297

code -

Java:
Expand Collapse Copy
package im.expensive.ui.display.impl;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import im.expensive.Expensive;
import im.expensive.events.EventDisplay;
import im.expensive.ui.display.ElementRenderer;
import im.expensive.ui.styles.Style;
import im.expensive.utils.animations.Animation;
import im.expensive.utils.animations.Direction;
import im.expensive.utils.animations.impl.EaseBackIn;
import im.expensive.utils.client.ClientUtil;
import im.expensive.utils.drag.Dragging;
import im.expensive.utils.math.MathUtil;
import im.expensive.utils.math.StopWatch;
import im.expensive.utils.math.Vector4i;
import im.expensive.utils.render.ColorUtils;
import im.expensive.utils.render.DisplayUtils;
import im.expensive.utils.render.Scissor;
import im.expensive.utils.render.Stencil;
import im.expensive.utils.render.font.Fonts;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.gui.AbstractGui;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.ItemStack;
import net.minecraft.scoreboard.Score;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector4f;
import org.lwjgl.opengl.GL11;

@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class TargetInfoRenderer implements ElementRenderer {
    final StopWatch stopWatch = new StopWatch();
    final Dragging drag;
    LivingEntity entity = null;
    boolean allow;
    final Animation animation = new EaseBackIn(400, 1, 1);
    float healthAnimation = 0.0f;
    float absorptionAnimation = 0.0f;

    @Override
    public void render(EventDisplay eventDisplay) {
        entity = getTarget(entity);
        float rounding = 6;
        boolean out = !allow || stopWatch.isReached(1000);
        animation.setDuration(out ? 400 : 300);
        animation.setDirection(out ? Direction.BACKWARDS : Direction.FORWARDS);

        if (animation.getOutput() == 0.0f) {
            entity = null;
        }

        if (entity != null) {
            String name = entity.getName().getString();

            float posX = drag.getX();
            float posY = drag.getY();
            float headSize = 32;
            float spacing = 6;
            float width = 150;
            float height = 58;
            drag.setWidth(width);
            drag.setHeight(height);

            Score score = mc.world.getScoreboard().getOrCreateScore(entity.getScoreboardName(), mc.world.getScoreboard().getObjectiveInDisplaySlot(2));

            float hp = entity.getHealth();
            float maxHp = entity.getMaxHealth();
            String header = mc.ingameGUI.getTabList().header == null ? " " : mc.ingameGUI.getTabList().header.getString().toLowerCase();

            if (mc.getCurrentServerData() != null && mc.getCurrentServerData().serverIP.contains("funtime")
                    && (header.contains("анархия") || header.contains("гриферский")) && entity instanceof PlayerEntity) {
                hp = score.getScorePoints();
                maxHp = 20;
            }
            healthAnimation = MathUtil.fast(healthAnimation, MathHelper.clamp(hp / maxHp, 0, 1), 10);
            absorptionAnimation = MathUtil.fast(absorptionAnimation, MathHelper.clamp(entity.getAbsorptionAmount() / maxHp, 0, 1), 10);

            float animationValue = (float) animation.getOutput();
            float halfAnimationValueRest = (1 - animationValue) / 2f;
            float testX = posX + (width * halfAnimationValueRest);
            float testY = posY + (height * halfAnimationValueRest);
            float testW = width * animationValue;
            float testH = height * animationValue;

            GlStateManager.pushMatrix();
            Style style = Expensive.getInstance().getStyleManager().getCurrentStyle();
            sizeAnimation(posX + (width / 2), posY + (height / 2), animation.getOutput());
            DisplayUtils.drawShadow(posX, posY, width, height, 10, ColorUtils.rgba(0, 0, 0, 128), ColorUtils.rgba(0, 0, 0, 128));
            DisplayUtils.drawRoundedRect(posX, posY, width, height, rounding, ColorUtils.rgba(0, 0, 0, 150));
            drawTargetHead(entity, posX + spacing, posY + spacing, headSize, headSize);

            float nameX = posX + headSize + spacing * 2;
            float nameY = posY + spacing + 2;
            Scissor.push();
            Scissor.setFromComponentCoordinates(testX, testY, testW - 6, testH);
            Fonts.sfui.drawText(eventDisplay.getMatrixStack(), entity.getName().getString(), nameX, nameY, -1, 8);
            Scissor.unset();
            Scissor.pop();

            //отрисовка слотов
            if (entity instanceof PlayerEntity) {
                PlayerEntity player = (PlayerEntity) entity;
                float itemX = nameX;
                float itemY = nameY + 12;
                float itemSize = 15;
                float itemSpacing = 17;

                drawItemStack(eventDisplay.getMatrixStack(), player.getHeldItemMainhand(), itemX, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.HEAD), itemX + itemSpacing, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.CHEST), itemX + itemSpacing * 2, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.LEGS), itemX + itemSpacing * 3, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.FEET), itemX + itemSpacing * 4, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getHeldItemOffhand(), itemX + itemSpacing * 5, itemY, itemSize);
            }

            float lineX = posX + spacing;
            float lineY = posY + height - 16;
            float lineWidth = width - spacing * 2;
            DisplayUtils.drawRoundedRect(lineX, lineY, lineWidth, 1, 0.5f, ColorUtils.rgba(255, 255, 255, 30));
            //здоровье
            float healthBarX = posX + spacing;
            float healthBarHeight = 5;
            float healthBarY = posY + height - spacing - healthBarHeight;
            String hpText = String.format("%.0fhp", hp);
            float textWidth = Fonts.sfui.getWidth(hpText, 8);
            float healthBarWidth = width - (spacing * 3) - textWidth;
            DisplayUtils.drawRoundedRect(healthBarX, healthBarY, healthBarWidth, healthBarHeight, 2.5f, ColorUtils.rgba(32, 32, 32, 200));
            DisplayUtils.drawRoundedRect(healthBarX, healthBarY, healthBarWidth * healthAnimation, healthBarHeight, 2.5f, ColorUtils.rgba(255, 105, 180, 255));
            Fonts.sfui.drawText(eventDisplay.getMatrixStack(), hpText, healthBarX + healthBarWidth + spacing, healthBarY - 1.5f, ColorUtils.rgba(255, 105, 180, 255), 8);
            GlStateManager.popMatrix();
        }
    }

    private LivingEntity getTarget(LivingEntity nullTarget) {
        LivingEntity auraTarget = Expensive.getInstance().getFunctionRegistry().getKillAura().getTarget();
        LivingEntity target = nullTarget;
        if (auraTarget != null) {
            stopWatch.reset();
            allow = true;
            target = auraTarget;
        } else if (mc.currentScreen instanceof ChatScreen) {
            stopWatch.reset();
            allow = true;
            target = mc.player;
        } else if (mc.pointedEntity instanceof LivingEntity) {
            stopWatch.reset();
            allow = true;
            target = (LivingEntity) mc.pointedEntity;
        } else {
            allow = false;
        }
        return target;
    }

    private void drawItemStack(MatrixStack matrixStack, ItemStack stack, float x, float y, float size) {
        if (stack.isEmpty()) {
            float crossSize = 7.5f;
            float thickness = 1.2f;
            int color = ColorUtils.rgba(100, 100, 100, 150);

            GlStateManager.pushMatrix();
            GlStateManager.translated(x + size / 2.0f, y + size / 2.0f, 0);
            GlStateManager.rotatef(45, 0, 0, 1);
            DisplayUtils.drawRoundedRect(-crossSize / 2.0f, -thickness / 2.0f, crossSize, thickness, 0.5f, color);
            GlStateManager.rotatef(90, 0, 0, 1);
            DisplayUtils.drawRoundedRect(-crossSize / 2.0f, -thickness / 2.0f, crossSize, thickness, 0.5f, color);
            GlStateManager.popMatrix();
            return;
        }

        GlStateManager.pushMatrix();
        GlStateManager.enableBlend();
        GlStateManager.blendFunc(770, 771);

        float scale = size / 16.0f;
        GlStateManager.scaled(scale, scale, scale);

        mc.getItemRenderer().renderItemAndEffectIntoGUI(stack, (int)(x / scale), (int)(y / scale));
        mc.getItemRenderer().renderItemOverlayIntoGUI(mc.fontRenderer, stack, (int)(x / scale), (int)(y / scale), null);

        GlStateManager.disableBlend();
        GlStateManager.popMatrix();
    }

    public void drawTargetHead(LivingEntity entity, float x, float y, float width, float height) {
        if (entity != null) {
            EntityRenderer<? super LivingEntity> rendererManager = mc.getRenderManager().getRenderer(entity);

            GlStateManager.pushMatrix();
            Stencil.initStencilToWrite();
            DisplayUtils.drawRoundedRect(x, y, width, height, 4, -1);
            Stencil.readStencilBuffer(1);
            drawFace(rendererManager.getEntityTexture(entity), x, y, 8F, 8F, 8F, 8F, width, height, 64F, 64F, entity);
            Stencil.uninitStencilBuffer();
            GlStateManager.popMatrix();
        }
    }

    public static void sizeAnimation(double width, double height, double scale) {
        GlStateManager.translated(width, height, 0);
        GlStateManager.scaled(scale, scale, scale);
        GlStateManager.translated(-width, -height, 0);
    }

    public void drawFace(ResourceLocation res, float d,
                         float y,
                         float u,
                         float v,
                         float uWidth,
                         float vHeight,
                         float width,
                         float height,
                         float tileWidth,
                         float tileHeight,
                         LivingEntity target) {
        GL11.glPushMatrix();
        GL11.glEnable(GL11.GL_BLEND);
        mc.getTextureManager().bindTexture(res);
        float hurtPercent = (target.hurtTime - (target.hurtTime != 0 ? mc.timer.renderPartialTicks : 0.0f)) / 10.0f;
        GL11.glColor4f(1, 1 - hurtPercent, 1 - hurtPercent, 1);
        AbstractGui.drawScaledCustomSizeModalRect(d, y, u, v, uWidth, vHeight, width, height, tileWidth, tileHeight);
        GL11.glColor4f(1, 1, 1, 1);
        GL11.glPopMatrix();
    }
}

Ну хз, не судите строго да не судимыми будете
самый нормальный тхуд
 
Сделал самый вырвиглазный в мире TargetHUD для ваших PisynVisuals

ss - Посмотреть вложение 330297

code -

Java:
Expand Collapse Copy
package im.expensive.ui.display.impl;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import im.expensive.Expensive;
import im.expensive.events.EventDisplay;
import im.expensive.ui.display.ElementRenderer;
import im.expensive.ui.styles.Style;
import im.expensive.utils.animations.Animation;
import im.expensive.utils.animations.Direction;
import im.expensive.utils.animations.impl.EaseBackIn;
import im.expensive.utils.client.ClientUtil;
import im.expensive.utils.drag.Dragging;
import im.expensive.utils.math.MathUtil;
import im.expensive.utils.math.StopWatch;
import im.expensive.utils.math.Vector4i;
import im.expensive.utils.render.ColorUtils;
import im.expensive.utils.render.DisplayUtils;
import im.expensive.utils.render.Scissor;
import im.expensive.utils.render.Stencil;
import im.expensive.utils.render.font.Fonts;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.gui.AbstractGui;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.ItemStack;
import net.minecraft.scoreboard.Score;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector4f;
import org.lwjgl.opengl.GL11;

@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class TargetInfoRenderer implements ElementRenderer {
    final StopWatch stopWatch = new StopWatch();
    final Dragging drag;
    LivingEntity entity = null;
    boolean allow;
    final Animation animation = new EaseBackIn(400, 1, 1);
    float healthAnimation = 0.0f;
    float absorptionAnimation = 0.0f;

    @Override
    public void render(EventDisplay eventDisplay) {
        entity = getTarget(entity);
        float rounding = 6;
        boolean out = !allow || stopWatch.isReached(1000);
        animation.setDuration(out ? 400 : 300);
        animation.setDirection(out ? Direction.BACKWARDS : Direction.FORWARDS);

        if (animation.getOutput() == 0.0f) {
            entity = null;
        }

        if (entity != null) {
            String name = entity.getName().getString();

            float posX = drag.getX();
            float posY = drag.getY();
            float headSize = 32;
            float spacing = 6;
            float width = 150;
            float height = 58;
            drag.setWidth(width);
            drag.setHeight(height);

            Score score = mc.world.getScoreboard().getOrCreateScore(entity.getScoreboardName(), mc.world.getScoreboard().getObjectiveInDisplaySlot(2));

            float hp = entity.getHealth();
            float maxHp = entity.getMaxHealth();
            String header = mc.ingameGUI.getTabList().header == null ? " " : mc.ingameGUI.getTabList().header.getString().toLowerCase();

            if (mc.getCurrentServerData() != null && mc.getCurrentServerData().serverIP.contains("funtime")
                    && (header.contains("анархия") || header.contains("гриферский")) && entity instanceof PlayerEntity) {
                hp = score.getScorePoints();
                maxHp = 20;
            }
            healthAnimation = MathUtil.fast(healthAnimation, MathHelper.clamp(hp / maxHp, 0, 1), 10);
            absorptionAnimation = MathUtil.fast(absorptionAnimation, MathHelper.clamp(entity.getAbsorptionAmount() / maxHp, 0, 1), 10);

            float animationValue = (float) animation.getOutput();
            float halfAnimationValueRest = (1 - animationValue) / 2f;
            float testX = posX + (width * halfAnimationValueRest);
            float testY = posY + (height * halfAnimationValueRest);
            float testW = width * animationValue;
            float testH = height * animationValue;

            GlStateManager.pushMatrix();
            Style style = Expensive.getInstance().getStyleManager().getCurrentStyle();
            sizeAnimation(posX + (width / 2), posY + (height / 2), animation.getOutput());
            DisplayUtils.drawShadow(posX, posY, width, height, 10, ColorUtils.rgba(0, 0, 0, 128), ColorUtils.rgba(0, 0, 0, 128));
            DisplayUtils.drawRoundedRect(posX, posY, width, height, rounding, ColorUtils.rgba(0, 0, 0, 150));
            drawTargetHead(entity, posX + spacing, posY + spacing, headSize, headSize);

            float nameX = posX + headSize + spacing * 2;
            float nameY = posY + spacing + 2;
            Scissor.push();
            Scissor.setFromComponentCoordinates(testX, testY, testW - 6, testH);
            Fonts.sfui.drawText(eventDisplay.getMatrixStack(), entity.getName().getString(), nameX, nameY, -1, 8);
            Scissor.unset();
            Scissor.pop();

            //отрисовка слотов
            if (entity instanceof PlayerEntity) {
                PlayerEntity player = (PlayerEntity) entity;
                float itemX = nameX;
                float itemY = nameY + 12;
                float itemSize = 15;
                float itemSpacing = 17;

                drawItemStack(eventDisplay.getMatrixStack(), player.getHeldItemMainhand(), itemX, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.HEAD), itemX + itemSpacing, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.CHEST), itemX + itemSpacing * 2, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.LEGS), itemX + itemSpacing * 3, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.FEET), itemX + itemSpacing * 4, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getHeldItemOffhand(), itemX + itemSpacing * 5, itemY, itemSize);
            }

            float lineX = posX + spacing;
            float lineY = posY + height - 16;
            float lineWidth = width - spacing * 2;
            DisplayUtils.drawRoundedRect(lineX, lineY, lineWidth, 1, 0.5f, ColorUtils.rgba(255, 255, 255, 30));
            //здоровье
            float healthBarX = posX + spacing;
            float healthBarHeight = 5;
            float healthBarY = posY + height - spacing - healthBarHeight;
            String hpText = String.format("%.0fhp", hp);
            float textWidth = Fonts.sfui.getWidth(hpText, 8);
            float healthBarWidth = width - (spacing * 3) - textWidth;
            DisplayUtils.drawRoundedRect(healthBarX, healthBarY, healthBarWidth, healthBarHeight, 2.5f, ColorUtils.rgba(32, 32, 32, 200));
            DisplayUtils.drawRoundedRect(healthBarX, healthBarY, healthBarWidth * healthAnimation, healthBarHeight, 2.5f, ColorUtils.rgba(255, 105, 180, 255));
            Fonts.sfui.drawText(eventDisplay.getMatrixStack(), hpText, healthBarX + healthBarWidth + spacing, healthBarY - 1.5f, ColorUtils.rgba(255, 105, 180, 255), 8);
            GlStateManager.popMatrix();
        }
    }

    private LivingEntity getTarget(LivingEntity nullTarget) {
        LivingEntity auraTarget = Expensive.getInstance().getFunctionRegistry().getKillAura().getTarget();
        LivingEntity target = nullTarget;
        if (auraTarget != null) {
            stopWatch.reset();
            allow = true;
            target = auraTarget;
        } else if (mc.currentScreen instanceof ChatScreen) {
            stopWatch.reset();
            allow = true;
            target = mc.player;
        } else if (mc.pointedEntity instanceof LivingEntity) {
            stopWatch.reset();
            allow = true;
            target = (LivingEntity) mc.pointedEntity;
        } else {
            allow = false;
        }
        return target;
    }

    private void drawItemStack(MatrixStack matrixStack, ItemStack stack, float x, float y, float size) {
        if (stack.isEmpty()) {
            float crossSize = 7.5f;
            float thickness = 1.2f;
            int color = ColorUtils.rgba(100, 100, 100, 150);

            GlStateManager.pushMatrix();
            GlStateManager.translated(x + size / 2.0f, y + size / 2.0f, 0);
            GlStateManager.rotatef(45, 0, 0, 1);
            DisplayUtils.drawRoundedRect(-crossSize / 2.0f, -thickness / 2.0f, crossSize, thickness, 0.5f, color);
            GlStateManager.rotatef(90, 0, 0, 1);
            DisplayUtils.drawRoundedRect(-crossSize / 2.0f, -thickness / 2.0f, crossSize, thickness, 0.5f, color);
            GlStateManager.popMatrix();
            return;
        }

        GlStateManager.pushMatrix();
        GlStateManager.enableBlend();
        GlStateManager.blendFunc(770, 771);

        float scale = size / 16.0f;
        GlStateManager.scaled(scale, scale, scale);

        mc.getItemRenderer().renderItemAndEffectIntoGUI(stack, (int)(x / scale), (int)(y / scale));
        mc.getItemRenderer().renderItemOverlayIntoGUI(mc.fontRenderer, stack, (int)(x / scale), (int)(y / scale), null);

        GlStateManager.disableBlend();
        GlStateManager.popMatrix();
    }

    public void drawTargetHead(LivingEntity entity, float x, float y, float width, float height) {
        if (entity != null) {
            EntityRenderer<? super LivingEntity> rendererManager = mc.getRenderManager().getRenderer(entity);

            GlStateManager.pushMatrix();
            Stencil.initStencilToWrite();
            DisplayUtils.drawRoundedRect(x, y, width, height, 4, -1);
            Stencil.readStencilBuffer(1);
            drawFace(rendererManager.getEntityTexture(entity), x, y, 8F, 8F, 8F, 8F, width, height, 64F, 64F, entity);
            Stencil.uninitStencilBuffer();
            GlStateManager.popMatrix();
        }
    }

    public static void sizeAnimation(double width, double height, double scale) {
        GlStateManager.translated(width, height, 0);
        GlStateManager.scaled(scale, scale, scale);
        GlStateManager.translated(-width, -height, 0);
    }

    public void drawFace(ResourceLocation res, float d,
                         float y,
                         float u,
                         float v,
                         float uWidth,
                         float vHeight,
                         float width,
                         float height,
                         float tileWidth,
                         float tileHeight,
                         LivingEntity target) {
        GL11.glPushMatrix();
        GL11.glEnable(GL11.GL_BLEND);
        mc.getTextureManager().bindTexture(res);
        float hurtPercent = (target.hurtTime - (target.hurtTime != 0 ? mc.timer.renderPartialTicks : 0.0f)) / 10.0f;
        GL11.glColor4f(1, 1 - hurtPercent, 1 - hurtPercent, 1);
        AbstractGui.drawScaledCustomSizeModalRect(d, y, u, v, uWidth, vHeight, width, height, tileWidth, tileHeight);
        GL11.glColor4f(1, 1, 1, 1);
        GL11.glPopMatrix();
    }
}

Ну хз, не судите строго да не судимыми будете
залупа
 
Сделал самый вырвиглазный в мире TargetHUD для ваших PisynVisuals

ss - Посмотреть вложение 330297

code -

Java:
Expand Collapse Copy
package im.expensive.ui.display.impl;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import im.expensive.Expensive;
import im.expensive.events.EventDisplay;
import im.expensive.ui.display.ElementRenderer;
import im.expensive.ui.styles.Style;
import im.expensive.utils.animations.Animation;
import im.expensive.utils.animations.Direction;
import im.expensive.utils.animations.impl.EaseBackIn;
import im.expensive.utils.client.ClientUtil;
import im.expensive.utils.drag.Dragging;
import im.expensive.utils.math.MathUtil;
import im.expensive.utils.math.StopWatch;
import im.expensive.utils.math.Vector4i;
import im.expensive.utils.render.ColorUtils;
import im.expensive.utils.render.DisplayUtils;
import im.expensive.utils.render.Scissor;
import im.expensive.utils.render.Stencil;
import im.expensive.utils.render.font.Fonts;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.gui.AbstractGui;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.ItemStack;
import net.minecraft.scoreboard.Score;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector4f;
import org.lwjgl.opengl.GL11;

@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class TargetInfoRenderer implements ElementRenderer {
    final StopWatch stopWatch = new StopWatch();
    final Dragging drag;
    LivingEntity entity = null;
    boolean allow;
    final Animation animation = new EaseBackIn(400, 1, 1);
    float healthAnimation = 0.0f;
    float absorptionAnimation = 0.0f;

    @Override
    public void render(EventDisplay eventDisplay) {
        entity = getTarget(entity);
        float rounding = 6;
        boolean out = !allow || stopWatch.isReached(1000);
        animation.setDuration(out ? 400 : 300);
        animation.setDirection(out ? Direction.BACKWARDS : Direction.FORWARDS);

        if (animation.getOutput() == 0.0f) {
            entity = null;
        }

        if (entity != null) {
            String name = entity.getName().getString();

            float posX = drag.getX();
            float posY = drag.getY();
            float headSize = 32;
            float spacing = 6;
            float width = 150;
            float height = 58;
            drag.setWidth(width);
            drag.setHeight(height);

            Score score = mc.world.getScoreboard().getOrCreateScore(entity.getScoreboardName(), mc.world.getScoreboard().getObjectiveInDisplaySlot(2));

            float hp = entity.getHealth();
            float maxHp = entity.getMaxHealth();
            String header = mc.ingameGUI.getTabList().header == null ? " " : mc.ingameGUI.getTabList().header.getString().toLowerCase();

            if (mc.getCurrentServerData() != null && mc.getCurrentServerData().serverIP.contains("funtime")
                    && (header.contains("анархия") || header.contains("гриферский")) && entity instanceof PlayerEntity) {
                hp = score.getScorePoints();
                maxHp = 20;
            }
            healthAnimation = MathUtil.fast(healthAnimation, MathHelper.clamp(hp / maxHp, 0, 1), 10);
            absorptionAnimation = MathUtil.fast(absorptionAnimation, MathHelper.clamp(entity.getAbsorptionAmount() / maxHp, 0, 1), 10);

            float animationValue = (float) animation.getOutput();
            float halfAnimationValueRest = (1 - animationValue) / 2f;
            float testX = posX + (width * halfAnimationValueRest);
            float testY = posY + (height * halfAnimationValueRest);
            float testW = width * animationValue;
            float testH = height * animationValue;

            GlStateManager.pushMatrix();
            Style style = Expensive.getInstance().getStyleManager().getCurrentStyle();
            sizeAnimation(posX + (width / 2), posY + (height / 2), animation.getOutput());
            DisplayUtils.drawShadow(posX, posY, width, height, 10, ColorUtils.rgba(0, 0, 0, 128), ColorUtils.rgba(0, 0, 0, 128));
            DisplayUtils.drawRoundedRect(posX, posY, width, height, rounding, ColorUtils.rgba(0, 0, 0, 150));
            drawTargetHead(entity, posX + spacing, posY + spacing, headSize, headSize);

            float nameX = posX + headSize + spacing * 2;
            float nameY = posY + spacing + 2;
            Scissor.push();
            Scissor.setFromComponentCoordinates(testX, testY, testW - 6, testH);
            Fonts.sfui.drawText(eventDisplay.getMatrixStack(), entity.getName().getString(), nameX, nameY, -1, 8);
            Scissor.unset();
            Scissor.pop();

            //отрисовка слотов
            if (entity instanceof PlayerEntity) {
                PlayerEntity player = (PlayerEntity) entity;
                float itemX = nameX;
                float itemY = nameY + 12;
                float itemSize = 15;
                float itemSpacing = 17;

                drawItemStack(eventDisplay.getMatrixStack(), player.getHeldItemMainhand(), itemX, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.HEAD), itemX + itemSpacing, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.CHEST), itemX + itemSpacing * 2, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.LEGS), itemX + itemSpacing * 3, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.FEET), itemX + itemSpacing * 4, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getHeldItemOffhand(), itemX + itemSpacing * 5, itemY, itemSize);
            }

            float lineX = posX + spacing;
            float lineY = posY + height - 16;
            float lineWidth = width - spacing * 2;
            DisplayUtils.drawRoundedRect(lineX, lineY, lineWidth, 1, 0.5f, ColorUtils.rgba(255, 255, 255, 30));
            //здоровье
            float healthBarX = posX + spacing;
            float healthBarHeight = 5;
            float healthBarY = posY + height - spacing - healthBarHeight;
            String hpText = String.format("%.0fhp", hp);
            float textWidth = Fonts.sfui.getWidth(hpText, 8);
            float healthBarWidth = width - (spacing * 3) - textWidth;
            DisplayUtils.drawRoundedRect(healthBarX, healthBarY, healthBarWidth, healthBarHeight, 2.5f, ColorUtils.rgba(32, 32, 32, 200));
            DisplayUtils.drawRoundedRect(healthBarX, healthBarY, healthBarWidth * healthAnimation, healthBarHeight, 2.5f, ColorUtils.rgba(255, 105, 180, 255));
            Fonts.sfui.drawText(eventDisplay.getMatrixStack(), hpText, healthBarX + healthBarWidth + spacing, healthBarY - 1.5f, ColorUtils.rgba(255, 105, 180, 255), 8);
            GlStateManager.popMatrix();
        }
    }

    private LivingEntity getTarget(LivingEntity nullTarget) {
        LivingEntity auraTarget = Expensive.getInstance().getFunctionRegistry().getKillAura().getTarget();
        LivingEntity target = nullTarget;
        if (auraTarget != null) {
            stopWatch.reset();
            allow = true;
            target = auraTarget;
        } else if (mc.currentScreen instanceof ChatScreen) {
            stopWatch.reset();
            allow = true;
            target = mc.player;
        } else if (mc.pointedEntity instanceof LivingEntity) {
            stopWatch.reset();
            allow = true;
            target = (LivingEntity) mc.pointedEntity;
        } else {
            allow = false;
        }
        return target;
    }

    private void drawItemStack(MatrixStack matrixStack, ItemStack stack, float x, float y, float size) {
        if (stack.isEmpty()) {
            float crossSize = 7.5f;
            float thickness = 1.2f;
            int color = ColorUtils.rgba(100, 100, 100, 150);

            GlStateManager.pushMatrix();
            GlStateManager.translated(x + size / 2.0f, y + size / 2.0f, 0);
            GlStateManager.rotatef(45, 0, 0, 1);
            DisplayUtils.drawRoundedRect(-crossSize / 2.0f, -thickness / 2.0f, crossSize, thickness, 0.5f, color);
            GlStateManager.rotatef(90, 0, 0, 1);
            DisplayUtils.drawRoundedRect(-crossSize / 2.0f, -thickness / 2.0f, crossSize, thickness, 0.5f, color);
            GlStateManager.popMatrix();
            return;
        }

        GlStateManager.pushMatrix();
        GlStateManager.enableBlend();
        GlStateManager.blendFunc(770, 771);

        float scale = size / 16.0f;
        GlStateManager.scaled(scale, scale, scale);

        mc.getItemRenderer().renderItemAndEffectIntoGUI(stack, (int)(x / scale), (int)(y / scale));
        mc.getItemRenderer().renderItemOverlayIntoGUI(mc.fontRenderer, stack, (int)(x / scale), (int)(y / scale), null);

        GlStateManager.disableBlend();
        GlStateManager.popMatrix();
    }

    public void drawTargetHead(LivingEntity entity, float x, float y, float width, float height) {
        if (entity != null) {
            EntityRenderer<? super LivingEntity> rendererManager = mc.getRenderManager().getRenderer(entity);

            GlStateManager.pushMatrix();
            Stencil.initStencilToWrite();
            DisplayUtils.drawRoundedRect(x, y, width, height, 4, -1);
            Stencil.readStencilBuffer(1);
            drawFace(rendererManager.getEntityTexture(entity), x, y, 8F, 8F, 8F, 8F, width, height, 64F, 64F, entity);
            Stencil.uninitStencilBuffer();
            GlStateManager.popMatrix();
        }
    }

    public static void sizeAnimation(double width, double height, double scale) {
        GlStateManager.translated(width, height, 0);
        GlStateManager.scaled(scale, scale, scale);
        GlStateManager.translated(-width, -height, 0);
    }

    public void drawFace(ResourceLocation res, float d,
                         float y,
                         float u,
                         float v,
                         float uWidth,
                         float vHeight,
                         float width,
                         float height,
                         float tileWidth,
                         float tileHeight,
                         LivingEntity target) {
        GL11.glPushMatrix();
        GL11.glEnable(GL11.GL_BLEND);
        mc.getTextureManager().bindTexture(res);
        float hurtPercent = (target.hurtTime - (target.hurtTime != 0 ? mc.timer.renderPartialTicks : 0.0f)) / 10.0f;
        GL11.glColor4f(1, 1 - hurtPercent, 1 - hurtPercent, 1);
        AbstractGui.drawScaledCustomSizeModalRect(d, y, u, v, uWidth, vHeight, width, height, tileWidth, tileHeight);
        GL11.glColor4f(1, 1, 1, 1);
        GL11.glPopMatrix();
    }
}

Ну хз, не судите строго да не судимыми будете
Ну красивый вроде, но 3.1 уже мертва.
 
Сделал самый вырвиглазный в мире TargetHUD для ваших PisynVisuals

ss - Посмотреть вложение 330297

code -

Java:
Expand Collapse Copy
package im.expensive.ui.display.impl;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import im.expensive.Expensive;
import im.expensive.events.EventDisplay;
import im.expensive.ui.display.ElementRenderer;
import im.expensive.ui.styles.Style;
import im.expensive.utils.animations.Animation;
import im.expensive.utils.animations.Direction;
import im.expensive.utils.animations.impl.EaseBackIn;
import im.expensive.utils.client.ClientUtil;
import im.expensive.utils.drag.Dragging;
import im.expensive.utils.math.MathUtil;
import im.expensive.utils.math.StopWatch;
import im.expensive.utils.math.Vector4i;
import im.expensive.utils.render.ColorUtils;
import im.expensive.utils.render.DisplayUtils;
import im.expensive.utils.render.Scissor;
import im.expensive.utils.render.Stencil;
import im.expensive.utils.render.font.Fonts;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.gui.AbstractGui;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.ItemStack;
import net.minecraft.scoreboard.Score;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector4f;
import org.lwjgl.opengl.GL11;

@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class TargetInfoRenderer implements ElementRenderer {
    final StopWatch stopWatch = new StopWatch();
    final Dragging drag;
    LivingEntity entity = null;
    boolean allow;
    final Animation animation = new EaseBackIn(400, 1, 1);
    float healthAnimation = 0.0f;
    float absorptionAnimation = 0.0f;

    @Override
    public void render(EventDisplay eventDisplay) {
        entity = getTarget(entity);
        float rounding = 6;
        boolean out = !allow || stopWatch.isReached(1000);
        animation.setDuration(out ? 400 : 300);
        animation.setDirection(out ? Direction.BACKWARDS : Direction.FORWARDS);

        if (animation.getOutput() == 0.0f) {
            entity = null;
        }

        if (entity != null) {
            String name = entity.getName().getString();

            float posX = drag.getX();
            float posY = drag.getY();
            float headSize = 32;
            float spacing = 6;
            float width = 150;
            float height = 58;
            drag.setWidth(width);
            drag.setHeight(height);

            Score score = mc.world.getScoreboard().getOrCreateScore(entity.getScoreboardName(), mc.world.getScoreboard().getObjectiveInDisplaySlot(2));

            float hp = entity.getHealth();
            float maxHp = entity.getMaxHealth();
            String header = mc.ingameGUI.getTabList().header == null ? " " : mc.ingameGUI.getTabList().header.getString().toLowerCase();

            if (mc.getCurrentServerData() != null && mc.getCurrentServerData().serverIP.contains("funtime")
                    && (header.contains("анархия") || header.contains("гриферский")) && entity instanceof PlayerEntity) {
                hp = score.getScorePoints();
                maxHp = 20;
            }
            healthAnimation = MathUtil.fast(healthAnimation, MathHelper.clamp(hp / maxHp, 0, 1), 10);
            absorptionAnimation = MathUtil.fast(absorptionAnimation, MathHelper.clamp(entity.getAbsorptionAmount() / maxHp, 0, 1), 10);

            float animationValue = (float) animation.getOutput();
            float halfAnimationValueRest = (1 - animationValue) / 2f;
            float testX = posX + (width * halfAnimationValueRest);
            float testY = posY + (height * halfAnimationValueRest);
            float testW = width * animationValue;
            float testH = height * animationValue;

            GlStateManager.pushMatrix();
            Style style = Expensive.getInstance().getStyleManager().getCurrentStyle();
            sizeAnimation(posX + (width / 2), posY + (height / 2), animation.getOutput());
            DisplayUtils.drawShadow(posX, posY, width, height, 10, ColorUtils.rgba(0, 0, 0, 128), ColorUtils.rgba(0, 0, 0, 128));
            DisplayUtils.drawRoundedRect(posX, posY, width, height, rounding, ColorUtils.rgba(0, 0, 0, 150));
            drawTargetHead(entity, posX + spacing, posY + spacing, headSize, headSize);

            float nameX = posX + headSize + spacing * 2;
            float nameY = posY + spacing + 2;
            Scissor.push();
            Scissor.setFromComponentCoordinates(testX, testY, testW - 6, testH);
            Fonts.sfui.drawText(eventDisplay.getMatrixStack(), entity.getName().getString(), nameX, nameY, -1, 8);
            Scissor.unset();
            Scissor.pop();

            //отрисовка слотов
            if (entity instanceof PlayerEntity) {
                PlayerEntity player = (PlayerEntity) entity;
                float itemX = nameX;
                float itemY = nameY + 12;
                float itemSize = 15;
                float itemSpacing = 17;

                drawItemStack(eventDisplay.getMatrixStack(), player.getHeldItemMainhand(), itemX, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.HEAD), itemX + itemSpacing, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.CHEST), itemX + itemSpacing * 2, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.LEGS), itemX + itemSpacing * 3, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getItemStackFromSlot(EquipmentSlotType.FEET), itemX + itemSpacing * 4, itemY, itemSize);
                drawItemStack(eventDisplay.getMatrixStack(), player.getHeldItemOffhand(), itemX + itemSpacing * 5, itemY, itemSize);
            }

            float lineX = posX + spacing;
            float lineY = posY + height - 16;
            float lineWidth = width - spacing * 2;
            DisplayUtils.drawRoundedRect(lineX, lineY, lineWidth, 1, 0.5f, ColorUtils.rgba(255, 255, 255, 30));
            //здоровье
            float healthBarX = posX + spacing;
            float healthBarHeight = 5;
            float healthBarY = posY + height - spacing - healthBarHeight;
            String hpText = String.format("%.0fhp", hp);
            float textWidth = Fonts.sfui.getWidth(hpText, 8);
            float healthBarWidth = width - (spacing * 3) - textWidth;
            DisplayUtils.drawRoundedRect(healthBarX, healthBarY, healthBarWidth, healthBarHeight, 2.5f, ColorUtils.rgba(32, 32, 32, 200));
            DisplayUtils.drawRoundedRect(healthBarX, healthBarY, healthBarWidth * healthAnimation, healthBarHeight, 2.5f, ColorUtils.rgba(255, 105, 180, 255));
            Fonts.sfui.drawText(eventDisplay.getMatrixStack(), hpText, healthBarX + healthBarWidth + spacing, healthBarY - 1.5f, ColorUtils.rgba(255, 105, 180, 255), 8);
            GlStateManager.popMatrix();
        }
    }

    private LivingEntity getTarget(LivingEntity nullTarget) {
        LivingEntity auraTarget = Expensive.getInstance().getFunctionRegistry().getKillAura().getTarget();
        LivingEntity target = nullTarget;
        if (auraTarget != null) {
            stopWatch.reset();
            allow = true;
            target = auraTarget;
        } else if (mc.currentScreen instanceof ChatScreen) {
            stopWatch.reset();
            allow = true;
            target = mc.player;
        } else if (mc.pointedEntity instanceof LivingEntity) {
            stopWatch.reset();
            allow = true;
            target = (LivingEntity) mc.pointedEntity;
        } else {
            allow = false;
        }
        return target;
    }

    private void drawItemStack(MatrixStack matrixStack, ItemStack stack, float x, float y, float size) {
        if (stack.isEmpty()) {
            float crossSize = 7.5f;
            float thickness = 1.2f;
            int color = ColorUtils.rgba(100, 100, 100, 150);

            GlStateManager.pushMatrix();
            GlStateManager.translated(x + size / 2.0f, y + size / 2.0f, 0);
            GlStateManager.rotatef(45, 0, 0, 1);
            DisplayUtils.drawRoundedRect(-crossSize / 2.0f, -thickness / 2.0f, crossSize, thickness, 0.5f, color);
            GlStateManager.rotatef(90, 0, 0, 1);
            DisplayUtils.drawRoundedRect(-crossSize / 2.0f, -thickness / 2.0f, crossSize, thickness, 0.5f, color);
            GlStateManager.popMatrix();
            return;
        }

        GlStateManager.pushMatrix();
        GlStateManager.enableBlend();
        GlStateManager.blendFunc(770, 771);

        float scale = size / 16.0f;
        GlStateManager.scaled(scale, scale, scale);

        mc.getItemRenderer().renderItemAndEffectIntoGUI(stack, (int)(x / scale), (int)(y / scale));
        mc.getItemRenderer().renderItemOverlayIntoGUI(mc.fontRenderer, stack, (int)(x / scale), (int)(y / scale), null);

        GlStateManager.disableBlend();
        GlStateManager.popMatrix();
    }

    public void drawTargetHead(LivingEntity entity, float x, float y, float width, float height) {
        if (entity != null) {
            EntityRenderer<? super LivingEntity> rendererManager = mc.getRenderManager().getRenderer(entity);

            GlStateManager.pushMatrix();
            Stencil.initStencilToWrite();
            DisplayUtils.drawRoundedRect(x, y, width, height, 4, -1);
            Stencil.readStencilBuffer(1);
            drawFace(rendererManager.getEntityTexture(entity), x, y, 8F, 8F, 8F, 8F, width, height, 64F, 64F, entity);
            Stencil.uninitStencilBuffer();
            GlStateManager.popMatrix();
        }
    }

    public static void sizeAnimation(double width, double height, double scale) {
        GlStateManager.translated(width, height, 0);
        GlStateManager.scaled(scale, scale, scale);
        GlStateManager.translated(-width, -height, 0);
    }

    public void drawFace(ResourceLocation res, float d,
                         float y,
                         float u,
                         float v,
                         float uWidth,
                         float vHeight,
                         float width,
                         float height,
                         float tileWidth,
                         float tileHeight,
                         LivingEntity target) {
        GL11.glPushMatrix();
        GL11.glEnable(GL11.GL_BLEND);
        mc.getTextureManager().bindTexture(res);
        float hurtPercent = (target.hurtTime - (target.hurtTime != 0 ? mc.timer.renderPartialTicks : 0.0f)) / 10.0f;
        GL11.glColor4f(1, 1 - hurtPercent, 1 - hurtPercent, 1);
        AbstractGui.drawScaledCustomSizeModalRect(d, y, u, v, uWidth, vHeight, width, height, tileWidth, tileHeight);
        GL11.glColor4f(1, 1, 1, 1);
        GL11.glPopMatrix();
    }
}

Ну хз, не судите строго да не судимыми будете
/del Оч говно честно
 
Жаль, что тебе не понравилось, давно просто не занимался джава девом
Эх ти сука растрогал ладно не настока плохо но почему на 3.1 так трудно написать норм шрифт
 
Эх ти сука растрогал ладно не настока плохо но почему на 3.1 так трудно написать норм шрифт
Я на скорую руку просто делаю чисто по Визуалу, если будут просить добавлять шрифт, то сделаю
 
Назад
Сверху Снизу