public void smeltItem() {
    if (canSmelt()) {
      ItemStack itemStack = BrickOvenRecipeHandler.instance().findMatchingRecipe(this);

      if (ovenStacks[OUTPUT] == null) {
        ovenStacks[OUTPUT] = itemStack.copy();
      } else if (ovenStacks[OUTPUT].getItem() == itemStack.getItem()) {
        ovenStacks[OUTPUT].stackSize += itemStack.stackSize;
      }

      for (int i = INPUTSTART; i < ovenStacks.length; ++i) {
        ItemStack stack = ovenStacks[i];

        if (stack != null) {
          ItemStack containerItem = null;

          if (ovenStacks[i].getItem().hasContainerItem(ovenStacks[i])) {
            containerItem = ovenStacks[i].getItem().getContainerItem(ovenStacks[i]);
          }

          --ovenStacks[i].stackSize;

          if (ovenStacks[i].stackSize <= 0) {
            ovenStacks[i] = null;
          }

          if (containerItem != null) {
            ovenStacks[i] = containerItem;
          }
        }
      }
    }
  }
  private boolean canSmelt() {
    boolean empty = true;
    for (int i = INPUTSTART; i < ovenStacks.length; ++i) {
      if (ovenStacks[i] != null) {
        empty = false;
        break;
      }
    }

    if (empty) {
      return false;
    } else {
      ItemStack stack = BrickOvenRecipeHandler.instance().findMatchingRecipe(this);
      if (stack == null) {
        return false;
      }

      if (ovenStacks[OUTPUT] == null) {
        return true;
      }
      if (!ovenStacks[OUTPUT].isItemEqual(stack)) {
        return false;
      }

      int result = ovenStacks[OUTPUT].stackSize + stack.stackSize;
      return result <= getInventoryStackLimit() && result <= ovenStacks[OUTPUT].getMaxStackSize();
    }
  }