diff --git a/src/main/java/de/fanta/challengesjoinentities/ChallengesJoinEntities.java b/src/main/java/de/fanta/challengesjoinentities/ChallengesJoinEntities.java index 4c2169d..a5d8b9f 100644 --- a/src/main/java/de/fanta/challengesjoinentities/ChallengesJoinEntities.java +++ b/src/main/java/de/fanta/challengesjoinentities/ChallengesJoinEntities.java @@ -15,6 +15,7 @@ import de.fanta.challengesjoinentities.commands.AdventureCommand.AdventureTestMapCommand; import de.fanta.challengesjoinentities.commands.AdventureCommand.ChallengeClearSavesCommand; import de.fanta.challengesjoinentities.commands.AdventureCommand.ChallengesRemovePlayerServer; +import de.fanta.challengesjoinentities.commands.ChallengesCommand.ChallengeListUserStatsCommand; import de.fanta.challengesjoinentities.commands.ChallengesCommand.ChallengeLoadCommand; import de.fanta.challengesjoinentities.commands.ChallengesCommand.ChallengeSetStatsCommand; import de.fanta.challengesjoinentities.commands.ChallengesCommand.ChallengesStatsCommand; @@ -154,6 +155,7 @@ challengesrouter.addCommandMapping(new ChallengesStatsCommand(plugin.getStatistics()), "stats"); challengesrouter.addCommandMapping(new ChallengeSetStatsCommand(plugin), "setstats"); challengesrouter.addCommandMapping(new ChallengeClearSavesCommand(plugin), "clearoldsaves"); + challengesrouter.addCommandMapping(new ChallengeListUserStatsCommand(plugin), "listuserstats"); CommandRouter adventurerouter = new CommandRouter(getCommand("adventure")); adventurerouter.addCommandMapping(new AdventureLoadCommand(this), "load"); @@ -341,20 +343,29 @@ switch (data.getServerStatus()) { case ONLINE -> { piglin.getEquipment().clear(); - nmsUtils.getEntityUtils().setPiglinDancing(piglin, true); + if (nmsUtils != null) { + nmsUtils.getEntityUtils().setPiglinDancing(piglin, true); + } } case OFFLINE -> { - nmsUtils.getEntityUtils().setPiglinDancing(piglin, false); + if (nmsUtils != null) { + nmsUtils.getEntityUtils().setPiglinDancing(piglin, false); + } + piglin.getEquipment().setItemInOffHand(new ItemStack(Material.GOLD_INGOT)); } case RUNNING -> { piglin.getEquipment().clear(); - nmsUtils.getEntityUtils().setPiglinDancing(piglin, false); + if (nmsUtils != null) { + nmsUtils.getEntityUtils().setPiglinDancing(piglin, false); + } } } } else { // server is full piglin.getEquipment().clear(); - nmsUtils.getEntityUtils().setPiglinDancing(piglin, false); + if (nmsUtils != null) { + nmsUtils.getEntityUtils().setPiglinDancing(piglin, false); + } } } } diff --git a/src/main/java/de/fanta/challengesjoinentities/adventure/ui/AdventureMapsUI.java b/src/main/java/de/fanta/challengesjoinentities/adventure/ui/AdventureMapsUI.java index 2aba922..38a26d6 100644 --- a/src/main/java/de/fanta/challengesjoinentities/adventure/ui/AdventureMapsUI.java +++ b/src/main/java/de/fanta/challengesjoinentities/adventure/ui/AdventureMapsUI.java @@ -5,7 +5,7 @@ import de.fanta.challengesjoinentities.Server; import de.fanta.challengesjoinentities.adventure.AdventureMap; import de.fanta.challengesjoinentities.adventure.Category; -import de.fanta.challengesjoinentities.utils.ui.AbstractWindow; +import de.iani.cubesideutils.bukkit.inventory.AbstractWindow; import de.iani.cubesideutils.bukkit.items.CustomHeads; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.event.ClickEvent; diff --git a/src/main/java/de/fanta/challengesjoinentities/adventure/ui/AdventureSearchGUI.java b/src/main/java/de/fanta/challengesjoinentities/adventure/ui/AdventureSearchGUI.java index 3c18cb4..df2bda1 100644 --- a/src/main/java/de/fanta/challengesjoinentities/adventure/ui/AdventureSearchGUI.java +++ b/src/main/java/de/fanta/challengesjoinentities/adventure/ui/AdventureSearchGUI.java @@ -5,7 +5,7 @@ import de.fanta.challengesjoinentities.Server; import de.fanta.challengesjoinentities.adventure.AdventureMap; import de.fanta.challengesjoinentities.adventure.Category; -import de.fanta.challengesjoinentities.utils.ui.AbstractWindow; +import de.iani.cubesideutils.bukkit.inventory.AbstractWindow; import de.iani.cubesideutils.bukkit.items.CustomHeads; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.event.ClickEvent; diff --git a/src/main/java/de/fanta/challengesjoinentities/adventure/ui/CategoryUI.java b/src/main/java/de/fanta/challengesjoinentities/adventure/ui/CategoryUI.java index 41642a4..6b8e606 100644 --- a/src/main/java/de/fanta/challengesjoinentities/adventure/ui/CategoryUI.java +++ b/src/main/java/de/fanta/challengesjoinentities/adventure/ui/CategoryUI.java @@ -4,8 +4,8 @@ import de.fanta.challengesjoinentities.ChatUtil; import de.fanta.challengesjoinentities.adventure.CategoriesConfig; import de.fanta.challengesjoinentities.adventure.Category; -import de.fanta.challengesjoinentities.utils.ui.AbstractWindow; import de.fanta.challengesjoinentities.utils.ui.ItemUtil; +import de.iani.cubesideutils.bukkit.inventory.AbstractWindow; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; diff --git a/src/main/java/de/fanta/challengesjoinentities/commands/AdventureCommand/AdventureClearSavesCommand.java b/src/main/java/de/fanta/challengesjoinentities/commands/AdventureCommand/AdventureClearSavesCommand.java index 2d01fe8..9bcbc29 100644 --- a/src/main/java/de/fanta/challengesjoinentities/commands/AdventureCommand/AdventureClearSavesCommand.java +++ b/src/main/java/de/fanta/challengesjoinentities/commands/AdventureCommand/AdventureClearSavesCommand.java @@ -53,6 +53,7 @@ if (10368000000L + fileTime.toMillis() <= System.currentTimeMillis()) { //120 Tage FileUtils.deleteDirectory(map); deletecounter++; + ChatUtil.sendNormalMessage(p, "Welt " + playerFolder.getName() + "/" + map.getName() + " gelöscht. (" + deletecounter + ")"); } } if (Objects.requireNonNull(playerFolder.listFiles()).length == 0) { diff --git a/src/main/java/de/fanta/challengesjoinentities/commands/AdventureCommand/AdventureTempCommand.java b/src/main/java/de/fanta/challengesjoinentities/commands/AdventureCommand/AdventureTempCommand.java index 68e372c..55f21d3 100644 --- a/src/main/java/de/fanta/challengesjoinentities/commands/AdventureCommand/AdventureTempCommand.java +++ b/src/main/java/de/fanta/challengesjoinentities/commands/AdventureCommand/AdventureTempCommand.java @@ -6,6 +6,9 @@ import de.fanta.challengesjoinentities.adventure.CategoriesConfig; import de.iani.cubesideutils.bukkit.commands.SubCommand; import de.iani.cubesideutils.commands.ArgsParser; +import de.tr7zw.nbtapi.NBTCompound; +import de.tr7zw.nbtapi.NBTFile; +import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.configuration.InvalidConfigurationException; @@ -23,7 +26,7 @@ this.plugin = plugin; } - public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + /*public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { FileConfiguration config = AdventureMapsConfig.getConfig(); FileConfiguration catConfig = CategoriesConfig.getConfig(); @@ -62,17 +65,19 @@ } return true; - } + }*/ - /*public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { - File adventureSaves = new File("/home/minecraft/saves/"); + File adventureSaves = plugin.getChallengeSavePath().toFile(); + Bukkit.getLogger().info(adventureSaves.getAbsolutePath()); File[] players = adventureSaves.listFiles(); if (players != null) { + Bukkit.getLogger().info("Players"); for (File player : players) { ChatUtil.sendNormalMessage(sender, "- " + player.getName()); @@ -85,10 +90,11 @@ NBTCompound data = file.getCompound("Data"); NBTCompound dataPacks = data.getCompound("DataPacks"); - dataPacks.getStringList("Enabled").add("update_1_20"); + dataPacks.getStringList("Enabled").add("update_1_21"); dataPacks.getStringList("Disabled").add("bundle"); + dataPacks.getStringList("Disabled").add("trade_rebalance"); - data.getStringList("enabled_features").add("minecraft:update_1_20"); + data.getStringList("enabled_features").add("minecraft:update_1_21"); data.getStringList("enabled_features").add("minecraft:vanilla"); @@ -102,7 +108,7 @@ } } return true; - }*/ + } @Override public String getRequiredPermission() { diff --git a/src/main/java/de/fanta/challengesjoinentities/commands/ChallengesCommand/ChallengeClearSavesCommand.java b/src/main/java/de/fanta/challengesjoinentities/commands/ChallengesCommand/ChallengeClearSavesCommand.java index eb6e497..482ff70 100644 --- a/src/main/java/de/fanta/challengesjoinentities/commands/ChallengesCommand/ChallengeClearSavesCommand.java +++ b/src/main/java/de/fanta/challengesjoinentities/commands/ChallengesCommand/ChallengeClearSavesCommand.java @@ -53,6 +53,7 @@ if (10368000000L + fileTime.toMillis() <= System.currentTimeMillis()) { //120 Tage FileUtils.deleteDirectory(map); deletecounter++; + ChatUtil.sendNormalMessage(p, "Welt " + playerFolder.getName() + "/" + map.getName() + " gelöscht. (" + deletecounter + ")"); } } if (Objects.requireNonNull(playerFolder.listFiles()).length == 0) { diff --git a/src/main/java/de/fanta/challengesjoinentities/loadgui/AdventureLoadGUI.java b/src/main/java/de/fanta/challengesjoinentities/loadgui/AdventureLoadGUI.java index 2fa050d..61da41a 100644 --- a/src/main/java/de/fanta/challengesjoinentities/loadgui/AdventureLoadGUI.java +++ b/src/main/java/de/fanta/challengesjoinentities/loadgui/AdventureLoadGUI.java @@ -4,9 +4,9 @@ import de.fanta.challengesjoinentities.ChatUtil; import de.fanta.challengesjoinentities.SaveSlot; import de.fanta.challengesjoinentities.Server; -import de.fanta.challengesjoinentities.utils.guiutils.GUIUtils; -import de.fanta.challengesjoinentities.utils.ui.AbstractWindow; +import de.fanta.challengesjoinentities.utils.ui.ItemUtil; import de.iani.cubesideutils.StringUtil; +import de.iani.cubesideutils.bukkit.inventory.AbstractWindow; import de.iani.playerUUIDCache.CachedPlayer; import org.bukkit.Bukkit; import org.bukkit.Material; @@ -65,7 +65,7 @@ case SAVE_2_INDEX -> item = getDisplayItem(player, SaveSlot.SLOT_2, adventureSave2); case SAVE_3_INDEX -> item = getDisplayItem(player, SaveSlot.SLOT_3, adventureSave3); case SAVE_AUTO_INDEX -> item = getDisplayItem(player, SaveSlot.SLOT_AUTO, adventureSaveAuto); - default -> item = GUIUtils.EMPTY_ICON; + default -> item = ItemUtil.EMPTY_ICON; } this.getInventory().setItem(i, item); } @@ -212,10 +212,10 @@ } else { - item = GUIUtils.createGuiItem(Material.LIME_STAINED_GLASS_PANE, ChatUtil.GREEN + "Frei"); + item = ItemUtil.createGuiItem(Material.LIME_STAINED_GLASS_PANE, ChatUtil.GREEN + "Frei"); } } else { - item = GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Für diesen Slot brauchst du VIP"); + item = ItemUtil.createGuiItem(Material.BARRIER, ChatUtil.RED + "Für diesen Slot brauchst du VIP"); } return item; } diff --git a/src/main/java/de/fanta/challengesjoinentities/loadgui/ChallengeLoadGUI.java b/src/main/java/de/fanta/challengesjoinentities/loadgui/ChallengeLoadGUI.java index a18ad20..96023c7 100644 --- a/src/main/java/de/fanta/challengesjoinentities/loadgui/ChallengeLoadGUI.java +++ b/src/main/java/de/fanta/challengesjoinentities/loadgui/ChallengeLoadGUI.java @@ -3,9 +3,9 @@ import de.fanta.challengesjoinentities.ChallengesJoinEntities; import de.fanta.challengesjoinentities.ChatUtil; import de.fanta.challengesjoinentities.Server; -import de.fanta.challengesjoinentities.utils.guiutils.GUIUtils; -import de.fanta.challengesjoinentities.utils.ui.AbstractWindow; +import de.fanta.challengesjoinentities.utils.ui.ItemUtil; import de.iani.cubesideutils.StringUtil; +import de.iani.cubesideutils.bukkit.inventory.AbstractWindow; import de.iani.playerUUIDCache.CachedPlayer; import org.bukkit.Bukkit; import org.bukkit.Material; @@ -58,51 +58,51 @@ case SAVE_1_INDEX -> { if (p.hasPermission("challenge.save.slot1")) { if (challengeSave1.isDirectory()) { - item = GUIUtils.createGuiItem(Material.MAP, ChatUtil.GREEN + "Save 1", ChatUtil.GREEN + "Klicken zum laden.", ChatUtil.GREEN + "Gespeichert am " + getFileDate(challengeSave1)); + item = ItemUtil.createGuiItem(Material.MAP, ChatUtil.GREEN + "Save 1", ChatUtil.GREEN + "Klicken zum laden.", ChatUtil.GREEN + "Gespeichert am " + getFileDate(challengeSave1)); } else { - item = GUIUtils.createGuiItem(Material.LIME_STAINED_GLASS_PANE, ChatUtil.GREEN + "Frei"); + item = ItemUtil.createGuiItem(Material.LIME_STAINED_GLASS_PANE, ChatUtil.GREEN + "Frei"); } } else { - item = GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Für diesen Slot hast du keine Rechte"); + item = ItemUtil.createGuiItem(Material.BARRIER, ChatUtil.RED + "Für diesen Slot hast du keine Rechte"); } } case SAVE_2_INDEX -> { if (p.hasPermission("challenge.save.slot2")) { if (challengeSave2.isDirectory()) { - item = GUIUtils.createGuiItem(Material.MAP, ChatUtil.GREEN + "Save 2", ChatUtil.GREEN + "Klicken zum laden.", ChatUtil.GREEN + "Gespeichert am " + getFileDate(challengeSave2)); + item = ItemUtil.createGuiItem(Material.MAP, ChatUtil.GREEN + "Save 2", ChatUtil.GREEN + "Klicken zum laden.", ChatUtil.GREEN + "Gespeichert am " + getFileDate(challengeSave2)); } else { - item = GUIUtils.createGuiItem(Material.LIME_STAINED_GLASS_PANE, ChatUtil.GREEN + "Frei"); + item = ItemUtil.createGuiItem(Material.LIME_STAINED_GLASS_PANE, ChatUtil.GREEN + "Frei"); } } else { - item = GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Für diesen Slot brauchst du VIP"); + item = ItemUtil.createGuiItem(Material.BARRIER, ChatUtil.RED + "Für diesen Slot brauchst du VIP"); } } case SAVE_3_INDEX -> { if (p.hasPermission("challenge.save.slot3")) { if (challengeSave3.isDirectory()) { - item = GUIUtils.createGuiItem(Material.MAP, ChatUtil.GREEN + "Save 3", ChatUtil.GREEN + "Klicken zum laden.", ChatUtil.GREEN + "Gespeichert am " + getFileDate(challengeSave3)); + item = ItemUtil.createGuiItem(Material.MAP, ChatUtil.GREEN + "Save 3", ChatUtil.GREEN + "Klicken zum laden.", ChatUtil.GREEN + "Gespeichert am " + getFileDate(challengeSave3)); } else { - item = GUIUtils.createGuiItem(Material.LIME_STAINED_GLASS_PANE, ChatUtil.GREEN + "Frei"); + item = ItemUtil.createGuiItem(Material.LIME_STAINED_GLASS_PANE, ChatUtil.GREEN + "Frei"); } } else { - item = GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Für diesen Slot brauchst du VIP"); + item = ItemUtil.createGuiItem(Material.BARRIER, ChatUtil.RED + "Für diesen Slot brauchst du VIP"); } } case SAVE_AUTO_INDEX -> { if (p.hasPermission("challenge.save.slotauto")) { if (challengeSaveAuto.isDirectory()) { - item = GUIUtils.createGuiItem(Material.CLOCK, ChatUtil.GREEN + "AutoSave", ChatUtil.GREEN + "Klicken zum laden.", ChatUtil.GREEN + "Gespeichert am " + getFileDate(challengeSaveAuto)); + item = ItemUtil.createGuiItem(Material.CLOCK, ChatUtil.GREEN + "AutoSave", ChatUtil.GREEN + "Klicken zum laden.", ChatUtil.GREEN + "Gespeichert am " + getFileDate(challengeSaveAuto)); } else { - item = GUIUtils.createGuiItem(Material.LIME_STAINED_GLASS_PANE, ChatUtil.GREEN + "AutoSave"); + item = ItemUtil.createGuiItem(Material.LIME_STAINED_GLASS_PANE, ChatUtil.GREEN + "AutoSave"); } } else { - item = GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Für diesen Slot hast du keine Rechte"); + item = ItemUtil.createGuiItem(Material.BARRIER, ChatUtil.RED + "Für diesen Slot hast du keine Rechte"); } } - default -> item = GUIUtils.EMPTY_ICON; + default -> item = ItemUtil.EMPTY_ICON; } this.getInventory().setItem(i, item); } diff --git a/src/main/java/de/fanta/challengesjoinentities/utils/guiutils/GUIUtils.java b/src/main/java/de/fanta/challengesjoinentities/utils/guiutils/GUIUtils.java deleted file mode 100644 index df4d900..0000000 --- a/src/main/java/de/fanta/challengesjoinentities/utils/guiutils/GUIUtils.java +++ /dev/null @@ -1,51 +0,0 @@ -package de.fanta.challengesjoinentities.utils.guiutils; - -import de.fanta.challengesjoinentities.ChallengesJoinEntities; -import de.fanta.challengesjoinentities.ChatUtil; -import net.md_5.bungee.api.ChatColor; -import org.bukkit.Bukkit; -import org.bukkit.Material; -import org.bukkit.Sound; -import org.bukkit.enchantments.Enchantment; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemFlag; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; - -import java.util.Arrays; - -public class GUIUtils { - - private static final ChallengesJoinEntities plugin = ChallengesJoinEntities.getPlugin(); - - public static final ItemStack EMPTY_ICON = createGuiItem(Material.GRAY_STAINED_GLASS_PANE, "§1", true); - - public static ItemStack createGuiItem(Material material, String name, String... lore) { - return createGuiItem(material, name, false, lore); - } - - public static ItemStack createGuiItem(final Material material, final String name, boolean glowing, final String... lore) { - final ItemStack item = new ItemStack(material, 1); - final ItemMeta meta = item.getItemMeta(); - meta.setDisplayName(name); - meta.setLore(Arrays.asList(lore)); - if (glowing) { - meta.addEnchant(Enchantment.MENDING, 1, false); - meta.addItemFlags(ItemFlag.HIDE_ENCHANTS); - } - item.setItemMeta(meta); - return item; - } - - public static void sendTitleToAll(String headline, String text, ChatColor textColor) { - for (Player p : Bukkit.getOnlinePlayers()) { - p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 1.0F, 2.0F); - p.sendTitle(ChatUtil.BLUE + headline, textColor + text, 10, 60, 10); - } - } - - public static void setConfig(String path, Object value) { - plugin.getConfig().set(path, value); - plugin.saveConfig(); - } -} diff --git a/src/main/java/de/fanta/challengesjoinentities/utils/ui/AbstractWindow.java b/src/main/java/de/fanta/challengesjoinentities/utils/ui/AbstractWindow.java deleted file mode 100644 index 003b864..0000000 --- a/src/main/java/de/fanta/challengesjoinentities/utils/ui/AbstractWindow.java +++ /dev/null @@ -1,72 +0,0 @@ -package de.fanta.challengesjoinentities.utils.ui; - -import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryAction; -import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.event.inventory.InventoryDragEvent; -import org.bukkit.inventory.Inventory; - -public abstract class AbstractWindow implements Window { - private final Player player; - - private final Inventory inventory; - - private Window parentWindow; - - public AbstractWindow(Player player, Inventory inventory) { - this.player = player; - this.inventory = inventory; - } - - public AbstractWindow(Window parentWindow, Inventory inventory) { - this(parentWindow.getPlayer(), inventory); - this.parentWindow = parentWindow; - } - - public Player getPlayer() { - return this.player; - } - - public Inventory getInventory() { - return this.inventory; - } - - public Window getParent() { - return this.parentWindow; - } - - public void onItemClicked(InventoryClickEvent event) { - if (mayAffectThisInventory(event)) - event.setCancelled(true); - } - - protected boolean mayAffectThisInventory(InventoryClickEvent event) { - if (getInventory().equals(event.getClickedInventory())) - return (event.getAction() != InventoryAction.NOTHING); - return switch (event.getAction()) { - case COLLECT_TO_CURSOR, MOVE_TO_OTHER_INVENTORY, UNKNOWN -> true; - default -> false; - }; - } - - public void onItemDraged(InventoryDragEvent event) { - if (mayAffectThisInventory(event)) - event.setCancelled(true); - } - - protected boolean mayAffectThisInventory(InventoryDragEvent event) { - for (Integer slot : event.getRawSlots()) { - if (slot < getInventory().getSize()) - return true; - } - return false; - } - - public void open() { - rebuildInventory(); - getPlayer().openInventory(getInventory()); - WindowManager.getInstance().registerOpenWindow(this); - } - - protected abstract void rebuildInventory(); -} diff --git a/src/main/java/de/fanta/challengesjoinentities/utils/ui/Window.java b/src/main/java/de/fanta/challengesjoinentities/utils/ui/Window.java deleted file mode 100644 index f48d72c..0000000 --- a/src/main/java/de/fanta/challengesjoinentities/utils/ui/Window.java +++ /dev/null @@ -1,28 +0,0 @@ -package de.fanta.challengesjoinentities.utils.ui; - -import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.event.inventory.InventoryCloseEvent; -import org.bukkit.event.inventory.InventoryDragEvent; -import org.bukkit.inventory.Inventory; - -public interface Window { - Player getPlayer(); - - Inventory getInventory(); - - Window getParent(); - - void open(); - - default void closed(InventoryCloseEvent event) { - } - - default void onItemClicked(InventoryClickEvent event) { - event.setCancelled(true); - } - - default void onItemDraged(InventoryDragEvent event) { - event.setCancelled(true); - } -} diff --git a/src/main/java/de/fanta/challengesjoinentities/utils/ui/WindowManager.java b/src/main/java/de/fanta/challengesjoinentities/utils/ui/WindowManager.java deleted file mode 100644 index 7125c97..0000000 --- a/src/main/java/de/fanta/challengesjoinentities/utils/ui/WindowManager.java +++ /dev/null @@ -1,75 +0,0 @@ -package de.fanta.challengesjoinentities.utils.ui; - -import de.fanta.challenges.Challenges; -import de.fanta.challengesjoinentities.ChallengesJoinEntities; - -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; -import java.util.logging.Level; - -import org.bukkit.Bukkit; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.event.inventory.InventoryCloseEvent; -import org.bukkit.event.inventory.InventoryDragEvent; -import org.bukkit.plugin.Plugin; - -public class WindowManager implements Listener { - private static final WindowManager INSTANCE = new WindowManager(); - - private final ChallengesJoinEntities plugin = ChallengesJoinEntities.getPlugin(); - - private final Map openWindows; - - public WindowManager() { - this.openWindows = new HashMap<>(); - Bukkit.getPluginManager().registerEvents(this, plugin); - } - - public void registerOpenWindow(Window window) { - Window alreadyOpen = this.openWindows.put(window.getPlayer().getUniqueId(), window); - if (alreadyOpen != null) - plugin.getLogger().log(Level.WARNING, "Window opened without the last one being closed."); - } - - @EventHandler - public void onInventoryClickEvent(InventoryClickEvent event) { - Window window = this.openWindows.get(event.getWhoClicked().getUniqueId()); - if (window == null) - return; - try { - window.onItemClicked(event); - } catch (Exception e) { - event.setCancelled(true); - throw e; - } - } - - @EventHandler - public void onInventoryDragEvent(InventoryDragEvent event) { - Window window = this.openWindows.get(event.getWhoClicked().getUniqueId()); - if (window == null) - return; - try { - window.onItemDraged(event); - } catch (Exception e) { - event.setCancelled(true); - throw e; - } - } - - @EventHandler - public void onInventoryClosedEvent(InventoryCloseEvent event) { - Window window = this.openWindows.get(event.getPlayer().getUniqueId()); - if (window == null) - return; - window.closed(event); - this.openWindows.remove(event.getPlayer().getUniqueId()); - } - - public static WindowManager getInstance() { - return INSTANCE; - } -}