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

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

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
18 Июн 2025
Сообщения
56
Реакции
1
Выберите загрузчик игры
  1. Fabric
заливаю говно худ

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


TargetHud:
Expand Collapse Copy
package fun.rich.display.hud;

import fun.rich.utils.interactions.interact.PlayerInteractionHelper;
import fun.rich.utils.math.time.StopWatch;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.entity.EntityRenderer;
import net.minecraft.client.render.entity.LivingEntityRenderer;
import net.minecraft.client.render.entity.state.LivingEntityRenderState;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.LivingEntity;
import net.minecraft.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.Direction;
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.display.geometry.Render2D;
import fun.rich.utils.client.packet.network.Network;

import java.awt.*;

public class TargetHud extends AbstractDraggable {

    private final StopWatch stopWatch = new StopWatch();
    private LivingEntity lastTarget;

    private float healthAnimation = 0;
    private float trailAnimation = 0;
    private float absorptionAnimation = 0;
    private float displayedHealth = 0;
    private long lastUpdateTime = System.currentTimeMillis();
    private long startTime = System.currentTimeMillis();

    public TargetHud() {
        super("Target Hud", 10, 80, 112, 40, 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();
            stopWatch.reset();
        } else if (PlayerInteractionHelper.isChat(mc.currentScreen)) {
            lastTarget = mc.player;
            startAnimation();
            stopWatch.reset();
        } else if (stopWatch.finished(500)) {
            stopAnimation();
        }
    }

    private float lerp(float current, float target, float dt, float speed) {
        float factor = (float)(1.0 - Math.pow(0.001, dt * speed));
        return current + (target - current) * factor;
    }

    private float getHp(LivingEntity e) {
        if (e.isInvisible() && !Network.isSpookyTime() && !Network.isCopyTime())
            return e.getMaxHealth();
        return e.getHealth();
    }

    private String getHpString(float hp) {
        if (lastTarget != null && lastTarget.isInvisible()
                && !Network.isSpookyTime() && !Network.isCopyTime()) return "??";
        if (hp >= 100) return String.valueOf((int) hp);
        else if (hp >= 10) return String.format("%.1f", hp);
        else return String.format("%.2f", hp);
    }

    @Override
    public void drawDraggable(DrawContext context) {
        if (!Hud.getInstance().interfaceSettings.isSelected("Target Hud") || !Hud.getInstance().state) return;
        if (lastTarget == null) return;

        long now = System.currentTimeMillis();
        float dt = Math.min((now - lastUpdateTime) / 1000f, 0.1f);
        lastUpdateTime = now;

        float scaleAlpha = scaleAnimation.getOutput().floatValue();
        if (scaleAlpha <= 0) return;

        MatrixStack matrix = context.getMatrices();

        setWidth(112);
        setHeight(40);

        float x = getX();
        float y = getY();

        drawBackground(matrix, x, y, scaleAlpha);
        drawFace(context, x, y, scaleAlpha);
        drawContent(matrix, x, y, scaleAlpha, dt);
    }

    private void drawBackground(MatrixStack matrix, float x, float y, float alpha) {
        int a = (int)(255 * alpha);

        rectangle.render(ShapeProperties.create(matrix, x + 2, y + 2, getWidth() - 4, getHeight() - 4)
                .round(6f)
                .thickness(0.35f)
                .outlineColor(new Color(90, 90, 90, a).getRGB())
                .color(
                        new Color(52, 52, 52, a).getRGB(),
                        new Color(22, 22, 22, a).getRGB(),
                        new Color(52, 52, 52, a).getRGB(),
                        new Color(22, 22, 22, a).getRGB())
                .build());
    }

    private void drawFace(DrawContext context, float x, float y, float alpha) {
        EntityRenderer<? super LivingEntity, ?> baseRenderer = mc.getEntityRenderDispatcher().getRenderer(lastTarget);
        if (!(baseRenderer instanceof LivingEntityRenderer<?, ?, ?>)) return;

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

        LivingEntityRenderState state = renderer.getAndUpdateRenderState(lastTarget, tickCounter.getTickDelta(false));
        Identifier tex = renderer.getTexture(state);

        float faceSize = 24f;
        float faceX = x + 9f;
        float faceY = y + 8f;

        Render2D.drawTexture(context, tex,
                faceX, faceY, faceSize,
                4f,
                8, 8, 64,
                ColorAssist.getRect(1),
                ColorAssist.multRed(-1, 1 + lastTarget.hurtTime / 4f));
    }

