broken-arrow

Untitled

May 3rd, 2021 (edited)
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.77 KB | None | 0 0
  1. package org.broken.cheststorage.menus;
  2.  
  3. import org.broken.cheststorage.data.ChestRegistry.ChestData;
  4. import org.bukkit.Bukkit;
  5. import org.bukkit.GameMode;
  6. import org.bukkit.entity.HumanEntity;
  7. import org.bukkit.entity.Player;
  8. import org.bukkit.event.inventory.InventoryCloseEvent;
  9. import org.bukkit.event.player.PlayerInteractEvent;
  10. import org.bukkit.inventory.Inventory;
  11. import org.bukkit.inventory.InventoryHolder;
  12. import org.bukkit.inventory.ItemStack;
  13. import org.jetbrains.annotations.NotNull;
  14.  
  15. import java.util.HashMap;
  16. import java.util.List;
  17. import java.util.Map;
  18. import java.util.UUID;
  19.  
  20.  
  21. public class ChestGuiInventory implements InventoryHolder {
  22.  
  23.  
  24.     public static final Map<UUID, Inventory> viewers = new HashMap<>();
  25.     private Inventory gui;
  26.  
  27.     public Inventory createMenu() {
  28.         int size = 27;
  29.         return Bukkit.createInventory(null, size, "Gui Chest");
  30.     }
  31.  
  32.     public void showMenus(Player player, ChestData chestData) {
  33.         int size = 27;
  34.         gui = createMenu();
  35.         ItemStack[] items = chestData.getChestContents();
  36.  
  37.         if (items == null)
  38.             items = new ItemStack[size];
  39.  
  40.         gui.setContents(items);
  41.         player.updateInventory();
  42.         player.openInventory(gui);
  43.     }
  44.  
  45.     @NotNull
  46.     @Override
  47.     public Inventory getInventory() {
  48.         return gui;
  49.     }
  50.  
  51.  
  52.     public boolean onOpen(PlayerInteractEvent event) {
  53.         viewers.put(event.getPlayer().getUniqueId(), createMenu());
  54.  
  55.         return true;
  56.     }
  57.  
  58.     public boolean onClose(InventoryCloseEvent event) {
  59.         viewers.remove(event.getPlayer().getUniqueId());
  60.  
  61.         return getViewersAmount(event.getViewers()) <= 1;
  62.     }
  63.  
  64.     private int getViewersAmount(List<HumanEntity> viewersList) {
  65.         int viewers = 0;
  66.         for (HumanEntity viewer : viewersList) {
  67.             if (viewer.getGameMode() != GameMode.SPECTATOR)
  68.                 viewers++;
  69.         }
  70.  
  71.         return viewers;
  72.     }
  73. }
Add Comment
Please, Sign In to add comment