package net.minecraft.client.gui.inventory;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.util.ArrayList;
import java.util.List;
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;
@SideOnly(Side.CLIENT)
class ContainerCreative extends Container
{
/** the list of items in this container */
public List itemList = new ArrayList();
public ContainerCreative(EntityPlayer par1EntityPlayer)
{
InventoryPlayer inventoryplayer = par1EntityPlayer.inventory;
int i;
for (i = 0; i < 5; ++i)
{
for (int j = 0; j < 9; ++j)
{
this.addSlotToContainer(new Slot(GuiContainerCreative.getInventory(), i * 9 + j, 9 + j * 18, 18 + i * 18));
}
}
for (i = 0; i < 9; ++i)
{
this.addSlotToContainer(new Slot(inventoryplayer, i, 9 + i * 18, 112));
}
this.scrollTo(0.0F);
}
public boolean canInteractWith(EntityPlayer par1EntityPlayer)
{
return true;
}
/**
* Updates the gui slots ItemStack's based on scroll position.
*/
public void scrollTo(float par1)
{
int i = this.itemList.size() / 9 - 5 + 1;
int j = (int)((double)(par1 * (float)i) + 0.5D);
if (j < 0)
{
j = 0;
}
for (int k = 0; k < 5; ++k)
{
for (int l = 0; l < 9; ++l)
{
int i1 = l + (k + j) * 9;
if (i1 >= 0 && i1 < this.itemList.size())
{
GuiContainerCreative.getInventory().setInventorySlotContents(l + k * 9, (ItemStack)this.itemList.get(i1));
}
else
{
GuiContainerCreative.getInventory().setInventorySlotContents(l + k * 9, (ItemStack)null);
}
}
}
}
/**
* theCreativeContainer seems to be hard coded to 9x5 items
*/
public boolean hasMoreThan1PageOfItemsInList()
{
return this.itemList.size() > 45;
}
protected void retrySlotClick(int par1, int par2, boolean par3, EntityPlayer par4EntityPlayer) {}
/**
* Called when a player shift-clicks on a slot. You must override this or you will crash when someone does that.
*/
public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2)
{
if (par2 >= this.inventorySlots.size() - 9 && par2 < this.inventorySlots.size())
{
Slot slot = (Slot)this.inventorySlots.get(par2);
if (slot != null && slot.getHasStack())
{
slot.putStack((ItemStack)null);
}
}
return null;
}
public boolean func_94530_a(ItemStack par1ItemStack, Slot par2Slot)
{
return par2Slot.yDisplayPosition > 90;
}
public boolean func_94531_b(Slot par1Slot)
{
return par1Slot.inventory instanceof InventoryPlayer || par1Slot.yDisplayPosition > 90 && par1Slot.xDisplayPosition <= 162;
}
}