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

Визуальная часть Info bar v2 | evaware v3

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
23 Мар 2025
Сообщения
75
Реакции
0
Выберите загрузчик игры
  1. Fabric
Вообщем чучуть переписал инфо бар с прошлой темы своей


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


Код:
Expand Collapse Copy
package sweetie.evaware.client.ui.widget.overlay;

import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.ingame.InventoryScreen;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.LivingEntity;
import org.joml.Quaternionf;
import org.joml.Vector3f;
import org.joml.Vector4f;
import sweetie.evaware.api.utils.color.UIColors;
import sweetie.evaware.api.utils.render.RenderUtil;
import sweetie.evaware.api.utils.render.ScissorUtil;
import sweetie.evaware.api.utils.render.fonts.Font;
import sweetie.evaware.client.ui.widget.Widget;

import javax.annotation.Nullable;
import java.awt.*;

public class InfoBarWidget extends Widget {
    private float infobarwidth = 0f;

    @Override
    public String getName() {
        return "Info bar";
    }

    @Override
    public String getEmptyName() {
        return "Info bar";
    }

    public InfoBarWidget() {
        super(3f, 3f);
    }

    @Override
    public void render(MatrixStack matrixStack) {
        float x = getDraggable().getX();
        float y = getDraggable().getY();
        float gap = getGap();

        float width = 0f;
        float height = 0f;

        float headSize = scaled(24f);
        float headX = x;

        Font font = getMediumFont();

        float maxBarWidth = headSize * 2 - 6;

        String armorcolvo = "" + mc.player.getArmor();
        String armor = "ARMOR:";
        float armorcolvoF = mc.player.getArmor();
        float maxArmor = 20f;
        float armorBarPercent = Math.clamp(armorcolvoF / maxArmor, 0f, 1f
        );

        float armorBarWidth = maxBarWidth * armorBarPercent;

        String hpcolvo = "" + (int) mc.player.getHealth();
        String hp = "HP:";
        float maxHpColvo = (int) mc.player.getMaxHealth();
        float hpcolvoF = (int) mc.player.getHealth();
        float healthBarPercent = Math.max(0f, Math.min(1f, hpcolvoF / maxHpColvo));


        float helathBarWidth = maxBarWidth * healthBarPercent;

        //ARMOR
        RenderUtil.RECT.draw(matrixStack, x + headSize - 6, y + 4, headSize * 2 + 4f + font.getWidth(armor + armorcolvo, 6f), 8f, 2f, new Color(35, 34, 34));
        RenderUtil.RECT.draw(matrixStack, x + headSize, y + 6, maxBarWidth, 4f, 1f, new Color(14, 14, 14));
        if (armorBarWidth > 0.5) {
            RenderUtil.BLUR_RECT.draw(matrixStack, x + headSize, y + 6, armorBarWidth, 4f, new Vector4f(1, 1, 1, 1), new Color(11, 46, 223), new Color(0, 208, 255), new Color(0, 51, 255),  new Color(0, 179, 255));
        }
        font.drawText(matrixStack, armor + armorcolvo, x + headSize * 3 - 4, y + 5.5f, 6, UIColors.textColorWhite(255));

        //HEALTH
        RenderUtil.RECT.draw(matrixStack, x + headSize - 6, y + 16, headSize * 2 + 4f + font.getWidth(hp + hpcolvo, 6), 8f, 2f, new Color(35, 34, 34));
        RenderUtil.RECT.draw(matrixStack, x + headSize, y + 18, headSize * 2 - 6, 4f, 1f, new Color(14, 14, 14));
        if (helathBarWidth > 0.5f) {
            RenderUtil.BLUR_RECT.draw(matrixStack, x + headSize, y + 18, helathBarWidth, 4f, new Vector4f(1, 1, 1, 1), new Color(255, 0, 0), new Color(35, 152, 41), new Color(255, 0, 0), new Color(36, 255, 0));
        }
        font.drawText(matrixStack, hp +  hpcolvo, x + headSize * 3 - 4, y + 17.5f, 6, UIColors.textColorWhite(255));


        DrawContext context = new DrawContext(mc, mc.getBufferBuilders().getEntityVertexConsumers());

        //HEAD
        RenderUtil.RECT.draw(matrixStack, x, y, headSize, headSize, 12f, new Color(35, 34, 34));
        ScissorUtil.start(matrixStack, x, y, headSize, headSize - 2);
        float prevYaw = mc.player.getYaw();
        float prevBodyYaw = mc.player.bodyYaw;
        float prevHeadYaw = mc.player.headYaw;

        mc.player.setYaw(0);
        mc.player.bodyYaw = 0;
        mc.player.headYaw = 0;

        Quaternionf quaternion = new Quaternionf()
                .rotateX((float) Math.toRadians(180));

        ScissorUtil.start(matrixStack, x + 2, y + 1, headSize - 4, headSize - 2);
        if (mc.player.isGliding()) {
            draw3dHead(context, headX + 15, y + 22, headSize - 12,
                    new Vector3f(0, 0, 0),
                    quaternion,
                    null,
                    mc.player);
        } else {
            draw3dHead(context, headX + 15, y + 38, headSize - 12,
                    new Vector3f(0, 0, 0),
                    quaternion,
                    null,
                    mc.player);
        }
        ScissorUtil.stop(matrixStack);

        mc.player.setYaw(prevYaw);
        mc.player.bodyYaw = prevBodyYaw;
        mc.player.headYaw = prevHeadYaw;

        ScissorUtil.stop(matrixStack);


        width += headSize * 2 + 24f + font.getWidth(armor + armorcolvo, 6f) + gap;
        height += headSize;

        getDraggable().setWidth(width);
        getDraggable().setHeight(height);
    }

