Created
July 13, 2014 04:18
-
-
Save Rojoss/24fb85c102ae343856da to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Click Event. | |
@SuppressWarnings("deprecation") | |
@EventHandler(priority = EventPriority.HIGHEST) | |
public void click(InventoryClickEvent event) { | |
//Since ItemMenuClickEvent extends InventoryclickEvent need to make sure it's not the custom event. | |
if (event instanceof ItemMenuClickEvent) { | |
return; | |
} | |
Player player = (Player) event.getWhoClicked(); | |
Inventory inv = event.getInventory(); | |
//Loop through all menus. | |
for (ItemMenu menu : menus) { | |
//Check if the clicked inventory is the current menu. | |
if (!inv.getTitle().equals(menu.getTitle()) || inv.getSize() != menu.getSize() || !inv.getHolder().equals(player)) { | |
continue; | |
} | |
//Call custom ItemMenuclickEvent | |
ItemMenuClickEvent e = new ItemMenuClickEvent(event.getView(), event.getSlotType(), event.getRawSlot(), event.getClick(), event.getAction(), menu); | |
Bukkit.getServer().getPluginManager().callEvent(e); | |
} | |
} | |
//Custom ItemMenuClickEvent. | |
public static class ItemMenuClickEvent extends InventoryClickEvent implements Cancellable { | |
private boolean cancelled; | |
private ItemMenu menu; | |
public ItemMenuClickEvent(InventoryView view, SlotType type, int slot, ClickType click, InventoryAction action, ItemMenu menu) { | |
super(view, type, slot, click, action); | |
this.menu = menu; | |
} | |
public ItemMenu getItemMenu() { | |
return menu; | |
} | |
public boolean isCancelled() { | |
return cancelled; | |
} | |
public void setCancelled(boolean cancel) { | |
cancelled = cancel; | |
} | |
} | |
@EventHandler | |
private void menuClick(ItemMenuClickEvent event) { | |
Player player = (Player) event.getWhoClicked(); | |
ItemMenu menu = event.getItemMenu(); | |
//Check if player clicked in the menu itself. | |
if (event.getRawSlot() < menu.getSize()) { | |
// *snip* | |
} else { | |
cwm.getServer().broadcastMessage("Clicked outside menu: " + menu.getName() + " slot: " + event.getRawSlot()); | |
event.setCancelled(true); /* This doesn't work */ | |
return; | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment