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

Визуальная часть PotionRenderer exp 3.1

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
12 Мар 2026
Сообщения
8
Реакции
0
Выберите загрузчик игры
  1. Vanilla
  2. OptiFine
Знаю, что выглядит не оч, но я и не старался, может кому понадобиться
ss -
1773495196253.png


code -

Java:
Expand Collapse Copy
package im.expensive.ui.display.impl;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
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.gui.AbstractGui;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.I18n;
import net.minecraft.potion.Effect;
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 = 110;
    float height = 40;

    @Override
    public void render(EventDisplay eventDisplay) {
        MatrixStack ms = eventDisplay.getMatrixStack();

        float posX = dragging.getX();
        float posY = dragging.getY();
        float fontSize = 7.5f;
        float padding = 8;
        float headerHeight = 24;

        int accentColor = ColorUtils.rgba(255, 140, 150, 255);
        int textColor = ColorUtils.rgba(230, 230, 230, 255);
        int darkGray = ColorUtils.rgba(100, 100, 100, 255);
        int glassBgColor = ColorUtils.rgba(15, 15, 15, 150);
        int headerBgColor = ColorUtils.rgba(10, 10, 10, 180);

        glassBgColor = ColorUtils.rgba(15, 15, 15, 100);

        DisplayUtils.drawShadow(posX, posY, width, height, 12, ColorUtils.rgba(0, 0, 0, 120), ColorUtils.rgba(0, 0, 0, 120));
        DisplayUtils.drawRoundedRect(posX, posY, width, height, 5, glassBgColor);
        Scissor.push();
        Scissor.setFromComponentCoordinates(posX, posY, width, headerHeight);
        DisplayUtils.drawRoundedRect(posX, posY, width, headerHeight + 5, 5, headerBgColor);
        Scissor.unset();
        Scissor.pop();

        if (!mc.player.getActivePotionEffects().isEmpty()) {
            float lineThickness = 1.5f;
            int lineColor = ColorUtils.rgba(80, 80, 80, 180);
            DisplayUtils.drawRoundedRect(posX, posY + headerHeight, width, lineThickness, 0.5f, lineColor); // ИСПРАВЛЕННАЯ
        }

        Scissor.push();
        Scissor.setFromComponentCoordinates(posX, posY, width, height);
        Fonts.sfui.drawText(ms, "Potions", posX + padding, posY + 8.5f, -1, 8.5f);

        float currentY = posY + headerHeight + 7;
        float maxWidth = 120;

        for (EffectInstance ef : mc.player.getActivePotionEffects()) {
            Effect effect = ef.getPotion();

            String nameText = I18n.format(effect.getName());
            int amp = ef.getAmplifier() + 1;
            String ampText = String.valueOf(amp);
            String durationText = EffectUtils.getPotionDurationString(ef, 1);

            float nameWidth = Fonts.sfMedium.getWidth(nameText, fontSize);
            float ampWidth = Fonts.sfMedium.getWidth(ampText, fontSize);
            float durationWidth = Fonts.sfMedium.getWidth(durationText, fontSize);
            float iconSize = 9;

            TextureAtlasSprite sprite = mc.getPotionSpriteUploader().getSprite(effect);
            mc.getTextureManager().bindTexture(sprite.getAtlasTexture().getTextureLocation());
            GlStateManager.enableBlend();
            GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
            AbstractGui.blit(ms, (int)(posX + padding), (int)(currentY), 0, (int)iconSize, (int)iconSize, sprite);
            GlStateManager.disableBlend();

            float chevronX = posX + padding + iconSize + 4;
            Fonts.sfMedium.drawText(ms, ">", chevronX, currentY + 1.5f, darkGray, fontSize);
            float textX = chevronX + Fonts.sfMedium.getWidth(">", fontSize) + 4;
            Fonts.sfMedium.drawText(ms, nameText, textX, currentY + 1.5f, textColor, fontSize);
            Fonts.sfMedium.drawText(ms, " " + ampText, textX + nameWidth, currentY + 1.5f, accentColor, fontSize);
            Fonts.sfMedium.drawText(ms, durationText, posX + width - padding - durationWidth, currentY + 1.5f, accentColor, fontSize);

            float rowWidth = (textX - posX) + nameWidth + ampWidth + durationWidth + 25;
            if (rowWidth > maxWidth) {
                maxWidth = rowWidth;
            }

            currentY += 13;
        }

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

        width = maxWidth;
        height = mc.player.getActivePotionEffects().isEmpty() ? headerHeight : (currentY - posY + 4);
        dragging.setWidth(width);
        dragging.setHeight(height);
    }
}
 