    private void drawContent(MatrixStack matrix, float x, float y, float alpha, float dt) {
        FontRenderer font = Fonts.getSize(12, Fonts.Type.DEFAULT);

        float faceSize = 24f;
        float contentX = x + 9 + faceSize + 6;
        float nameY = y + 13f;

        float hp     = getHp(lastTarget);
        float maxHp  = Math.max(lastTarget.getMaxHealth(), 1f);
        float absorp = lastTarget.getAbsorptionAmount();
        boolean invisible = lastTarget.isInvisible() && !Network.isSpookyTime() && !Network.isCopyTime();

        float targetDisplayHp = invisible ? maxHp : hp + absorp;
        displayedHealth = lerp(displayedHealth, targetDisplayHp, dt, 5f);
        String hpStr = getHpString(displayedHealth);

        int textAlpha = (int)(255 * alpha);
        float hpWidth = font.getStringWidth(hpStr);

        font.drawString(matrix, lastTarget.getName().getString(),
                contentX, nameY,
                new Color(255, 255, 255, textAlpha).getRGB());

        font.drawString(matrix, hpStr,
                x + getWidth() - 10 - hpWidth, nameY,
                new Color(215, 215, 215, textAlpha).getRGB());

        float targetHpPercent = invisible ? 1f : hp / maxHp;
        healthAnimation = lerp(healthAnimation, targetHpPercent, dt, 3f);

        if (targetHpPercent > trailAnimation) trailAnimation = targetHpPercent;
        trailAnimation = lerp(trailAnimation, targetHpPercent, dt, 3.5f);

        float targetAbsorp = invisible ? 0f : absorp / maxHp;
        absorptionAnimation = lerp(absorptionAnimation, targetAbsorp, dt, 3f);

        float barX = contentX;
        float barY = nameY + 12f;
        float barW = 64f;
        float barH = 4f;
        float barR = 2f;

        rectangle.render(ShapeProperties.create(matrix, barX, barY, barW, barH)
                .round(barR)
                .color(new Color(30, 30, 30, (int)(200 * alpha)).getRGB())
                .build());

        float hpPct    = MathHelper.clamp(healthAnimation, 0f, 1f);
        float trailPct = MathHelper.clamp(trailAnimation, 0f, 1f);

        if (trailPct > hpPct) {
            rectangle.render(ShapeProperties.create(matrix, barX, barY, barW * trailPct, barH)
                    .round(barR)
                    .color(new Color(55, 55, 55, (int)(160 * alpha)).getRGB())
                    .build());
        }

        if (hpPct > 0.01f) {
            long elapsed = System.currentTimeMillis() - startTime;
            float waveSpeed = 1500f;
            float wavePhase = (elapsed % (long) waveSpeed) / waveSpeed * (float) Math.PI * 2f;

            int[] colors = new int[4];
            for (int i = 0; i < 2; i++) {
                float wave = (float) Math.sin(wavePhase - i * 1.5f);
                float wf = (wave + 1f) / 2f;
                int gray = (int)(155 + 100 * wf);
                colors[i * 2]     = new Color(gray, gray, gray, (int)(255 * alpha)).getRGB();
                colors[i * 2 + 1] = new Color(gray, gray, gray, (int)(255 * alpha)).getRGB();
            }

            rectangle.render(ShapeProperties.create(matrix, barX, barY, barW * hpPct, barH)
                    .round(barR)
                    .color(colors)
                    .build());
        }

        float absorpPct = MathHelper.clamp(absorptionAnimation, 0f, 1f);
        if (absorpPct > 0.01f && !Network.isFunTime()) {
            long elapsed = System.currentTimeMillis() - startTime;
            float waveSpeed = 1200f;
            float wavePhase = (elapsed % (long) waveSpeed) / waveSpeed * (float) Math.PI * 2f;

            int[] goldColors = new int[4];
            for (int i = 0; i < 2; i++) {
                float wave = (float) Math.sin(wavePhase - i * 1.5f);
                float wf = (wave + 1f) / 2f;
                int cg = (int)(165 + 50 * wf);
                goldColors[i * 2]     = new Color(255, cg, 0, (int)(200 * alpha)).getRGB();
                goldColors[i * 2 + 1] = new Color(255, cg, 0, (int)(200 * alpha)).getRGB();
            }

            rectangle.render(ShapeProperties.create(matrix, barX, barY, barW * absorpPct, barH)
                    .round(barR)
                    .color(goldColors)
                    .build());
        }
    }
}

