92 lines
2.1 KiB
Java
92 lines
2.1 KiB
Java
package resonantinduction.old.transport.encoder;
|
|
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.entity.player.InventoryPlayer;
|
|
import net.minecraft.inventory.Container;
|
|
import net.minecraft.inventory.Slot;
|
|
import net.minecraft.item.ItemStack;
|
|
import dark.lib.prefab.invgui.SlotSpecific;
|
|
|
|
public class ContainerEncoder extends Container
|
|
{
|
|
public static final int Y_OFFSET = 0;
|
|
|
|
private ItemStack[] containingItems = new ItemStack[1];
|
|
private TileEntityEncoder tileEntity;
|
|
|
|
public ContainerEncoder(InventoryPlayer inventoryPlayer, TileEntityEncoder encoder)
|
|
{
|
|
this.tileEntity = encoder;
|
|
|
|
// Disk
|
|
this.addSlotToContainer(new SlotSpecific(encoder, 0, 80, 24 + Y_OFFSET, ItemDisk.class));
|
|
|
|
int row;
|
|
|
|
// Player Inventory
|
|
for (row = 0; row < 3; ++row)
|
|
{
|
|
for (int slot = 0; slot < 9; ++slot)
|
|
{
|
|
this.addSlotToContainer(new Slot(inventoryPlayer, slot + row * 9 + 9, 8 + slot * 18, 97 + row * 8));
|
|
}
|
|
}
|
|
for (row = 0; row < 9; ++row)
|
|
{
|
|
this.addSlotToContainer(new Slot(inventoryPlayer, row, 8 + row * 18, 145));
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean canInteractWith(EntityPlayer player)
|
|
{
|
|
return this.tileEntity.isUseableByPlayer(player);
|
|
}
|
|
|
|
/** Called to transfer a stack from one inventory to the other eg. when shift clicking. */
|
|
@Override
|
|
public ItemStack transferStackInSlot(EntityPlayer player, int slot)
|
|
{
|
|
ItemStack copyStack = null;
|
|
Slot slotObj = (Slot) this.inventorySlots.get(slot);
|
|
|
|
if (slotObj != null && slotObj.getHasStack())
|
|
{
|
|
ItemStack slotStack = slotObj.getStack();
|
|
copyStack = slotStack.copy();
|
|
|
|
if (slot >= 1)
|
|
{
|
|
if (this.getSlot(0).isItemValid(slotStack))
|
|
{
|
|
if (!this.mergeItemStack(slotStack, 0, 1, false))
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
else if (!this.mergeItemStack(slotStack, this.containingItems.length, 37, false))
|
|
{
|
|
return null;
|
|
}
|
|
|
|
if (slotStack.stackSize == 0)
|
|
{
|
|
slotObj.putStack((ItemStack) null);
|
|
}
|
|
else
|
|
{
|
|
slotObj.onSlotChanged();
|
|
}
|
|
|
|
if (slotStack.stackSize == copyStack.stackSize)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
slotObj.onPickupFromSlot(player, slotStack);
|
|
}
|
|
|
|
return copyStack;
|
|
}
|
|
}
|