package mc.mcgrizzz.prorecipes.recipes; import org.bukkit.Material; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.inventory.CraftingInventory; import org.bukkit.inventory.FurnaceInventory; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import mc.mcgrizzz.prorecipes.ProRecipes; import mc.mcgrizzz.prorecipes.api.RecipeAPI.RecipeType; import mc.mcgrizzz.prorecipes.api.events.FurnaceCraftEvent; import mc.mcgrizzz.prorecipes.api.events.MulticraftEvent; import mc.mcgrizzz.prorecipes.api.events.WorkbenchCraftEvent; public class EventListener implements Listener{ /** * * * Will only be called for shaped and shapeless * @param event */ @EventHandler(priority = EventPriority.MONITOR) public void workbenchCraft(WorkbenchCraftEvent event){ CraftingInventory inventory = (CraftingInventory)event.getInventory(); if(event.isCancelled()){ inventory.setResult((new ItemStack(Material.AIR))); return; } inventory.setResult(event.getResult()); inventory.setItem(0, event.getResult()); ProRecipes.getPlugin().incrementRecipesCrafted(event.getRecipe().getType()); } @EventHandler(priority = EventPriority.MONITOR) public void multicraftEvent(MulticraftEvent event){ Inventory inv = event.getInventory(); if(event.isCancelled()){ for(int i = 0; i < 3; i++){ inv.setItem(16 + i*9, null); } return; } int c = 0; for(ItemStack ite : event.getResults()){ if(c > 3)return; //System.out.println(ite); inv.setItem(16 + c*9, ite); c++; } ProRecipes.getPlugin().incrementRecipesCrafted(RecipeType.MULTI); } @EventHandler(priority = EventPriority.MONITOR) public void furnaceCraftEvent(FurnaceCraftEvent event){ FurnaceInventory inv = (FurnaceInventory)event.getInventory(); if(event.isCancelled()){ inv.setResult(new ItemStack(Material.AIR)); return; }else{ int amount = 0; ItemStack b = new ItemStack(inv.getItem(0)); amount = b.getAmount(); int newAmount = amount - ProRecipes.getPlugin().getRecipes().fur.get(event.getRecipe().getId()).getSubtractAmount(); ItemStack i = event.getSource().clone(); i.setAmount(newAmount); inv.setSmelting(i); if(inv.getResult() != null && inv.getResult().isSimilar(event.getResult())){ ItemStack re = event.getResult().clone(); re.setAmount(re.getAmount() + inv.getResult().getAmount()); inv.setResult(re); }else{ inv.setResult(event.getResult()); } ProRecipes.getPlugin().incrementRecipesCrafted(RecipeType.FURNACE); } } }