наверное мой первый и последний пост
 
заливаю говно худ

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


TargetHud:
Expand Collapse Copy
package fun.rich.display.hud;

import fun.rich.utils.interactions.interact.PlayerInteractionHelper;
import fun.rich.utils.math.time.StopWatch;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.entity.EntityRenderer;
import net.minecraft.client.render.entity.LivingEntityRenderer;
import net.minecraft.client.render.entity.state.LivingEntityRenderState;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.LivingEntity;
import net.minecraft.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.Direction;
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.display.geometry.Render2D;
import fun.rich.utils.client.packet.network.Network;

import java.awt.*;

public class TargetHud extends AbstractDraggable {

    private final StopWatch stopWatch = new StopWatch();
    private LivingEntity lastTarget;

    private float healthAnimation = 0;
    private float trailAnimation = 0;
    private float absorptionAnimation = 0;
    private float displayedHealth = 0;
    private long lastUpdateTime = System.currentTimeMillis();
    private long startTime = System.currentTimeMillis();

    public TargetHud() {
        super("Target Hud", 10, 80, 112, 40, 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();
            stopWatch.reset();
        } else if (PlayerInteractionHelper.isChat(mc.currentScreen)) {
            lastTarget = mc.player;
            startAnimation();
            stopWatch.reset();
        } else if (stopWatch.finished(500)) {
            stopAnimation();
        }
    }

    private float lerp(float current, float target, float dt, float speed) {
        float factor = (float)(1.0 - Math.pow(0.001, dt * speed));
        return current + (target - current) * factor;
    }

    private float getHp(LivingEntity e) {
        if (e.isInvisible() && !Network.isSpookyTime() && !Network.isCopyTime())
            return e.getMaxHealth();
        return e.getHealth();
    }

    private String getHpString(float hp) {
        if (lastTarget != null && lastTarget.isInvisible()
                && !Network.isSpookyTime() && !Network.isCopyTime()) return "??";
        if (hp >= 100) return String.valueOf((int) hp);
        else if (hp >= 10) return String.format("%.1f", hp);
        else return String.format("%.2f", hp);
    }

    @Override
    public void drawDraggable(DrawContext context) {
        if (!Hud.getInstance().interfaceSettings.isSelected("Target Hud") || !Hud.getInstance().state) return;
        if (lastTarget == null) return;

        long now = System.currentTimeMillis();
        float dt = Math.min((now - lastUpdateTime) / 1000f, 0.1f);
        lastUpdateTime = now;

        float scaleAlpha = scaleAnimation.getOutput().floatValue();
        if (scaleAlpha <= 0) return;

        MatrixStack matrix = context.getMatrices();

        setWidth(112);
        setHeight(40);

        float x = getX();
        float y = getY();

        drawBackground(matrix, x, y, scaleAlpha);
        drawFace(context, x, y, scaleAlpha);
        drawContent(matrix, x, y, scaleAlpha, dt);
    }

    private void drawBackground(MatrixStack matrix, float x, float y, float alpha) {
        int a = (int)(255 * alpha);

        rectangle.render(ShapeProperties.create(matrix, x + 2, y + 2, getWidth() - 4, getHeight() - 4)
                .round(6f)
                .thickness(0.35f)
                .outlineColor(new Color(90, 90, 90, a).getRGB())
                .color(
                        new Color(52, 52, 52, a).getRGB(),
                        new Color(22, 22, 22, a).getRGB(),
                        new Color(52, 52, 52, a).getRGB(),
                        new Color(22, 22, 22, a).getRGB())
                .build());
    }

    private void drawFace(DrawContext context, float x, float y, float alpha) {
        EntityRenderer<? super LivingEntity, ?> baseRenderer = mc.getEntityRenderDispatcher().getRenderer(lastTarget);
        if (!(baseRenderer instanceof LivingEntityRenderer<?, ?, ?>)) return;

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

        LivingEntityRenderState state = renderer.getAndUpdateRenderState(lastTarget, tickCounter.getTickDelta(false));
        Identifier tex = renderer.getTexture(state);

        float faceSize = 24f;
        float faceX = x + 9f;
        float faceY = y + 8f;

        Render2D.drawTexture(context, tex,
                faceX, faceY, faceSize,
                4f,
                8, 8, 64,
                ColorAssist.getRect(1),
                ColorAssist.multRed(-1, 1 + lastTarget.hurtTime / 4f));
    }

