Исходник InventoryHud (expensive 3.1)

Начинающий
Статус
Оффлайн
Регистрация
13 Сен 2023
Сообщения
21
Реакции[?]
0
Поинты[?]
0

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

Java:
package im.expensive.ui.display.impl;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import im.expensive.Expensive;
import im.expensive.events.EventDisplay;
import im.expensive.functions.impl.render.HUD;
import im.expensive.ui.display.ElementRenderer;
import im.expensive.ui.styles.Style;
import im.expensive.utils.drag.Dragging;
import im.expensive.utils.math.Vector4i;
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 im.expensive.utils.text.GradientUtil;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.ITextComponent;

@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class SeeInventoryRenderer implements ElementRenderer {
    private final int INVENTORY_ROWS = 3;
    private final int INVENTORY_COLUMNS = 9;
    private final int SLOT_SIZE = 18;
    private final int SLOT_PADDING = 2;
    final Dragging dragging;
    float width;
    float height;
    private final Minecraft mc = Minecraft.getInstance();
    float padding = 5;

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

        float posX = dragging.getX();
        float posY = dragging.getY();
        float fontSize = 6.5f;
        float padding = 5;

        ITextComponent name = GradientUtil.gradient("Инвентарь");

        Style style = Expensive.getInstance().getStyleManager().getCurrentStyle();

        DisplayUtils.drawShadow(posX, posY, width, height, 10, style.getFirstColor().getRGB(), style.getSecondColor().getRGB());
        drawStyledRect(posX, posY, width, height, 4);

        NonNullList<ItemStack> inventorySlots = mc.player.inventory.mainInventory;

        for (int row = 0; row < INVENTORY_ROWS; row++) {
            for (int col = 0; col < INVENTORY_COLUMNS; col++) {
                float slotX = posX + 3.5f + col * (SLOT_SIZE + SLOT_PADDING); // Начальная позиция слота по X
                float slotY = posY + height - 62 + row * (SLOT_SIZE + SLOT_PADDING); // Начальная позиция слота по Y

                // Получение индекса слота в инвентаре
                int slotIndex = col + (row + 1) * INVENTORY_COLUMNS; 

                // Получение предмета в текущем слоте инвентаря
                ItemStack itemStack = inventorySlots.get(slotIndex);

                // Сдвиг отображения предмета на 2 пикселя вправо и на 1 пиксель вниз
                float itemRenderX = slotX + 2.7f; // Сдвиг на 2 пикселя вправо
                float itemRenderY = slotY + 2f; // Сдвиг на 1 пиксель вниз

                // Размеры предмета уменьшены на 20%
                float scaleFactor = 0.8f;
                int scaledWidth = (int) (16 * scaleFactor);
                int scaledHeight = (int) (16 * scaleFactor);

                // Рендеринг предмета в слоте
                if (!itemStack.isEmpty()) {
                    GlStateManager.pushMatrix();
                    GlStateManager.scalef(scaleFactor, scaleFactor, scaleFactor); // Уменьшаем размеры предмета
                    mc.getItemRenderer().renderItemIntoGUI(itemStack, (int) (itemRenderX / scaleFactor), (int) (itemRenderY / scaleFactor));
                    GlStateManager.popMatrix();

                    int count = itemStack.getCount();
                    if (count > 1) {
                        String countString = String.valueOf(count);
                        float countX = itemRenderX + (count > 9 ? 8.5f : 11f); 
                        float countY = itemRenderY + (count > 9 ? 10f : 10f); 

                        // Уменьшаем размер шрифта, если количество больше 9
                        float countScale = count > 9 ? 0.6f : 0.65f;

                        // Сохраняем текущую матрицу и масштабируем её
                        RenderSystem.pushMatrix();
                        RenderSystem.scalef(countScale, countScale, countScale);

                        // Рисуем текст с тенью с новым размером шрифта
                        mc.fontRenderer.drawStringWithShadow(eventDisplay.getMatrixStack(), countString, countX / countScale, countY / countScale, 0xFFFFFF);

                        // Восстанавливаем исходную матрицу
                        RenderSystem.popMatrix();
                    }



// Рендеринг предмета в слоте
                    if (!itemStack.isEmpty()) {
                        GlStateManager.pushMatrix();
                        GlStateManager.scalef(scaleFactor, scaleFactor, scaleFactor); // Уменьшаем размеры предмета
                        mc.getItemRenderer().renderItemIntoGUI(itemStack, (int) (itemRenderX / scaleFactor), (int) (itemRenderY / scaleFactor));
                        GlStateManager.popMatrix();
                    }

                }

                // Рендеринг квадрата слота
                DisplayUtils.drawRoundedRect(slotX, slotY, SLOT_SIZE, SLOT_SIZE, 4, 0x55CCCCCC);
            }
        }


        Vector4i colors = new Vector4i(HUD.getColor(0, 1), HUD.getColor(90, 1), HUD.getColor(180, 1), HUD.getColor(270, 1));
        DisplayUtils.drawImage(imagePath, posX + padding, posY + padding, iconSize, iconSize, colors);
        Scissor.push();
        Scissor.setFromComponentCoordinates(posX, posY, width, height);
        Fonts.sfui.drawCenteredText(ms, name, posX + width / 2, posY + padding + 0.5f, fontSize);

        posY += fontSize + padding * 2;

        float maxWidth = Fonts.sfMedium.getWidth(name, fontSize) + padding * 2;
        float localHeight = fontSize + padding * 2;


        DisplayUtils.drawRectHorizontalW(posX + 0.5f, posY, width - 1, 2.5f, 3, ColorUtils.rgba(0, 0, 0, (int) (255 * 0.25f)));
        Scissor.unset();
        Scissor.pop();
        width = Math.max(maxWidth, 185);
        height = localHeight + 65.0f;
        dragging.setWidth(width);
        dragging.setHeight(height);
    }


    private void drawStyledRect(float x,
                                float y,
                                float width,
                                float height,
                                float radius) {

        DisplayUtils.drawRoundedRect(x - 0.5f, y - 0.5f, width + 1, height + 1, radius + 0.5f, ColorUtils.getColor(0)); // outline
        DisplayUtils.drawRoundedRect(x, y, width, height, radius, ColorUtils.rgba(21, 21, 21, 255));
    }
}
ss:
1715086360604.png
skid inventoryhud экспенсива 2.0 на базу 3.1
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
25 Янв 2024
Сообщения
348
Реакции[?]
0
Поинты[?]
1K
Java:
package im.expensive.ui.display.impl;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import im.expensive.Expensive;
import im.expensive.events.EventDisplay;
import im.expensive.functions.impl.render.HUD;
import im.expensive.ui.display.ElementRenderer;
import im.expensive.ui.styles.Style;
import im.expensive.utils.drag.Dragging;
import im.expensive.utils.math.Vector4i;
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 im.expensive.utils.text.GradientUtil;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.ITextComponent;

@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class SeeInventoryRenderer implements ElementRenderer {
    private final int INVENTORY_ROWS = 3;
    private final int INVENTORY_COLUMNS = 9;
    private final int SLOT_SIZE = 18;
    private final int SLOT_PADDING = 2;
    final Dragging dragging;
    float width;
    float height;
    private final Minecraft mc = Minecraft.getInstance();
    final ResourceLocation imagePath = new ResourceLocation("expensive/images/hud/backpack.png");
    float padding = 5;

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

        float posX = dragging.getX();
        float posY = dragging.getY();
        float fontSize = 6.5f;
        float padding = 5;

        ITextComponent name = GradientUtil.gradient("Инвентарь");

        Style style = Expensive.getInstance().getStyleManager().getCurrentStyle();

        DisplayUtils.drawShadow(posX, posY, width, height, 10, style.getFirstColor().getRGB(), style.getSecondColor().getRGB());
        drawStyledRect(posX, posY, width, height, 4);

        NonNullList<ItemStack> inventorySlots = mc.player.inventory.mainInventory;

// Рендеринг предметов в слотах инвентаря с сдвигом и уменьшением размера
        for (int row = 0; row < INVENTORY_ROWS; row++) {
            for (int col = 0; col < INVENTORY_COLUMNS; col++) {
                float slotX = posX + 3.5f + col * (SLOT_SIZE + SLOT_PADDING); // Начальная позиция слота по X
                float slotY = posY + height - 62 + row * (SLOT_SIZE + SLOT_PADDING); // Начальная позиция слота по Y

                // Получение индекса слота в инвентаре
                int slotIndex = col + (row + 1) * INVENTORY_COLUMNS; // Начинаем с индекса 9, чтобы пропустить хотбар

                // Получение предмета в текущем слоте инвентаря
                ItemStack itemStack = inventorySlots.get(slotIndex);

                // Сдвиг отображения предмета на 2 пикселя вправо и на 1 пиксель вниз
                float itemRenderX = slotX + 2.7f; // Сдвиг на 2 пикселя вправо
                float itemRenderY = slotY + 2f; // Сдвиг на 1 пиксель вниз

                // Размеры предмета уменьшены на 20%
                float scaleFactor = 0.8f;
                int scaledWidth = (int) (16 * scaleFactor);
                int scaledHeight = (int) (16 * scaleFactor);

                // Рендеринг предмета в слоте
                if (!itemStack.isEmpty()) {
                    GlStateManager.pushMatrix();
                    GlStateManager.scalef(scaleFactor, scaleFactor, scaleFactor); // Уменьшаем размеры предмета
                    mc.getItemRenderer().renderItemIntoGUI(itemStack, (int) (itemRenderX / scaleFactor), (int) (itemRenderY / scaleFactor));
                    GlStateManager.popMatrix();

// Отображение количества предметов, если их больше одного
                    int count = itemStack.getCount();
                    if (count > 1) {
                        String countString = String.valueOf(count);
                        float countX = itemRenderX + (count > 9 ? 8.5f : 11f); // Смещаем влево на 2.5 пикселя или 6.5 пикселя в зависимости от размера текста
                        float countY = itemRenderY + (count > 9 ? 10f : 10f); // Смещаем вниз на 1.5 пикселя

                        // Уменьшаем размер шрифта, если количество больше 9
                        float countScale = count > 9 ? 0.6f : 0.65f;

                        // Сохраняем текущую матрицу и масштабируем её
                        RenderSystem.pushMatrix();
                        RenderSystem.scalef(countScale, countScale, countScale);

                        // Рисуем текст с тенью с новым размером шрифта
                        mc.fontRenderer.drawStringWithShadow(eventDisplay.getMatrixStack(), countString, countX / countScale, countY / countScale, 0xFFFFFF);

                        // Восстанавливаем исходную матрицу
                        RenderSystem.popMatrix();
                    }



// Рендеринг предмета в слоте
                    if (!itemStack.isEmpty()) {
                        GlStateManager.pushMatrix();
                        GlStateManager.scalef(scaleFactor, scaleFactor, scaleFactor); // Уменьшаем размеры предмета
                        mc.getItemRenderer().renderItemIntoGUI(itemStack, (int) (itemRenderX / scaleFactor), (int) (itemRenderY / scaleFactor));
                        GlStateManager.popMatrix();
                    }

                }

                // Рендеринг квадрата слота
                DisplayUtils.drawRoundedRect(slotX, slotY, SLOT_SIZE, SLOT_SIZE, 4, 0x55CCCCCC);
            }
        }


        Vector4i colors = new Vector4i(HUD.getColor(0, 1), HUD.getColor(90, 1), HUD.getColor(180, 1), HUD.getColor(270, 1));
        DisplayUtils.drawImage(imagePath, posX + padding, posY + padding, iconSize, iconSize, colors);
        Scissor.push();
        Scissor.setFromComponentCoordinates(posX, posY, width, height);
        Fonts.sfui.drawCenteredText(ms, name, posX + width / 2, posY + padding + 0.5f, fontSize);

        posY += fontSize + padding * 2;

        float maxWidth = Fonts.sfMedium.getWidth(name, fontSize) + padding * 2;
        float localHeight = fontSize + padding * 2;


        DisplayUtils.drawRectHorizontalW(posX + 0.5f, posY, width - 1, 2.5f, 3, ColorUtils.rgba(0, 0, 0, (int) (255 * 0.25f)));
        Scissor.unset();
        Scissor.pop();
        width = Math.max(maxWidth, 185);
        height = localHeight + 65.0f;
        dragging.setWidth(width);
        dragging.setHeight(height);
    }


    private void drawStyledRect(float x,
                                float y,
                                float width,
                                float height,
                                float radius) {

        DisplayUtils.drawRoundedRect(x - 0.5f, y - 0.5f, width + 1, height + 1, radius + 0.5f, ColorUtils.getColor(0)); // outline
        DisplayUtils.drawRoundedRect(x, y, width, height, radius, ColorUtils.rgba(21, 21, 21, 255));
    }
}
ss:
Посмотреть вложение 276296
skid inventoryhud экспенсива 2.0 на базу 3.1
/del уже сливали
 
Начинающий
Статус
Оффлайн
Регистрация
26 Фев 2024
Сообщения
399
Реакции[?]
0
Поинты[?]
0
Java:
package im.expensive.ui.display.impl;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import im.expensive.Expensive;
import im.expensive.events.EventDisplay;
import im.expensive.functions.impl.render.HUD;
import im.expensive.ui.display.ElementRenderer;
import im.expensive.ui.styles.Style;
import im.expensive.utils.drag.Dragging;
import im.expensive.utils.math.Vector4i;
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 im.expensive.utils.text.GradientUtil;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.ITextComponent;

@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class SeeInventoryRenderer implements ElementRenderer {
    private final int INVENTORY_ROWS = 3;
    private final int INVENTORY_COLUMNS = 9;
    private final int SLOT_SIZE = 18;
    private final int SLOT_PADDING = 2;
    final Dragging dragging;
    float width;
    float height;
    private final Minecraft mc = Minecraft.getInstance();
    final ResourceLocation imagePath = new ResourceLocation("expensive/images/hud/backpack.png");
    float padding = 5;

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

        float posX = dragging.getX();
        float posY = dragging.getY();
        float fontSize = 6.5f;
        float padding = 5;

        ITextComponent name = GradientUtil.gradient("Инвентарь");

        Style style = Expensive.getInstance().getStyleManager().getCurrentStyle();

        DisplayUtils.drawShadow(posX, posY, width, height, 10, style.getFirstColor().getRGB(), style.getSecondColor().getRGB());
        drawStyledRect(posX, posY, width, height, 4);

        NonNullList<ItemStack> inventorySlots = mc.player.inventory.mainInventory;

// Рендеринг предметов в слотах инвентаря с сдвигом и уменьшением размера
        for (int row = 0; row < INVENTORY_ROWS; row++) {
            for (int col = 0; col < INVENTORY_COLUMNS; col++) {
                float slotX = posX + 3.5f + col * (SLOT_SIZE + SLOT_PADDING); // Начальная позиция слота по X
                float slotY = posY + height - 62 + row * (SLOT_SIZE + SLOT_PADDING); // Начальная позиция слота по Y

                // Получение индекса слота в инвентаре
                int slotIndex = col + (row + 1) * INVENTORY_COLUMNS; // Начинаем с индекса 9, чтобы пропустить хотбар

                // Получение предмета в текущем слоте инвентаря
                ItemStack itemStack = inventorySlots.get(slotIndex);

                // Сдвиг отображения предмета на 2 пикселя вправо и на 1 пиксель вниз
                float itemRenderX = slotX + 2.7f; // Сдвиг на 2 пикселя вправо
                float itemRenderY = slotY + 2f; // Сдвиг на 1 пиксель вниз

                // Размеры предмета уменьшены на 20%
                float scaleFactor = 0.8f;
                int scaledWidth = (int) (16 * scaleFactor);
                int scaledHeight = (int) (16 * scaleFactor);

                // Рендеринг предмета в слоте
                if (!itemStack.isEmpty()) {
                    GlStateManager.pushMatrix();
                    GlStateManager.scalef(scaleFactor, scaleFactor, scaleFactor); // Уменьшаем размеры предмета
                    mc.getItemRenderer().renderItemIntoGUI(itemStack, (int) (itemRenderX / scaleFactor), (int) (itemRenderY / scaleFactor));
                    GlStateManager.popMatrix();

// Отображение количества предметов, если их больше одного
                    int count = itemStack.getCount();
                    if (count > 1) {
                        String countString = String.valueOf(count);
                        float countX = itemRenderX + (count > 9 ? 8.5f : 11f); // Смещаем влево на 2.5 пикселя или 6.5 пикселя в зависимости от размера текста
                        float countY = itemRenderY + (count > 9 ? 10f : 10f); // Смещаем вниз на 1.5 пикселя

                        // Уменьшаем размер шрифта, если количество больше 9
                        float countScale = count > 9 ? 0.6f : 0.65f;

                        // Сохраняем текущую матрицу и масштабируем её
                        RenderSystem.pushMatrix();
                        RenderSystem.scalef(countScale, countScale, countScale);

                        // Рисуем текст с тенью с новым размером шрифта
                        mc.fontRenderer.drawStringWithShadow(eventDisplay.getMatrixStack(), countString, countX / countScale, countY / countScale, 0xFFFFFF);

                        // Восстанавливаем исходную матрицу
                        RenderSystem.popMatrix();
                    }



// Рендеринг предмета в слоте
                    if (!itemStack.isEmpty()) {
                        GlStateManager.pushMatrix();
                        GlStateManager.scalef(scaleFactor, scaleFactor, scaleFactor); // Уменьшаем размеры предмета
                        mc.getItemRenderer().renderItemIntoGUI(itemStack, (int) (itemRenderX / scaleFactor), (int) (itemRenderY / scaleFactor));
                        GlStateManager.popMatrix();
                    }

                }

                // Рендеринг квадрата слота
                DisplayUtils.drawRoundedRect(slotX, slotY, SLOT_SIZE, SLOT_SIZE, 4, 0x55CCCCCC);
            }
        }


        Vector4i colors = new Vector4i(HUD.getColor(0, 1), HUD.getColor(90, 1), HUD.getColor(180, 1), HUD.getColor(270, 1));
        DisplayUtils.drawImage(imagePath, posX + padding, posY + padding, iconSize, iconSize, colors);
        Scissor.push();
        Scissor.setFromComponentCoordinates(posX, posY, width, height);
        Fonts.sfui.drawCenteredText(ms, name, posX + width / 2, posY + padding + 0.5f, fontSize);

        posY += fontSize + padding * 2;

        float maxWidth = Fonts.sfMedium.getWidth(name, fontSize) + padding * 2;
        float localHeight = fontSize + padding * 2;


        DisplayUtils.drawRectHorizontalW(posX + 0.5f, posY, width - 1, 2.5f, 3, ColorUtils.rgba(0, 0, 0, (int) (255 * 0.25f)));
        Scissor.unset();
        Scissor.pop();
        width = Math.max(maxWidth, 185);
        height = localHeight + 65.0f;
        dragging.setWidth(width);
        dragging.setHeight(height);
    }


    private void drawStyledRect(float x,
                                float y,
                                float width,
                                float height,
                                float radius) {

        DisplayUtils.drawRoundedRect(x - 0.5f, y - 0.5f, width + 1, height + 1, radius + 0.5f, ColorUtils.getColor(0)); // outline
        DisplayUtils.drawRoundedRect(x, y, width, height, radius, ColorUtils.rgba(21, 21, 21, 255));
    }
}
ss:
Посмотреть вложение 276296
skid inventoryhud экспенсива 2.0 на базу 3.1
/del было в сурсах фури, СУКА почему мои хуйни не одобряют, а эту хуету одобрили
 
Начинающий
Статус
Оффлайн
Регистрация
5 Апр 2023
Сообщения
389
Реакции[?]
1
Поинты[?]
2K
Java:
package im.expensive.ui.display.impl;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import im.expensive.Expensive;
import im.expensive.events.EventDisplay;
import im.expensive.functions.impl.render.HUD;
import im.expensive.ui.display.ElementRenderer;
import im.expensive.ui.styles.Style;
import im.expensive.utils.drag.Dragging;
import im.expensive.utils.math.Vector4i;
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 im.expensive.utils.text.GradientUtil;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.ITextComponent;

@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class SeeInventoryRenderer implements ElementRenderer {
    private final int INVENTORY_ROWS = 3;
    private final int INVENTORY_COLUMNS = 9;
    private final int SLOT_SIZE = 18;
    private final int SLOT_PADDING = 2;
    final Dragging dragging;
    float width;
    float height;
    private final Minecraft mc = Minecraft.getInstance();
    final ResourceLocation imagePath = new ResourceLocation("expensive/images/hud/backpack.png");
    float padding = 5;

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

        float posX = dragging.getX();
        float posY = dragging.getY();
        float fontSize = 6.5f;
        float padding = 5;

        ITextComponent name = GradientUtil.gradient("Инвентарь");

        Style style = Expensive.getInstance().getStyleManager().getCurrentStyle();

        DisplayUtils.drawShadow(posX, posY, width, height, 10, style.getFirstColor().getRGB(), style.getSecondColor().getRGB());
        drawStyledRect(posX, posY, width, height, 4);

        NonNullList<ItemStack> inventorySlots = mc.player.inventory.mainInventory;

// Рендеринг предметов в слотах инвентаря с сдвигом и уменьшением размера
        for (int row = 0; row < INVENTORY_ROWS; row++) {
            for (int col = 0; col < INVENTORY_COLUMNS; col++) {
                float slotX = posX + 3.5f + col * (SLOT_SIZE + SLOT_PADDING); // Начальная позиция слота по X
                float slotY = posY + height - 62 + row * (SLOT_SIZE + SLOT_PADDING); // Начальная позиция слота по Y

                // Получение индекса слота в инвентаре
                int slotIndex = col + (row + 1) * INVENTORY_COLUMNS; // Начинаем с индекса 9, чтобы пропустить хотбар

                // Получение предмета в текущем слоте инвентаря
                ItemStack itemStack = inventorySlots.get(slotIndex);

                // Сдвиг отображения предмета на 2 пикселя вправо и на 1 пиксель вниз
                float itemRenderX = slotX + 2.7f; // Сдвиг на 2 пикселя вправо
                float itemRenderY = slotY + 2f; // Сдвиг на 1 пиксель вниз

                // Размеры предмета уменьшены на 20%
                float scaleFactor = 0.8f;
                int scaledWidth = (int) (16 * scaleFactor);
                int scaledHeight = (int) (16 * scaleFactor);

                // Рендеринг предмета в слоте
                if (!itemStack.isEmpty()) {
                    GlStateManager.pushMatrix();
                    GlStateManager.scalef(scaleFactor, scaleFactor, scaleFactor); // Уменьшаем размеры предмета
                    mc.getItemRenderer().renderItemIntoGUI(itemStack, (int) (itemRenderX / scaleFactor), (int) (itemRenderY / scaleFactor));
                    GlStateManager.popMatrix();

// Отображение количества предметов, если их больше одного
                    int count = itemStack.getCount();
                    if (count > 1) {
                        String countString = String.valueOf(count);
                        float countX = itemRenderX + (count > 9 ? 8.5f : 11f); // Смещаем влево на 2.5 пикселя или 6.5 пикселя в зависимости от размера текста
                        float countY = itemRenderY + (count > 9 ? 10f : 10f); // Смещаем вниз на 1.5 пикселя

                        // Уменьшаем размер шрифта, если количество больше 9
                        float countScale = count > 9 ? 0.6f : 0.65f;

                        // Сохраняем текущую матрицу и масштабируем её
                        RenderSystem.pushMatrix();
                        RenderSystem.scalef(countScale, countScale, countScale);

                        // Рисуем текст с тенью с новым размером шрифта
                        mc.fontRenderer.drawStringWithShadow(eventDisplay.getMatrixStack(), countString, countX / countScale, countY / countScale, 0xFFFFFF);

                        // Восстанавливаем исходную матрицу
                        RenderSystem.popMatrix();
                    }



// Рендеринг предмета в слоте
                    if (!itemStack.isEmpty()) {
                        GlStateManager.pushMatrix();
                        GlStateManager.scalef(scaleFactor, scaleFactor, scaleFactor); // Уменьшаем размеры предмета
                        mc.getItemRenderer().renderItemIntoGUI(itemStack, (int) (itemRenderX / scaleFactor), (int) (itemRenderY / scaleFactor));
                        GlStateManager.popMatrix();
                    }

                }

                // Рендеринг квадрата слота
                DisplayUtils.drawRoundedRect(slotX, slotY, SLOT_SIZE, SLOT_SIZE, 4, 0x55CCCCCC);
            }
        }


        Vector4i colors = new Vector4i(HUD.getColor(0, 1), HUD.getColor(90, 1), HUD.getColor(180, 1), HUD.getColor(270, 1));
        DisplayUtils.drawImage(imagePath, posX + padding, posY + padding, iconSize, iconSize, colors);
        Scissor.push();
        Scissor.setFromComponentCoordinates(posX, posY, width, height);
        Fonts.sfui.drawCenteredText(ms, name, posX + width / 2, posY + padding + 0.5f, fontSize);

        posY += fontSize + padding * 2;

        float maxWidth = Fonts.sfMedium.getWidth(name, fontSize) + padding * 2;
        float localHeight = fontSize + padding * 2;


        DisplayUtils.drawRectHorizontalW(posX + 0.5f, posY, width - 1, 2.5f, 3, ColorUtils.rgba(0, 0, 0, (int) (255 * 0.25f)));
        Scissor.unset();
        Scissor.pop();
        width = Math.max(maxWidth, 185);
        height = localHeight + 65.0f;
        dragging.setWidth(width);
        dragging.setHeight(height);
    }


    private void drawStyledRect(float x,
                                float y,
                                float width,
                                float height,
                                float radius) {

        DisplayUtils.drawRoundedRect(x - 0.5f, y - 0.5f, width + 1, height + 1, radius + 0.5f, ColorUtils.getColor(0)); // outline
        DisplayUtils.drawRoundedRect(x, y, width, height, radius, ColorUtils.rgba(21, 21, 21, 255));
    }
}
ss:
Посмотреть вложение 276296
skid inventoryhud экспенсива 2.0 на базу 3.1
/del
научись писать своё а не воровать из сурсов
 
Начинающий
Статус
Оффлайн
Регистрация
13 Сен 2023
Сообщения
21
Реакции[?]
0
Поинты[?]
0
/del уже сливали
реальноооо???
я скиднул у экспенсива 2.0 в 3.1
/del уже сливали
1715226093486.png
/del
научись писать своё а не воровать из сурсов
1715226135489.png
пастер вы вообще заткнись сначала выучи deque и потом выёбывайся
 
Последнее редактирование:
Начинающий
Статус
Онлайн
Регистрация
29 Апр 2023
Сообщения
798
Реакции[?]
4
Поинты[?]
5K
Java:
package im.expensive.ui.display.impl;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import im.expensive.Expensive;
import im.expensive.events.EventDisplay;
import im.expensive.functions.impl.render.HUD;
import im.expensive.ui.display.ElementRenderer;
import im.expensive.ui.styles.Style;
import im.expensive.utils.drag.Dragging;
import im.expensive.utils.math.Vector4i;
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 im.expensive.utils.text.GradientUtil;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.ITextComponent;

@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class SeeInventoryRenderer implements ElementRenderer {
    private final int INVENTORY_ROWS = 3;
    private final int INVENTORY_COLUMNS = 9;
    private final int SLOT_SIZE = 18;
    private final int SLOT_PADDING = 2;
    final Dragging dragging;
    float width;
    float height;
    private final Minecraft mc = Minecraft.getInstance();
    final ResourceLocation imagePath = new ResourceLocation("expensive/images/hud/backpack.png");
    float padding = 5;

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

        float posX = dragging.getX();
        float posY = dragging.getY();
        float fontSize = 6.5f;
        float padding = 5;

        ITextComponent name = GradientUtil.gradient("Инвентарь");

        Style style = Expensive.getInstance().getStyleManager().getCurrentStyle();

        DisplayUtils.drawShadow(posX, posY, width, height, 10, style.getFirstColor().getRGB(), style.getSecondColor().getRGB());
        drawStyledRect(posX, posY, width, height, 4);

        NonNullList<ItemStack> inventorySlots = mc.player.inventory.mainInventory;

// Рендеринг предметов в слотах инвентаря с сдвигом и уменьшением размера
        for (int row = 0; row < INVENTORY_ROWS; row++) {
            for (int col = 0; col < INVENTORY_COLUMNS; col++) {
                float slotX = posX + 3.5f + col * (SLOT_SIZE + SLOT_PADDING); // Начальная позиция слота по X
                float slotY = posY + height - 62 + row * (SLOT_SIZE + SLOT_PADDING); // Начальная позиция слота по Y

                // Получение индекса слота в инвентаре
                int slotIndex = col + (row + 1) * INVENTORY_COLUMNS; // Начинаем с индекса 9, чтобы пропустить хотбар

                // Получение предмета в текущем слоте инвентаря
                ItemStack itemStack = inventorySlots.get(slotIndex);

                // Сдвиг отображения предмета на 2 пикселя вправо и на 1 пиксель вниз
                float itemRenderX = slotX + 2.7f; // Сдвиг на 2 пикселя вправо
                float itemRenderY = slotY + 2f; // Сдвиг на 1 пиксель вниз

                // Размеры предмета уменьшены на 20%
                float scaleFactor = 0.8f;
                int scaledWidth = (int) (16 * scaleFactor);
                int scaledHeight = (int) (16 * scaleFactor);

                // Рендеринг предмета в слоте
                if (!itemStack.isEmpty()) {
                    GlStateManager.pushMatrix();
                    GlStateManager.scalef(scaleFactor, scaleFactor, scaleFactor); // Уменьшаем размеры предмета
                    mc.getItemRenderer().renderItemIntoGUI(itemStack, (int) (itemRenderX / scaleFactor), (int) (itemRenderY / scaleFactor));
                    GlStateManager.popMatrix();

// Отображение количества предметов, если их больше одного
                    int count = itemStack.getCount();
                    if (count > 1) {
                        String countString = String.valueOf(count);
                        float countX = itemRenderX + (count > 9 ? 8.5f : 11f); // Смещаем влево на 2.5 пикселя или 6.5 пикселя в зависимости от размера текста
                        float countY = itemRenderY + (count > 9 ? 10f : 10f); // Смещаем вниз на 1.5 пикселя

                        // Уменьшаем размер шрифта, если количество больше 9
                        float countScale = count > 9 ? 0.6f : 0.65f;

                        // Сохраняем текущую матрицу и масштабируем её
                        RenderSystem.pushMatrix();
                        RenderSystem.scalef(countScale, countScale, countScale);

                        // Рисуем текст с тенью с новым размером шрифта
                        mc.fontRenderer.drawStringWithShadow(eventDisplay.getMatrixStack(), countString, countX / countScale, countY / countScale, 0xFFFFFF);

                        // Восстанавливаем исходную матрицу
                        RenderSystem.popMatrix();
                    }



// Рендеринг предмета в слоте
                    if (!itemStack.isEmpty()) {
                        GlStateManager.pushMatrix();
                        GlStateManager.scalef(scaleFactor, scaleFactor, scaleFactor); // Уменьшаем размеры предмета
                        mc.getItemRenderer().renderItemIntoGUI(itemStack, (int) (itemRenderX / scaleFactor), (int) (itemRenderY / scaleFactor));
                        GlStateManager.popMatrix();
                    }

                }

                // Рендеринг квадрата слота
                DisplayUtils.drawRoundedRect(slotX, slotY, SLOT_SIZE, SLOT_SIZE, 4, 0x55CCCCCC);
            }
        }


        Vector4i colors = new Vector4i(HUD.getColor(0, 1), HUD.getColor(90, 1), HUD.getColor(180, 1), HUD.getColor(270, 1));
        DisplayUtils.drawImage(imagePath, posX + padding, posY + padding, iconSize, iconSize, colors);
        Scissor.push();
        Scissor.setFromComponentCoordinates(posX, posY, width, height);
        Fonts.sfui.drawCenteredText(ms, name, posX + width / 2, posY + padding + 0.5f, fontSize);

        posY += fontSize + padding * 2;

        float maxWidth = Fonts.sfMedium.getWidth(name, fontSize) + padding * 2;
        float localHeight = fontSize + padding * 2;


        DisplayUtils.drawRectHorizontalW(posX + 0.5f, posY, width - 1, 2.5f, 3, ColorUtils.rgba(0, 0, 0, (int) (255 * 0.25f)));
        Scissor.unset();
        Scissor.pop();
        width = Math.max(maxWidth, 185);
        height = localHeight + 65.0f;
        dragging.setWidth(width);
        dragging.setHeight(height);
    }


    private void drawStyledRect(float x,
                                float y,
                                float width,
                                float height,
                                float radius) {

        DisplayUtils.drawRoundedRect(x - 0.5f, y - 0.5f, width + 1, height + 1, radius + 0.5f, ColorUtils.getColor(0)); // outline
        DisplayUtils.drawRoundedRect(x, y, width, height, radius, ColorUtils.rgba(21, 21, 21, 255));
    }
}
ss:
Посмотреть вложение 276296
skid inventoryhud экспенсива 2.0 на базу 3.1
/del Furious src
 
Начинающий
Статус
Оффлайн
Регистрация
8 Мар 2024
Сообщения
639
Реакции[?]
2
Поинты[?]
2K
Java:
package im.expensive.ui.display.impl;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import im.expensive.Expensive;
import im.expensive.events.EventDisplay;
import im.expensive.functions.impl.render.HUD;
import im.expensive.ui.display.ElementRenderer;
import im.expensive.ui.styles.Style;
import im.expensive.utils.drag.Dragging;
import im.expensive.utils.math.Vector4i;
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 im.expensive.utils.text.GradientUtil;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.ITextComponent;

@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class SeeInventoryRenderer implements ElementRenderer {
    private final int INVENTORY_ROWS = 3;
    private final int INVENTORY_COLUMNS = 9;
    private final int SLOT_SIZE = 18;
    private final int SLOT_PADDING = 2;
    final Dragging dragging;
    float width;
    float height;
    private final Minecraft mc = Minecraft.getInstance();
    float padding = 5;

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

        float posX = dragging.getX();
        float posY = dragging.getY();
        float fontSize = 6.5f;
        float padding = 5;

        ITextComponent name = GradientUtil.gradient("Инвентарь");

        Style style = Expensive.getInstance().getStyleManager().getCurrentStyle();

        DisplayUtils.drawShadow(posX, posY, width, height, 10, style.getFirstColor().getRGB(), style.getSecondColor().getRGB());
        drawStyledRect(posX, posY, width, height, 4);

        NonNullList<ItemStack> inventorySlots = mc.player.inventory.mainInventory;

        for (int row = 0; row < INVENTORY_ROWS; row++) {
            for (int col = 0; col < INVENTORY_COLUMNS; col++) {
                float slotX = posX + 3.5f + col * (SLOT_SIZE + SLOT_PADDING); // Начальная позиция слота по X
                float slotY = posY + height - 62 + row * (SLOT_SIZE + SLOT_PADDING); // Начальная позиция слота по Y

                // Получение индекса слота в инвентаре
                int slotIndex = col + (row + 1) * INVENTORY_COLUMNS;

                // Получение предмета в текущем слоте инвентаря
                ItemStack itemStack = inventorySlots.get(slotIndex);

                // Сдвиг отображения предмета на 2 пикселя вправо и на 1 пиксель вниз
                float itemRenderX = slotX + 2.7f; // Сдвиг на 2 пикселя вправо
                float itemRenderY = slotY + 2f; // Сдвиг на 1 пиксель вниз

                // Размеры предмета уменьшены на 20%
                float scaleFactor = 0.8f;
                int scaledWidth = (int) (16 * scaleFactor);
                int scaledHeight = (int) (16 * scaleFactor);

                // Рендеринг предмета в слоте
                if (!itemStack.isEmpty()) {
                    GlStateManager.pushMatrix();
                    GlStateManager.scalef(scaleFactor, scaleFactor, scaleFactor); // Уменьшаем размеры предмета
                    mc.getItemRenderer().renderItemIntoGUI(itemStack, (int) (itemRenderX / scaleFactor), (int) (itemRenderY / scaleFactor));
                    GlStateManager.popMatrix();

                    int count = itemStack.getCount();
                    if (count > 1) {
                        String countString = String.valueOf(count);
                        float countX = itemRenderX + (count > 9 ? 8.5f : 11f);
                        float countY = itemRenderY + (count > 9 ? 10f : 10f);

                        // Уменьшаем размер шрифта, если количество больше 9
                        float countScale = count > 9 ? 0.6f : 0.65f;

                        // Сохраняем текущую матрицу и масштабируем её
                        RenderSystem.pushMatrix();
                        RenderSystem.scalef(countScale, countScale, countScale);

                        // Рисуем текст с тенью с новым размером шрифта
                        mc.fontRenderer.drawStringWithShadow(eventDisplay.getMatrixStack(), countString, countX / countScale, countY / countScale, 0xFFFFFF);

                        // Восстанавливаем исходную матрицу
                        RenderSystem.popMatrix();
                    }



// Рендеринг предмета в слоте
                    if (!itemStack.isEmpty()) {
                        GlStateManager.pushMatrix();
                        GlStateManager.scalef(scaleFactor, scaleFactor, scaleFactor); // Уменьшаем размеры предмета
                        mc.getItemRenderer().renderItemIntoGUI(itemStack, (int) (itemRenderX / scaleFactor), (int) (itemRenderY / scaleFactor));
                        GlStateManager.popMatrix();
                    }

                }

                // Рендеринг квадрата слота
                DisplayUtils.drawRoundedRect(slotX, slotY, SLOT_SIZE, SLOT_SIZE, 4, 0x55CCCCCC);
            }
        }


        Vector4i colors = new Vector4i(HUD.getColor(0, 1), HUD.getColor(90, 1), HUD.getColor(180, 1), HUD.getColor(270, 1));
        DisplayUtils.drawImage(imagePath, posX + padding, posY + padding, iconSize, iconSize, colors);
        Scissor.push();
        Scissor.setFromComponentCoordinates(posX, posY, width, height);
        Fonts.sfui.drawCenteredText(ms, name, posX + width / 2, posY + padding + 0.5f, fontSize);

        posY += fontSize + padding * 2;

        float maxWidth = Fonts.sfMedium.getWidth(name, fontSize) + padding * 2;
        float localHeight = fontSize + padding * 2;


        DisplayUtils.drawRectHorizontalW(posX + 0.5f, posY, width - 1, 2.5f, 3, ColorUtils.rgba(0, 0, 0, (int) (255 * 0.25f)));
        Scissor.unset();
        Scissor.pop();
        width = Math.max(maxWidth, 185);
        height = localHeight + 65.0f;
        dragging.setWidth(width);
        dragging.setHeight(height);
    }


    private void drawStyledRect(float x,
                                float y,
                                float width,
                                float height,
                                float radius) {

        DisplayUtils.drawRoundedRect(x - 0.5f, y - 0.5f, width + 1, height + 1, radius + 0.5f, ColorUtils.getColor(0)); // outline
        DisplayUtils.drawRoundedRect(x, y, width, height, radius, ColorUtils.rgba(21, 21, 21, 255));
    }
}
ss:
Посмотреть вложение 276296
skid inventoryhud экспенсива 2.0 на базу 3.1
/del brooo xd pasta & forius
/del CHAT GPT CODE
 
Начинающий
Статус
Онлайн
Регистрация
29 Апр 2023
Сообщения
798
Реакции[?]
4
Поинты[?]
5K
Начинающий
Статус
Оффлайн
Регистрация
13 Сен 2023
Сообщения
21
Реакции[?]
0
Поинты[?]
0
Сверху Снизу