Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.brokenarrow.storage.menus;
- import org.brokenarrow.storage.CustomContainersMainClass;
- import org.brokenarrow.storage.Settings.ChatMessages;
- import org.brokenarrow.storage.Settings.MainSettings;
- import org.brokenarrow.storage.api.ContainerRegistryAPI;
- import org.brokenarrow.storage.api.PreferenceSettingsRegisteryApi;
- import org.brokenarrow.storage.util.GuiTempletsYaml;
- import org.brokenarrow.storage.util.ItemUtily;
- import org.brokenarrow.storage.util.MetadataEnumsForGui;
- import org.brokenarrow.storage.util.YamlSettingsContainers;
- import org.brokenarrow.storage.util.effects.CreateBorderEffect;
- import org.brokenarrow.storage.util.effects.SpawnBorderEffects;
- import org.bukkit.Bukkit;
- import org.bukkit.Location;
- import org.bukkit.Material;
- import org.bukkit.block.Block;
- 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.Common;
- import org.mineacademy.fo.PlayerUtil;
- import org.mineacademy.fo.SerializeUtil;
- import org.mineacademy.fo.remain.CompMaterial;
- import org.mineacademy.fo.remain.CompMetadata;
- import org.mineacademy.fo.visual.BlockVisualizer;
- import java.util.Arrays;
- import java.util.List;
- import java.util.Set;
- public class HopperGui extends MenuHolder {
- private final CustomContainersMainClass plugin = CustomContainersMainClass.getInstance();
- private final MetadataEnumsForGui metadataplayer = MetadataEnumsForGui.CHEST_METADATA;
- private final MetadataEnumsForGui metadataGui = MetadataEnumsForGui.INVENTORY_LINKTOCONTAINER;
- private final MetadataEnumsForGui metadataActivateLinkMode = MetadataEnumsForGui.AKTIVATE_LINK_TOCONTAINER;
- private final MetadataEnumsForGui metadataFilterItemsGui = MetadataEnumsForGui.INVENTORY_FILTERGUI;
- private final ContainerRegistryAPI registry = ContainerRegistryAPI.getInstance();
- private final MainSettings mainsettings = MainSettings.getInstance();
- private final PreferenceSettingsRegisteryApi preferenceRegistery = PreferenceSettingsRegisteryApi.getInstance();
- boolean visualize = false;
- private Inventory inventory;
- public HopperGui(Location location, Player player) {
- super(location, player);
- }
- /*@Override
- public void createMenuForPlayer(Player player, Location location) {
- setMenuInCache(player);
- onMenuOpen(player, location);
- }*/
- @Override
- protected void setMenuInCache(Player player) {
- if (inventory == null)
- this.inventory = Bukkit.createInventory(null, GuiTempletsYaml.getGuiSize("Link_Suction_Hopper_Gui"));
- Common.runLater(10, () -> player.setMetadata(this.metadataGui.toString(), new FixedMetadataValue(this.metadataGui.getPlugin(), this.metadataGui.getMetadataKey())));
- }
- @Override
- public void onMenuOpen(Player player, Location location) {
- setItems();
- player.openInventory(getMenuForPlayers());
- PlayerUtil.updateInventoryTitle(player, GuiTempletsYaml.getGuiTitle("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui"));
- }
- @Override
- public Inventory getMenuForPlayers() {
- return this.inventory;
- }
- @Override
- public void onMenuClose(InventoryCloseEvent event) {
- removeMenuDataForPlayer((Player) event.getPlayer());
- if (event.getInventory().getType().equals(this.inventory.getType())) {
- Arrays.stream(inventory.getContents()).forEach(itemStack -> {
- if (itemStack != null) inventory.remove(itemStack);
- });
- setItems();
- }
- }
- @Override
- protected void setItems() {
- for (int i = 0; i < this.inventory.getSize(); i++) {
- setItemsInSlot(i);
- }
- }
- @Override
- public void whenBlockBreak() {
- this.inventory = null;
- }
- @Override
- protected void setItemsInSlot(int slot) {
- Location location = SerializeUtil.deserializeLocation(CompMetadata.getMetadata(createMenuplayer, metadataplayer.toString()));
- String containerFileName = registry.getContainerFileName(location);
- String nextUpdate = YamlSettingsContainers.getUpdate(containerFileName, registry.getCurrentUpdate(location));
- String currentUpdate = registry.getCurrentUpdate(location);
- double currentBalance = plugin.getEconomyProvider().getProvider().getBalance(Bukkit.getOfflinePlayer(createMenuplayer.getUniqueId()));
- String hasMetadata = CompMetadata.getMetadata(createMenuplayer, metadataActivateLinkMode.toString());
- if (GuiTempletsYaml.getSlot("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_Link_To_Container").contains(slot))
- if (hasMetadata == null && createMenuplayer.hasPermission(plugin.getName() + ".link.suction.menu.linkcontainer"))
- this.inventory.setItem(slot, ItemUtily.createItemStack(GuiTempletsYaml.getIcon("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_Link_To_Container", null),
- GuiTempletsYaml.getDisplayName("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_Link_To_Container"),
- GuiTempletsYaml.getLore("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_Link_To_Container"), "Guimatrial", "GuiPlaceholders"));
- else if (hasMetadata != null && createMenuplayer.hasPermission(plugin.getName() + ".link.suction.menu.linkcontainer"))
- this.inventory.setItem(slot, ItemUtily.createItemStack(GuiTempletsYaml.getIcon("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_Link_To_Container_Active", null),
- GuiTempletsYaml.getDisplayName("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_Link_To_Container_Active"),
- GuiTempletsYaml.getLore("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_Link_To_Container_Active"), "Guimatrial", "GuiPlaceholders"));
- else if (!(createMenuplayer.hasPermission(plugin.getName() + ".link.suction.menu.linkcontainer")))
- this.inventory.setItem(slot, ItemUtily.createItemStack(GuiTempletsYaml.getIcon("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_Link_To_Container_No_Permission", null),
- GuiTempletsYaml.getDisplayName("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_Link_To_Container_No_Permission"),
- GuiTempletsYaml.getLore("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_Link_To_Container_No_Permission"), "Guimatrial", "GuiPlaceholders"));
- if (GuiTempletsYaml.getSlot("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_Upgrade").contains(slot))
- if (createMenuplayer.hasPermission(plugin.getName() + ".link.suction.menu.upgrade") && !YamlSettingsContainers.getUpdate(containerFileName, currentUpdate).equals("") && YamlSettingsContainers.getUpdate(containerFileName, currentUpdate) != null && (currentBalance >= YamlSettingsContainers.getCostForUpdate(containerFileName, nextUpdate)))
- this.inventory.setItem(slot, ItemUtily.createItemStack(GuiTempletsYaml.getIcon("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_Upgrade", null),
- GuiTempletsYaml.getDisplayName("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_Upgrade"),
- lores(), "Guimatrial", "GuiPlaceholders"));
- else if (createMenuplayer.hasPermission(plugin.getName() + ".link.suction.menu.upgrade") && (YamlSettingsContainers.getUpdate(containerFileName, currentUpdate).equals("") || YamlSettingsContainers.getUpdate(containerFileName, currentUpdate) == null))
- this.inventory.setItem(slot, ItemUtily.createItemStack(GuiTempletsYaml.getIcon("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_Upgrade", null),
- GuiTempletsYaml.getDisplayName("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_Upgrade"),
- lores(), "Guimatrial", "GuiPlaceholders"));
- else if (createMenuplayer.hasPermission(plugin.getName() + ".link.suction.menu.upgrade") && !YamlSettingsContainers.getUpdate(containerFileName, currentUpdate).equals("") && !(currentBalance >= YamlSettingsContainers.getCostForUpdate(containerFileName, nextUpdate)))
- this.inventory.setItem(slot, ItemUtily.createItemStack(GuiTempletsYaml.getIcon("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_No_Money_Upgrade", null),
- GuiTempletsYaml.getDisplayName("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_No_Money_Upgrade"),
- lores(), "Guimatrial", "GuiPlaceholders"));
- else if (!(createMenuplayer.hasPermission(plugin.getName() + ".link.suction.menu.upgrade")))
- this.inventory.setItem(slot, ItemUtily.createItemStack(GuiTempletsYaml.getIcon("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_Upgrade_No_Permisssion", null),
- GuiTempletsYaml.getDisplayName("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_Upgrade_No_Permisssion"),
- GuiTempletsYaml.getLore("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_Upgrade_No_Permisssion")));
- if (GuiTempletsYaml.getSlot("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_White_And_Black_List").contains(slot))
- if (this.createMenuplayer.hasPermission(plugin.getName() + ".link.suction.menu.whiteblacklist"))
- this.inventory.setItem(slot, ItemUtily.createItemStack(GuiTempletsYaml.getIcon("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_White_And_Black_List", null),
- GuiTempletsYaml.getDisplayName("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_White_And_Black_List"),
- GuiTempletsYaml.getLore("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_White_And_Black_List", languageMessages(registry.isFilterWhiteBlack(location))), "Guimatrial", "GuiPlaceholders"));
- else
- this.inventory.setItem(slot, ItemUtily.createItemStack(GuiTempletsYaml.getIcon("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_White_And_Black_List_No_Permission", null),
- GuiTempletsYaml.getDisplayName("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_White_And_Black_List_No_Permission"),
- GuiTempletsYaml.getLore("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_White_And_Black_List_No_Permission", registry.isFilterWhiteBlack(location)), "Guimatrial", "GuiPlaceholders"));
- }
- @Override
- public void clickedMenu(InventoryClickEvent event, ItemStack clicked) {
- if (clicked != null && event.getSlotType() != InventoryType.SlotType.OUTSIDE) {
- Location location = SerializeUtil.deserializeLocation(CompMetadata.getMetadata(createMenuplayer, metadataplayer.toString()));
- String container = registry.getContainerFileName(location);
- String nextUpdate = YamlSettingsContainers.getUpdate(container, registry.getCurrentUpdate(location));
- String currentUpdate = registry.getCurrentUpdate(location);
- List<Location> locationss = registry.getLinkContainerLinkedToLocation(location);
- Player player = (Player) event.getWhoClicked();
- boolean action = event.getClick().isLeftClick();
- Material clickedItem = clicked.getType();
- if (CompMetadata.getMetadata(clicked, "Guimatrial") != null) {
- if (CompMetadata.getMetadata(clicked, "Guimatrial").equals("GuiPlaceholders") && (clickedItem == CompMaterial.fromItem(GuiTempletsYaml.getIcon("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_White_And_Black_List", null)).getMaterial() ||
- clickedItem == CompMaterial.fromItem(GuiTempletsYaml.getIcon("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_White_And_Black_List_No_Permission", null)).getMaterial()))
- if (action && player.hasPermission(plugin.getName() + ".link.suction.menu.whiteblacklist"))
- try {
- player.closeInventory();
- player.setMetadata(this.metadataFilterItemsGui.toString(), new FixedMetadataValue(this.metadataFilterItemsGui.getPlugin(), this.metadataFilterItemsGui.getMetadataKey()));
- MenuHolder whiteblackmenu = plugin.getClassinstans().createObjektMenu(location, player);
- whiteblackmenu.createMenuForPlayer(player, location);
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- else if (!action && player.hasPermission(plugin.getName() + ".link.suction.menu.whiteblacklist")) {
- registry.setFilterWhiteBlack(location, !registry.isFilterWhiteBlack(location));
- setItems();
- }
- if (!player.hasPermission(plugin.getName() + ".link.suction.menu.whiteblacklist") && MainSettings.getInstance().getSettings().isShowNeedPermissionsInConsole())
- Common.log("You has not " + plugin.getName().toLowerCase() + ".link.suction.menu.whiteblacklist permission");
- if (CompMetadata.getMetadata(clicked, "Guimatrial").equals("GuiPlaceholders") && (clickedItem == CompMaterial.fromItem(GuiTempletsYaml.getIcon("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_Upgrade", null)).getMaterial()))
- try {
- if (player.hasPermission(plugin.getName() + ".link.suction.menu.upgrade")) {
- if (plugin.getEconomyProvider().getProvider().getBalance(Bukkit.getOfflinePlayer(player.getUniqueId())) >= YamlSettingsContainers.getCostForUpdate(container, nextUpdate)) {
- plugin.getEconomyProvider().getProvider().withdrawAmont(Bukkit.getOfflinePlayer(player.getUniqueId()), YamlSettingsContainers.getCostForUpdate(container, nextUpdate));
- registry.setNextUppdate(location, YamlSettingsContainers.getUpdate(registry.getContainerFileName(location), currentUpdate));
- if (mainsettings.getSettings().isTurnOffSuctionBorder() && preferenceRegistery.isShowSuctionBorderWhenPlaceContainer(player.getUniqueId())) {
- Set<Location> locations = CreateBorderEffect.spawnEffects(location, YamlSettingsContainers.getSuctionRangePlaceholder(registry.getContainerFileName(location), nextUpdate), 1.0, 1.0, 1.0);
- Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> plugin.getHeavyTasks().addLoad(new SpawnBorderEffects(locations, player, location, -1, 10)));
- //Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> Effects.visualize(location, AllYamlFilesInFolder.getLinkRange(container, nextUpdate), player));
- }
- } else
- ChatMessages.PLAYER_NOT_HAS_MONEY.sendMessage(player, YamlSettingsContainers.getCostForUpdate(container, nextUpdate));
- } else if (!player.hasPermission(plugin.getName() + ".link.suction.menu.upgrade") && MainSettings.getInstance().getSettings().isShowNeedPermissionsInConsole())
- Common.log("You has not " + plugin.getName().toLowerCase() + ".link.suction.upgrade permission");
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- if (CompMetadata.getMetadata(clicked, "Guimatrial").equals("GuiPlaceholders") && (clickedItem == CompMaterial.fromItem(GuiTempletsYaml.getIcon("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_Link_To_Container", null)).getMaterial() ||
- clickedItem == CompMaterial.fromItem(GuiTempletsYaml.getIcon("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_Link_To_Container_Active", null)).getMaterial())) {
- if (action && !player.hasMetadata(metadataActivateLinkMode.toString()) && player.hasPermission(plugin.getName() + ".link.suction.menu.linkcontainer")) {
- player.setMetadata(metadataActivateLinkMode.toString(), new FixedMetadataValue(metadataActivateLinkMode.getPlugin(), action));
- if (locationss != null) {
- for (Location loc : locationss) {
- Block blocks = loc.getBlock();
- if (!BlockVisualizer.isVisualized(blocks))
- Common.runLater(() -> BlockVisualizer.visualize(blocks,
- CompMaterial.fromMaterial(Material.BONE_BLOCK), "You has now linked " + blocks.getType().name() + " on cords " +
- SerializeUtil.serializeLoc(loc)));
- }
- visualize = true;
- Common.runLater(30, player::closeInventory);
- if (preferenceRegistery.isTimerSettingWhenLinkHopper(player.getUniqueId())) {
- Common.tell(player, "You has now activate linkmode for " + mainsettings.getSettings().getTimeBeforeItTurnOff() + " seconds, you can turn it off in same hopper menu you activate it.");
- Common.runLater(mainsettings.getSettings().getTimeBeforeItTurnOff() * 20, () -> {
- player.removeMetadata(metadataActivateLinkMode.toString(), metadataActivateLinkMode.getPlugin());
- Common.tell(player, "Linkmode has now turn off");
- if (locationss != null) {
- for (Location loc : locationss) {
- Block blocks = loc.getBlock();
- if (BlockVisualizer.isVisualized(blocks))
- BlockVisualizer.stopVisualizing(blocks);
- }
- visualize = false;
- }
- });
- }
- setItems();
- }
- } else if (!action && player.hasPermission(plugin.getName() + ".link.suction.menu.linkcontainer")) {
- player.removeMetadata(metadataActivateLinkMode.toString(), metadataActivateLinkMode.getPlugin());
- setItems();
- if (locationss != null) {
- for (Location loc : locationss) {
- Block blocks = loc.getBlock();
- if (BlockVisualizer.isVisualized(blocks))
- BlockVisualizer.stopVisualizing(blocks);
- }
- visualize = false;
- }
- }
- } else if (!player.hasPermission(plugin.getName() + ".link.suction.menu.linkcontainer") && MainSettings.getInstance().getSettings().isShowNeedPermissionsInConsole())
- Common.log("You has not " + plugin.getName().toLowerCase() + ".link.suction.menu.linkcontainer permission");
- }
- }
- event.setCancelled(true);
- }
- @Override
- protected void removeMenuDataForPlayer(Player player) {
- if (player.hasMetadata(metadataGui.toString()))
- player.removeMetadata(metadataGui.toString(), metadataGui.getPlugin());
- System.out.println("remove metadata " + player);
- }
- public String languageMessages(boolean value) {
- if (value)
- return ChatMessages.WHITE_LIST.languageMessages();
- return ChatMessages.BLACK_LIST.languageMessages();
- }
- @Override
- protected List<String> lores() {
- Location location = SerializeUtil.deserializeLocation(CompMetadata.getMetadata(createMenuplayer, metadataplayer.toString()));
- String containerFileName = registry.getContainerFileName(location);
- String nextUpdate = YamlSettingsContainers.getUpdate(containerFileName, registry.getCurrentUpdate(location));
- String currentUpdate = registry.getCurrentUpdate(location);
- CustomContainersMainClass plugin = CustomContainersMainClass.getInstance();
- List<String> lore;
- double currentBalance = plugin.getEconomyProvider().getProvider().getBalance(Bukkit.getOfflinePlayer(createMenuplayer.getUniqueId()));
- if (!YamlSettingsContainers.getUpdate(containerFileName, currentUpdate).equals("") && YamlSettingsContainers.getUpdate(containerFileName, currentUpdate) != null)
- lore = GuiTempletsYaml.getLore("Link_Suction_Hopper_Gui", currentBalance >= YamlSettingsContainers.getCostForUpdate(containerFileName, nextUpdate) ? "Link_Suction_Hopper_Gui_Upgrade" : "Link_Suction_Hopper_Gui_No_Money_Upgrade",
- YamlSettingsContainers.getCostForUpdate(containerFileName, currentUpdate),
- currentUpdate,
- YamlSettingsContainers.getLinkRangePlaceholder(containerFileName, currentUpdate),
- YamlSettingsContainers.getSuctionRangePlaceholder(containerFileName, currentUpdate),
- YamlSettingsContainers.getSecondsForPickupTeleport(containerFileName, currentUpdate),
- YamlSettingsContainers.getMaxAmountContainersCanBeLinked(containerFileName, currentUpdate),
- !registry.getLinkContainerLinkedToLocation(location).isEmpty(),
- registry.getLinkContainerLinkedToLocation(location).size(),
- YamlSettingsContainers.getCostForUpdate(containerFileName, nextUpdate),
- YamlSettingsContainers.getUpdate(containerFileName, currentUpdate),
- YamlSettingsContainers.getLinkRangePlaceholder(containerFileName, nextUpdate),
- YamlSettingsContainers.getSuctionRangePlaceholder(containerFileName, nextUpdate),
- YamlSettingsContainers.getSecondsForPickupTeleport(containerFileName, nextUpdate),
- YamlSettingsContainers.getMaxAmountContainersCanBeLinked(containerFileName, currentUpdate));
- else
- lore = GuiTempletsYaml.getLore("Link_Suction_Hopper_Gui", "Link_Suction_Hopper_Gui_Max_Upgrade",
- YamlSettingsContainers.getContainerType(containerFileName, currentUpdate),
- currentUpdate,
- YamlSettingsContainers.getLinkRangePlaceholder(containerFileName, currentUpdate),
- YamlSettingsContainers.getSuctionRangePlaceholder(containerFileName, currentUpdate),
- YamlSettingsContainers.getSecondsForPickupTeleport(containerFileName, currentUpdate),
- YamlSettingsContainers.getMaxAmountContainersCanBeLinked(containerFileName, currentUpdate),
- !registry.getLinkContainerLinkedToLocation(location).isEmpty(),
- registry.getLinkContainerLinkedToLocation(location).size());
- return lore;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement