package me.tyler15555.minibosses.common; import java.util.ArrayList; import me.tyler15555.minibosses.item.MBItems; import me.tyler15555.minibosses.util.NBTHelper; import me.tyler15555.minibosses.util.SummonEntry; import me.tyler15555.minibosses.entity.EntitySuperSlime; import me.tyler15555.minibosses.entity.EntityIronZombie; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.fml.common.FMLCommonHandler; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.PlayerEvent.ItemCraftedEvent; import net.minecraftforge.fml.relauncher.Side; import org.apache.logging.log4j.Level; public class CraftingHandler { //WARNING: Item.getItemFromBlock() MUST be used when a block is involved with the recipe due to the way Minecraft handles recipes with blocks. @SubscribeEvent public void onItemCrafted(ItemCraftedEvent event) { if(event.crafting.getItem() == MBItems.summonScroll) { ArrayList<Item> tableInv = new ArrayList(); for(int index = 0; index < event.craftMatrix.getSizeInventory(); index++) { ItemStack stack = event.craftMatrix.getStackInSlot(index); if(stack != null) { tableInv.add(stack.getItem()); } } if(tableInv.contains(Items.redstone) && tableInv.contains(Item.getItemFromBlock(Blocks.slime_block))) { SummonEntry entry = new SummonEntry(EntitySuperSlime.class, "Super Slime", 0, 0); NBTHelper.writeStringToStack(event.crafting, "SummonEntry", entry.toString()); } if(tableInv.contains(Items.rotten_flesh) && tableInv.contains(Item.getItemFromBlock(Blocks.iron_block))) { SummonEntry entry = new SummonEntry(EntityIronZombie.class, "Iron Zombie", 0, 0); NBTHelper.writeStringToStack(event.crafting, "SummonEntry", entry.toString()); } } } }