package choonster.testmod3.recipe;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.ItemAxe;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.ShapelessRecipes;
import net.minecraft.util.NonNullList;
import net.minecraftforge.common.ForgeHooks;
import net.minecraftforge.event.ForgeEventFactory;
import java.util.Arrays;
import java.util.Random;
/**
* A shapeless recipe that damages any {@link ItemAxe} ingredients.
*
* @author Choonster
*/
public class ShapelessCuttingRecipe extends ShapelessRecipes {
private final Random random = new Random();
public ShapelessCuttingRecipe(ItemStack output, ItemStack... input) {
super(output, Arrays.asList(input));
}
private ItemStack damageAxe(ItemStack stack) {
if (stack.attemptDamageItem(1, random)) {
ForgeEventFactory.onPlayerDestroyItem(ForgeHooks.getCraftingPlayer(), stack, null);
return ItemStack.EMPTY;
}
return stack;
}
@Override
public NonNullList<ItemStack> getRemainingItems(InventoryCrafting inventoryCrafting) {
final NonNullList<ItemStack> remainingItems = NonNullList.withSize(inventoryCrafting.getSizeInventory(), ItemStack.EMPTY);
for (int i = 0; i < remainingItems.size(); ++i) {
final ItemStack itemstack = inventoryCrafting.getStackInSlot(i);
if (!itemstack.isEmpty() && itemstack.getItem() instanceof ItemAxe) {
remainingItems.set(i, damageAxe(itemstack.copy()));
} else {
remainingItems.set(i, ForgeHooks.getContainerItem(itemstack));
}
}
return remainingItems;
}
}