    public void draw3dHead(DrawContext context, float x, float y, float headSize, Vector3f vector3f, Quaternionf quaternionf, @Nullable Quaternionf quaternionf2, LivingEntity entity) {
        InventoryScreen.drawEntity(context, x, y, headSize, vector3f, quaternionf,  quaternionf2, entity);
    }
}
 
Вообщем чучуть переписал инфо бар с прошлой темы своей


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


Код:
Expand Collapse Copy
package sweetie.evaware.client.ui.widget.overlay;

import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.ingame.InventoryScreen;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.LivingEntity;
import org.joml.Quaternionf;
import org.joml.Vector3f;
import org.joml.Vector4f;
import sweetie.evaware.api.utils.color.UIColors;
import sweetie.evaware.api.utils.render.RenderUtil;
import sweetie.evaware.api.utils.render.ScissorUtil;
import sweetie.evaware.api.utils.render.fonts.Font;
import sweetie.evaware.client.ui.widget.Widget;

import javax.annotation.Nullable;
import java.awt.*;

public class InfoBarWidget extends Widget {
    private float infobarwidth = 0f;

    @Override
    public String getName() {
        return "Info bar";
    }

    @Override
    public String getEmptyName() {
        return "Info bar";
    }

    public InfoBarWidget() {
        super(3f, 3f);
    }

