/** Ejects the current record inside of the jukebox. */ public void ejectRecord(World par1World, int par2, int par3, int par4) { if (!par1World.isRemote) { TileEntityRecordPlayer var5 = (TileEntityRecordPlayer) par1World.getBlockTileEntity(par2, par3, par4); if (var5 != null) { ItemStack var6 = var5.func_96097_a(); if (var6 != null) { par1World.playAuxSFX(1005, par2, par3, par4, 0); par1World.playRecord((String) null, par2, par3, par4); var5.func_96098_a((ItemStack) null); par1World.setBlockMetadataWithNotify(par2, par3, par4, 0, 2); float var7 = 0.7F; double var8 = (double) (par1World.rand.nextFloat() * var7) + (double) (1.0F - var7) * 0.5D; double var10 = (double) (par1World.rand.nextFloat() * var7) + (double) (1.0F - var7) * 0.2D + 0.6D; double var12 = (double) (par1World.rand.nextFloat() * var7) + (double) (1.0F - var7) * 0.5D; ItemStack var14 = var6.copy(); EntityItem var15 = new EntityItem( par1World, (double) par2 + var8, (double) par3 + var10, (double) par4 + var12, var14); var15.delayBeforeCanPickup = 10; par1World.spawnEntityInWorld(var15); } } } }
/** Called to transfer a stack from one inventory to the other eg. when shift clicking. */ public ItemStack transferStackInSlot(int par1) { ItemStack var2 = null; Slot var3 = (Slot) this.inventorySlots.get(par1); if (var3 != null && var3.getHasStack()) { ItemStack var4 = var3.getStack(); var2 = var4.copy(); if (par1 < this.numRows * 9) { if (!this.mergeItemStack(var4, this.numRows * 9, this.inventorySlots.size(), true)) { return null; } } else if (!this.mergeItemStack(var4, 0, this.numRows * 9, false)) { return null; } if (var4.stackSize == 0) { var3.putStack((ItemStack) null); } else { var3.onSlotChanged(); } } return var2; }
public void onCrafting(EntityPlayer player, ItemStack item, IInventory craftMatrix) { if (player != null) { item = item.copy(); if (item.stackSize == 0) { item.stackSize = 1; } countItems(player, item); } }
public Packet104WindowItems(int par1, List par2List) { this.windowId = par1; this.itemStack = new ItemStack[par2List.size()]; for (int var3 = 0; var3 < this.itemStack.length; ++var3) { ItemStack var4 = (ItemStack) par2List.get(var3); this.itemStack[var3] = var4 == null ? null : var4.copy(); } }
/** Insert the specified music disc in the jukebox at the given coordinates */ public void insertRecord(World par1World, int par2, int par3, int par4, ItemStack par5ItemStack) { if (!par1World.isRemote) { TileEntityRecordPlayer var6 = (TileEntityRecordPlayer) par1World.getBlockTileEntity(par2, par3, par4); if (var6 != null) { var6.func_96098_a(par5ItemStack.copy()); par1World.setBlockMetadataWithNotify(par2, par3, par4, 1, 2); } } }
/** * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, * world, entityPlayer */ public ItemStack onItemRightClick( ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { int var4 = EntityLiving.getArmorPosition(par1ItemStack) - 1; ItemStack var5 = par3EntityPlayer.getCurrentArmor(var4); if (var5 == null) { par3EntityPlayer.setCurrentItemOrArmor(var4, par1ItemStack.copy()); par1ItemStack.stackSize = 0; } return par1ItemStack; }
public boolean wantsItem(ItemStack itemstack1) { if (fooditems.contains(itemstack1.itemID) && hunger < 200000 && pickUp == 0) { if (item != null) { dropItem(item.itemID, 1); } item = itemstack1.copy(); if (item.stackSize > 1) { dropItem(item.itemID, item.stackSize - 1); } pickUp = 600; return true; } return false; }
public void smeltItem() { if (!canSmelt()) { return; } ItemStack itemstack = FurnaceRecipes.smelting().getSmeltingResult(furnaceItemStacks[0].getItem().shiftedIndex); if (furnaceItemStacks[2] == null) { furnaceItemStacks[2] = itemstack.copy(); } else if (furnaceItemStacks[2].itemID == itemstack.itemID) { furnaceItemStacks[2].stackSize++; } furnaceItemStacks[0].stackSize--; if (furnaceItemStacks[0].stackSize <= 0) { furnaceItemStacks[0] = null; } }
/** * 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) { ItemStack var3 = null; Slot var4 = (Slot) this.inventorySlots.get(par2); if (var4 != null && var4.getHasStack()) { ItemStack var5 = var4.getStack(); var3 = var5.copy(); if (par2 == 0) { if (!this.mergeItemStack(var5, 1, 37, true)) { return null; } var4.onSlotChange(var5, var3); } else if (!this.beaconSlot.getHasStack() && this.beaconSlot.isItemValid(var5) && var5.stackSize == 1) { if (!this.mergeItemStack(var5, 0, 1, false)) { return null; } } else if (par2 >= 1 && par2 < 28) { if (!this.mergeItemStack(var5, 28, 37, false)) { return null; } } else if (par2 >= 28 && par2 < 37) { if (!this.mergeItemStack(var5, 1, 28, false)) { return null; } } else if (!this.mergeItemStack(var5, 1, 37, false)) { return null; } if (var5.stackSize == 0) { var4.putStack((ItemStack) null); } else { var4.onSlotChanged(); } if (var5.stackSize == var3.stackSize) { return null; } var4.onPickupFromSlot(par1EntityPlayer, var5); } return var3; }
/** Updates crafting matrix; called from onCraftMatrixChanged. Args: none */ public void updateCraftingResults() { for (int var1 = 0; var1 < this.inventorySlots.size(); ++var1) { ItemStack var2 = ((Slot) this.inventorySlots.get(var1)).getStack(); ItemStack var3 = (ItemStack) this.inventoryItemStacks.get(var1); if (!ItemStack.areItemStacksEqual(var3, var2)) { var3 = var2 == null ? null : var2.copy(); this.inventoryItemStacks.set(var1, var3); Iterator var4 = this.crafters.iterator(); while (var4.hasNext()) { ICrafting var5 = (ICrafting) var4.next(); var5.updateCraftingInventorySlot(this, var1, var3); } } } }
/** * Turn one item from the combiner source stack into the appropriate smelted item in the combiner * result stack */ public void smeltItem() { if (this.canSmelt()) { ItemStack var1 = CombinerRecipes.smelting().getSmeltingResult(this.combinerItemStacks[0].getItem().itemID); if (this.combinerItemStacks[2] == null) { this.combinerItemStacks[2] = var1.copy(); } else if (this.combinerItemStacks[2].itemID == var1.itemID) { ++this.combinerItemStacks[2].stackSize; } --this.combinerItemStacks[0].stackSize; if (this.combinerItemStacks[0].stackSize <= 0) { this.combinerItemStacks[0] = null; } } }
public ItemStack func_27086_a(int i) { ItemStack itemstack = null; Slot slot = (Slot) inventorySlots.get(i); if (slot != null && slot.func_27006_b()) { ItemStack itemstack1 = slot.getStack(); itemstack = itemstack1.copy(); if (i < field_27088_b * 9) { func_28126_a(itemstack1, field_27088_b * 9, inventorySlots.size(), true); } else { func_28126_a(itemstack1, 0, field_27088_b * 9, false); } if (itemstack1.stackSize == 0) { slot.putStack(null); } else { slot.onSlotChanged(); } } return itemstack; }
public void operate() { if (!canOperate()) { return; } ItemStack itemstack = getResultFor(inventory[0]); if (inventory[2] == null) { inventory[2] = itemstack.copy(); } else { inventory[2].stackSize += itemstack.stackSize; } if (inventory[0].getItem().hasContainerItem()) { inventory[0] = new ItemStack(inventory[0].getItem().getContainerItem()); } else { inventory[0].stackSize--; } if (inventory[0].stackSize <= 0) { inventory[0] = null; } }
/** Take a stack from the specified inventory slot. */ public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2) { ItemStack var3 = null; Slot var4 = (Slot) this.inventorySlots.get(par2); if (var4 != null && var4.getHasStack()) { ItemStack var5 = var4.getStack(); var3 = var5.copy(); if (par2 == 2) { if (!this.mergeItemStack(var5, 3, 39, true)) { return null; } var4.onSlotChange(var5, var3); } else if (par2 != 0 && par2 != 1) { if (par2 >= 3 && par2 < 30) { if (!this.mergeItemStack(var5, 30, 39, false)) { return null; } } else if (par2 >= 30 && par2 < 39 && !this.mergeItemStack(var5, 3, 30, false)) { return null; } } else if (!this.mergeItemStack(var5, 3, 39, false)) { return null; } if (var5.stackSize == 0) { var4.putStack((ItemStack) null); } else { var4.onSlotChanged(); } if (var5.stackSize == var3.stackSize) { return null; } var4.onPickupFromSlot(par1EntityPlayer, var5); } return var3; }
public ItemStack transferStackInSlot(int par1) { ItemStack var2 = null; Slot var3 = (Slot) this.inventorySlots.get(par1); if (var3 != null && var3.getHasStack()) { ItemStack var4 = var3.getStack(); var2 = var4.copy(); if ((par1 < 0 || par1 > 2) && par1 != 3) { if (par1 >= 4 && par1 < 31) { if (!this.mergeItemStack(var4, 31, 40, false)) { return null; } } else if (par1 >= 31 && par1 < 40) { if (!this.mergeItemStack(var4, 4, 31, false)) { return null; } } else if (!this.mergeItemStack(var4, 4, 40, false)) { return null; } } else { if (!this.mergeItemStack(var4, 4, 40, true)) { return null; } var3.func_48433_a(var4, var2); } if (var4.stackSize == 0) { var3.putStack((ItemStack) null); } else { var3.onSlotChanged(); } if (var4.stackSize == var2.stackSize) { return null; } var3.onPickupFromSlot(var4); } return var2; }
/** Called to transfer a stack from one inventory to the other eg. when shift clicking. */ public ItemStack transferStackInSlot(int par1) { ItemStack itemstack = null; Slot slot = (Slot) inventorySlots.get(par1); if (slot != null && slot.getHasStack()) { ItemStack itemstack1 = slot.getStack(); itemstack = itemstack1.copy(); if (par1 >= 0 && par1 <= 2 || par1 == 3) { if (!mergeItemStack(itemstack1, 4, 40, true)) { return null; } slot.func_48433_a(itemstack1, itemstack); } else if (par1 >= 4 && par1 < 31) { if (!mergeItemStack(itemstack1, 31, 40, false)) { return null; } } else if (par1 >= 31 && par1 < 40) { if (!mergeItemStack(itemstack1, 4, 31, false)) { return null; } } else if (!mergeItemStack(itemstack1, 4, 40, false)) { return null; } if (itemstack1.stackSize == 0) { slot.putStack(null); } else { slot.onSlotChanged(); } if (itemstack1.stackSize != itemstack.stackSize) { slot.onPickupFromSlot(itemstack1); } else { return null; } } return itemstack; }
/** merges provided ItemStack with the first avaliable one in the container/player inventory */ protected boolean mergeItemStack(ItemStack par1ItemStack, int par2, int par3, boolean par4) { boolean var5 = false; int var6 = par2; if (par4) { var6 = par3 - 1; } Slot var7; ItemStack var8; if (par1ItemStack.isStackable()) { while (par1ItemStack.stackSize > 0 && (!par4 && var6 < par3 || par4 && var6 >= par2)) { var7 = (Slot) this.inventorySlots.get(var6); var8 = var7.getStack(); if (var8 != null && var8.itemID == par1ItemStack.itemID && (!par1ItemStack.getHasSubtypes() || par1ItemStack.getItemDamage() == var8.getItemDamage()) && ItemStack.func_77970_a(par1ItemStack, var8)) { int var9 = var8.stackSize + par1ItemStack.stackSize; if (var9 <= par1ItemStack.getMaxStackSize()) { par1ItemStack.stackSize = 0; var8.stackSize = var9; var7.onSlotChanged(); var5 = true; } else if (var8.stackSize < par1ItemStack.getMaxStackSize()) { par1ItemStack.stackSize -= par1ItemStack.getMaxStackSize() - var8.stackSize; var8.stackSize = par1ItemStack.getMaxStackSize(); var7.onSlotChanged(); var5 = true; } } if (par4) { --var6; } else { ++var6; } } } if (par1ItemStack.stackSize > 0) { if (par4) { var6 = par3 - 1; } else { var6 = par2; } while (!par4 && var6 < par3 || par4 && var6 >= par2) { var7 = (Slot) this.inventorySlots.get(var6); var8 = var7.getStack(); if (var8 == null) { var7.putStack(par1ItemStack.copy()); var7.onSlotChanged(); par1ItemStack.stackSize = 0; var5 = true; break; } if (par4) { --var6; } else { ++var6; } } } return var5; }
/** Used to check if a recipe matches current crafting inventory */ public boolean matches(InventoryCrafting par1InventoryCrafting, World par2World) { this.field_92102_a = null; int var3 = 0; int var4 = 0; int var5 = 0; int var6 = 0; int var7 = 0; int var8 = 0; for (int var9 = 0; var9 < par1InventoryCrafting.getSizeInventory(); ++var9) { ItemStack var10 = par1InventoryCrafting.getStackInSlot(var9); if (var10 != null) { if (var10.itemID == Item.gunpowder.itemID) { ++var4; } else if (var10.itemID == Item.fireworkCharge.itemID) { ++var6; } else if (var10.itemID == Item.dyePowder.itemID) { ++var5; } else if (var10.itemID == Item.paper.itemID) { ++var3; } else if (var10.itemID == Item.glowstone.itemID) { ++var7; } else if (var10.itemID == Item.diamond.itemID) { ++var7; } else if (var10.itemID == Item.fireballCharge.itemID) { ++var8; } else if (var10.itemID == Item.feather.itemID) { ++var8; } else if (var10.itemID == Item.goldNugget.itemID) { ++var8; } else { if (var10.itemID != Item.skull.itemID) { return false; } ++var8; } } } var7 += var5 + var8; if (var4 <= 3 && var3 <= 1) { NBTTagCompound var15; NBTTagCompound var18; if (var4 >= 1 && var3 == 1 && var7 == 0) { this.field_92102_a = new ItemStack(Item.firework); if (var6 > 0) { var15 = new NBTTagCompound(); var18 = new NBTTagCompound("Fireworks"); NBTTagList var25 = new NBTTagList("Explosions"); for (int var22 = 0; var22 < par1InventoryCrafting.getSizeInventory(); ++var22) { ItemStack var26 = par1InventoryCrafting.getStackInSlot(var22); if (var26 != null && var26.itemID == Item.fireworkCharge.itemID && var26.hasTagCompound() && var26.getTagCompound().hasKey("Explosion")) { var25.appendTag(var26.getTagCompound().getCompoundTag("Explosion")); } } var18.setTag("Explosions", var25); var18.setByte("Flight", (byte) var4); var15.setTag("Fireworks", var18); this.field_92102_a.setTagCompound(var15); } return true; } else if (var4 == 1 && var3 == 0 && var6 == 0 && var5 > 0 && var8 <= 1) { this.field_92102_a = new ItemStack(Item.fireworkCharge); var15 = new NBTTagCompound(); var18 = new NBTTagCompound("Explosion"); byte var21 = 0; ArrayList var12 = new ArrayList(); for (int var13 = 0; var13 < par1InventoryCrafting.getSizeInventory(); ++var13) { ItemStack var14 = par1InventoryCrafting.getStackInSlot(var13); if (var14 != null) { if (var14.itemID == Item.dyePowder.itemID) { var12.add(Integer.valueOf(ItemDye.dyeColors[var14.getItemDamage()])); } else if (var14.itemID == Item.glowstone.itemID) { var18.setBoolean("Flicker", true); } else if (var14.itemID == Item.diamond.itemID) { var18.setBoolean("Trail", true); } else if (var14.itemID == Item.fireballCharge.itemID) { var21 = 1; } else if (var14.itemID == Item.feather.itemID) { var21 = 4; } else if (var14.itemID == Item.goldNugget.itemID) { var21 = 2; } else if (var14.itemID == Item.skull.itemID) { var21 = 3; } } } int[] var24 = new int[var12.size()]; for (int var27 = 0; var27 < var24.length; ++var27) { var24[var27] = ((Integer) var12.get(var27)).intValue(); } var18.setIntArray("Colors", var24); var18.setByte("Type", var21); var15.setTag("Explosion", var18); this.field_92102_a.setTagCompound(var15); return true; } else if (var4 == 0 && var3 == 0 && var6 == 1 && var5 > 0 && var5 == var7) { ArrayList var16 = new ArrayList(); for (int var20 = 0; var20 < par1InventoryCrafting.getSizeInventory(); ++var20) { ItemStack var11 = par1InventoryCrafting.getStackInSlot(var20); if (var11 != null) { if (var11.itemID == Item.dyePowder.itemID) { var16.add(Integer.valueOf(ItemDye.dyeColors[var11.getItemDamage()])); } else if (var11.itemID == Item.fireworkCharge.itemID) { this.field_92102_a = var11.copy(); this.field_92102_a.stackSize = 1; } } } int[] var17 = new int[var16.size()]; for (int var19 = 0; var19 < var17.length; ++var19) { var17[var19] = ((Integer) var16.get(var19)).intValue(); } if (this.field_92102_a != null && this.field_92102_a.hasTagCompound()) { NBTTagCompound var23 = this.field_92102_a.getTagCompound().getCompoundTag("Explosion"); if (var23 == null) { return false; } else { var23.setIntArray("FadeColors", var17); return true; } } else { return false; } } else { return false; } } else { return false; } }
/** * called when the Anvil Input Slot changes, calculates the new result and puts it in the output * slot */ public void updateRepairOutput() { ItemStack var1 = this.inputSlots.getStackInSlot(0); this.maximumCost = 0; int var2 = 0; byte var3 = 0; int var4 = 0; if (var1 == null) { this.outputSlot.setInventorySlotContents(0, (ItemStack) null); this.maximumCost = 0; } else { ItemStack var5 = var1.copy(); ItemStack var6 = this.inputSlots.getStackInSlot(1); Map var7 = EnchantmentHelper.getEnchantments(var5); boolean var8 = false; int var19 = var3 + var1.getRepairCost() + (var6 == null ? 0 : var6.getRepairCost()); this.stackSizeToBeUsedInRepair = 0; int var9; int var10; int var11; int var13; int var14; Iterator var21; Enchantment var22; if (var6 != null) { var8 = var6.itemID == Item.enchantedBook.itemID && Item.enchantedBook.func_92110_g(var6).tagCount() > 0; if (var5.isItemStackDamageable() && Item.itemsList[var5.itemID].getIsRepairable(var1, var6)) { var9 = Math.min(var5.getItemDamageForDisplay(), var5.getMaxDamage() / 4); if (var9 <= 0) { this.outputSlot.setInventorySlotContents(0, (ItemStack) null); this.maximumCost = 0; return; } for (var10 = 0; var9 > 0 && var10 < var6.stackSize; ++var10) { var11 = var5.getItemDamageForDisplay() - var9; var5.setItemDamage(var11); var2 += Math.max(1, var9 / 100) + var7.size(); var9 = Math.min(var5.getItemDamageForDisplay(), var5.getMaxDamage() / 4); } this.stackSizeToBeUsedInRepair = var10; } else { if (!var8 && (var5.itemID != var6.itemID || !var5.isItemStackDamageable())) { this.outputSlot.setInventorySlotContents(0, (ItemStack) null); this.maximumCost = 0; return; } if (var5.isItemStackDamageable() && !var8) { var9 = var1.getMaxDamage() - var1.getItemDamageForDisplay(); var10 = var6.getMaxDamage() - var6.getItemDamageForDisplay(); var11 = var10 + var5.getMaxDamage() * 12 / 100; int var12 = var9 + var11; var13 = var5.getMaxDamage() - var12; if (var13 < 0) { var13 = 0; } if (var13 < var5.getItemDamage()) { var5.setItemDamage(var13); var2 += Math.max(1, var11 / 100); } } Map var20 = EnchantmentHelper.getEnchantments(var6); var21 = var20.keySet().iterator(); while (var21.hasNext()) { var11 = ((Integer) var21.next()).intValue(); var22 = Enchantment.enchantmentsList[var11]; var13 = var7.containsKey(Integer.valueOf(var11)) ? ((Integer) var7.get(Integer.valueOf(var11))).intValue() : 0; var14 = ((Integer) var20.get(Integer.valueOf(var11))).intValue(); int var10000; if (var13 == var14) { ++var14; var10000 = var14; } else { var10000 = Math.max(var14, var13); } var14 = var10000; int var15 = var14 - var13; boolean var16 = var22.canApply(var1); if (this.thePlayer.capabilities.isCreativeMode || var1.itemID == ItemEnchantedBook.enchantedBook.itemID) { var16 = true; } Iterator var17 = var7.keySet().iterator(); while (var17.hasNext()) { int var18 = ((Integer) var17.next()).intValue(); if (var18 != var11 && !var22.canApplyTogether(Enchantment.enchantmentsList[var18])) { var16 = false; var2 += var15; } } if (var16) { if (var14 > var22.getMaxLevel()) { var14 = var22.getMaxLevel(); } var7.put(Integer.valueOf(var11), Integer.valueOf(var14)); int var23 = 0; switch (var22.getWeight()) { case 1: var23 = 8; break; case 2: var23 = 4; case 3: case 4: case 6: case 7: case 8: case 9: default: break; case 5: var23 = 2; break; case 10: var23 = 1; } if (var8) { var23 = Math.max(1, var23 / 2); } var2 += var23 * var15; } } } } if (this.repairedItemName != null && this.repairedItemName.length() > 0 && !this.repairedItemName.equalsIgnoreCase( this.thePlayer.getTranslator().translateNamedKey(var1.getItemName())) && !this.repairedItemName.equals(var1.getDisplayName())) { var4 = var1.isItemStackDamageable() ? 7 : var1.stackSize * 5; var2 += var4; if (var1.hasDisplayName()) { var19 += var4 / 2; } var5.setItemName(this.repairedItemName); } var9 = 0; for (var21 = var7.keySet().iterator(); var21.hasNext(); var19 += var9 + var13 * var14) { var11 = ((Integer) var21.next()).intValue(); var22 = Enchantment.enchantmentsList[var11]; var13 = ((Integer) var7.get(Integer.valueOf(var11))).intValue(); var14 = 0; ++var9; switch (var22.getWeight()) { case 1: var14 = 8; break; case 2: var14 = 4; case 3: case 4: case 6: case 7: case 8: case 9: default: break; case 5: var14 = 2; break; case 10: var14 = 1; } if (var8) { var14 = Math.max(1, var14 / 2); } } if (var8) { var19 = Math.max(1, var19 / 2); } this.maximumCost = var19 + var2; if (var2 <= 0) { var5 = null; } if (var4 == var2 && var4 > 0 && this.maximumCost >= 40) { this.theWorld .getWorldLogAgent() .logInfo( "Naming an item only, cost too high; giving discount to cap cost to 39 levels"); this.maximumCost = 39; } if (this.maximumCost >= 40 && !this.thePlayer.capabilities.isCreativeMode) { var5 = null; } if (var5 != null) { var10 = var5.getRepairCost(); if (var6 != null && var10 < var6.getRepairCost()) { var10 = var6.getRepairCost(); } if (var5.hasDisplayName()) { var10 -= 9; } if (var10 < 0) { var10 = 0; } var10 += 2; var5.setRepairCost(var10); EnchantmentHelper.setEnchantments(var7, var5); } this.outputSlot.setInventorySlotContents(0, var5); this.detectAndSendChanges(); } }
public ItemStack slotClick(int par1, int par2, boolean par3, EntityPlayer par4EntityPlayer) { ItemStack var5 = null; if (par2 > 1) { return null; } else { if (par2 == 0 || par2 == 1) { InventoryPlayer var6 = par4EntityPlayer.inventory; if (par1 == -999) { if (var6.getItemStack() != null && par1 == -999) { if (par2 == 0) { par4EntityPlayer.dropPlayerItem(var6.getItemStack()); var6.setItemStack((ItemStack) null); } if (par2 == 1) { par4EntityPlayer.dropPlayerItem(var6.getItemStack().splitStack(1)); if (var6.getItemStack().stackSize == 0) { var6.setItemStack((ItemStack) null); } } } } else if (par3) { ItemStack var7 = this.transferStackInSlot(par1); if (var7 != null) { int var8 = var7.itemID; var5 = var7.copy(); Slot var9 = (Slot) this.inventorySlots.get(par1); if (var9 != null && var9.getStack() != null && var9.getStack().itemID == var8) { this.retrySlotClick(par1, par2, par3, par4EntityPlayer); } } } else { if (par1 < 0) { return null; } Slot var12 = (Slot) this.inventorySlots.get(par1); if (var12 != null) { ItemStack var13 = var12.getStack(); ItemStack var14 = var6.getItemStack(); if (var13 != null) { var5 = var13.copy(); } int var10; if (var13 == null) { if (var14 != null && var12.isItemValid(var14)) { var10 = par2 == 0 ? var14.stackSize : 1; if (var10 > var12.getSlotStackLimit()) { var10 = var12.getSlotStackLimit(); } var12.putStack(var14.splitStack(var10)); if (var14.stackSize == 0) { var6.setItemStack((ItemStack) null); } } } else if (var14 == null) { var10 = par2 == 0 ? var13.stackSize : (var13.stackSize + 1) / 2; ItemStack var11 = var12.decrStackSize(var10); var6.setItemStack(var11); if (var13.stackSize == 0) { var12.putStack((ItemStack) null); } var12.onPickupFromSlot(var6.getItemStack()); } else if (var12.isItemValid(var14)) { if (var13.itemID == var14.itemID && (!var13.getHasSubtypes() || var13.getItemDamage() == var14.getItemDamage()) && ItemStack.func_77970_a(var13, var14)) { var10 = par2 == 0 ? var14.stackSize : 1; if (var10 > var12.getSlotStackLimit() - var13.stackSize) { var10 = var12.getSlotStackLimit() - var13.stackSize; } if (var10 > var14.getMaxStackSize() - var13.stackSize) { var10 = var14.getMaxStackSize() - var13.stackSize; } var14.splitStack(var10); if (var14.stackSize == 0) { var6.setItemStack((ItemStack) null); } var13.stackSize += var10; } else if (var14.stackSize <= var12.getSlotStackLimit()) { var12.putStack(var14); var6.setItemStack(var13); } } else if (var13.itemID == var14.itemID && var14.getMaxStackSize() > 1 && (!var13.getHasSubtypes() || var13.getItemDamage() == var14.getItemDamage()) && ItemStack.func_77970_a(var13, var14)) { var10 = var13.stackSize; if (var10 > 0 && var10 + var14.stackSize <= var14.getMaxStackSize()) { var14.stackSize += var10; var13 = var12.decrStackSize(var10); if (var13.stackSize == 0) { var12.putStack((ItemStack) null); } var12.onPickupFromSlot(var6.getItemStack()); } } var12.onSlotChanged(); } } } return var5; } }
protected void handleMouseClick(Slot par1Slot, int par2, int par3, int par4) { this.field_74234_w = true; boolean var5 = par4 == 1; InventoryPlayer var6; ItemStack var7; if (par1Slot != null) { if (par1Slot == this.field_74235_v && var5) { for (int var10 = 0; var10 < this.mc.thePlayer.inventoryContainer.getInventory().size(); ++var10) { this.mc.playerController.sendSlotPacket((ItemStack) null, var10); } } else if (selectedTabIndex == CreativeTabs.tabInventory.getTabIndex()) { if (par1Slot == this.field_74235_v) { this.mc.thePlayer.inventory.setItemStack((ItemStack) null); } else { this.mc.thePlayer.inventoryContainer.slotClick( SlotCreativeInventory.func_75240_a((SlotCreativeInventory) par1Slot).slotNumber, par3, par4, this.mc.thePlayer); this.mc.thePlayer.inventoryContainer.updateCraftingResults(); } } else if (par1Slot.inventory == inventory) { var6 = this.mc.thePlayer.inventory; var7 = var6.getItemStack(); ItemStack var8 = par1Slot.getStack(); ItemStack var9; if (par4 == 2) { if (var8 != null && par3 >= 0 && par3 < 9) { var9 = var8.copy(); var9.stackSize = var9.getMaxStackSize(); this.mc.thePlayer.inventory.setInventorySlotContents(par3, var9); this.mc.thePlayer.inventoryContainer.updateCraftingResults(); } return; } if (par4 == 3) { if (var6.getItemStack() == null && par1Slot.getHasStack()) { var9 = par1Slot.getStack().copy(); var9.stackSize = var9.getMaxStackSize(); var6.setItemStack(var9); } return; } if (var7 != null && var8 != null && var7.isItemEqual(var8)) { if (par3 == 0) { if (var5) { var7.stackSize = var7.getMaxStackSize(); } else if (var7.stackSize < var7.getMaxStackSize()) { ++var7.stackSize; } } else if (var7.stackSize <= 1) { var6.setItemStack((ItemStack) null); } else { --var7.stackSize; } } else if (var8 != null && var7 == null) { var6.setItemStack(ItemStack.copyItemStack(var8)); var7 = var6.getItemStack(); if (var5) { var7.stackSize = var7.getMaxStackSize(); } } else { var6.setItemStack((ItemStack) null); } } else { this.inventorySlots.slotClick(par1Slot.slotNumber, par3, par4, this.mc.thePlayer); ItemStack var11 = this.inventorySlots.getSlot(par1Slot.slotNumber).getStack(); this.mc.playerController.sendSlotPacket( var11, par1Slot.slotNumber - this.inventorySlots.inventorySlots.size() + 9 + 36); } } else { var6 = this.mc.thePlayer.inventory; if (var6.getItemStack() != null) { if (par3 == 0) { this.mc.thePlayer.dropPlayerItem(var6.getItemStack()); this.mc.playerController.func_78752_a(var6.getItemStack()); var6.setItemStack((ItemStack) null); } if (par3 == 1) { var7 = var6.getItemStack().splitStack(1); this.mc.thePlayer.dropPlayerItem(var7); this.mc.playerController.func_78752_a(var7); if (var6.getItemStack().stackSize == 0) { var6.setItemStack((ItemStack) null); } } } } }