Skip to content

Instantly share code, notes, and snippets.

@Rojoss
Created July 13, 2014 04:18
Show Gist options
  • Save Rojoss/24fb85c102ae343856da to your computer and use it in GitHub Desktop.
Save Rojoss/24fb85c102ae343856da to your computer and use it in GitHub Desktop.
//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