Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Визуальная часть TargetHUD | Zenith (no recode)

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
18 Фев 2024
Сообщения
5
Реакции
0
Выберите загрузчик игры
  1. Fabric
Привет, сливаю переписанный таргет худ с зенита:
1765276082470.png

А вот код:
Код:
Expand Collapse Copy
package cloud.dev.implement.features.draggables;


import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.network.AbstractClientPlayerEntity;
import net.minecraft.client.render.OverlayTexture;
import net.minecraft.client.render.RenderPhase;
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.render.item.ItemRenderState;
import net.minecraft.client.render.item.ItemRenderer;
import net.minecraft.client.texture.AbstractTexture;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.LivingEntity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.item.ModelTransformationMode;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import cloud.dev.api.feature.draggable.AbstractDraggable;
import cloud.dev.api.system.animation.Animation;
import cloud.dev.api.system.animation.Direction;
import cloud.dev.api.system.animation.implement.DecelerateAnimation;
import cloud.dev.api.system.font.FontRenderer;
import cloud.dev.api.system.font.Fonts;
import cloud.dev.api.system.shape.ShapeProperties;
import cloud.dev.common.util.color.ColorUtil;
import cloud.dev.common.util.item.ItemUtil;
import cloud.dev.common.util.math.MathUtil;
import cloud.dev.common.util.other.StopWatch;
import cloud.dev.common.util.entity.PlayerIntersectionUtil;
import cloud.dev.common.util.render.Render2DUtil;
import cloud.dev.common.util.render.ScissorManager;
import cloud.dev.core.Main;
import cloud.dev.implement.features.modules.combat.Aura;
import cloud.dev.implement.features.modules.combat.TriggerBot;

import java.util.List;
import java.util.stream.StreamSupport;

public class TargetHud extends AbstractDraggable {
    private final Animation animation = new DecelerateAnimation().setMs(200).setValue(1);
    private final StopWatch stopWatch = new StopWatch();
    private LivingEntity lastTarget;
    private Item lastItem = Items.AIR;
    private float health;

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

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

    @Override
    public void tick() {
        LivingEntity auraTarget = Aura.getInstance().getTarget();
        LivingEntity triggerBotTarget = TriggerBot.getInstance().getTarget();

        if (auraTarget != null) {
            lastTarget = auraTarget;
            startAnimation();
        } else if (triggerBotTarget != null) {
            lastTarget = triggerBotTarget;
            startAnimation();
            stopWatch.reset();
        } else if (PlayerIntersectionUtil.isChat(mc.currentScreen)) {
            lastTarget = mc.player;
            startAnimation();
        } else if (stopWatch.finished(500)) stopAnimation();
    }

    @Override
    public void drawDraggable(DrawContext context) {
        if (lastTarget != null) {
            MatrixStack matrix = context.getMatrices();
            drawUsingItem(context, matrix);
            drawArmor(context, matrix);
            drawMain(context, matrix);
            drawFace(context);
        }
    }

    private void drawMain(DrawContext context, MatrixStack matrix) {
        FontRenderer fontn = Fonts.getSize(18, Fonts.Type.BOLD);
        FontRenderer font = Fonts.getSize(18);
        float hp = PlayerIntersectionUtil.getHealth(lastTarget);
        float widthHp = 86;
        String stringHp = PlayerIntersectionUtil.getHealthString(hp);
        health = MathHelper.clamp(MathUtil.interpolateSmooth(3, health, Math.round(hp / lastTarget.getMaxHealth() * widthHp)), 2, widthHp);

        blur.render(ShapeProperties.create(matrix, getX(), getY(), getWidth(), getHeight()).round(5).softness(1)
                .thickness(2).outlineColor(ColorUtil.getOutline()).color(ColorUtil.getRect(0.7F)).build());

        if (font.getStringWidth(lastTarget.getName().getString()) > 60) {
            ScissorManager scissorManager = Main.getInstance().getScissorManager();
            scissorManager.push(matrix.peek().getPositionMatrix(), getX(), getY(), getWidth() - 1, getHeight());
            font.drawGradientString(matrix, lastTarget.getName().getString(), getX() + 34, getY() + 8, ColorUtil.getText(), ColorUtil.getText(0.6F));
            scissorManager.pop();
        } else font.drawString(matrix, lastTarget.getName().getString(), getX() + 32, getY() + 8, ColorUtil.getText());

        rectangle.render(ShapeProperties.create(matrix, getX() + 6.3f, getY() + 27F, widthHp, 6F)
                .round(2.75F).color(0xFF060712).build());
        rectangle.render(ShapeProperties.create(matrix, getX() + 6.3f, getY() + 27F, health, 6F)
                .softness(6).round(3).color(ColorUtil.roundClientColor(0.2F)).build());
        // тут на ваше решение
        rectangle.render(ShapeProperties.create(matrix, getX() + 6.3f, getY() + 27F, health, 6F)
                .round(2.75F).color(ColorUtil.roundClientColor(1)).build());

        float width = Fonts.getSize(14).getStringWidth(stringHp);
        Fonts.getSize(14).drawString(matrix, stringHp + " HP", getX() + 32, getY() + 19, ColorUtil.getText());
    }

