• Я зарабатываю 100 000 RUB / месяц на этом сайте!

    А знаешь как? Я всего-лишь публикую (создаю темы), а админ мне платит. Трачу деньги на мороженое, робуксы и сервера в Minecraft. А ещё на паль из Китая. 

    Хочешь так же? Пиши и узнавай условия: https://t.me/alex_redact
    Реклама: https://t.me/yougame_official

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

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
22 Июн 2025
Сообщения
6
Реакции
0
Выберите загрузчик игры
  1. Forge
всем привет моя первая тема
вот новые потион рендер

Снимок экрана 2025-09-19 171337.png


Код:
Expand Collapse Copy
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);
    }
}
 
Последнее редактирование модератором:
имба вроде для 1 раза
 
ну блять что то не то
 
всем привет моя первая тема
вот новые потион рендер

Посмотреть вложение 316100


Код:
Expand Collapse Copy
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);
    }
}
ну кста, для 1 раза прикольно.
 
для 1 раза пойдет но не многие с таким играли бы
 
ну если чуть чуть переделать то ахуена
 
Норм для первого раза
 
Задумка прикольная на самом деле.
 
Назад
Сверху Снизу