danik159

Untitled

Nov 29th, 2020
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.97 KB | None | 0 0
  1. package me.chickenstyle.menuapi;
  2.  
  3. import java.util.UUID;
  4. import java.util.concurrent.ConcurrentHashMap;
  5.  
  6. import org.bukkit.Bukkit;
  7. import org.bukkit.Material;
  8. import org.bukkit.entity.Player;
  9. import org.bukkit.event.EventHandler;
  10. import org.bukkit.event.Listener;
  11. import org.bukkit.event.entity.PlayerDeathEvent;
  12. import org.bukkit.event.inventory.ClickType;
  13. import org.bukkit.event.inventory.InventoryClickEvent;
  14. import org.bukkit.event.inventory.InventoryCloseEvent;
  15. import org.bukkit.event.player.PlayerInteractEvent;
  16. import org.bukkit.event.player.PlayerQuitEvent;
  17. import org.bukkit.inventory.Inventory;
  18.  
  19. import me.chickenstyle.enchantments.Main;
  20.  
  21. public class MenuHandler {
  22.  
  23. private ConcurrentHashMap<UUID, Menu> openMenus;
  24.  
  25. public MenuHandler() {
  26. openMenus = new ConcurrentHashMap<>();
  27. }
  28.  
  29. public void openMenu(Player player,Menu menu) {
  30. openMenus.put(player.getUniqueId(), menu);
  31. menu.open(player);
  32. }
  33.  
  34. public void closeMenu(Player player) {
  35. openMenus.remove(player.getUniqueId());
  36. player.closeInventory();
  37. }
  38.  
  39. public boolean openedMenu(Player player) {
  40. return openMenus.contains(player.getUniqueId());
  41. }
  42.  
  43. public Menu getMenu(Player player) {
  44. return openMenus.get(player.getUniqueId());
  45. }
  46.  
  47. public void closeAll() {
  48. for (UUID uuid:openMenus.keySet()) {
  49. Player player = Bukkit.getPlayer(uuid);
  50. player.closeInventory();
  51. }
  52. }
  53.  
  54. public Listener getListener() {
  55. return new Listener() {
  56.  
  57. @EventHandler
  58. public void onPlayerInteract(PlayerInteractEvent e) {
  59. if (e.getClickedBlock() == null) return;
  60.  
  61. if (e.getClickedBlock().getType().equals(Material.ENCHANTMENT_TABLE)) {
  62. Inventory inv = Bukkit.createInventory(null, 54, "EnchantingTable");
  63.  
  64. Menu menu = new Menu(inv, null);
  65.  
  66. menu.setButton(10, new Button(Material.PAPER) {
  67.  
  68. @Override
  69. public void onClick(Player player, ClickType type) {
  70. player.sendMessage("Hey, Button works!");
  71. }
  72. });
  73. }
  74. }
  75.  
  76. @EventHandler
  77. public void onInventoryClick(InventoryClickEvent e) {
  78. if (e.getClickedInventory() == null) return;
  79.  
  80. Player player = (Player) e.getWhoClicked();
  81. if (!openMenus.contains(player.getUniqueId())) return;
  82.  
  83. Menu menu = openMenus.get(player.getUniqueId());
  84. if (!menu.getInventory().equals(e.getView().getTopInventory())) return;
  85.  
  86. menu.performClick(player, e.getSlot(), e.getClick());
  87.  
  88. }
  89.  
  90. @EventHandler
  91. public void onInventoryClose(InventoryCloseEvent e) {
  92. Player player = (Player) e.getPlayer();
  93. if (!openMenus.contains(player.getUniqueId())) return;
  94. Main.getMenuHandler().closeMenu(player);
  95. }
  96.  
  97. @EventHandler
  98. public void onPlayerLeave(PlayerQuitEvent e) {
  99. if (!openMenus.contains(e.getPlayer().getUniqueId())) return;
  100. Main.getMenuHandler().closeMenu(e.getPlayer());
  101. }
  102.  
  103. @EventHandler
  104. public void onPlayerDeath(PlayerDeathEvent e) {
  105. if (!openMenus.contains(e.getEntity().getUniqueId())) return;
  106. Main.getMenuHandler().closeMenu(e.getEntity());
  107. }
  108. };
  109. }
  110. }
  111.  
Add Comment
Please, Sign In to add comment