Начинающий
Начинающий
- Статус
- Оффлайн
- Регистрация
- 23 Мар 2025
- Сообщения
- 75
- Реакции
- 0
- Выберите загрузчик игры
- Fabric
Вообщем чучуть переписал инфо бар с прошлой темы своей
Пожалуйста, авторизуйтесь для просмотра ссылки.
Код:
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);
}
}