    private void drawArmor(DrawContext context, MatrixStack matrix) {
        List<ItemStack> items = StreamSupport.stream(lastTarget.getEquippedItems().spliterator(), false).filter(s -> !s.isEmpty()).toList();

        if (!items.isEmpty()) {
            float x = 312312;
            float y = getY() - 13;
            float itemX = -10.5F;

            matrix.push();
            matrix.translate(x, y, -200);
            blur.render(ShapeProperties.create(matrix, 0, 0, items.size() * 11, 11).round(2.5F).softness(1)
                    .thickness(2).outlineColor(ColorUtil.getOutline()).color(ColorUtil.getRect(0.7F)).build());

            for (ItemStack stack : items) {
                Render2DUtil.defaultDrawStack(context, stack, itemX += 11, 0.5F, false, true, 0.5F);
            }
            matrix.pop();
        }
    }

    private void drawUsingItem(DrawContext context, MatrixStack matrix) {
        animation.setDirection(lastTarget.isUsingItem() ? Direction.FORWARDS : Direction.BACKWARDS);
        if (!lastTarget.getActiveItem().isEmpty() && lastTarget.getActiveItem().getCount() != 0) {
            lastItem = lastTarget.getActiveItem().getItem();
        }

        if (!animation.isFinished(Direction.BACKWARDS) && !lastItem.equals(Items.AIR)) {
            int size = 24;
            float anim = animation.getOutput().floatValue();
            float progress = (lastTarget.getItemUseTime() + tickCounter.getTickDelta(false)) / ItemUtil.maxUseTick(lastItem) * 360;

            float x = getX() - (size + 5) * anim;
            float y = getY() + 6;

            ScissorManager scissorManager = Main.getInstance().getScissorManager();
            scissorManager.push(matrix.peek().getPositionMatrix(), getX() - 50, getY(), 50, getHeight());
            MathUtil.setAlpha(anim, () -> {
                blur.render(ShapeProperties.create(matrix, x, y, size, size).round(12).softness(1)
                        .thickness(2).outlineColor(ColorUtil.getOutline()).color(ColorUtil.getRect(0.7F)).build());

                arc.render(ShapeProperties.create(matrix, x, y, size, size).round(0.4F).thickness(0.2f).end(progress)
                        .color(ColorUtil.fade(0), ColorUtil.fade(200), ColorUtil.fade(0), ColorUtil.fade(200)).build());

                Render2DUtil.defaultDrawStack(context, lastItem.getDefaultStack(), x + 3, y + 3, false, false, 1);
            });
            scissorManager.pop();
        }
    }

    private void drawFace(DrawContext context) {
        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 textureLocation = renderer.getTexture(state);
        AbstractTexture abstractTexture = mc.getTextureManager().getTexture(textureLocation);

       /* MinecraftTextureHelper minecraftTextureHelper = MinecraftTextureHelper.INSTANCE;
        RenderPhase.Texture texture = minecraftTextureHelper.getOrCreateTexture(abstractTexture);
        MinecraftTextureHelper.UV uv = minecraftTextureHelper.getFaceUV(currentTarget.getClass()); */

       Render2DUtil.drawTexture(context, textureLocation, getX() + 5.7f, getY() + 4.5F, 21, 3, 8, 8, 64, ColorUtil.getRect(1), ColorUtil.multRed(-1, 1 + lastTarget.hurtTime / 4F));
    }
}
 
