diff --git a/src/main/java/com/Acrobot/ChestShop/Commands/ItemInfo.java b/src/main/java/com/Acrobot/ChestShop/Commands/ItemInfo.java index 1c9c66d39..a4f79307b 100644 --- a/src/main/java/com/Acrobot/ChestShop/Commands/ItemInfo.java +++ b/src/main/java/com/Acrobot/ChestShop/Commands/ItemInfo.java @@ -40,30 +40,9 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String item = parseEvent.getItem(); } - if (MaterialUtil.isEmpty(item)) { - return false; - } - - iteminfo.send(sender); - try { - iteminfo_fullname.send(sender, "item", MaterialUtil.getName(item)); - } catch (IllegalArgumentException e) { - sender.sendMessage(ChatColor.RED + "Error while generating full name. Please contact an admin or take a look at the console/log!"); - ChestShop.getPlugin().getLogger().log(Level.SEVERE, "Error while generating full item name", e); - return true; - } - - try { - iteminfo_shopname.send(sender, "item", MaterialUtil.getSignName(item)); - } catch (IllegalArgumentException e) { - sender.sendMessage(ChatColor.RED + "Error while generating shop sign name. Please contact an admin or take a look at the console/log!"); - ChestShop.getPlugin().getLogger().log(Level.SEVERE, "Error while generating shop sign item name", e); - return true; - } - ItemInfoEvent event = new ItemInfoEvent(sender, item); ChestShop.callEvent(event); - return true; + return !MaterialUtil.isEmpty(item); } } diff --git a/src/main/java/com/Acrobot/ChestShop/Events/ItemInfoEvent.java b/src/main/java/com/Acrobot/ChestShop/Events/ItemInfoEvent.java index 4e926e8ff..dced49134 100644 --- a/src/main/java/com/Acrobot/ChestShop/Events/ItemInfoEvent.java +++ b/src/main/java/com/Acrobot/ChestShop/Events/ItemInfoEvent.java @@ -1,6 +1,7 @@ package com.Acrobot.ChestShop.Events; import org.bukkit.command.CommandSender; +import org.bukkit.event.Cancellable; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; import org.bukkit.inventory.ItemStack; @@ -10,15 +11,17 @@ * * @author Acrobot */ -public class ItemInfoEvent extends Event { +public class ItemInfoEvent extends Event implements Cancellable { private static final HandlerList handlers = new HandlerList(); private CommandSender sender; private ItemStack item; + private boolean cancelled; public ItemInfoEvent(CommandSender sender, ItemStack item) { this.sender = sender; this.item = item; + this.cancelled = false; } /** @@ -42,4 +45,14 @@ public HandlerList getHandlers() { public static HandlerList getHandlerList() { return handlers; } + + @Override + public boolean isCancelled () { + return cancelled; + } + + @Override + public void setCancelled (boolean b) { + cancelled = b; + } } diff --git a/src/main/java/com/Acrobot/ChestShop/Listeners/ItemInfoListener.java b/src/main/java/com/Acrobot/ChestShop/Listeners/ItemInfoListener.java index 98d6a7c24..580e36769 100644 --- a/src/main/java/com/Acrobot/ChestShop/Listeners/ItemInfoListener.java +++ b/src/main/java/com/Acrobot/ChestShop/Listeners/ItemInfoListener.java @@ -31,7 +31,28 @@ */ public class ItemInfoListener implements Listener { - @EventHandler + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) + public static void messageHandler(ItemInfoEvent event) { + CommandSender sender = event.getSender(); + ItemStack item = event.getItem(); + iteminfo.send(sender); + try { + iteminfo_fullname.send(sender, "item", MaterialUtil.getName(item)); + } catch (IllegalArgumentException e) { + event.getSender().sendMessage(ChatColor.RED + "Error while generating full name. Please contact an admin or take a look at the console/log!"); + ChestShop.getPlugin().getLogger().log(Level.SEVERE, "Error while generating full item name", e); + return; + } + + try { + iteminfo_shopname.send(sender, "item", MaterialUtil.getSignName(item)); + } catch (IllegalArgumentException e) { + sender.sendMessage(ChatColor.RED + "Error while generating shop sign name. Please contact an admin or take a look at the console/log!"); + ChestShop.getPlugin().getLogger().log(Level.SEVERE, "Error while generating shop sign item name", e); + } + } + + @EventHandler(ignoreCancelled = true) public static void addRepairCost(ItemInfoEvent event) { ItemMeta meta = event.getItem().getItemMeta(); if (meta instanceof Repairable && ((Repairable) meta).getRepairCost() > 0) { @@ -39,7 +60,7 @@ public static void addRepairCost(ItemInfoEvent event) { } } - @EventHandler + @EventHandler(ignoreCancelled = true) public static void addEnchantment(ItemInfoEvent event) { ItemStack item = event.getItem(); ItemMeta meta = item.getItemMeta(); @@ -56,7 +77,7 @@ public static void addEnchantment(ItemInfoEvent event) { } } - @EventHandler + @EventHandler(ignoreCancelled = true) public static void addPotionInfo(ItemInfoEvent event) { ItemStack item = event.getItem(); @@ -97,7 +118,7 @@ public static void addPotionInfo(ItemInfoEvent event) { } } - @EventHandler + @EventHandler(ignoreCancelled = true) public static void addBookInfo(ItemInfoEvent event) { ItemMeta meta = event.getItem().getItemMeta(); if (meta instanceof BookMeta) { @@ -115,7 +136,7 @@ public static void addBookInfo(ItemInfoEvent event) { } } - @EventHandler + @EventHandler(ignoreCancelled = true) public static void addLoreInfo(ItemInfoEvent event) { ItemMeta meta = event.getItem().getItemMeta(); if (meta.hasLore()) {