Знаю, что выглядит не оч, но я и не старался, может кому понадобиться
ss - Посмотреть вложение 330298

code -

Java:
Expand Collapse Copy
package im.expensive.ui.display.impl;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
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.gui.AbstractGui;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.I18n;
import net.minecraft.potion.Effect;
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 = 110;
    float height = 40;

    @Override
    public void render(EventDisplay eventDisplay) {
        MatrixStack ms = eventDisplay.getMatrixStack();

        float posX = dragging.getX();
        float posY = dragging.getY();
        float fontSize = 7.5f;
        float padding = 8;
        float headerHeight = 24;

        int accentColor = ColorUtils.rgba(255, 140, 150, 255);
        int textColor = ColorUtils.rgba(230, 230, 230, 255);
        int darkGray = ColorUtils.rgba(100, 100, 100, 255);
        int glassBgColor = ColorUtils.rgba(15, 15, 15, 150);
        int headerBgColor = ColorUtils.rgba(10, 10, 10, 180);

        glassBgColor = ColorUtils.rgba(15, 15, 15, 100);

        DisplayUtils.drawShadow(posX, posY, width, height, 12, ColorUtils.rgba(0, 0, 0, 120), ColorUtils.rgba(0, 0, 0, 120));
        DisplayUtils.drawRoundedRect(posX, posY, width, height, 5, glassBgColor);
        Scissor.push();
        Scissor.setFromComponentCoordinates(posX, posY, width, headerHeight);
        DisplayUtils.drawRoundedRect(posX, posY, width, headerHeight + 5, 5, headerBgColor);
        Scissor.unset();
        Scissor.pop();

        if (!mc.player.getActivePotionEffects().isEmpty()) {
            float lineThickness = 1.5f;
            int lineColor = ColorUtils.rgba(80, 80, 80, 180);
            DisplayUtils.drawRoundedRect(posX, posY + headerHeight, width, lineThickness, 0.5f, lineColor); // ИСПРАВЛЕННАЯ
        }

        Scissor.push();
        Scissor.setFromComponentCoordinates(posX, posY, width, height);
        Fonts.sfui.drawText(ms, "Potions", posX + padding, posY + 8.5f, -1, 8.5f);

        float currentY = posY + headerHeight + 7;
        float maxWidth = 120;

        for (EffectInstance ef : mc.player.getActivePotionEffects()) {
            Effect effect = ef.getPotion();

            String nameText = I18n.format(effect.getName());
            int amp = ef.getAmplifier() + 1;
            String ampText = String.valueOf(amp);
            String durationText = EffectUtils.getPotionDurationString(ef, 1);

            float nameWidth = Fonts.sfMedium.getWidth(nameText, fontSize);
            float ampWidth = Fonts.sfMedium.getWidth(ampText, fontSize);
            float durationWidth = Fonts.sfMedium.getWidth(durationText, fontSize);
            float iconSize = 9;

            TextureAtlasSprite sprite = mc.getPotionSpriteUploader().getSprite(effect);
            mc.getTextureManager().bindTexture(sprite.getAtlasTexture().getTextureLocation());
            GlStateManager.enableBlend();
            GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
            AbstractGui.blit(ms, (int)(posX + padding), (int)(currentY), 0, (int)iconSize, (int)iconSize, sprite);
            GlStateManager.disableBlend();

            float chevronX = posX + padding + iconSize + 4;
            Fonts.sfMedium.drawText(ms, ">", chevronX, currentY + 1.5f, darkGray, fontSize);
            float textX = chevronX + Fonts.sfMedium.getWidth(">", fontSize) + 4;
            Fonts.sfMedium.drawText(ms, nameText, textX, currentY + 1.5f, textColor, fontSize);
            Fonts.sfMedium.drawText(ms, " " + ampText, textX + nameWidth, currentY + 1.5f, accentColor, fontSize);
            Fonts.sfMedium.drawText(ms, durationText, posX + width - padding - durationWidth, currentY + 1.5f, accentColor, fontSize);

            float rowWidth = (textX - posX) + nameWidth + ampWidth + durationWidth + 25;
            if (rowWidth > maxWidth) {
                maxWidth = rowWidth;
            }

            currentY += 13;
        }

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

        width = maxWidth;
        height = mc.player.getActivePotionEffects().isEmpty() ? headerHeight : (currentY - posY + 4);
        dragging.setWidth(width);
        dragging.setHeight(height);
    }
}
нормас, добавить иконку наложить чуть прозрачности сверху и мб обводки какой нибудь и красота
 