Последнее редактирование:
Привет, сливаю переписанный таргет худ с зенита:
Посмотреть вложение 321699
А вот код:
Код:
Expand Collapse Copy
package cloud.dev.implement.features.draggables;


import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.network.AbstractClientPlayerEntity;
import net.minecraft.client.render.OverlayTexture;
import net.minecraft.client.render.RenderPhase;
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.render.item.ItemRenderState;
import net.minecraft.client.render.item.ItemRenderer;
import net.minecraft.client.texture.AbstractTexture;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.LivingEntity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.item.ModelTransformationMode;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import cloud.dev.api.feature.draggable.AbstractDraggable;
import cloud.dev.api.system.animation.Animation;
import cloud.dev.api.system.animation.Direction;
import cloud.dev.api.system.animation.implement.DecelerateAnimation;
import cloud.dev.api.system.font.FontRenderer;
import cloud.dev.api.system.font.Fonts;
import cloud.dev.api.system.shape.ShapeProperties;
import cloud.dev.common.util.color.ColorUtil;
import cloud.dev.common.util.item.ItemUtil;
import cloud.dev.common.util.math.MathUtil;
import cloud.dev.common.util.other.StopWatch;
import cloud.dev.common.util.entity.PlayerIntersectionUtil;
import cloud.dev.common.util.render.Render2DUtil;
import cloud.dev.common.util.render.ScissorManager;
import cloud.dev.core.Main;
import cloud.dev.implement.features.modules.combat.Aura;
import cloud.dev.implement.features.modules.combat.TriggerBot;

import java.util.List;
import java.util.stream.StreamSupport;

public class TargetHud extends AbstractDraggable {
    private final Animation animation = new DecelerateAnimation().setMs(200).setValue(1);
    private final StopWatch stopWatch = new StopWatch();
    private LivingEntity lastTarget;
    private Item lastItem = Items.AIR;
    private float health;

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

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

    @Override
    public void tick() {
        LivingEntity auraTarget = Aura.getInstance().getTarget();
        LivingEntity triggerBotTarget = TriggerBot.getInstance().getTarget();

        if (auraTarget != null) {
            lastTarget = auraTarget;
            startAnimation();
        } else if (triggerBotTarget != null) {
            lastTarget = triggerBotTarget;
            startAnimation();
            stopWatch.reset();
        } else if (PlayerIntersectionUtil.isChat(mc.currentScreen)) {
            lastTarget = mc.player;
            startAnimation();
        } else if (stopWatch.finished(500)) stopAnimation();
    }

    @Override
    public void drawDraggable(DrawContext context) {
        if (lastTarget != null) {
            MatrixStack matrix = context.getMatrices();
            drawUsingItem(context, matrix);
            drawArmor(context, matrix);
            drawMain(context, matrix);
            drawFace(context);
        }
    }

    private void drawMain(DrawContext context, MatrixStack matrix) {
        FontRenderer fontn = Fonts.getSize(18, Fonts.Type.BOLD);
        FontRenderer font = Fonts.getSize(18);
        float hp = PlayerIntersectionUtil.getHealth(lastTarget);
        float widthHp = 86;
        String stringHp = PlayerIntersectionUtil.getHealthString(hp);
        health = MathHelper.clamp(MathUtil.interpolateSmooth(3, health, Math.round(hp / lastTarget.getMaxHealth() * widthHp)), 2, widthHp);

        blur.render(ShapeProperties.create(matrix, getX(), getY(), getWidth(), getHeight()).round(5).softness(1)
                .thickness(2).outlineColor(ColorUtil.getOutline()).color(ColorUtil.getRect(0.7F)).build());

        if (font.getStringWidth(lastTarget.getName().getString()) > 60) {
            ScissorManager scissorManager = Main.getInstance().getScissorManager();
            scissorManager.push(matrix.peek().getPositionMatrix(), getX(), getY(), getWidth() - 1, getHeight());
            font.drawGradientString(matrix, lastTarget.getName().getString(), getX() + 34, getY() + 8, ColorUtil.getText(), ColorUtil.getText(0.6F));
            scissorManager.pop();
        } else font.drawString(matrix, lastTarget.getName().getString(), getX() + 32, getY() + 8, ColorUtil.getText());

        rectangle.render(ShapeProperties.create(matrix, getX() + 6.3f, getY() + 27F, widthHp, 6F)
                .round(2.75F).color(0xFF060712).build());
        rectangle.render(ShapeProperties.create(matrix, getX() + 6.3f, getY() + 27F, health, 6F)
                .softness(6).round(3).color(ColorUtil.roundClientColor(0.2F)).build());
        // тут на ваше решение
        rectangle.render(ShapeProperties.create(matrix, getX() + 6.3f, getY() + 27F, health, 6F)
                .round(2.75F).color(ColorUtil.roundClientColor(1)).build());

        float width = Fonts.getSize(14).getStringWidth(stringHp);
        Fonts.getSize(14).drawString(matrix, stringHp + " HP", getX() + 32, getY() + 19, ColorUtil.getText());
    }

