package codechicken.nei.recipe; import codechicken.nei.PositionedStack; 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; import net.minecraft.util.IChatComponent; public class ContainerRecipe extends Container { private class RecipeInventory implements IInventory { @Override public boolean isUseableByPlayer(EntityPlayer entityplayer) { return true; } @Override public int getSizeInventory() { return inventorySlots.size(); } @Override public ItemStack getStackInSlot(int i) { if (i < 0 || i > inventoryItemStacks.size()) { return null; } return (ItemStack) inventoryItemStacks.get(i); } @Override public ItemStack decrStackSize(int i, int j) { return null; } @Override public void setInventorySlotContents(int slot, ItemStack itemstack) { if (slot < 0 || slot >= inventoryItemStacks.size()) { return; } inventoryItemStacks.set(slot, itemstack); } @Override public int getInventoryStackLimit() { return 1; } @Override public void markDirty() { } @Override public ItemStack removeStackFromSlot(int slot) { return null; } @Override public boolean isItemValidForSlot(int i, ItemStack itemstack) { return false; } @Override public void openInventory(EntityPlayer player) { } @Override public void closeInventory(EntityPlayer player) { } @Override public int getField(int id) { return 0; } @Override public void setField(int id, int value) { } @Override public int getFieldCount() { return 0; } @Override public void clear() { } @Override public String getName() { return null; } @Override public boolean hasCustomName() { return false; } @Override public IChatComponent getDisplayName() { return null; } } private RecipeInventory recipeInventory = new RecipeInventory(); public void clearInventory() { inventoryItemStacks.clear(); inventorySlots.clear(); } public ItemStack slotClick(int slot, int button, boolean flag, EntityPlayer entityplayer) { if (slot < 0) { return null; } ItemStack stack = recipeInventory.getStackInSlot(slot); if (stack != null) { if (button == 0) { GuiCraftingRecipe.openRecipeGui("item", stack); } else if (button == 1) { GuiUsageRecipe.openRecipeGui("item", stack); } } return null; } public void addSlot(PositionedStack stack, int recipex, int recipey) { int slot = inventorySlots.size(); addSlotToContainer(new Slot(recipeInventory, slot, recipex + stack.relx, recipey + stack.rely) { @Override public boolean isItemValid(ItemStack par1ItemStack) { return false; } }); recipeInventory.setInventorySlotContents(slot, stack.item); } public Slot getSlotWithStack(PositionedStack stack, int recipex, int recipey) { for (int i = 0; i < inventorySlots.size(); i++) { Slot slot = (Slot) inventorySlots.get(i); if (slot.xDisplayPosition == (stack.relx + recipex) && slot.yDisplayPosition == (stack.rely + recipey)) { return slot; } } return null; } public boolean canInteractWith(EntityPlayer entityplayer) { return true; } @Override public void putStackInSlot(int par1, ItemStack par2ItemStack) { //Server side updates do nothing! } @Override public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2) { return null;//no shift clicking (scrolling...) } }