Also you will want to remove this piece of code at the bottom of the code:
craftMatrix.setInventorySlotContents(i, k);
And put in this if else statement so if the item has no durability left it gets destroyed:
if(k.getItemDamage() < k.getMaxDamage()){
craftMatrix.setInventorySlotContents(i, k);
}else{
ItemStack l = new ItemStack(Block.blockClay, 0);
craftMatrix.setInventorySlotContents(i, j);
}
The Block.blockClay can be replaced with anything because the 0 after it means that 0 of whatever item is stated will be put in your inventory.
So the final code should look like this:
@Override
public void onCrafting(EntityPlayer player, ItemStack item,
IInventory craftMatrix) {
for(int i = 0; i < craftMatrix.getSizeInventory(); i++ ){
if(craftMatrix.getStackInSlot(i) != null){
ItemStack j = craftMatrix.getStackInSlot(i);
if(j.getItem() != null && j.getItem() == YourMod.yourItem){
ItemStack k = new ItemStack(YourMod.yourItem, 2, (j.getItemDamage() + 1));
if(k.getItemDamage() < k.getMaxDamage()){
craftMatrix.setInventorySlotContents(i, k);
}else{
ItemStack l = new ItemStack(Block.blockClay, 0);
craftMatrix.setInventorySlotContents(i, j);
}
}
}
}
}