Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.brokenarrow.storage.menus;
- import org.brokenarrow.storage.api.ContainerRegistryAPI;
- import org.brokenarrow.storage.util.GuiTempletsYaml;
- import org.brokenarrow.storage.util.ItemUtily;
- import org.brokenarrow.storage.util.MetadataEnumsForGui;
- import org.bukkit.Bukkit;
- import org.bukkit.GameMode;
- import org.bukkit.Location;
- import org.bukkit.Material;
- import org.bukkit.entity.HumanEntity;
- import org.bukkit.entity.Player;
- import org.bukkit.event.inventory.InventoryClickEvent;
- import org.bukkit.event.inventory.InventoryCloseEvent;
- import org.bukkit.event.inventory.InventoryType;
- import org.bukkit.inventory.Inventory;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.metadata.FixedMetadataValue;
- import org.mineacademy.fo.PlayerUtil;
- import org.mineacademy.fo.collection.StrictMap;
- import org.mineacademy.fo.remain.CompMaterial;
- import org.mineacademy.fo.remain.CompMetadata;
- import java.util.Arrays;
- import java.util.List;
- import java.util.Map;
- import java.util.UUID;
- public class Craftingfiltergui extends MenuHolder {
- //private final static Craftingfiltergui instance = new Craftingfiltergui();
- private final ContainerRegistryAPI registry = ContainerRegistryAPI.getInstance();
- private final StrictMap<UUID, Inventory> craftingFilterGui = new StrictMap<>();
- private final MetadataEnumsForGui metadataGui = MetadataEnumsForGui.INVENTORY_CRAFTINGGUI;
- private Inventory inventory;
- private int viwers;
- public Craftingfiltergui(Location location, Player player) {
- super(location, player);
- }
- @Override
- public void setItemsInSlot(int slot) {
- if (GuiTempletsYaml.getSlot("Crafting_Filtergui", "Placeholders").contains(slot))
- this.inventory.setItem(slot, ItemUtily.createItemStack(GuiTempletsYaml.getIcon("Crafting_Filtergui", "Placeholders", null),
- GuiTempletsYaml.getDisplayName("Crafting_Filtergui", "Placeholders"), GuiTempletsYaml.getLore("Crafting_Filtergui", "Placeholders"),
- "Guimatrial", "GuiPlaceholders"));
- if (GuiTempletsYaml.getSlot("Crafting_Filtergui", "Info_Button").contains(slot))
- this.inventory.setItem(slot, ItemUtily.createItemStack(GuiTempletsYaml.getIcon("Crafting_Filtergui", "Info_Button", null),
- GuiTempletsYaml.getDisplayName("Crafting_Filtergui", "Info_Button"), GuiTempletsYaml.getLore("Crafting_Filtergui", "Info_Button"),
- "Guimatrial", "GuiPlaceholders"));
- if (GuiTempletsYaml.getSlot("Crafting_Filtergui", "Back_button").contains(slot))
- this.inventory.setItem(slot, ItemUtily.createItemStack(GuiTempletsYaml.getIcon("Crafting_Filtergui", "Back_button", null),
- GuiTempletsYaml.getDisplayName("Crafting_Filtergui", "Back_button"), GuiTempletsYaml.getLore("Crafting_Filtergui", "Back_button"),
- "Guimatrial", "GuiPlaceholders"));
- }
- @Override
- public void onMenuOpen(Player player, Location location) {
- viwers++;
- setItems();
- player.openInventory(getMenuForPlayers());
- PlayerUtil.updateInventoryTitle(player, GuiTempletsYaml.getGuiTitle("Crafting_Filtergui"));
- }
- @Override
- public void setItems() {
- ItemStack[] items = registry.getFiltreritems(location);
- for (int i = 0; i < this.inventory.getSize(); i++) {
- setItemsInSlot(i);
- }
- if (items != null)
- for (int i = 0; i < items.length; i++) {
- ItemStack itemstacks = items[i];
- if (itemstacks != null) {
- ItemStack setItem = ItemUtily.createItemStackAsOne(itemstacks);
- this.inventory.setItem(i, setItem);
- }
- }
- }
- @Override
- public void whenBlockBreak() {
- this.inventory = null;
- }
- @Override
- public void onMenuClose(final InventoryCloseEvent event) {
- ContainerRegistryAPI registry = ContainerRegistryAPI.getInstance();
- Map<Integer, ItemStack> map = getItemsExceptBottomBar(this.inventory, (Player) event.getPlayer());
- registry.setFiltreritems(this.location, map.values().toArray(new ItemStack[]{}));
- removeMenuDataForPlayer((Player) event.getPlayer());
- Arrays.stream(this.inventory.getContents()).forEach(itemStack -> {
- if (itemStack != null) this.inventory.remove(itemStack);
- });
- setItems();
- if (this.inventory.equals(event.getInventory()))
- this.viwers--;
- if (viwers <= 0) {
- this.inventory.clear();
- this.viwers = 0;
- }
- }
- @Override
- public void clickedMenu(InventoryClickEvent event, ItemStack clicked) {
- if (clicked != null && event.getSlotType() != InventoryType.SlotType.OUTSIDE) {
- Material clickedItem = clicked.getType();
- if (CompMetadata.getMetadata(clicked, "Guimatrial") != null) {
- if (clickedItem == CompMaterial.fromItem(GuiTempletsYaml.getIcon("Crafting_Filtergui", "Placeholders", null)).getMaterial() && CompMetadata.getMetadata(clicked, "Guimatrial").equals("GuiPlaceholders")) {
- event.setCancelled(true);
- }
- if (clickedItem == CompMaterial.fromItem(GuiTempletsYaml.getIcon("Crafting_Filtergui", "Back_button", null)).getMaterial() && CompMetadata.getMetadata(clicked, "Guimatrial").equals("GuiPlaceholders")) {
- event.setCancelled(true);
- event.getWhoClicked().closeInventory();
- }
- if (clickedItem == CompMaterial.fromItem(GuiTempletsYaml.getIcon("Crafting_Filtergui", "Info_Button", null)).getMaterial() && CompMetadata.getMetadata(clicked, "Guimatrial").equals("GuiPlaceholders"))
- event.setCancelled(true);
- }
- }
- }
- @Override
- protected void setMenuInCache(Player player) {
- if (inventory == null)
- inventory = Bukkit.createInventory(null, GuiTempletsYaml.getGuiSize("Crafting_Filtergui"));
- player.setMetadata(metadataGui.toString(), new FixedMetadataValue(metadataGui.getPlugin(), metadataGui.getMetadataKey()));
- }
- @Override
- public Inventory getMenuForPlayers() {
- return inventory;
- }
- public boolean PlayerViwePageEmpty(Player player) {
- return craftingFilterGui.contains(player.getUniqueId());
- }
- @Override
- protected void removeMenuDataForPlayer(Player player) {
- MetadataEnumsForGui metadataGui = MetadataEnumsForGui.INVENTORY_CRAFTINGGUI;
- craftingFilterGui.removeWeak(player.getUniqueId());
- player.removeMetadata(metadataGui.toString(), metadataGui.getPlugin());
- }
- public int getViewersAmount(List<HumanEntity> viewersList) {
- int viewers = 0;
- for (HumanEntity viewer : viewersList) {
- if (viewer.getGameMode() != GameMode.SPECTATOR)
- viewers++;
- }
- return viewers;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement