package net.minecraft.client.gui.screens.inventory; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.ContainerListener; import net.minecraft.world.inventory.ItemCombinerMenu; import net.minecraft.world.item.ItemStack; @Environment(EnvType.CLIENT) public abstract class ItemCombinerScreen extends AbstractContainerScreen implements ContainerListener { private final ResourceLocation menuResource; public ItemCombinerScreen(T menu, Inventory playerInventory, Component title, ResourceLocation menuResource) { super(menu, playerInventory, title); this.menuResource = menuResource; } protected void subInit() { } @Override protected void init() { super.init(); this.subInit(); this.menu.addSlotListener(this); } @Override public void removed() { super.removed(); this.menu.removeSlotListener(this); } @Override public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) { super.render(guiGraphics, mouseX, mouseY, partialTick); this.renderFg(guiGraphics, mouseX, mouseY, partialTick); this.renderTooltip(guiGraphics, mouseX, mouseY); } protected void renderFg(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) { } @Override protected void renderBg(GuiGraphics guiGraphics, float partialTick, int mouseX, int mouseY) { guiGraphics.blit(RenderType::guiTextured, this.menuResource, this.leftPos, this.topPos, 0.0F, 0.0F, this.imageWidth, this.imageHeight, 256, 256); this.renderErrorIcon(guiGraphics, this.leftPos, this.topPos); } protected abstract void renderErrorIcon(GuiGraphics guiGraphics, int x, int y); @Override public void dataChanged(AbstractContainerMenu containerMenu, int dataSlotIndex, int value) { } @Override public void slotChanged(AbstractContainerMenu containerToSend, int dataSlotIndex, ItemStack stack) { } }