diff options
Diffstat (limited to 'src/main/java/container')
-rw-r--r-- | src/main/java/container/Container_ItemDistributionNode.java | 68 | ||||
-rw-r--r-- | src/main/java/container/Gui_ItemDistributionNode.java | 49 |
2 files changed, 117 insertions, 0 deletions
diff --git a/src/main/java/container/Container_ItemDistributionNode.java b/src/main/java/container/Container_ItemDistributionNode.java new file mode 100644 index 0000000000..08096bc80f --- /dev/null +++ b/src/main/java/container/Container_ItemDistributionNode.java @@ -0,0 +1,68 @@ +package container; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; +import tileentities.TE_ItemDistributionNode; + +public class Container_ItemDistributionNode extends Container { + + private final TE_ItemDistributionNode te; + + private int slotID = 0; + + public Container_ItemDistributionNode(TE_ItemDistributionNode te, EntityPlayer player) { + this.te = te; + + // Networked Storage + for(int i = 0; i < 4; i++) { + for(int j = 0; j < 4; j++) { + super.addSlotToContainer(new Slot(te, slotID++, 18 * j + 20, 19 * i + 20)); + } + } + + //Inventory + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 9; j++) { + addSlotToContainer(new Slot(player.inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + // Hotbar + for (int i = 0; i < 9; i++) { + addSlotToContainer(new Slot(player.inventory, i, 8 + i * 18, 142)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int slotRaw) { + ItemStack stack = null; + final Slot slot = (Slot) inventorySlots.get(slotRaw); + + if (slot != null && slot.getHasStack()) { + final ItemStack stackInSlot = slot.getStack(); + stack = stackInSlot.copy(); + + if (slotRaw < 3 * 9) { + if (!mergeItemStack(stackInSlot, 3 * 9, inventorySlots.size(), true)) { + return null; + } + } else if (!mergeItemStack(stackInSlot, 0, 3 * 9, false)) { + return null; + } + + if (stackInSlot.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + } + return stack; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return te.isUseableByPlayer(player); + } + +} diff --git a/src/main/java/container/Gui_ItemDistributionNode.java b/src/main/java/container/Gui_ItemDistributionNode.java new file mode 100644 index 0000000000..08f530fce8 --- /dev/null +++ b/src/main/java/container/Gui_ItemDistributionNode.java @@ -0,0 +1,49 @@ +package container; + +import org.lwjgl.opengl.GL11; + +import kekztech.KekzCore; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; +import tileentities.TE_ItemDistributionNode; + +public class Gui_ItemDistributionNode extends GuiContainer { + + private final ResourceLocation texture = new ResourceLocation(KekzCore.MODID, "textures/gui/ItemDistributionNode.png"); + + private final InventoryPlayer inventory; + private final TE_ItemDistributionNode te; + + public Gui_ItemDistributionNode(TE_ItemDistributionNode te, EntityPlayer player) { + super(new Container_ItemDistributionNode(te, player)); + inventory = player.inventory; + this.te = te; + + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + + Minecraft.getMinecraft().renderEngine.bindTexture(texture); + GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); + + final int x = (super.width - super.xSize) / 2; + final int y = (super.height - super.ySize) / 2; + + super.drawTexturedModalRect(x, y, 0, 0, super.xSize, super.ySize); + } + + @Override + protected void drawGuiContainerForegroundLayer(int p1, int p2) { + super.fontRendererObj.drawString( + I18n.format(te.getInventoryName()), + (super.xSize / 2) - (fontRendererObj.getStringWidth(I18n.format(te.getInventoryName())) / 2), + 6, 4210752, false); + super.fontRendererObj.drawString( + I18n.format(inventory.getInventoryName()), 8, super.ySize - 96 + 2, 4210752); + } +} |