public void updateEntity() {
    boolean flag = this.furnaceBurnTime > 0;
    boolean flag1 = false;

    if (this.furnaceBurnTime > 0) {
      --this.furnaceBurnTime;
    }

    if (!this.worldObj.isRemote) {
      if (this.furnaceBurnTime == 0 && this.canSmelt()) {
        this.currentItemBurnTime =
            this.furnaceBurnTime = getItemBurnTime(this.furnaceItemStacks[1]);

        if (this.furnaceBurnTime > 0) {
          flag1 = true;

          if (this.furnaceItemStacks[1] != null) {
            --this.furnaceItemStacks[1].stackSize;

            if (this.furnaceItemStacks[1].stackSize == 0) {
              this.furnaceItemStacks[1] =
                  furnaceItemStacks[1].getItem().getContainerItem(furnaceItemStacks[1]);
            }
          }
        }
      }

      if (this.isBurning() && this.canSmelt()) {
        ++this.furnaceCookTime;

        if (this.furnaceCookTime == 200) {
          this.furnaceCookTime = 0;
          this.smeltItem();
          flag1 = true;
        }
      } else {
        this.furnaceCookTime = 0;
      }

      if (flag != this.furnaceBurnTime > 0) {
        flag1 = true;
        BlockFurnace.updateFurnaceBlockState(
            this.furnaceBurnTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord);
      }
    }

    if (flag1) {
      this.markDirty();
    }
  }