package de.flo56958.minetinker.listeners; import de.flo56958.minetinker.data.Lists; import de.flo56958.minetinker.data.ToolType; import de.flo56958.minetinker.modifiers.ModManager; import org.bukkit.Material; import org.bukkit.World; import org.bukkit.entity.HumanEntity; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.inventory.PrepareItemCraftEvent; import org.bukkit.inventory.CraftingInventory; import org.bukkit.inventory.ItemStack; public class ConvertToolListener implements Listener { private static final ModManager modManager = ModManager.instance(); @EventHandler public void onCraft(PrepareItemCraftEvent event) { CraftingInventory inv = event.getInventory(); boolean canConvert = false; World world = null; HumanEntity humanEntity = null; for (HumanEntity human : inv.getViewers()) { if (human.hasPermission("minetinker.tool.create")) { canConvert = true; world = human.getWorld(); humanEntity = human; break; } } if (!canConvert) { return; } if (Lists.WORLDS.contains(world.getName())) { return; } int recipeItems = 0; ItemStack lastItem = null; for (ItemStack item : inv.getMatrix()) { if (item != null && item.getType() != Material.AIR) { recipeItems += 1; lastItem = item; } } if (recipeItems == 1) { if (modManager.isArmorViable(lastItem) || modManager.isToolViable(lastItem) || modManager.isWandViable(lastItem)) { inv.setResult(new ItemStack(Material.AIR, 1)); return; } if (ToolType.isMaterialCompatible(lastItem.getType())) { inv.setResult(lastItem); modManager.convertItemStack(event.getInventory().getResult(), humanEntity); inv.getResult().setAmount(1); } } } }