Знаю, что выглядит не оч, но я и не старался, может кому понадобиться
ss - Посмотреть вложение 330298

code -

Java:
Expand Collapse Copy
package im.expensive.ui.display.impl;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
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.gui.AbstractGui;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.I18n;
import net.minecraft.potion.Effect;
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 = 110;
    float height = 40;

    @Override
    public void render(EventDisplay eventDisplay) {
        MatrixStack ms = eventDisplay.getMatrixStack();

        float posX = dragging.getX();
        float posY = dragging.getY();
        float fontSize = 7.5f;
        float padding = 8;
        float headerHeight = 24;

        int accentColor = ColorUtils.rgba(255, 140, 150, 255);
        int textColor = ColorUtils.rgba(230, 230, 230, 255);
        int darkGray = ColorUtils.rgba(100, 100, 100, 255);
        int glassBgColor = ColorUtils.rgba(15, 15, 15, 150);
        int headerBgColor = ColorUtils.rgba(10, 10, 10, 180);

        glassBgColor = ColorUtils.rgba(15, 15, 15, 100);

        DisplayUtils.drawShadow(posX, posY, width, height, 12, ColorUtils.rgba(0, 0, 0, 120), ColorUtils.rgba(0, 0, 0, 120));
        DisplayUtils.drawRoundedRect(posX, posY, width, height, 5, glassBgColor);
        Scissor.push();
        Scissor.setFromComponentCoordinates(posX, posY, width, headerHeight);
        DisplayUtils.drawRoundedRect(posX, posY, width, headerHeight + 5, 5, headerBgColor);
        Scissor.unset();
        Scissor.pop();

        if (!mc.player.getActivePotionEffects().isEmpty()) {
            float lineThickness = 1.5f;
            int lineColor = ColorUtils.rgba(80, 80, 80, 180);
            DisplayUtils.drawRoundedRect(posX, posY + headerHeight, width, lineThickness, 0.5f, lineColor); // ИСПРАВЛЕННАЯ
        }

        Scissor.push();
        Scissor.setFromComponentCoordinates(posX, posY, width, height);
        Fonts.sfui.drawText(ms, "Potions", posX + padding, posY + 8.5f, -1, 8.5f);

        float currentY = posY + headerHeight + 7;
        float maxWidth = 120;

        for (EffectInstance ef : mc.player.getActivePotionEffects()) {
            Effect effect = ef.getPotion();

            String nameText = I18n.format(effect.getName());
            int amp = ef.getAmplifier() + 1;
            String ampText = String.valueOf(amp);
            String durationText = EffectUtils.getPotionDurationString(ef, 1);

            float nameWidth = Fonts.sfMedium.getWidth(nameText, fontSize);
            float ampWidth = Fonts.sfMedium.getWidth(ampText, fontSize);
            float durationWidth = Fonts.sfMedium.getWidth(durationText, fontSize);
            float iconSize = 9;

            TextureAtlasSprite sprite = mc.getPotionSpriteUploader().getSprite(effect);
            mc.getTextureManager().bindTexture(sprite.getAtlasTexture().getTextureLocation());
            GlStateManager.enableBlend();
            GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
            AbstractGui.blit(ms, (int)(posX + padding), (int)(currentY), 0, (int)iconSize, (int)iconSize, sprite);
            GlStateManager.disableBlend();

            float chevronX = posX + padding + iconSize + 4;
            Fonts.sfMedium.drawText(ms, ">", chevronX, currentY + 1.5f, darkGray, fontSize);
            float textX = chevronX + Fonts.sfMedium.getWidth(">", fontSize) + 4;
            Fonts.sfMedium.drawText(ms, nameText, textX, currentY + 1.5f, textColor, fontSize);
            Fonts.sfMedium.drawText(ms, " " + ampText, textX + nameWidth, currentY + 1.5f, accentColor, fontSize);
            Fonts.sfMedium.drawText(ms, durationText, posX + width - padding - durationWidth, currentY + 1.5f, accentColor, fontSize);

            float rowWidth = (textX - posX) + nameWidth + ampWidth + durationWidth + 25;
            if (rowWidth > maxWidth) {
                maxWidth = rowWidth;
            }

            currentY += 13;
        }

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

        width = maxWidth;
        height = mc.player.getActivePotionEffects().isEmpty() ? headerHeight : (currentY - posY + 4);
        dragging.setWidth(width);
        dragging.setHeight(height);
    }
}
харе дрочить экспу 3.1
 
