protected void func_82526_n(World p_82526_1_, int p_82526_2_, int p_82526_3_, int p_82526_4_) {
   BlockSourceImpl var5 = new BlockSourceImpl(p_82526_1_, p_82526_2_, p_82526_3_, p_82526_4_);
   TileEntityDispenser var6 = (TileEntityDispenser) var5.func_82619_j();
   if (var6 != null) {
     int var7 = var6.func_70361_i();
     if (var7 < 0) {
       p_82526_1_.func_72926_e(1001, p_82526_2_, p_82526_3_, p_82526_4_, 0);
     } else {
       ItemStack var8 = var6.func_70301_a(var7);
       IBehaviorDispenseItem var9 = this.func_96472_a(var8);
       if (var9 != IBehaviorDispenseItem.field_82483_a) {
         ItemStack var10 = var9.func_82482_a(var5, var8);
         var6.func_70299_a(var7, var10.field_77994_a == 0 ? null : var10);
       }
     }
   }
 }
  protected void dispenseItem(World world, BlockPos pos) {
    world.withTileEntity(
        pos,
        TileEntityDispenser.class,
        var4 -> {
          int var5 = var4.func_146017_i();

          if (var5 < 0) {
            world.playSound(1001, pos, 0);
          } else {
            ItemStack var6 = var4.get(var5);
            IBehaviorDispenseItem var7 = this.getDispenserLogic(var6);

            if (var7 != IBehaviorDispenseItem.itemDispenseBehaviorProvider) {
              ItemStack var8 = var7.dispense(new BlockSource(world, pos), var6);
              var4.set(var5, var8.stackSize == 0 ? null : var8);
            }
          }
        });
  }
 @Override
 public ItemStack dispense(IBlockSource blockSource, ItemStack itemstack) {
   ItemStack result = dispenseStack(blockSource, itemstack);
   if (result == null) {
     System.out.println("Not processed. Chain to Vanilla.");
     return chain.dispense(blockSource, itemstack);
   }
   if (result.stackSize <= 0) {
     // The result was empty.
   } else if (addResultToInventory((TileEntityDispenser) blockSource.func_82619_j(), result)) {
     // The result was placed in inventory.
   } else if (itemstack.stackSize <= 0) {
     itemstack.itemID = result.itemID;
     itemstack.setItemDamage(result.getItemDamage());
     itemstack.stackSize = result.stackSize;
   } else {
     defaultDispenseBehavior.dispense(blockSource, result);
   }
   playDispenseSound(blockSource);
   spawnDispenseParticles(blockSource);
   return itemstack;
 }