Исходник TargetHud | exp 3.1 ready

Начинающий
Статус
Оффлайн
Регистрация
23 Апр 2024
Сообщения
50
Реакции[?]
0
Поинты[?]
0

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

ssDesktop Screenshot 2024.10.12 - 18.24.31.93.png
не судите строго,моя первая робота!
Пожалуйста, авторизуйтесь для просмотра ссылки.


Full code:
idk:
package eva.ware.ui.display.impl;

import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;

import eva.ware.Evaware;
import eva.ware.events.EventDisplay;
import eva.ware.modules.api.ModuleManager;
import eva.ware.modules.impl.render.HUD;
import eva.ware.ui.display.ElementRenderer;
import eva.ware.ui.themes.Theme;
import eva.ware.utils.animations.Animation;
import eva.ware.utils.animations.Direction;
import eva.ware.utils.animations.impl.EaseBackIn;
import eva.ware.utils.client.ClientUtil;
import eva.ware.utils.drag.Dragging;
import eva.ware.utils.math.MathUtil;
import eva.ware.utils.math.StopWatch;
import eva.ware.utils.math.Vector4i;
import eva.ware.utils.render.color.ColorUtils;
import eva.ware.utils.render.font.Fonts;
import eva.ware.utils.render.gl.Scissor;
import eva.ware.utils.render.gl.Stencil;
import eva.ware.utils.render.rect.DisplayUtils;
import eva.ware.utils.render.rect.RectUtil;
import eva.ware.utils.text.GradientUtil;
import eva.ware.utils.text.font.ClientFonts;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.entity.player.AbstractClientPlayerEntity;
import net.minecraft.client.gui.AbstractGui;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
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;
// BY PSYHODNYSKII
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;

