コード例 #1
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;
  }