Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.chickenstyle.menuapi;
- import java.util.UUID;
- import java.util.concurrent.ConcurrentHashMap;
- import org.bukkit.Bukkit;
- import org.bukkit.Material;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.entity.PlayerDeathEvent;
- import org.bukkit.event.inventory.ClickType;
- import org.bukkit.event.inventory.InventoryClickEvent;
- import org.bukkit.event.inventory.InventoryCloseEvent;
- import org.bukkit.event.player.PlayerInteractEvent;
- import org.bukkit.event.player.PlayerQuitEvent;
- import org.bukkit.inventory.Inventory;
- import me.chickenstyle.enchantments.Main;
- public class MenuHandler {
- private ConcurrentHashMap<UUID, Menu> openMenus;
- public MenuHandler() {
- openMenus = new ConcurrentHashMap<>();
- }
- public void openMenu(Player player,Menu menu) {
- openMenus.put(player.getUniqueId(), menu);
- menu.open(player);
- }
- public void closeMenu(Player player) {
- openMenus.remove(player.getUniqueId());
- player.closeInventory();
- }
- public boolean openedMenu(Player player) {
- return openMenus.contains(player.getUniqueId());
- }
- public Menu getMenu(Player player) {
- return openMenus.get(player.getUniqueId());
- }
- public void closeAll() {
- for (UUID uuid:openMenus.keySet()) {
- Player player = Bukkit.getPlayer(uuid);
- player.closeInventory();
- }
- }
- public Listener getListener() {
- return new Listener() {
- @EventHandler
- public void onPlayerInteract(PlayerInteractEvent e) {
- if (e.getClickedBlock() == null) return;
- if (e.getClickedBlock().getType().equals(Material.ENCHANTMENT_TABLE)) {
- Inventory inv = Bukkit.createInventory(null, 54, "EnchantingTable");
- Menu menu = new Menu(inv, null);
- menu.setButton(10, new Button(Material.PAPER) {
- @Override
- public void onClick(Player player, ClickType type) {
- player.sendMessage("Hey, Button works!");
- }
- });
- }
- }
- @EventHandler
- public void onInventoryClick(InventoryClickEvent e) {
- if (e.getClickedInventory() == null) return;
- Player player = (Player) e.getWhoClicked();
- if (!openMenus.contains(player.getUniqueId())) return;
- Menu menu = openMenus.get(player.getUniqueId());
- if (!menu.getInventory().equals(e.getView().getTopInventory())) return;
- menu.performClick(player, e.getSlot(), e.getClick());
- }
- @EventHandler
- public void onInventoryClose(InventoryCloseEvent e) {
- Player player = (Player) e.getPlayer();
- if (!openMenus.contains(player.getUniqueId())) return;
- Main.getMenuHandler().closeMenu(player);
- }
- @EventHandler
- public void onPlayerLeave(PlayerQuitEvent e) {
- if (!openMenus.contains(e.getPlayer().getUniqueId())) return;
- Main.getMenuHandler().closeMenu(e.getPlayer());
- }
- @EventHandler
- public void onPlayerDeath(PlayerDeathEvent e) {
- if (!openMenus.contains(e.getEntity().getUniqueId())) return;
- Main.getMenuHandler().closeMenu(e.getEntity());
- }
- };
- }
- }
Add Comment
Please, Sign In to add comment