@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;
    float width = 138 / 1.5f;
    float height = 54 / 1.5f;
    // BY PSYHODNYSKII
    @Override
    public void render(EventDisplay eventDisplay) {
        entity = getTarget(entity);

        float rounding = 6;
        boolean out = !allow || stopWatch.isReached(1000);
        animation.setDuration(out ? 600 : 500);
        animation.setDirection(out ? Direction.BACKWARDS : Direction.FORWARDS);
        FloatFormatter formatter = new FloatFormatter();

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

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

            float posX = drag.getX();
            float posY = drag.getY();

            int headSize = 28;
            float spacing = 5;
            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();
            float healthPercent = (hp / maxHp) * 100;

            String healthText = String.format("        %.1f%%", healthPercent);

            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;
            float finalHp;
            String header = mc.ingameGUI.getTabList().header == null ? " " : mc.ingameGUI.getTabList().header.getString().toLowerCase();
            if (mc.getCurrentServerData() != null && mc.getCurrentServerData().serverIP.contains("funsky")) {
                finalHp = formatter.format(hp);
            } else {
                finalHp = formatter.format((hp + entity.getAbsorptionAmount()));
            }
            if (mc.getCurrentServerData() != null && mc.getCurrentServerData().serverIP.contains("funtime") && (header.contains("анархия") || header.contains("гриферский")) && this.entity instanceof PlayerEntity) {
                hp = (float)score.getScorePoints();
                maxHp = 20.0F;
            }

            this.healthAnimation = MathUtil.fast(this.healthAnimation, MathHelper.clamp(hp / maxHp, 0.0F, 1.0F), 10.0F);
            this.absorptionAnimation = MathUtil.fast(this.absorptionAnimation, MathHelper.clamp(this.entity.getAbsorptionAmount() / maxHp, 0.0F, 1.0F), 10.0F);
            if (mc.getCurrentServerData() != null && mc.getCurrentServerData().serverIP.contains("funtime") && (header.contains("анархия") || header.contains("гриферский")) && this.entity instanceof PlayerEntity) {
                hp = (float)score.getScorePoints();
                maxHp = 20.0F;
            }
            // BY PSYHODNYSKII
            GlStateManager.pushMatrix();

            sizeAnimation(posX + (width / 0.5f), posY + (height / 1), animation.getOutput());
            DisplayUtils.drawRoundedRect(posX, posY, width, height, 5, ColorUtils.rgba(19, 29, 35, 229)); // Adjust color and opacity

            if (Evaware.getInstance().getModuleManager().getHud().tHudMode.is("Обычный")) {

                float shadowX = posX + 3 + 2; // Смещение по X
                float shadowY = posY + 3 + 2; // Смещение по Y
                int shadowWidth = 26; // Ширина тени
                int shadowHeight = 29; // Высота тени
                int shadowColor = ColorUtils.setAlpha(Theme.rectColor, 80); // Цвет тени

                // Рисуем тень
                DisplayUtils.drawShadow(shadowX, shadowY, shadowWidth, shadowHeight, 8, shadowColor, shadowColor);
                DisplayUtils.drawImage(new ResourceLocation("eva/images/health.png"), posX + 53 / 1.5f, posY + 17, 7, 7, ColorUtils.rgba(255, 255, 255, 255));
                DisplayUtils.drawImage(new ResourceLocation("eva/images/steve.png"), posX + 5, posY + 5, 25, 26, ColorUtils.rgba(255, 255, 255, 255));

                //  Завися от хп типа текст

                if (hp <= 3) {
                    Fonts.sfbold.drawCenteredText(eventDisplay.getMatrixStack(), "[ EZ ]", posX + 53, posY + height / 1.3f - 0+ Fonts.sfbold.getHeight(15.4f) + 1, ColorUtils.rgb(255, 255, 255), 6F);

                }
                if (hp == mc.player.getHealth() && !(hp <= 3)) {
                    Fonts.sfbold.drawCenteredText(eventDisplay.getMatrixStack(), "[ Losing ]", posX + 53, posY + height / 1.3f - 0+ Fonts.sfbold.getHeight(15.4f) + 1, ColorUtils.rgb(255, 255, 255), 6F);
                }
                if (hp > mc.player.getHealth() && !(hp <= 3)) {
                    Fonts.sfbold.drawCenteredText(eventDisplay.getMatrixStack(), "[ Losing ]",posX + 53, posY + height / 1.3f - 0+ Fonts.sfbold.getHeight(15.4f) + 1, ColorUtils.rgb(255, 255, 255), 6F);
                } else if (hp < mc.player.getHealth() && !(hp <= 3)) {
                    Fonts.sfbold.drawCenteredText(eventDisplay.getMatrixStack(), "[ Winning ]", posX + 53, posY + height / 1.3f - 0+ Fonts.sfbold.getHeight(15.4f) + 1, ColorUtils.rgb(255, 255, 255), 6F);
                }

                // Рисуем контуры здоровья
                DisplayUtils.drawRoundedRect(posX + 5 + headSize + spacing + spacing - 9, posY + 6 + height - spacing * 2 - 4f, (width - 40), 3, new Vector4f(3, 3, 3, 3), ColorUtils.rgb(32, 32, 32));
                DisplayUtils.drawRoundedRect(posX + 5 + headSize + spacing + spacing - 9, posY + 6 + height - spacing * 2 - 4f, (width - 40) * healthAnimation, 3, new Vector4f(3, 3, 3, 3), ColorUtils.getColor(1));
                DisplayUtils.drawShadow(posX + 5 + headSize + spacing + spacing - 9, posY + 6 + height - spacing * 2 - 4f, (width - 40) * healthAnimation, 3, 8, ColorUtils.setAlpha(Theme.rectColor, 80), ColorUtils.setAlpha(Theme.mainRectColor, 80));

                // Подсчет ширины текста имени
                float maxTextWidth = (width - (headSize + spacing * 2)) - 10;
                float nameWidth = Fonts.exp4.getWidth(name, 8, 0.07f);

                // Если текст выходит за пределы, обрезаем его
                if (nameWidth > maxTextWidth) {
                    while (nameWidth > maxTextWidth && name.length() > 0) {
                        name = name.substring(0, name.length() - 1);
                        nameWidth = Fonts.exp4.getWidth(name, 8, 0.07f);
                    }
                    name += "...";
                }

                Scissor.push();
                Scissor.setFromComponentCoordinates(testX, testY, testW, testH);



                float fixedHeadSize = 28;

                Fonts.exp4.drawText(eventDisplay.getMatrixStack(), name, posX - 4.3f + fixedHeadSize + spacing + spacing, posY + 1 + spacing, Theme.textColor, 8, .07f);
                Fonts.sfui.drawText(
                        eventDisplay.getMatrixStack(),
                        healthText,
                        posX + 5 + headSize + spacing + spacing - 9,
                        posY + height - spacing * 1.8f - 10,
                        Theme.textColor,
                        6.5f,
                        0.05f
                );

                Scissor.unset();
                Scissor.pop();

                Vector4i vector4i = new Vector4i(Theme.rectColor, Theme.rectColor, Theme.mainRectColor, Theme.mainRectColor);
            }


            // BY PSYHODNYSKII

            if (Evaware.getInstance().getModuleManager().getHud().tHudMode.is("Неон")) {
                width = 160 / 1.5f;
                headSize = 35;
                DisplayUtils.drawShadow(posX, posY, width, height, 5, ColorUtils.setAlpha(Theme.darkMainRectColor, 70), ColorUtils.setAlpha(Theme.rectColor, 70));
                DisplayUtils.drawRoundedRect(posX, posY, width, height, 0, ColorUtils.rgba(20, 20, 20, 170));
                // Добавляем отрисовку тени
                float shadowX = posX + 3; // Смещение по X
                float shadowY = posY + 3; // Смещение по Y
                int shadowWidth = (int) width; // Ширина тени
                int shadowHeight = (int) height; // Высота тени
                int shadowColor = ColorUtils.setAlpha(Theme.rectColor, 80); // Цвет тени

                // Рисуем тень
                DisplayUtils.drawShadow(shadowX, shadowY, shadowWidth, shadowHeight, 5, shadowColor, shadowColor);

                sizeAnimation(posX + (width / 2), posY + (height / 2), animation.getOutput());
                DisplayUtils.drawRoundedRect(posX, posY, width, height, 5, ColorUtils.rgba(19, 29, 35, 229)); // Основной фон
                Stencil.initStencilToWrite();
                DisplayUtils.drawRoundedRect(posX, posY, headSize, headSize, 5,-1);
                Stencil.readStencilBuffer(1);
                drawHead(eventDisplay.getMatrixStack(), entity, posX, posY, headSize);
                Stencil.uninitStencilBuffer();

                Vector4i vector4i = new Vector4i(Theme.rectColor, Theme.rectColor, Theme.mainRectColor, Theme.mainRectColor);

                DisplayUtils.drawRoundedRect(posX, posY + 3 + height - spacing, (width), 5, new Vector4f(0,0,0,0), ColorUtils.rgb(32, 32, 32));
                DisplayUtils.drawRoundedRect(posX, posY + 3 + height - spacing, (width) * healthAnimation, 5, new Vector4f(0,0,0,0), vector4i);
                DisplayUtils.drawShadow(posX, posY + 3 + height - spacing, (width) * healthAnimation, 5, 8, ColorUtils.setAlpha(Theme.rectColor, ColorUtils.setAlpha(Theme.mainRectColor, 80)));
                float x = posX + headSize + spacing - 2.5f, y = posY + spacing;
                Scissor.push();
                Scissor.setFromComponentCoordinates(testX, testY, testW - 1, testH);
                Fonts.montserrat.drawText(eventDisplay.getMatrixStack(), name, x, y, -1, 8, 0.05f);
                Fonts.montserrat.drawText(eventDisplay.getMatrixStack(), "Health: ", x , y + (spacing * 2), ColorUtils.rgb(200, 200, 200), 8, 0.02f);
                Fonts.montserrat.drawText(eventDisplay.getMatrixStack(), GradientUtil.gradient(finalHp + ""), x + Fonts.montserrat.getWidth("Health: ", 8, 0.02f), y + (spacing * 2), 8, 255);


                Scissor.unset();
                Scissor.pop();

                drawItemStack(posX + headSize + spacing - 2.5f, posY - 1 + spacing * 5, 9, 0.6f);
            }

            GlStateManager.popMatrix();
        }
    }

    private LivingEntity getTarget(LivingEntity nullTarget) {
        LivingEntity auraTarget = Evaware.getInstance().getModuleManager().getHitAura().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 {
            allow = false;
        }
        return target;
    }
    // BY PSYHODNYSKII
    private void drawHead(MatrixStack matrix, final Entity entity, final double x, final double y, final int size) {
        if (entity instanceof AbstractClientPlayerEntity player) {
            RenderSystem.enableBlend();
            RenderSystem.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
            RenderSystem.alphaFunc(GL11.GL_GREATER, 0);
            RenderSystem.enableTexture();
            mc.getTextureManager().bindTexture(player.getLocationSkin());
            float hurtPercent = (((AbstractClientPlayerEntity) entity).hurtTime - (((AbstractClientPlayerEntity) entity).hurtTime != 0 ? mc.timer.renderPartialTicks : 0.0f)) / 10.0f;
            RenderSystem.color4f(1, 1 - hurtPercent, 1 - hurtPercent, 1);
            AbstractGui.blit(matrix, (float) x, (float) y, size, size, 4F, 4F, 4F, 4F, 32F, 32F);
            DisplayUtils.scaleStart((float) (x + size / 2F), (float) (y + size / 2F), 1.1F);
            AbstractGui.blit(matrix, (float) x, (float) y, size, size, 20, 4, 4, 4, 32, 32);
            DisplayUtils.scaleEnd();
            RenderSystem.disableBlend();
        } else {
            int color = ColorUtils.getColor(20, 128);
            RectUtil.getInstance().drawRoundedRectShadowed(matrix, (float) x, (float) y, (float) (x + size), (float) (y + size), 2F, 1, color, color, color, color, false, false, true, true);
            ClientFonts.interRegular[size * 2].drawCenteredString(matrix, "?", x + (size / 2F), y + 3 + (size / 2F) - (ClientFonts.interRegular[size * 2].getFontHeight() / 2F), -1);
        }
    }

    private void drawItemStack(float x, float y, float offset, float scale) {                       // BY PSYHODNYSKII
        ArrayList<ItemStack> stackList = new ArrayList(Arrays.asList(this.entity.getHeldItemMainhand(), this.entity.getHeldItemOffhand()));
        stackList.addAll((Collection)this.entity.getArmorInventoryList());
        AtomicReference<Float> posX = new AtomicReference(x);
        stackList.stream().filter((stack) -> {
            return !stack.isEmpty();
        }).forEach((stack) -> {
            drawItemStack(stack, (Float)posX.getAndAccumulate(offset, Float::sum), y, true, true, scale);
        });
    }

    public void drawItemStack(ItemStack stack, float x, float y, boolean withoutOverlay, boolean scale, float scaleValue) {
        RenderSystem.pushMatrix();
        RenderSystem.translatef(x, y, 0.0F);
        if (scale) {
            GL11.glScaled((double)scaleValue, (double)scaleValue, (double)scaleValue);
        }

        mc.getItemRenderer().renderItemAndEffectIntoGUI(stack, 0, 0);
        if (withoutOverlay) {
            mc.getItemRenderer().renderItemOverlays(mc.fontRenderer, stack, 0, 0);
        }
        // BY PSYHODNYSKII
        RenderSystem.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 class FloatFormatter {
        public float format(float value) {
            return Math.round(value * 2) / 2.0f;
        }
    }

}
// BY PSYHODNYSKII
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
24 Окт 2021
Сообщения
134
Реакции[?]
1
Поинты[?]
1K
эксперт в майнкрафт апи
Пользователь
Статус
Онлайн
Регистрация
8 Сен 2023
Сообщения
255
Реакции[?]
115
Поинты[?]
15K
Сверху Снизу