public static void insulation() {
    int ticks = ElectricExpansion.debugRecipes ? 1 : 8;

    for (int i = 0; i < 16; i++) {
      InsulationRecipes.INSTANCE.addProcessing(new ItemStack(Block.cloth, 32, i), 32, ticks * 80);
    }
    InsulationRecipes.INSTANCE.addProcessing(new ItemStack(Item.leather, 8), 24, ticks * 25);
    InsulationRecipes.INSTANCE.addProcessing(new ItemStack(Item.rottenFlesh, 8), 16, ticks * 25);
    FurnaceRecipes.smelting().addSmelting(Item.leather.itemID, insulationIS, 0);

    for (ItemStack is : OreDictionary.getOres("itemRubber")) {
      if (!is.isItemEqual(insulationIS)) {
        ItemStack is2 = is.copy();
        is2.stackSize = 8;
        InsulationRecipes.INSTANCE.addProcessing(
            is2, is2.stackSize, ((int) Math.floor((is2.stackSize * ticks * 10.0 / 8.0) + 0.5)));
      }
    }
  }
  /** Called to transfer a stack from one inventory to the other eg. when shift clicking. */
  @Override
  public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, 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 == 2) {
        if (!this.mergeItemStack(var4, 3, 39, true)) return null;

        var3.onSlotChange(var4, var2);
      } else if (par1 != 1 && par1 != 0) {
        if (var4.getItem() instanceof IItemElectric) {
          if (!this.mergeItemStack(var4, 0, 1, false)) return null;
        } else if (InsulationRecipes.INSTANCE.getProcessResult(var4) > 0) {
          if (!this.mergeItemStack(var4, 1, 2, false)) return null;
        } else if (par1 >= 3 && par1 < 30) {
          if (!this.mergeItemStack(var4, 30, 39, false)) return null;
        } else if (par1 >= 30 && par1 < 39 && !this.mergeItemStack(var4, 3, 30, false)) return null;
      } else if (!this.mergeItemStack(var4, 3, 39, false)) return null;

      if (var4.stackSize == 0) {
        var3.putStack((ItemStack) null);
      } else {
        var3.onSlotChanged();
      }

      if (var4.stackSize == var2.stackSize) return null;

      var3.onPickupFromSlot(par1EntityPlayer, var4);
    }

    return var2;
  }