    private void drawContent(MatrixStack matrix, float x, float y, float alpha, float dt) {
        FontRenderer font = Fonts.getSize(12, Fonts.Type.DEFAULT);

        float faceSize = 24f;
        float contentX = x + 9 + faceSize + 6;
        float nameY = y + 13f;

        float hp     = getHp(lastTarget);
        float maxHp  = Math.max(lastTarget.getMaxHealth(), 1f);
        float absorp = lastTarget.getAbsorptionAmount();
        boolean invisible = lastTarget.isInvisible() && !Network.isSpookyTime() && !Network.isCopyTime();

        float targetDisplayHp = invisible ? maxHp : hp + absorp;
        displayedHealth = lerp(displayedHealth, targetDisplayHp, dt, 5f);
        String hpStr = getHpString(displayedHealth);

        int textAlpha = (int)(255 * alpha);
        float hpWidth = font.getStringWidth(hpStr);

        font.drawString(matrix, lastTarget.getName().getString(),
                contentX, nameY,
                new Color(255, 255, 255, textAlpha).getRGB());

        font.drawString(matrix, hpStr,
                x + getWidth() - 10 - hpWidth, nameY,
                new Color(215, 215, 215, textAlpha).getRGB());

        float targetHpPercent = invisible ? 1f : hp / maxHp;
        healthAnimation = lerp(healthAnimation, targetHpPercent, dt, 3f);

        if (targetHpPercent > trailAnimation) trailAnimation = targetHpPercent;
        trailAnimation = lerp(trailAnimation, targetHpPercent, dt, 3.5f);

        float targetAbsorp = invisible ? 0f : absorp / maxHp;
        absorptionAnimation = lerp(absorptionAnimation, targetAbsorp, dt, 3f);

        float barX = contentX;
        float barY = nameY + 12f;
        float barW = 64f;
        float barH = 4f;
        float barR = 2f;

        rectangle.render(ShapeProperties.create(matrix, barX, barY, barW, barH)
                .round(barR)
                .color(new Color(30, 30, 30, (int)(200 * alpha)).getRGB())
                .build());

        float hpPct    = MathHelper.clamp(healthAnimation, 0f, 1f);
        float trailPct = MathHelper.clamp(trailAnimation, 0f, 1f);

        if (trailPct > hpPct) {
            rectangle.render(ShapeProperties.create(matrix, barX, barY, barW * trailPct, barH)
                    .round(barR)
                    .color(new Color(55, 55, 55, (int)(160 * alpha)).getRGB())
                    .build());
        }

        if (hpPct > 0.01f) {
            long elapsed = System.currentTimeMillis() - startTime;
            float waveSpeed = 1500f;
            float wavePhase = (elapsed % (long) waveSpeed) / waveSpeed * (float) Math.PI * 2f;

            int[] colors = new int[4];
            for (int i = 0; i < 2; i++) {
                float wave = (float) Math.sin(wavePhase - i * 1.5f);
                float wf = (wave + 1f) / 2f;
                int gray = (int)(155 + 100 * wf);
                colors[i * 2]     = new Color(gray, gray, gray, (int)(255 * alpha)).getRGB();
                colors[i * 2 + 1] = new Color(gray, gray, gray, (int)(255 * alpha)).getRGB();
            }

            rectangle.render(ShapeProperties.create(matrix, barX, barY, barW * hpPct, barH)
                    .round(barR)
                    .color(colors)
                    .build());
        }

        float absorpPct = MathHelper.clamp(absorptionAnimation, 0f, 1f);
        if (absorpPct > 0.01f && !Network.isFunTime()) {
            long elapsed = System.currentTimeMillis() - startTime;
            float waveSpeed = 1200f;
            float wavePhase = (elapsed % (long) waveSpeed) / waveSpeed * (float) Math.PI * 2f;

            int[] goldColors = new int[4];
            for (int i = 0; i < 2; i++) {
                float wave = (float) Math.sin(wavePhase - i * 1.5f);
                float wf = (wave + 1f) / 2f;
                int cg = (int)(165 + 50 * wf);
                goldColors[i * 2]     = new Color(255, cg, 0, (int)(200 * alpha)).getRGB();
                goldColors[i * 2 + 1] = new Color(255, cg, 0, (int)(200 * alpha)).getRGB();
            }

            rectangle.render(ShapeProperties.create(matrix, barX, barY, barW * absorpPct, barH)
                    .round(barR)
                    .color(goldColors)
                    .build());
        }
    }
}

наверное мой первый и последний пост
чем то смахивает на луминар скид пульс noad
 
Назад
Сверху Снизу