コード例 #1
0
  /** 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);
        }
      }
    }
  }
コード例 #2
0
  /** 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;
  }
コード例 #3
0
 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);
   }
 }
コード例 #4
0
  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();
    }
  }
コード例 #5
0
  /** 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);
      }
    }
  }
コード例 #6
0
ファイル: ItemArmor.java プロジェクト: rezzanate/Spoutcraft
  /**
   * 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;
  }
コード例 #7
0
ファイル: EntityAnimalTFC.java プロジェクト: shepheb/TFCraft
 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;
 }
コード例 #8
0
 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;
   }
 }
コード例 #9
0
ファイル: ContainerBeacon.java プロジェクト: RegexHF/SteamMod
  /**
   * 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;
  }
コード例 #10
0
  /** 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);
        }
      }
    }
  }
コード例 #11
0
  /**
   * 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;
      }
    }
  }
コード例 #12
0
ファイル: ContainerChest.java プロジェクト: beep41/Paint-Mod
 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;
 }
コード例 #13
0
 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;
   }
 }
コード例 #14
0
  /** 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;
  }
コード例 #15
0
  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;
  }
コード例 #16
0
  /** 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;
  }
コード例 #17
0
  /** 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;
  }
コード例 #18
0
  /** 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;
    }
  }
コード例 #19
0
  /**
   * 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();
    }
  }
コード例 #20
0
  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;
    }
  }
コード例 #21
0
  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);
          }
        }
      }
    }
  }