public void writeToNBT(NBTTagCompound compound) {
    super.writeToNBT(compound);
    compound.setShort("BurnTime", (short) this.furnaceBurnTime);
    compound.setShort("CookTime", (short) this.field_174906_k);
    compound.setShort("CookTimeTotal", (short) this.field_174905_l);
    NBTTagList var2 = new NBTTagList();

    for (int var3 = 0; var3 < this.furnaceItemStacks.length; ++var3) {
      if (this.furnaceItemStacks[var3] != null) {
        NBTTagCompound var4 = new NBTTagCompound();
        var4.setByte("Slot", (byte) var3);
        this.furnaceItemStacks[var3].writeToNBT(var4);
        var2.appendTag(var4);
      }
    }

    compound.setTag("Items", var2);

    if (this.hasCustomName()) {
      compound.setString("CustomName", this.furnaceCustomName);
    }
  }
  public void readFromNBT(NBTTagCompound compound) {
    super.readFromNBT(compound);
    NBTTagList var2 = compound.getTagList("Items", 10);
    this.furnaceItemStacks = new ItemStack[this.getSizeInventory()];

    for (int var3 = 0; var3 < var2.tagCount(); ++var3) {
      NBTTagCompound var4 = var2.getCompoundTagAt(var3);
      byte var5 = var4.getByte("Slot");

      if (var5 >= 0 && var5 < this.furnaceItemStacks.length) {
        this.furnaceItemStacks[var5] = ItemStack.loadItemStackFromNBT(var4);
      }
    }

    this.furnaceBurnTime = compound.getShort("BurnTime");
    this.field_174906_k = compound.getShort("CookTime");
    this.field_174905_l = compound.getShort("CookTimeTotal");
    this.currentItemBurnTime = getItemBurnTime(this.furnaceItemStacks[1]);

    if (compound.hasKey("CustomName", 8)) {
      this.furnaceCustomName = compound.getString("CustomName");
    }
  }