Знаю, что выглядит не оч, но я и не старался, может кому понадобиться
ss - Посмотреть вложение 330298

code -

Java:
Expand Collapse Copy
package im.expensive.ui.display.impl;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
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.gui.AbstractGui;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.I18n;
import net.minecraft.potion.Effect;
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 = 110;
    float height = 40;

    @Override
    public void render(EventDisplay eventDisplay) {
        MatrixStack ms = eventDisplay.getMatrixStack();

        float posX = dragging.getX();
        float posY = dragging.getY();
        float fontSize = 7.5f;
        float padding = 8;
        float headerHeight = 24;

        int accentColor = ColorUtils.rgba(255, 140, 150, 255);
        int textColor = ColorUtils.rgba(230, 230, 230, 255);
        int darkGray = ColorUtils.rgba(100, 100, 100, 255);
        int glassBgColor = ColorUtils.rgba(15, 15, 15, 150);
        int headerBgColor = ColorUtils.rgba(10, 10, 10, 180);

        glassBgColor = ColorUtils.rgba(15, 15, 15, 100);

        DisplayUtils.drawShadow(posX, posY, width, height, 12, ColorUtils.rgba(0, 0, 0, 120), ColorUtils.rgba(0, 0, 0, 120));
        DisplayUtils.drawRoundedRect(posX, posY, width, height, 5, glassBgColor);
        Scissor.push();
        Scissor.setFromComponentCoordinates(posX, posY, width, headerHeight);
        DisplayUtils.drawRoundedRect(posX, posY, width, headerHeight + 5, 5, headerBgColor);
        Scissor.unset();
        Scissor.pop();

        if (!mc.player.getActivePotionEffects().isEmpty()) {
            float lineThickness = 1.5f;
            int lineColor = ColorUtils.rgba(80, 80, 80, 180);
            DisplayUtils.drawRoundedRect(posX, posY + headerHeight, width, lineThickness, 0.5f, lineColor); // ИСПРАВЛЕННАЯ
        }

        Scissor.push();
        Scissor.setFromComponentCoordinates(posX, posY, width, height);
        Fonts.sfui.drawText(ms, "Potions", posX + padding, posY + 8.5f, -1, 8.5f);

        float currentY = posY + headerHeight + 7;
        float maxWidth = 120;

        for (EffectInstance ef : mc.player.getActivePotionEffects()) {
            Effect effect = ef.getPotion();

            String nameText = I18n.format(effect.getName());
            int amp = ef.getAmplifier() + 1;
            String ampText = String.valueOf(amp);
            String durationText = EffectUtils.getPotionDurationString(ef, 1);

            float nameWidth = Fonts.sfMedium.getWidth(nameText, fontSize);
            float ampWidth = Fonts.sfMedium.getWidth(ampText, fontSize);
            float durationWidth = Fonts.sfMedium.getWidth(durationText, fontSize);
            float iconSize = 9;

            TextureAtlasSprite sprite = mc.getPotionSpriteUploader().getSprite(effect);
            mc.getTextureManager().bindTexture(sprite.getAtlasTexture().getTextureLocation());
            GlStateManager.enableBlend();
            GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
            AbstractGui.blit(ms, (int)(posX + padding), (int)(currentY), 0, (int)iconSize, (int)iconSize, sprite);
            GlStateManager.disableBlend();

            float chevronX = posX + padding + iconSize + 4;
            Fonts.sfMedium.drawText(ms, ">", chevronX, currentY + 1.5f, darkGray, fontSize);
            float textX = chevronX + Fonts.sfMedium.getWidth(">", fontSize) + 4;
            Fonts.sfMedium.drawText(ms, nameText, textX, currentY + 1.5f, textColor, fontSize);
            Fonts.sfMedium.drawText(ms, " " + ampText, textX + nameWidth, currentY + 1.5f, accentColor, fontSize);
            Fonts.sfMedium.drawText(ms, durationText, posX + width - padding - durationWidth, currentY + 1.5f, accentColor, fontSize);

            float rowWidth = (textX - posX) + nameWidth + ampWidth + durationWidth + 25;
            if (rowWidth > maxWidth) {
                maxWidth = rowWidth;
            }

            currentY += 13;
        }

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

        width = maxWidth;
        height = mc.player.getActivePotionEffects().isEmpty() ? headerHeight : (currentY - posY + 4);
        dragging.setWidth(width);
        dragging.setHeight(height);
    }
}
нормас, только можно было обводку попрозрачнее и сделать шрифт нормальный.
 
Назад
Сверху Снизу