65 lines
2.3 KiB
Java
65 lines
2.3 KiB
Java
package com.massivecraft.factions.listeners;
|
|
|
|
import com.massivecraft.factions.util.serializable.ClickableItemStack;
|
|
import com.massivecraft.factions.util.serializable.GUIMenu;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.event.EventHandler;
|
|
import org.bukkit.event.Listener;
|
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
|
import org.bukkit.event.inventory.InventoryCloseEvent;
|
|
import org.bukkit.event.player.PlayerQuitEvent;
|
|
import org.bukkit.inventory.ItemStack;
|
|
|
|
/**
|
|
* @author Saser
|
|
*/
|
|
public class MenuListener implements Listener {
|
|
|
|
public MenuListener() {
|
|
}
|
|
|
|
@EventHandler
|
|
public void onInventoryClick(InventoryClickEvent event) {
|
|
if (event.getView().getTitle().equals("Faction Logs")) {
|
|
event.setCancelled(true);
|
|
}
|
|
|
|
Player player = (Player) event.getWhoClicked();
|
|
GUIMenu menu = GUIMenu.getMenus().get(player.getUniqueId());
|
|
if (menu != null) {
|
|
event.setCancelled(true);
|
|
if (!menu.getName().equals(event.getView().getTitle())) {
|
|
event.getView().close();
|
|
return;
|
|
}
|
|
|
|
ItemStack item = event.getCurrentItem();
|
|
if (item == null) return;
|
|
if (event.getRawSlot() >= event.getInventory().getSize()) return;
|
|
ClickableItemStack found = menu.getMenuItems().get(event.getRawSlot());
|
|
if (found != null && found.getType() == item.getType() && found.getDurability() == item.getDurability()) {
|
|
if (found.getItemCallback() == null) {
|
|
return;
|
|
}
|
|
found.getItemCallback().accept(event);
|
|
}
|
|
}
|
|
}
|
|
|
|
@EventHandler
|
|
public void onInventoryClose(InventoryCloseEvent event) {
|
|
GUIMenu menu = GUIMenu.getMenus().remove(event.getPlayer().getUniqueId());
|
|
if (menu != null && menu.getCloseCallback() != null) {
|
|
menu.getCloseCallback().accept(event);
|
|
}
|
|
}
|
|
|
|
@EventHandler
|
|
public void onPLayerLeave(PlayerQuitEvent event) {
|
|
GUIMenu menu = GUIMenu.getMenus().remove(event.getPlayer().getUniqueId());
|
|
if (menu != null && menu.getCloseCallback() != null) {
|
|
menu.getCloseCallback().accept(new InventoryCloseEvent(event.getPlayer().getOpenInventory()));
|
|
}
|
|
}
|
|
}
|