package com.jaquadro.minecraft.gardencore.client.gui; import com.jaquadro.minecraft.gardencore.block.tile.TileEntityGarden; import com.jaquadro.minecraft.gardencore.inventory.ContainerGarden; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Slot; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; public class GuiGardenLayout extends GuiContainer { private static final ResourceLocation guiTextures = new ResourceLocation("gardencore", "textures/gui/gardenLayout.png"); private TileEntityGarden tileGarden; private Slot hoveredSlot; private static final int slotBaseX = 44; private static final int slotBaseY = 18; private static final int smDisabledX = 176; private static final int smDisabledY = 0; public GuiGardenLayout (InventoryPlayer inventory, TileEntityGarden tileEntity) { super(new ContainerGarden(inventory, tileEntity)); tileGarden = tileEntity; xSize = 176; ySize = 204; } @Override public void drawScreen (int mouseX, int mouseY, float dt) { hoveredSlot = null; for (int i = 0, n = inventorySlots.inventorySlots.size(); i < n; i++) { Slot slot = inventorySlots.getSlot(i); if (func_146978_c(slot.xDisplayPosition, slot.yDisplayPosition, 16, 16, mouseX, mouseY)) hoveredSlot = slot; } super.drawScreen(mouseX, mouseY, dt); } @Override protected void drawGuiContainerForegroundLayer (int p_146979_1_, int p_146979_2_) { GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); String name = tileGarden.hasCustomInventoryName() ? tileGarden.getInventoryName() : I18n.format(tileGarden.getInventoryName(), new Object[0]); fontRendererObj.drawString(name, 8, 6, 4210752); fontRendererObj.drawString(I18n.format("container.inventory", new Object[0]), 8, ySize - 96 + 2, 4210752); for (int i = 0, n = inventorySlots.inventorySlots.size(); i < n; i++) drawSlotHighlight(inventorySlots.getSlot(i)); GL11.glPopAttrib(); } @Override protected void drawGuiContainerBackgroundLayer (float var1, int var2, int var3) { GL11.glColor4f(1, 1, 1, 1); mc.getTextureManager().bindTexture(guiTextures); int guiX = (width - xSize) / 2; int guiY = (height - ySize) / 2; drawTexturedModalRect(guiX, guiY, 0, 0, xSize, ySize); if (!tileGarden.isAttachedNeighbor(tileGarden.xCoord - 1, tileGarden.yCoord, tileGarden.zCoord - 1)) drawTexturedModalRect(guiX + slotBaseX, guiY + slotBaseY, smDisabledX, smDisabledY, 16, 16); if (!tileGarden.isAttachedNeighbor(tileGarden.xCoord, tileGarden.yCoord, tileGarden.zCoord - 1)) drawTexturedModalRect(guiX + slotBaseX + 18 * 2, guiY + slotBaseY, smDisabledX, smDisabledY, 16, 16); if (!tileGarden.isAttachedNeighbor(tileGarden.xCoord + 1, tileGarden.yCoord, tileGarden.zCoord - 1)) drawTexturedModalRect(guiX + slotBaseX + 18 * 4, guiY + slotBaseY, smDisabledX, smDisabledY, 16, 16); if (!tileGarden.isAttachedNeighbor(tileGarden.xCoord + 1, tileGarden.yCoord, tileGarden.zCoord)) drawTexturedModalRect(guiX + slotBaseX + 18 * 4, guiY + slotBaseY + 18 * 2, smDisabledX, smDisabledY, 16, 16); if (!tileGarden.isAttachedNeighbor(tileGarden.xCoord + 1, tileGarden.yCoord, tileGarden.zCoord + 1)) drawTexturedModalRect(guiX + slotBaseX + 18 * 4, guiY + slotBaseY + 18 * 4, smDisabledX, smDisabledY, 16, 16); if (!tileGarden.isAttachedNeighbor(tileGarden.xCoord, tileGarden.yCoord, tileGarden.zCoord + 1)) drawTexturedModalRect(guiX + slotBaseX + 18 * 2, guiY + slotBaseY + 18 * 4, smDisabledX, smDisabledY, 16, 16); if (!tileGarden.isAttachedNeighbor(tileGarden.xCoord - 1, tileGarden.yCoord, tileGarden.zCoord + 1)) drawTexturedModalRect(guiX + slotBaseX, guiY + slotBaseY + 18 * 4, smDisabledX, smDisabledY, 16, 16); if (!tileGarden.isAttachedNeighbor(tileGarden.xCoord - 1, tileGarden.yCoord, tileGarden.zCoord)) drawTexturedModalRect(guiX + slotBaseX, guiY + slotBaseY + 18 * 2, smDisabledX, smDisabledY, 16, 16); } protected void drawSlotHighlight (Slot slot) { if (hoveredSlot == null || isInPlayerInventory(hoveredSlot) || slot == hoveredSlot) return; if (mc.thePlayer.inventory.getItemStack() == null) { if (slot != null && slot.getHasStack() && hoveredSlot.isItemValid(slot.getStack())) { zLevel += 100; drawGradientRect(slot.xDisplayPosition, slot.yDisplayPosition, slot.xDisplayPosition + 16, slot.yDisplayPosition + 16, 0x80ffffff, 0x80ffffff); zLevel -= 100; } } } private boolean isInPlayerInventory (Slot slot) { return slot.inventory == mc.thePlayer.inventory; } }