    private void drawArmor(DrawContext context, MatrixStack matrix) {
        List<ItemStack> items = StreamSupport.stream(lastTarget.getEquippedItems().spliterator(), false).filter(s -> !s.isEmpty()).toList();

        if (!items.isEmpty()) {
            float x = 312312;
            float y = getY() - 13;
            float itemX = -10.5F;

            matrix.push();
            matrix.translate(x, y, -200);
            blur.render(ShapeProperties.create(matrix, 0, 0, items.size() * 11, 11).round(2.5F).softness(1)
                    .thickness(2).outlineColor(ColorUtil.getOutline()).color(ColorUtil.getRect(0.7F)).build());

            for (ItemStack stack : items) {
                Render2DUtil.defaultDrawStack(context, stack, itemX += 11, 0.5F, false, true, 0.5F);
            }
            matrix.pop();
        }
    }

    private void drawUsingItem(DrawContext context, MatrixStack matrix) {
        animation.setDirection(lastTarget.isUsingItem() ? Direction.FORWARDS : Direction.BACKWARDS);
        if (!lastTarget.getActiveItem().isEmpty() && lastTarget.getActiveItem().getCount() != 0) {
            lastItem = lastTarget.getActiveItem().getItem();
        }

        if (!animation.isFinished(Direction.BACKWARDS) && !lastItem.equals(Items.AIR)) {
            int size = 24;
            float anim = animation.getOutput().floatValue();
            float progress = (lastTarget.getItemUseTime() + tickCounter.getTickDelta(false)) / ItemUtil.maxUseTick(lastItem) * 360;

            float x = getX() - (size + 5) * anim;
            float y = getY() + 6;

            ScissorManager scissorManager = Main.getInstance().getScissorManager();
            scissorManager.push(matrix.peek().getPositionMatrix(), getX() - 50, getY(), 50, getHeight());
            MathUtil.setAlpha(anim, () -> {
                blur.render(ShapeProperties.create(matrix, x, y, size, size).round(12).softness(1)
                        .thickness(2).outlineColor(ColorUtil.getOutline()).color(ColorUtil.getRect(0.7F)).build());

                arc.render(ShapeProperties.create(matrix, x, y, size, size).round(0.4F).thickness(0.2f).end(progress)
                        .color(ColorUtil.fade(0), ColorUtil.fade(200), ColorUtil.fade(0), ColorUtil.fade(200)).build());

                Render2DUtil.defaultDrawStack(context, lastItem.getDefaultStack(), x + 3, y + 3, false, false, 1);
            });
            scissorManager.pop();
        }
    }

    private void drawFace(DrawContext context) {
        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 textureLocation = renderer.getTexture(state);
        AbstractTexture abstractTexture = mc.getTextureManager().getTexture(textureLocation);

       /* MinecraftTextureHelper minecraftTextureHelper = MinecraftTextureHelper.INSTANCE;
        RenderPhase.Texture texture = minecraftTextureHelper.getOrCreateTexture(abstractTexture);
        MinecraftTextureHelper.UV uv = minecraftTextureHelper.getFaceUV(currentTarget.getClass()); */

       Render2DUtil.drawTexture(context, textureLocation, getX() + 5.7f, getY() + 4.5F, 21, 3, 8, 8, 64, ColorUtil.getRect(1), ColorUtil.multRed(-1, 1 + lastTarget.hurtTime / 4F));
    }
}
+- chut shrift pomeniat i zaebis
 
Назад
Сверху Снизу