    @Override
    public void render(MatrixStack matrixStack) {
        float x = getDraggable().getX();
        float y = getDraggable().getY();
        float gap = getGap();

        float width = 0f;
        float height = 0f;

        float headSize = scaled(24f);
        float headX = x;

        Font font = getMediumFont();

        float maxBarWidth = headSize * 2 - 6;

        String armorcolvo = "" + mc.player.getArmor();
        String armor = "ARMOR:";
        float armorcolvoF = mc.player.getArmor();
        float maxArmor = 20f;
        float armorBarPercent = Math.clamp(armorcolvoF / maxArmor, 0f, 1f
        );

        float armorBarWidth = maxBarWidth * armorBarPercent;

        String hpcolvo = "" + (int) mc.player.getHealth();
        String hp = "HP:";
        float maxHpColvo = (int) mc.player.getMaxHealth();
        float hpcolvoF = (int) mc.player.getHealth();
        float healthBarPercent = Math.max(0f, Math.min(1f, hpcolvoF / maxHpColvo));


        float helathBarWidth = maxBarWidth * healthBarPercent;

        //ARMOR
        RenderUtil.RECT.draw(matrixStack, x + headSize - 6, y + 4, headSize * 2 + 4f + font.getWidth(armor + armorcolvo, 6f), 8f, 2f, new Color(35, 34, 34));
        RenderUtil.RECT.draw(matrixStack, x + headSize, y + 6, maxBarWidth, 4f, 1f, new Color(14, 14, 14));
        if (armorBarWidth > 0.5) {
            RenderUtil.BLUR_RECT.draw(matrixStack, x + headSize, y + 6, armorBarWidth, 4f, new Vector4f(1, 1, 1, 1), new Color(11, 46, 223), new Color(0, 208, 255), new Color(0, 51, 255),  new Color(0, 179, 255));
        }
        font.drawText(matrixStack, armor + armorcolvo, x + headSize * 3 - 4, y + 5.5f, 6, UIColors.textColorWhite(255));

        //HEALTH
        RenderUtil.RECT.draw(matrixStack, x + headSize - 6, y + 16, headSize * 2 + 4f + font.getWidth(hp + hpcolvo, 6), 8f, 2f, new Color(35, 34, 34));
        RenderUtil.RECT.draw(matrixStack, x + headSize, y + 18, headSize * 2 - 6, 4f, 1f, new Color(14, 14, 14));
        if (helathBarWidth > 0.5f) {
            RenderUtil.BLUR_RECT.draw(matrixStack, x + headSize, y + 18, helathBarWidth, 4f, new Vector4f(1, 1, 1, 1), new Color(255, 0, 0), new Color(35, 152, 41), new Color(255, 0, 0), new Color(36, 255, 0));
        }
        font.drawText(matrixStack, hp +  hpcolvo, x + headSize * 3 - 4, y + 17.5f, 6, UIColors.textColorWhite(255));


        DrawContext context = new DrawContext(mc, mc.getBufferBuilders().getEntityVertexConsumers());

        //HEAD
        RenderUtil.RECT.draw(matrixStack, x, y, headSize, headSize, 12f, new Color(35, 34, 34));
        ScissorUtil.start(matrixStack, x, y, headSize, headSize - 2);
        float prevYaw = mc.player.getYaw();
        float prevBodyYaw = mc.player.bodyYaw;
        float prevHeadYaw = mc.player.headYaw;

        mc.player.setYaw(0);
        mc.player.bodyYaw = 0;
        mc.player.headYaw = 0;

        Quaternionf quaternion = new Quaternionf()
                .rotateX((float) Math.toRadians(180));

        ScissorUtil.start(matrixStack, x + 2, y + 1, headSize - 4, headSize - 2);
        if (mc.player.isGliding()) {
            draw3dHead(context, headX + 15, y + 22, headSize - 12,
                    new Vector3f(0, 0, 0),
                    quaternion,
                    null,
                    mc.player);
        } else {
            draw3dHead(context, headX + 15, y + 38, headSize - 12,
                    new Vector3f(0, 0, 0),
                    quaternion,
                    null,
                    mc.player);
        }
        ScissorUtil.stop(matrixStack);

        mc.player.setYaw(prevYaw);
        mc.player.bodyYaw = prevBodyYaw;
        mc.player.headYaw = prevHeadYaw;

        ScissorUtil.stop(matrixStack);


        width += headSize * 2 + 24f + font.getWidth(armor + armorcolvo, 6f) + gap;
        height += headSize;

        getDraggable().setWidth(width);
        getDraggable().setHeight(height);
    }

    public void draw3dHead(DrawContext context, float x, float y, float headSize, Vector3f vector3f, Quaternionf quaternionf, @Nullable Quaternionf quaternionf2, LivingEntity entity) {
        InventoryScreen.drawEntity(context, x, y, headSize, vector3f, quaternionf,  quaternionf2, entity);
    }
}
ну хз, вроде бесполезно, а вроде и нормально. Ну 50/50
 
Назад
Сверху Снизу