- Выберите загрузчик игры
- Forge
всем привет моя первая тема
вот новые потион рендер

вот новые потион рендер

Код:
package im.expensive.ui.display.impl;
import com.mojang.blaze3d.matrix.MatrixStack;
import im.expensive.Expensive;
import im.expensive.events.EventDisplay;
import im.expensive.ui.display.ElementRenderer;
import im.expensive.utils.drag.Dragging;
import im.expensive.utils.render.ColorUtils;
import im.expensive.utils.render.DisplayUtils;
import im.expensive.utils.render.Scissor;
import im.expensive.utils.render.font.Fonts;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.resources.I18n;
import net.minecraft.potion.EffectInstance;
import net.minecraft.potion.EffectUtils;
@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class PotionRenderer implements ElementRenderer {
final Dragging dragging;
float width;
float height;
@Override
public void render(EventDisplay eventDisplay) {
MatrixStack ms = eventDisplay.getMatrixStack();
float posX = dragging.getX();
float posY = dragging.getY();
float fontSize = 6.5f;
float padding = 6;
DisplayUtils.drawRoundedRect(posX, posY, width, height, 8, ColorUtils.rgba(15, 15, 15, 230));
DisplayUtils.drawShadow(posX, posY, width, height, 14, ColorUtils.rgba(0, 0, 0, 90), ColorUtils.rgba(0, 0, 0, 40));
Scissor.push();
Scissor.setFromComponentCoordinates(posX, posY, width, height);
Fonts.sfMedium.drawCenteredText(
ms,
"Potions",
posX + width / 2f,
posY + padding + 0.5f,
ColorUtils.rgb(255, 255, 255),
fontSize + 1
);
posY += fontSize + padding * 2;
float maxWidth = 100;
float localHeight = fontSize + padding * 2;
DisplayUtils.drawRectHorizontalW(posX + 4, posY, width - 8, 1, 2, ColorUtils.rgba(255, 255, 255, 25));
posY += 3f;
for (EffectInstance ef : mc.player.getActivePotionEffects()) {
int amp = ef.getAmplifier();
String ampStr = "";
if (amp >= 1 && amp <= 9) {
ampStr = " " + I18n.format("enchantment.level." + (amp + 1));
}
String nameText = I18n.format(ef.getEffectName()) + ampStr;
float nameWidth = Fonts.sfMedium.getWidth(nameText, fontSize);
String durationText = EffectUtils.getPotionDurationString(ef, 1);
float durationWidth = Fonts.sfMedium.getWidth(durationText, fontSize);
float localWidth = nameWidth + durationWidth + padding * 3;
int baseColor = ef.getPotion().isBeneficial() ? ColorUtils.rgb(100, 220, 100) : ColorUtils.rgb(220, 100, 100);
DisplayUtils.drawShadow(
posX + padding - 2, posY - 1,
nameWidth + 4, fontSize + 3, 6,
ColorUtils.rgba(baseColor >> 16 & 0xFF,
baseColor >> 8 & 0xFF,
baseColor & 0xFF, 120
),
ColorUtils.rgba(0, 0, 0, 0)
);
Fonts.sfMedium.drawText(ms, nameText, posX + padding, posY, baseColor, fontSize);
Fonts.sfMedium.drawText(ms, durationText, posX + width - padding - durationWidth, posY, ColorUtils.rgb(200, 200, 200), fontSize);
if (localWidth > maxWidth) {
maxWidth = localWidth;
}
posY += fontSize + padding;
localHeight += fontSize + padding;
}
Scissor.unset();
Scissor.pop();
width = Math.max(maxWidth, 110);
height = localHeight + 2.5f;
dragging.setWidth(width);
dragging.setHeight(height);
}
}
Последнее редактирование модератором: