- 43
- 2
- 2
Всех приветствую!
Думаю ни для кого не секрет, как выглядит стак предметов. Ну, если секрет, то вот...
Отрисован предмет поверх слота, поверх предмета отрисовано число - количество предметов.
Так вот, я хочу сделать так же, но только на своём скрине.
Уже есть отрисовка слота, выделение слота, отрисовка предмета. Но с отрисовкой количества возникают проблемы.
Не то, чтобы текст не рендерится вообще, он рендерится под предметом. Посмотрите сами...
Думаю, время фразы код в студию!
И сам скрин, который показывает моё бракованное меню (не полный код)...
Как всё-таки сделать так, чтобы текст с количеством предмета рендерился поверх предмета?
Думаю ни для кого не секрет, как выглядит стак предметов. Ну, если секрет, то вот...
Отрисован предмет поверх слота, поверх предмета отрисовано число - количество предметов.
Так вот, я хочу сделать так же, но только на своём скрине.
Уже есть отрисовка слота, выделение слота, отрисовка предмета. Но с отрисовкой количества возникают проблемы.
Не то, чтобы текст не рендерится вообще, он рендерится под предметом. Посмотрите сами...
Думаю, время фразы код в студию!
AbstractCreativeMenu:
package ru.aloyenz.creativereborn.client.menus;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.util.text.ITextComponent;
import net.minecraftforge.client.event.GuiScreenEvent;
public class AbstractCreativeMenu extends Screen {
public AbstractCreativeMenu(ITextComponent p_i51108_1_) {
super(p_i51108_1_);
}
public void init() {
super.init();
}
@Override
public boolean isPauseScreen() {
return false;
}
@Override
public void render(MatrixStack matrixStack, int posX, int posY, float partialTicks) {
net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new GuiScreenEvent.BackgroundDrawnEvent(this, matrixStack));
renderBackground(matrixStack);
}
}
ItemButtonMenu:
public class ItemButtonMenu extends AbstractCreativeMenu {
@Override
public void render(MatrixStack matrixStack, int posX, int posY, float partialTicks) {
super.render(matrixStack, posX, posY, partialTicks);
FontRenderer renderer = Minecraft.getInstance().font;
renderBackPlate(matrixStack, renderer);
// Следующий метод рендерит сами иконки. Грубо говоря, он прогоняется по определённому
// массиву и выводит предметы из него на экран.
// Вот как рендерится один предмет:
// if (!itemToRender.equals(ItemStack.EMPTY)) {
// this.itemRenderer.renderAndDecorateItem(itemToRender, positionX, positionY);
// }
renderItems(MatrixStack);
// И вот та самая часть, на которой возникают проблемы: рендер количества.
renderAmounts(matrixStack, renderer, startX, startY);
// Даже если я перед рендером количества ставлю что-то на подобии
// - RenderSystem.enableBlend();
// - RenderSystem.defaultBlendFunc();
// Или же
// - RenderSystem.enableBlend();
// - RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
// То ничего не работает. Всё остаётся так же как и было
// К слову, текст я рендерю по методу...
// font.draw(matrixStack, String.valueOf(itemToRender.getCount()), countStartPos, positionY + 10,
// ColorHelper.PackedColor.color(255, 255, 255, 255));
renderHovering(matrixStack, posX, posY);
}
}
Как всё-таки сделать так, чтобы текст с количеством предмета рендерился поверх предмета?