package com.dta.extracarts.client; import invtweaks.api.container.ChestContainer; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; /** * Created by Skylar on 10/8/2014. */ @ChestContainer(isLargeChest = true) public abstract class ContainerExtraChestCart extends Container { private IInventory cart; private int ySize; private int xSize; private int columns; public ContainerExtraChestCart () { } public ContainerExtraChestCart (IInventory invPlayer, IInventory cart, int xSize, int ySize, int rows) { this(invPlayer, cart, xSize, ySize, rows, 9); } public ContainerExtraChestCart (IInventory invPlayer, IInventory cart, int xSize, int ySize, int rows, int columns) { this.cart = cart; this.ySize = ySize;//202 this.xSize = xSize;//184 this.columns = columns; int leftOffset = (xSize - 162)/2 +1; for (int y = 0; y < rows; y++){ for (int x = 0; x < columns; x++){ addSlotToContainer(new Slot(cart, x + y * columns, 12 + 18 * x, 8 + 18 * y)); } } for (int y = 0; y < 3; y++) { for (int x = 0; x < 9; x++) { addSlotToContainer(new Slot(invPlayer, x + y * 9 + 9, leftOffset + 18 * x, ySize - (4 - y) * 18 - 10)); } } for (int x = 0; x < 9; x++) { addSlotToContainer(new Slot(invPlayer, x, leftOffset + 18 * x, ySize-24)); } } @Override public boolean canInteractWith(EntityPlayer entityPlayer) { return cart.isUseableByPlayer(entityPlayer); } @Override public ItemStack transferStackInSlot(EntityPlayer player, int i) { Slot slot = (Slot) inventorySlots.get(i); if (slot != null && slot.getHasStack()) { ItemStack stack = slot.getStack(); ItemStack result = stack.copy(); if (i < getCart().getSizeInventory()) { if (!mergeItemStack(stack, getCart().getSizeInventory(), 36 + getCart().getSizeInventory(), false)) { return null; } } else if (!mergeItemStack(stack, 0, getCart().getSizeInventory(), false)) { return null; } if (stack.stackSize == 0) { slot.putStack(null); } else { slot.onSlotChanged(); } slot.onPickupFromSlot(player, stack); return result; } return null; } public IInventory getCart() { return cart; } public void setCart(IInventory cart) { this.cart = cart; } public int getySize() { return ySize; } public void setySize(int ySize) { this.ySize = ySize; } public int getxSize() { return xSize; } public void setxSize(int xSize) { this.xSize = xSize; } @ChestContainer.RowSizeCallback public int getNumColumns() { return this.columns; } }