From dd50421e2b9ea78efc32cb54affc820e678f50fd Mon Sep 17 00:00:00 2001 From: Unknown Date: Sun, 2 Dec 2018 19:24:41 +0000 Subject: [PATCH] Build 36 # Added Placeholder support to Essentials Chat (Requires open curly bracket and close curly bracket). # Fixed NPE when adding Placeholders to holograms because the hologram is an world entity. # Fixed the 'Island Visit' menu not sorting the islands correctly when changing the sort. # Fixed the 'Vote Leaderboard' not showing the positioning the islands correctly. # Fixed 'Next' or 'Previous' page item not working in the 'Island Visit' menu. # Fixed the command '/island level ' not showing the players level. # Fixed IOOBE when there are no tiers in the 'Upgrade Editor - Size' menu. --- pom.xml | 2 +- .../command/commands/LevelCommand.java | 2 +- .../skyblock/hologram/HologramManager.java | 38 +- .../leaderboard/LeaderboardManager.java | 12 + .../goodandevil/skyblock/listeners/Chat.java | 23 +- .../me/goodandevil/skyblock/menus/Visit.java | 326 +++++++++--------- .../skyblock/menus/admin/Upgrade.java | 1 - .../skyblock/placeholder/EZPlaceholder.java | 89 +---- .../skyblock/placeholder/MVdWPlaceholder.java | 108 +----- .../placeholder/PlaceholderManager.java | 156 +++++++++ .../skyblock/upgrade/UpgradeManager.java | 10 +- src/main/resources/plugin.yml | 2 +- 12 files changed, 404 insertions(+), 365 deletions(-) diff --git a/pom.xml b/pom.xml index d65cc382..b13a4a0a 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ com.songoda SkyBlock 4.0.0 - 35 + 36 clean package diff --git a/src/main/java/me/goodandevil/skyblock/command/commands/LevelCommand.java b/src/main/java/me/goodandevil/skyblock/command/commands/LevelCommand.java index c9cff820..95e5f3bb 100644 --- a/src/main/java/me/goodandevil/skyblock/command/commands/LevelCommand.java +++ b/src/main/java/me/goodandevil/skyblock/command/commands/LevelCommand.java @@ -67,7 +67,7 @@ public class LevelCommand extends SubCommand { if (visitManager.hasIsland(islandOwnerUUID)) { me.goodandevil.skyblock.visit.Visit visit = visitManager.getIsland(islandOwnerUUID); - messageManager.sendMessage(player, configLoad.getString("Command.Island.Level.Level.Message").replace("%player", targetPlayerName).replace("%level", "" + visit.getLevel())); + messageManager.sendMessage(player, configLoad.getString("Command.Island.Level.Level.Message").replace("%player", targetPlayerName).replace("%level", "" + NumberUtil.formatNumber(visit.getLevel().getLevel()))); soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); return; diff --git a/src/main/java/me/goodandevil/skyblock/hologram/HologramManager.java b/src/main/java/me/goodandevil/skyblock/hologram/HologramManager.java index a5477a4d..718a5c86 100644 --- a/src/main/java/me/goodandevil/skyblock/hologram/HologramManager.java +++ b/src/main/java/me/goodandevil/skyblock/hologram/HologramManager.java @@ -7,6 +7,7 @@ import java.util.Iterator; import java.util.List; import org.bukkit.Bukkit; +import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.configuration.file.FileConfiguration; @@ -74,20 +75,23 @@ public class HologramManager { FileConfiguration languageConfigLoad = fileManager.getConfig(new File(skyblock.getDataFolder(), "language.yml")).getFileConfiguration(); if (locationsConfigLoad.getString("Location.Hologram.Leaderboard." + type) != null) { - List leaderboardPlayers = new ArrayList<>(); List hologramLines = new ArrayList<>(); + Leaderboard.Type leaderboardType = null; if (type == HologramType.Level) { - leaderboardPlayers.addAll(leaderboardManager.getLeaderboard(Leaderboard.Type.Level)); + leaderboardType = Leaderboard.Type.Level; } else if (type == HologramType.Votes) { - leaderboardPlayers.addAll(leaderboardManager.getLeaderboard(Leaderboard.Type.Votes)); + leaderboardType = Leaderboard.Type.Votes; } hologramLines.add(messageManager.replaceMessage(null, languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Header"))); for (int i = 0; i < 10; i++) { - if (i < leaderboardPlayers.size()) { - Leaderboard leaderboard = leaderboardPlayers.get(i); + Leaderboard leaderboard = leaderboardManager.getLeaderboardFromPosition(leaderboardType, i); + + if (leaderboard == null) { + hologramLines.add(messageManager.replaceMessage(null, languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Unclaimed").replace("%position", "" + (i+1)))); + } else { Visit visit = leaderboard.getVisit(); Player targetPlayer = Bukkit.getServer().getPlayer(visit.getOwnerUUID()); @@ -101,12 +105,10 @@ public class HologramManager { if (type == HologramType.Level) { Level level = visit.getLevel(); - hologramLines.add(messageManager.replaceMessage(null, languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Claimed").replace("%position", "" + (i+1)).replace("%player", islandOwnerName).replace("%level", NumberUtil.formatNumber(level.getLevel())).replace("%points", NumberUtil.formatNumber(level.getPoints())))); + hologramLines.add(ChatColor.translateAlternateColorCodes('&', languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Claimed").replace("%position", "" + (i+1)).replace("%player", islandOwnerName).replace("%level", NumberUtil.formatNumber(level.getLevel())).replace("%points", NumberUtil.formatNumber(level.getPoints())))); } else if (type == HologramType.Votes) { - hologramLines.add(messageManager.replaceMessage(null, languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Claimed").replace("%position", "" + (i+1)).replace("%player", islandOwnerName).replace("%votes", "" + NumberUtil.formatNumber(visit.getVoters().size())))); + hologramLines.add(ChatColor.translateAlternateColorCodes('&', languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Claimed").replace("%position", "" + (i+1)).replace("%player", islandOwnerName).replace("%votes", "" + NumberUtil.formatNumber(visit.getVoters().size())))); } - } else { - hologramLines.add(messageManager.replaceMessage(null, languageConfigLoad.getString("Hologram.Leaderboard." + type.name() + ".Unclaimed").replace("%position", "" + (i+1)))); } } @@ -220,19 +222,21 @@ public class HologramManager { continue; } - List leaderboardPlayers = new ArrayList<>(); + Leaderboard.Type leaderboardType = null; if (hologramTypeList == HologramType.Level) { - leaderboardPlayers.addAll(leaderboardManager.getLeaderboard(Leaderboard.Type.Level)); + leaderboardType = Leaderboard.Type.Level; } else if (hologramTypeList == HologramType.Votes) { - leaderboardPlayers.addAll(leaderboardManager.getLeaderboard(Leaderboard.Type.Votes)); + leaderboardType = Leaderboard.Type.Votes; } for (int i = 0; i < 10; i++) { + Leaderboard leaderboard = leaderboardManager.getLeaderboardFromPosition(leaderboardType, i); int hologramLine = 10 - i; - if (i < leaderboardPlayers.size()) { - Leaderboard leaderboard = leaderboardPlayers.get(i); + if (leaderboard == null) { + hologram.setLine(hologramLine, messageManager.replaceMessage(null, configLoad.getString("Hologram.Leaderboard." + hologramTypeList.name() + ".Unclaimed").replace("%position", "" + (i+1)))); + } else { Visit visit = leaderboard.getVisit(); Player targetPlayer = Bukkit.getServer().getPlayer(visit.getOwnerUUID()); @@ -246,12 +250,10 @@ public class HologramManager { if (hologramTypeList == HologramType.Level) { Level level = visit.getLevel(); - hologram.setLine(hologramLine, messageManager.replaceMessage(null, configLoad.getString("Hologram.Leaderboard." + hologramTypeList.name() + ".Claimed").replace("%position", "" + (i+1)).replace("%player", islandOwnerName).replace("%level", NumberUtil.formatNumber(level.getLevel())).replace("%points", NumberUtil.formatNumber(level.getPoints())))); + hologram.setLine(hologramLine, ChatColor.translateAlternateColorCodes('&', configLoad.getString("Hologram.Leaderboard." + hologramTypeList.name() + ".Claimed").replace("%position", "" + (i+1)).replace("%player", islandOwnerName).replace("%level", NumberUtil.formatNumber(level.getLevel())).replace("%points", NumberUtil.formatNumber(level.getPoints())))); } else if (hologramTypeList == HologramType.Votes) { - hologram.setLine(hologramLine, messageManager.replaceMessage(null, configLoad.getString("Hologram.Leaderboard." + hologramTypeList.name() + ".Claimed").replace("%position", "" + (i+1)).replace("%player", islandOwnerName).replace("%votes", "" + NumberUtil.formatNumber(visit.getVoters().size())))); + hologram.setLine(hologramLine, ChatColor.translateAlternateColorCodes('&', configLoad.getString("Hologram.Leaderboard." + hologramTypeList.name() + ".Claimed").replace("%position", "" + (i+1)).replace("%player", islandOwnerName).replace("%votes", "" + NumberUtil.formatNumber(visit.getVoters().size())))); } - } else { - hologram.setLine(hologramLine, messageManager.replaceMessage(null, configLoad.getString("Hologram.Leaderboard." + hologramTypeList.name() + ".Unclaimed").replace("%position", "" + (i+1)))); } } } diff --git a/src/main/java/me/goodandevil/skyblock/leaderboard/LeaderboardManager.java b/src/main/java/me/goodandevil/skyblock/leaderboard/LeaderboardManager.java index 7dd7ebd7..bad435cb 100644 --- a/src/main/java/me/goodandevil/skyblock/leaderboard/LeaderboardManager.java +++ b/src/main/java/me/goodandevil/skyblock/leaderboard/LeaderboardManager.java @@ -78,6 +78,18 @@ public class LeaderboardManager { return leaderboardIslands; } + public Leaderboard getLeaderboardFromPosition(Leaderboard.Type type, int position) { + for (Leaderboard leaderboardPlayerList : leaderboardStorage) { + if (leaderboardPlayerList.getType() == type) { + if (leaderboardPlayerList.getPosition() == position) { + return leaderboardPlayerList; + } + } + } + + return null; + } + public List getLeaderboards() { return leaderboardStorage; } diff --git a/src/main/java/me/goodandevil/skyblock/listeners/Chat.java b/src/main/java/me/goodandevil/skyblock/listeners/Chat.java index 9e34a64e..cc6e708f 100644 --- a/src/main/java/me/goodandevil/skyblock/listeners/Chat.java +++ b/src/main/java/me/goodandevil/skyblock/listeners/Chat.java @@ -7,6 +7,7 @@ import org.bukkit.Bukkit; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.AsyncPlayerChatEvent; @@ -17,6 +18,7 @@ import me.goodandevil.skyblock.island.Island; import me.goodandevil.skyblock.island.IslandManager; import me.goodandevil.skyblock.island.Role; import me.goodandevil.skyblock.message.MessageManager; +import me.goodandevil.skyblock.placeholder.PlaceholderManager; import me.goodandevil.skyblock.playerdata.PlayerData; import me.goodandevil.skyblock.playerdata.PlayerDataManager; @@ -28,16 +30,34 @@ public class Chat implements Listener { this.skyblock = skyblock; } - @EventHandler + @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) public void onAsyncPlayerChat(AsyncPlayerChatEvent event) { Player player = event.getPlayer(); + PlaceholderManager placeholderManager = skyblock.getPlaceholderManager(); PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); MessageManager messageManager = skyblock.getMessageManager(); IslandManager islandManager = skyblock.getIslandManager(); if (playerDataManager.hasPlayerData(player)) { PlayerData playerData = playerDataManager.getPlayerData(player); + Island island = null; + + if (playerData.getOwner() != null) { + island = skyblock.getIslandManager().getIsland(playerData.getOwner()); + } + + String messageFormat = event.getFormat(); + + for (String placeholderList : placeholderManager.getPlaceholders()) { + String placeholder = "{" + placeholderList + "}"; + + if (messageFormat.contains(placeholder)) { + messageFormat = messageFormat.replace(placeholder, placeholderManager.getPlaceholder(player, placeholderList)); + } + } + + event.setFormat(messageFormat); if (playerData.isChat()) { event.setCancelled(true); @@ -45,7 +65,6 @@ public class Chat implements Listener { Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); FileConfiguration configLoad = config.getFileConfiguration(); - Island island = skyblock.getIslandManager().getIsland(playerData.getOwner()); String islandRole = ""; if (island.isRole(Role.Member, player.getUniqueId())) { diff --git a/src/main/java/me/goodandevil/skyblock/menus/Visit.java b/src/main/java/me/goodandevil/skyblock/menus/Visit.java index 066709d4..7977e148 100644 --- a/src/main/java/me/goodandevil/skyblock/menus/Visit.java +++ b/src/main/java/me/goodandevil/skyblock/menus/Visit.java @@ -2,11 +2,9 @@ package me.goodandevil.skyblock.menus; import java.io.File; import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; +import java.util.Comparator; import java.util.List; import java.util.Map; -import java.util.TreeMap; import java.util.UUID; import org.bukkit.Bukkit; @@ -122,175 +120,191 @@ public class Visit { event.setWillClose(false); event.setWillDestroy(false); } else if ((is.getType() == SkullUtil.createItemStack().getType()) && (is.hasItemMeta())) { - VisitManager visitManager = skyblock.getVisitManager(); - IslandManager islandManager = skyblock.getIslandManager(); - - String targetPlayerName = ChatColor.stripColor(is.getItemMeta().getDisplayName()); - UUID targetPlayerUUID; - - Player targetPlayer = Bukkit.getServer().getPlayer(targetPlayerName); - - if (targetPlayer == null) { - targetPlayerUUID = new OfflinePlayer(targetPlayerName).getUniqueId(); - } else { - targetPlayerUUID = targetPlayer.getUniqueId(); - } - - if (visitManager.hasIsland(targetPlayerUUID)) { - me.goodandevil.skyblock.visit.Visit visit = visitManager.getIsland(targetPlayerUUID); + if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Visit.Item.Previous.Displayname")))) { + playerData.setPage(playerData.getPage() - 1); + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); - if (visit.isOpen()) { - if (!islandManager.containsIsland(targetPlayerUUID)) { - islandManager.loadIsland(targetPlayerUUID); - } - - Island island = islandManager.getIsland(targetPlayerUUID); - - if ((!island.isRole(Role.Member, player.getUniqueId()) && !island.isRole(Role.Operator, player.getUniqueId()) && !island.isRole(Role.Owner, player.getUniqueId())) && fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Visitor.Vote")) { - if (event.getClick() == ClickType.RIGHT) { - if (playerData.getIsland() != null && playerData.getIsland().equals(island.getOwnerUUID())) { - List islandVotes = visit.getVoters(); - - if (islandVotes.contains(player.getUniqueId())) { - visit.removeVoter(player.getUniqueId()); + Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(skyblock, new Runnable() { + @Override + public void run() { + open(player, (Visit.Type) playerData.getType(), (Visit.Sort) playerData.getSort()); + } + }, 1L); + } else if (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Visit.Item.Next.Displayname")))) { + playerData.setPage(playerData.getPage() + 1); + soundManager.playSound(player, Sounds.ARROW_HIT.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(skyblock, new Runnable() { + @Override + public void run() { + open(player, (Visit.Type) playerData.getType(), (Visit.Sort) playerData.getSort()); + } + }, 1L); + } else { + String targetPlayerName = ChatColor.stripColor(is.getItemMeta().getDisplayName()); + UUID targetPlayerUUID; + + Player targetPlayer = Bukkit.getServer().getPlayer(targetPlayerName); + + if (targetPlayer == null) { + targetPlayerUUID = new OfflinePlayer(targetPlayerName).getUniqueId(); + } else { + targetPlayerUUID = targetPlayer.getUniqueId(); + } + + if (visitManager.hasIsland(targetPlayerUUID)) { + me.goodandevil.skyblock.visit.Visit visit = visitManager.getIsland(targetPlayerUUID); + + if (visit.isOpen()) { + if (!islandManager.containsIsland(targetPlayerUUID)) { + islandManager.loadIsland(targetPlayerUUID); + } + + Island island = islandManager.getIsland(targetPlayerUUID); + + if ((!island.isRole(Role.Member, player.getUniqueId()) && !island.isRole(Role.Operator, player.getUniqueId()) && !island.isRole(Role.Owner, player.getUniqueId())) && fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")).getFileConfiguration().getBoolean("Island.Visitor.Vote")) { + if (event.getClick() == ClickType.RIGHT) { + if (playerData.getIsland() != null && playerData.getIsland().equals(island.getOwnerUUID())) { + List islandVotes = visit.getVoters(); - messageManager.sendMessage(player, configLoad.getString("Island.Visit.Vote.Removed.Message").replace("%player", targetPlayerName)); - soundManager.playSound(player, Sounds.EXPLODE.bukkitSound(), 1.0F, 1.0F); - } else { - visit.addVoter(player.getUniqueId()); + if (islandVotes.contains(player.getUniqueId())) { + visit.removeVoter(player.getUniqueId()); + + messageManager.sendMessage(player, configLoad.getString("Island.Visit.Vote.Removed.Message").replace("%player", targetPlayerName)); + soundManager.playSound(player, Sounds.EXPLODE.bukkitSound(), 1.0F, 1.0F); + } else { + visit.addVoter(player.getUniqueId()); + + messageManager.sendMessage(player, configLoad.getString("Island.Visit.Vote.Added.Message").replace("%player", targetPlayerName)); + soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); + } - messageManager.sendMessage(player, configLoad.getString("Island.Visit.Vote.Added.Message").replace("%player", targetPlayerName)); - soundManager.playSound(player, Sounds.LEVEL_UP.bukkitSound(), 1.0F, 1.0F); - } - - soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(skyblock, new Runnable() { - @Override - public void run() { - open(player, (Visit.Type) playerData.getType(), (Visit.Sort) playerData.getSort()); - } - }, 1L); - } else { - messageManager.sendMessage(player, configLoad.getString("Island.Visit.Vote.Island.Message")); + soundManager.playSound(player, Sounds.WOOD_CLICK.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(skyblock, new Runnable() { + @Override + public void run() { + open(player, (Visit.Type) playerData.getType(), (Visit.Sort) playerData.getSort()); + } + }, 1L); + } else { + messageManager.sendMessage(player, configLoad.getString("Island.Visit.Vote.Island.Message")); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + event.setWillClose(false); + event.setWillDestroy(false); + } + + islandManager.unloadIsland(targetPlayerUUID); + + return; + } else if (event.getClick() != ClickType.LEFT) { + return; + } + } + + for (Location.World worldList : Location.World.values()) { + if (LocationUtil.isLocationAtLocationRadius(player.getLocation(), island.getLocation(worldList, Location.Environment.Island), island.getRadius())) { + messageManager.sendMessage(player, configLoad.getString("Island.Visit.Already.Message").replace("%player", targetPlayerName)); soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); event.setWillClose(false); event.setWillDestroy(false); + + return; } - - islandManager.unloadIsland(targetPlayerUUID); - - return; - } else if (event.getClick() != ClickType.LEFT) { - return; - } - } - - for (Location.World worldList : Location.World.values()) { - if (LocationUtil.isLocationAtLocationRadius(player.getLocation(), island.getLocation(worldList, Location.Environment.Island), island.getRadius())) { - messageManager.sendMessage(player, configLoad.getString("Island.Visit.Already.Message").replace("%player", targetPlayerName)); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - event.setWillClose(false); - event.setWillDestroy(false); - - return; } - } - - islandManager.visitIsland(player, island); - - messageManager.sendMessage(player, configLoad.getString("Island.Visit.Teleported.Message").replace("%player", targetPlayerName)); - soundManager.playSound(player, Sounds.ENDERMAN_TELEPORT.bukkitSound(), 1.0F, 1.0F); - } else { - messageManager.sendMessage(player, configLoad.getString("Island.Visit.Closed.Menu.Message").replace("%player", targetPlayerName)); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + islandManager.visitIsland(player, island); + + messageManager.sendMessage(player, configLoad.getString("Island.Visit.Teleported.Message").replace("%player", targetPlayerName)); + soundManager.playSound(player, Sounds.ENDERMAN_TELEPORT.bukkitSound(), 1.0F, 1.0F); + } else { + messageManager.sendMessage(player, configLoad.getString("Island.Visit.Closed.Menu.Message").replace("%player", targetPlayerName)); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(skyblock, new Runnable() { - @Override - public void run() { - open(player, (Visit.Type) playerData.getType(), (Visit.Sort) playerData.getSort()); - } - }, 1L); - } - - return; + Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(skyblock, new Runnable() { + @Override + public void run() { + open(player, (Visit.Type) playerData.getType(), (Visit.Sort) playerData.getSort()); + } + }, 1L); + } + + return; + } + + messageManager.sendMessage(player, configLoad.getString("Island.Visit.Exist.Message").replace("%player", targetPlayerName)); + soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); + + Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(skyblock, new Runnable() { + @Override + public void run() { + open(player, (Visit.Type) playerData.getType(), (Visit.Sort) playerData.getSort()); + } + }, 1L); } - - messageManager.sendMessage(player, configLoad.getString("Island.Visit.Exist.Message").replace("%player", targetPlayerName)); - soundManager.playSound(player, Sounds.ANVIL_LAND.bukkitSound(), 1.0F, 1.0F); - - Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(skyblock, new Runnable() { - @Override - public void run() { - open(player, (Visit.Type) playerData.getType(), (Visit.Sort) playerData.getSort()); - } - }, 1L); } } } }); - Map displayedIslands = new HashMap<>(); - Map visitIslands = visitManager.getOpenIslands(); + Map openIslands = visitManager.getOpenIslands(); + List visitIslands = new ArrayList<>(); - if (type == Visit.Type.Solo) { - for (UUID visitIslandList : visitIslands.keySet()) { - if (visitIslands.get(visitIslandList).getMembers() != 1) { - visitIslands.remove(visitIslandList); - } - } - } else if (type == Visit.Type.Team) { - for (UUID visitIslandList : visitIslands.keySet()) { - if (visitIslands.get(visitIslandList).getMembers() == 1) { - visitIslands.remove(visitIslandList); + for (int i = 0; i < openIslands.size(); i++) { + UUID islandOwnerUUID = (UUID) openIslands.keySet().toArray()[i]; + me.goodandevil.skyblock.visit.Visit visit = openIslands.get(islandOwnerUUID); + + if (type == Visit.Type.Solo) { + if (visit.getMembers() != 1) { + continue; + } + } else if (type == Visit.Type.Team) { + if (visit.getMembers() == 1) { + continue; } } + + visitIslands.add(visit); } - if (sort == Visit.Sort.Default) { - displayedIslands.putAll(visitIslands); - } else if (sort == Visit.Sort.Players || sort == Visit.Sort.Level || sort == Visit.Sort.Members || sort == Visit.Sort.Visits || sort == Visit.Sort.Votes) { - Map> sortedIslands = new TreeMap<>(Collections.reverseOrder()); - - for (UUID visitIslandList : visitIslands.keySet()) { - int islandInteger = 0; - - if (sort == Visit.Sort.Players) { - if (islandManager.containsIsland(visitIslandList)) { - islandInteger = islandManager.getPlayersAtIsland(islandManager.getIsland(visitIslandList)).size(); + openIslands.clear(); + + if (sort == Visit.Sort.Players || sort == Visit.Sort.Level || sort == Visit.Sort.Members || sort == Visit.Sort.Visits || sort == Visit.Sort.Votes) { + visitIslands.sort(new Comparator() { + @Override + public int compare(me.goodandevil.skyblock.visit.Visit visit1, me.goodandevil.skyblock.visit.Visit visit2) { + if (sort == Visit.Sort.Players) { + int playersAtIsland1 = 0; + + if (islandManager.containsIsland(visit1.getOwnerUUID())) { + playersAtIsland1 = islandManager.getPlayersAtIsland(islandManager.getIsland(visit1.getOwnerUUID())).size(); + } + + int playersAtIsland2 = 0; + + if (islandManager.containsIsland(visit2.getOwnerUUID())) { + playersAtIsland2 = islandManager.getPlayersAtIsland(islandManager.getIsland(visit2.getOwnerUUID())).size(); + } + + return Integer.valueOf(playersAtIsland2).compareTo(playersAtIsland1); + } else if (sort == Visit.Sort.Level) { + return Integer.valueOf(visit2.getLevel().getLevel()).compareTo(visit1.getLevel().getLevel()); + } else if (sort == Visit.Sort.Members) { + return Integer.valueOf(visit2.getMembers()).compareTo(visit1.getMembers()); + } else if (sort == Visit.Sort.Visits) { + return Integer.valueOf(visit2.getVisitors().size()).compareTo(visit1.getVisitors().size()); + } else if (sort == Visit.Sort.Votes) { + return Integer.valueOf(visit2.getVoters().size()).compareTo(visit1.getVoters().size()); } - } else if (sort == Visit.Sort.Level) { - islandInteger = visitIslands.get(visitIslandList).getLevel().getLevel(); - } else if (sort == Visit.Sort.Members) { - islandInteger = visitIslands.get(visitIslandList).getMembers(); - } else if (sort == Visit.Sort.Visits) { - islandInteger = visitIslands.get(visitIslandList).getVisitors().size(); - } else if (sort == Visit.Sort.Votes) { - islandInteger = visitIslands.get(visitIslandList).getVoters().size(); + + return 0; } - - List identicalIslands = new ArrayList<>(); - - if (sortedIslands.containsKey(islandInteger)) { - identicalIslands.addAll(sortedIslands.get(islandInteger)); - } - - identicalIslands.add(visitIslandList); - sortedIslands.put(islandInteger, identicalIslands); - } - - for (int sortedIslandList : sortedIslands.keySet()) { - List identicalIslands = sortedIslands.get(sortedIslandList); - - for (UUID identicalIslandList : identicalIslands) { - displayedIslands.put(identicalIslandList, visitIslands.get(identicalIslandList)); - } - } + }); } - int playerMenuPage = playerDataManager.getPlayerData(player).getPage(), nextEndIndex = displayedIslands.size() - playerMenuPage * 36, totalIslands = visitManager.getIslands().size(); + int playerMenuPage = playerDataManager.getPlayerData(player).getPage(), nextEndIndex = visitIslands.size() - playerMenuPage * 36, totalIslands = visitManager.getIslands().size(); nInv.addItem(nInv.createItem(Materials.OAK_FENCE_GATE.parseItem(), configLoad.getString("Menu.Visit.Item.Exit.Displayname"), null, null, null, null), 0, 8); nInv.addItem(nInv.createItem(new ItemStack(Material.HOPPER), configLoad.getString("Menu.Visit.Item.Type.Displayname"), configLoad.getStringList("Menu.Visit.Item.Type.Lore"), nInv.createItemLoreVariable(new String[] { "%type#" + StringUtil.capatilizeUppercaseLetters(type.name()) }), null, null), 3); @@ -306,30 +320,28 @@ public class Visit { nInv.addItem(nInv.createItem(SkullUtil.create("wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=", "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ=="), configLoad.getString("Menu.Visit.Item.Next.Displayname"), null, null, null, null), 7); } - if (displayedIslands.size() == 0) { + if (visitIslands.size() == 0) { nInv.addItem(nInv.createItem(new ItemStack(Material.BARRIER), configLoad.getString("Menu.Visit.Item.Nothing.Displayname"), null, null, null, null), 31); } else { Config config = fileManager.getConfig(new File(skyblock.getDataFolder(), "config.yml")); - int index = playerMenuPage * 36 - 36, endIndex = index >= displayedIslands.size() ? displayedIslands.size() - 1 : index + 36, inventorySlot = 17, playerCapacity = config.getFileConfiguration().getInt("Island.Visitor.Capacity"); + int index = playerMenuPage * 36 - 36, endIndex = index >= visitIslands.size() ? visitIslands.size() - 1 : index + 36, inventorySlot = 17, playerCapacity = config.getFileConfiguration().getInt("Island.Visitor.Capacity"); boolean voteEnabled = config.getFileConfiguration().getBoolean("Island.Visitor.Vote"); boolean signatureEnabled = config.getFileConfiguration().getBoolean("Island.Visitor.Signature.Enable"); for (; index < endIndex; index++) { - if (displayedIslands.size() > index) { + if (visitIslands.size() > index) { inventorySlot++; - UUID targetPlayerUUID = (UUID) displayedIslands.keySet().toArray()[index]; - me.goodandevil.skyblock.visit.Visit visit = displayedIslands.get(targetPlayerUUID); - - Player targetPlayer = Bukkit.getServer().getPlayer(targetPlayerUUID); + me.goodandevil.skyblock.visit.Visit visit = visitIslands.get(index); + Player targetPlayer = Bukkit.getServer().getPlayer(visit.getOwnerUUID()); String targetPlayerName; String[] targetPlayerTexture; if (targetPlayer == null) { - OfflinePlayer offlinePlayer = new OfflinePlayer(targetPlayerUUID); + OfflinePlayer offlinePlayer = new OfflinePlayer(visit.getOwnerUUID()); targetPlayerName = offlinePlayer.getName(); targetPlayerTexture = offlinePlayer.getTexture(); } else { @@ -339,8 +351,8 @@ public class Visit { Island island = null; - if (islandManager.containsIsland(targetPlayerUUID)) { - island = islandManager.getIsland(targetPlayerUUID); + if (islandManager.containsIsland(visit.getOwnerUUID())) { + island = islandManager.getIsland(visit.getOwnerUUID()); } List itemLore = new ArrayList<>(); diff --git a/src/main/java/me/goodandevil/skyblock/menus/admin/Upgrade.java b/src/main/java/me/goodandevil/skyblock/menus/admin/Upgrade.java index ebd5b307..7b411e3d 100644 --- a/src/main/java/me/goodandevil/skyblock/menus/admin/Upgrade.java +++ b/src/main/java/me/goodandevil/skyblock/menus/admin/Upgrade.java @@ -96,7 +96,6 @@ public class Upgrade { upgrade = upgradeManager.getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Drops).get(0); viewer.setUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Drops); } else if ((is.getType() == Material.BEACON) && (is.hasItemMeta()) && (is.getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', configLoad.getString("Menu.Admin.Upgrade.Upgrades.Item.Size.Displayname"))))) { - upgrade = upgradeManager.getUpgrades(me.goodandevil.skyblock.upgrade.Upgrade.Type.Size).get(0); viewer.setType(Upgrade.Viewer.Type.Size); viewer.setUpgrade(me.goodandevil.skyblock.upgrade.Upgrade.Type.Size); diff --git a/src/main/java/me/goodandevil/skyblock/placeholder/EZPlaceholder.java b/src/main/java/me/goodandevil/skyblock/placeholder/EZPlaceholder.java index ea11931d..4176a56d 100644 --- a/src/main/java/me/goodandevil/skyblock/placeholder/EZPlaceholder.java +++ b/src/main/java/me/goodandevil/skyblock/placeholder/EZPlaceholder.java @@ -2,7 +2,6 @@ package me.goodandevil.skyblock.placeholder; import java.io.File; import java.util.List; -import java.util.UUID; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -13,10 +12,7 @@ import me.clip.placeholderapi.expansion.PlaceholderExpansion; import me.goodandevil.skyblock.SkyBlock; import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; import me.goodandevil.skyblock.island.Level; -import me.goodandevil.skyblock.island.Role; import me.goodandevil.skyblock.leaderboard.Leaderboard; import me.goodandevil.skyblock.leaderboard.LeaderboardManager; import me.goodandevil.skyblock.utils.NumberUtil; @@ -48,8 +44,8 @@ public class EZPlaceholder extends PlaceholderExpansion { } public String onPlaceholderRequest(Player player, String identifier) { + PlaceholderManager placeholderManager = skyblock.getPlaceholderManager(); LeaderboardManager leaderboardManager = skyblock.getLeaderboardManager(); - IslandManager islandManager = skyblock.getIslandManager(); Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); FileConfiguration configLoad = config.getFileConfiguration(); @@ -106,88 +102,7 @@ public class EZPlaceholder extends PlaceholderExpansion { return ""; } - if (islandManager.hasIsland(player)) { - Island island = islandManager.getIsland(skyblock.getPlayerDataManager().getPlayerData(player).getOwner()); - - if (identifier.equalsIgnoreCase("island_size")) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_size.Non-empty.Message").replace("%placeholder", "" + island.getSize())); - } else if (identifier.equalsIgnoreCase("island_radius")) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_radius.Non-empty.Message").replace("%placeholder", "" + island.getRadius())); - } else if (identifier.equalsIgnoreCase("island_level")) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_level.Non-empty.Message").replace("%placeholder", "" + island.getLevel().getLevel())); - } else if (identifier.equalsIgnoreCase("island_points")) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_points.Non-empty.Message").replace("%placeholder", "" + island.getLevel().getPoints())); - } else if (identifier.equalsIgnoreCase("island_role")) { - for (Role roleList : Role.values()) { - if (island.isRole(roleList, player.getUniqueId())) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_role.Non-empty.Message").replace("%placeholder", roleList.name())); - } - } - } else if (identifier.equalsIgnoreCase("island_owner")) { - UUID islandOwnerUUID = island.getOwnerUUID(); - Player targetPlayer = Bukkit.getServer().getPlayer(islandOwnerUUID); - - if (targetPlayer == null) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_owner.Non-empty.Other.Message").replace("%placeholder", Bukkit.getServer().getOfflinePlayer(islandOwnerUUID).getName())); - } else { - if (targetPlayer.getName().equals(player.getName())) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_owner.Non-empty.Yourself.Message").replace("%placeholder", targetPlayer.getName())); - } else { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_owner.Non-empty.Other.Message").replace("%placeholder", targetPlayer.getName())); - } - } - } else if (identifier.equalsIgnoreCase("island_biome")) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_biome.Non-empty.Message").replace("%placeholder", island.getBiomeName())); - } else if (identifier.equalsIgnoreCase("island_time")) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_time.Non-empty.Message").replace("%placeholder", "" + island.getTime())); - } else if (identifier.equalsIgnoreCase("island_weather")) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_weather.Non-empty.Message").replace("%placeholder", "" + island.getWeatherName())); - } else if (identifier.equalsIgnoreCase("island_bans")) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_bans.Non-empty.Message").replace("%placeholder", "" + island.getBan().getBans().size())); - } else if (identifier.equalsIgnoreCase("island_members_total")) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_members_total.Non-empty.Message").replace("%placeholder", "" + (island.getRole(Role.Member).size() + island.getRole(Role.Operator).size() + 1))); - } else if (identifier.equalsIgnoreCase("island_members")) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_members.Non-empty.Message").replace("%placeholder", "" + island.getRole(Role.Member).size())); - } else if (identifier.equalsIgnoreCase("island_operators")) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_operators.Non-empty.Message").replace("%placeholder", "" + island.getRole(Role.Operator).size())); - } else if (identifier.equalsIgnoreCase("island_visitors")) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_visitors.Non-empty.Message").replace("%placeholder", "" + island.getVisitors().size())); - } - - return null; - } - - if (identifier.equalsIgnoreCase("island_size")) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_size.Empty.Message")); - } else if (identifier.equalsIgnoreCase("island_radius")) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_radius.Empty.Message")); - } else if (identifier.equalsIgnoreCase("island_level")) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_level.Empty.Message")); - } else if (identifier.equalsIgnoreCase("island_points")) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_points.Empty.Message")); - } else if (identifier.equalsIgnoreCase("island_role")) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_role.Empty.Message")); - } else if (identifier.equalsIgnoreCase("island_owner")) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_owner.Empty.Message")); - } else if (identifier.equalsIgnoreCase("island_biome")) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_biome.Empty.Message")); - } else if (identifier.equalsIgnoreCase("island_time")) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_time.Empty.Message")); - } else if (identifier.equalsIgnoreCase("island_weather")) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_weather.Empty.Message")); - } else if (identifier.equalsIgnoreCase("island_bans")) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_bans.Empty.Message")); - } else if (identifier.equalsIgnoreCase("island_members_total")) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_members_total.Empty.Message")); - } else if (identifier.equalsIgnoreCase("island_members")) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_members.Empty.Message")); - } else if (identifier.equalsIgnoreCase("island_operators")) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_operators.Empty.Message")); - } else if (identifier.equalsIgnoreCase("island_visitors")) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_visitors.Empty.Message")); - } - - return null; + return placeholderManager.getPlaceholder(player, identifier); } } diff --git a/src/main/java/me/goodandevil/skyblock/placeholder/MVdWPlaceholder.java b/src/main/java/me/goodandevil/skyblock/placeholder/MVdWPlaceholder.java index 15e71f5c..0f8d9b5e 100644 --- a/src/main/java/me/goodandevil/skyblock/placeholder/MVdWPlaceholder.java +++ b/src/main/java/me/goodandevil/skyblock/placeholder/MVdWPlaceholder.java @@ -2,7 +2,6 @@ package me.goodandevil.skyblock.placeholder; import java.io.File; import java.util.List; -import java.util.UUID; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -15,10 +14,7 @@ import be.maximvdw.placeholderapi.PlaceholderReplacer; import me.goodandevil.skyblock.SkyBlock; import me.goodandevil.skyblock.config.FileManager.Config; -import me.goodandevil.skyblock.island.Island; -import me.goodandevil.skyblock.island.IslandManager; import me.goodandevil.skyblock.island.Level; -import me.goodandevil.skyblock.island.Role; import me.goodandevil.skyblock.leaderboard.Leaderboard; import me.goodandevil.skyblock.leaderboard.LeaderboardManager; import me.goodandevil.skyblock.utils.NumberUtil; @@ -34,8 +30,8 @@ public class MVdWPlaceholder { } public void register() { + PlaceholderManager placeholderManager = skyblock.getPlaceholderManager(); LeaderboardManager leaderboardManager = skyblock.getLeaderboardManager(); - IslandManager islandManager = skyblock.getIslandManager(); Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); FileConfiguration configLoad = config.getFileConfiguration(); @@ -112,11 +108,7 @@ public class MVdWPlaceholder { return null; } - if (islandManager.hasIsland(player)) { - return "" + islandManager.getIsland(skyblock.getPlayerDataManager().getPlayerData(player).getOwner()).getSize(); - } - - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_size.Empty.Message")); + return placeholderManager.getPlaceholder(player, event.getPlaceholder()); } }); @@ -129,11 +121,7 @@ public class MVdWPlaceholder { return null; } - if (islandManager.hasIsland(player)) { - return "" + islandManager.getIsland(skyblock.getPlayerDataManager().getPlayerData(player).getOwner()).getRadius(); - } - - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_radius.Empty.Message")); + return placeholderManager.getPlaceholder(player, event.getPlaceholder()); } }); @@ -146,11 +134,7 @@ public class MVdWPlaceholder { return null; } - if (islandManager.hasIsland(player)) { - return "" + islandManager.getIsland(skyblock.getPlayerDataManager().getPlayerData(player).getOwner()).getLevel().getLevel(); - } - - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_level.Empty.Message")); + return placeholderManager.getPlaceholder(player, event.getPlaceholder()); } }); @@ -163,11 +147,7 @@ public class MVdWPlaceholder { return null; } - if (islandManager.hasIsland(player)) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_points.Non-empty.Message").replace("%placeholder", "" + islandManager.getIsland(skyblock.getPlayerDataManager().getPlayerData(player).getOwner()).getLevel().getPoints())); - } - - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_points.Empty.Message")); + return placeholderManager.getPlaceholder(player, event.getPlaceholder()); } }); @@ -180,17 +160,7 @@ public class MVdWPlaceholder { return null; } - if (islandManager.hasIsland(player)) { - Island island = islandManager.getIsland(skyblock.getPlayerDataManager().getPlayerData(player).getOwner()); - - for (Role roleList : Role.values()) { - if (island.isRole(roleList, player.getUniqueId())) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_role.Non-empty.Message").replace("%placeholder", roleList.name())); - } - } - } - - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_role.Empty.Message")); + return placeholderManager.getPlaceholder(player, event.getPlaceholder()); } }); @@ -203,22 +173,7 @@ public class MVdWPlaceholder { return null; } - if (islandManager.hasIsland(player)) { - UUID islandOwnerUUID = islandManager.getIsland(skyblock.getPlayerDataManager().getPlayerData(player).getOwner()).getOwnerUUID(); - Player targetPlayer = Bukkit.getServer().getPlayer(islandOwnerUUID); - - if (targetPlayer == null) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_owner.Non-empty.Other.Message").replace("%placeholder", Bukkit.getServer().getOfflinePlayer(islandOwnerUUID).getName())); - } else { - if (targetPlayer.getName().equals(player.getName())) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_owner.Non-empty.Yourself.Message").replace("%placeholder", targetPlayer.getName())); - } else { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_owner.Non-empty.Other.Message").replace("%placeholder", targetPlayer.getName())); - } - } - } - - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_owner.Empty.Message")); + return placeholderManager.getPlaceholder(player, event.getPlaceholder()); } }); @@ -231,11 +186,7 @@ public class MVdWPlaceholder { return null; } - if (islandManager.hasIsland(player)) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_biome.Non-empty.Message").replace("%placeholder", islandManager.getIsland(skyblock.getPlayerDataManager().getPlayerData(player).getOwner()).getBiomeName())); - } - - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_biome.Empty.Message")); + return placeholderManager.getPlaceholder(player, event.getPlaceholder()); } }); @@ -248,11 +199,7 @@ public class MVdWPlaceholder { return null; } - if (islandManager.hasIsland(player)) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_time.Non-empty.Message").replace("%placeholder", "" + islandManager.getIsland(skyblock.getPlayerDataManager().getPlayerData(player).getOwner()).getTime())); - } - - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_time.Empty.Message")); + return placeholderManager.getPlaceholder(player, event.getPlaceholder()); } }); @@ -265,11 +212,7 @@ public class MVdWPlaceholder { return null; } - if (islandManager.hasIsland(player)) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_weather.Non-empty.Message").replace("%placeholder", islandManager.getIsland(skyblock.getPlayerDataManager().getPlayerData(player).getOwner()).getWeatherName())); - } - - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_weather.Empty.Message")); + return placeholderManager.getPlaceholder(player, event.getPlaceholder()); } }); @@ -282,11 +225,7 @@ public class MVdWPlaceholder { return null; } - if (islandManager.hasIsland(player)) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_bans.Non-empty.Message").replace("%placeholder", "" + islandManager.getIsland(skyblock.getPlayerDataManager().getPlayerData(player).getOwner()).getBan().getBans().size())); - } - - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_bans.Empty.Message")); + return placeholderManager.getPlaceholder(player, event.getPlaceholder()); } }); @@ -299,12 +238,7 @@ public class MVdWPlaceholder { return null; } - if (islandManager.hasIsland(player)) { - Island island = islandManager.getIsland(skyblock.getPlayerDataManager().getPlayerData(player).getOwner()); - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_members_total.Non-empty.Message").replace("%placeholder", "" + (island.getRole(Role.Member).size() + island.getRole(Role.Operator).size() + 1))); - } - - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_members_total.Empty.Message")); + return placeholderManager.getPlaceholder(player, event.getPlaceholder()); } }); @@ -317,11 +251,7 @@ public class MVdWPlaceholder { return null; } - if (islandManager.hasIsland(player)) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_members.Non-empty.Message").replace("%placeholder", "" + islandManager.getIsland(skyblock.getPlayerDataManager().getPlayerData(player).getOwner()).getRole(Role.Member).size())); - } - - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_members.Empty.Message")); + return placeholderManager.getPlaceholder(player, event.getPlaceholder()); } }); @@ -334,11 +264,7 @@ public class MVdWPlaceholder { return null; } - if (islandManager.hasIsland(player)) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_operators.Non-empty.Message").replace("%placeholder", "" + islandManager.getIsland(skyblock.getPlayerDataManager().getPlayerData(player).getOwner()).getRole(Role.Operator).size())); - } - - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_operators.Empty.Message")); + return placeholderManager.getPlaceholder(player, event.getPlaceholder()); } }); @@ -351,11 +277,7 @@ public class MVdWPlaceholder { return null; } - if (islandManager.hasIsland(player)) { - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_visitors.Non-empty.Message").replace("%placeholder", "" + islandManager.getIsland(skyblock.getPlayerDataManager().getPlayerData(player).getOwner()).getVisitors().size())); - } - - return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_visitors.Empty.Message")); + return placeholderManager.getPlaceholder(player, event.getPlaceholder()); } }); } diff --git a/src/main/java/me/goodandevil/skyblock/placeholder/PlaceholderManager.java b/src/main/java/me/goodandevil/skyblock/placeholder/PlaceholderManager.java index f070b26c..ca0742f1 100644 --- a/src/main/java/me/goodandevil/skyblock/placeholder/PlaceholderManager.java +++ b/src/main/java/me/goodandevil/skyblock/placeholder/PlaceholderManager.java @@ -1,8 +1,23 @@ package me.goodandevil.skyblock.placeholder; +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; import org.bukkit.plugin.PluginManager; import me.goodandevil.skyblock.SkyBlock; +import me.goodandevil.skyblock.config.FileManager.Config; +import me.goodandevil.skyblock.island.Island; +import me.goodandevil.skyblock.island.IslandManager; +import me.goodandevil.skyblock.island.Role; +import me.goodandevil.skyblock.playerdata.PlayerData; +import me.goodandevil.skyblock.playerdata.PlayerDataManager; public class PlaceholderManager { @@ -42,4 +57,145 @@ public class PlaceholderManager { public boolean isMVdWPlaceholderAPIEnabled() { return MVdWPlaceholderAPI; } + + public String getPlaceholder(Player player, String placeholder) { + PlayerDataManager playerDataManager = skyblock.getPlayerDataManager(); + IslandManager islandManager = skyblock.getIslandManager(); + + Island island = null; + + if (playerDataManager.hasPlayerData(player)) { + PlayerData playerData = playerDataManager.getPlayerData(player); + + if (playerData.getOwner() != null && islandManager.containsIsland(playerData.getOwner())) { + island = islandManager.getIsland(playerDataManager.getPlayerData(player).getOwner()); + } + } + + Config config = skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")); + FileConfiguration configLoad = config.getFileConfiguration(); + + if (placeholder.equalsIgnoreCase("skyblock_island_size")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_size.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_size.Non-empty.Message").replace("%placeholder", "" + island.getSize())); + } + } else if (placeholder.equalsIgnoreCase("skyblock_island_radius")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_radius.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_radius.Non-empty.Message").replace("%placeholder", "" + island.getRadius())); + } + } else if (placeholder.equalsIgnoreCase("skyblock_island_level")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_level.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_level.Non-empty.Message").replace("%placeholder", "" + island.getLevel().getLevel())); + } + } else if (placeholder.equalsIgnoreCase("skyblock_island_points")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_points.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_points.Non-empty.Message").replace("%placeholder", "" + island.getLevel().getPoints())); + } + } else if (placeholder.equalsIgnoreCase("skyblock_island_role")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_role.Empty.Message")); + } else { + for (Role roleList : Role.values()) { + if (island.isRole(roleList, player.getUniqueId())) { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_role.Non-empty.Message").replace("%placeholder", roleList.name())); + } + } + } + } else if (placeholder.equalsIgnoreCase("skyblock_island_owner")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_owner.Empty.Message")); + } else { + UUID islandOwnerUUID = island.getOwnerUUID(); + Player targetPlayer = Bukkit.getServer().getPlayer(islandOwnerUUID); + + if (targetPlayer == null) { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_owner.Non-empty.Other.Message").replace("%placeholder", Bukkit.getServer().getOfflinePlayer(islandOwnerUUID).getName())); + } else { + if (targetPlayer.getName().equals(player.getName())) { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_owner.Non-empty.Yourself.Message").replace("%placeholder", targetPlayer.getName())); + } else { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_owner.Non-empty.Other.Message").replace("%placeholder", targetPlayer.getName())); + } + } + } + } else if (placeholder.equalsIgnoreCase("skyblock_island_biome")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_biome.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_biome.Non-empty.Message").replace("%placeholder", island.getBiomeName())); + } + } else if (placeholder.equalsIgnoreCase("skyblock_island_time")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_time.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_time.Non-empty.Message").replace("%placeholder", "" + island.getTime())); + } + } else if (placeholder.equalsIgnoreCase("skyblock_island_weather")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_weather.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_weather.Non-empty.Message").replace("%placeholder", "" + island.getWeatherName())); + } + } else if (placeholder.equalsIgnoreCase("skyblock_island_bans")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_bans.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_bans.Non-empty.Message").replace("%placeholder", "" + island.getBan().getBans().size())); + } + } else if (placeholder.equalsIgnoreCase("skyblock_island_members_total")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_members_total.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_members_total.Non-empty.Message").replace("%placeholder", "" + (island.getRole(Role.Member).size() + island.getRole(Role.Operator).size() + 1))); + } + } else if (placeholder.equalsIgnoreCase("skyblock_island_members")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_members.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_members.Non-empty.Message").replace("%placeholder", "" + island.getRole(Role.Member).size())); + } + } else if (placeholder.equalsIgnoreCase("skyblock_island_operators")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_operators.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_operators.Non-empty.Message").replace("%placeholder", "" + island.getRole(Role.Operator).size())); + } + } else if (placeholder.equalsIgnoreCase("skyblock_island_visitors")) { + if (island == null) { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_visitors.Empty.Message")); + } else { + return ChatColor.translateAlternateColorCodes('&', configLoad.getString("Placeholder.skyblock_island_visitors.Non-empty.Message").replace("%placeholder", "" + island.getVisitors().size())); + } + } + + return ""; + } + + public List getPlaceholders() { + List placeholders = new ArrayList<>(); + placeholders.add("skyblock_island_size"); + placeholders.add("skyblock_island_radius"); + placeholders.add("skyblock_island_level"); + placeholders.add("skyblock_island_points"); + placeholders.add("skyblock_island_role"); + placeholders.add("skyblock_island_owner"); + placeholders.add("skyblock_island_biome"); + placeholders.add("skyblock_island_time"); + placeholders.add("skyblock_island_weather"); + placeholders.add("skyblock_island_bans"); + placeholders.add("skyblock_island_members_total"); + placeholders.add("skyblock_island_members"); + placeholders.add("skyblock_island_operators"); + placeholders.add("skyblock_island_visitors"); + + return placeholders; + } } diff --git a/src/main/java/me/goodandevil/skyblock/upgrade/UpgradeManager.java b/src/main/java/me/goodandevil/skyblock/upgrade/UpgradeManager.java index 3ceaebf6..10bd3004 100644 --- a/src/main/java/me/goodandevil/skyblock/upgrade/UpgradeManager.java +++ b/src/main/java/me/goodandevil/skyblock/upgrade/UpgradeManager.java @@ -127,10 +127,12 @@ public class UpgradeManager { } public boolean hasUpgrade(Upgrade.Type type, int value) { - for (Upgrade upgradeList : upgradeStorage.get(type)) { - if (upgradeList.getValue() == value) { - return true; - } + if (upgradeStorage.containsKey(type)) { + for (Upgrade upgradeList : upgradeStorage.get(type)) { + if (upgradeList.getValue() == value) { + return true; + } + } } return false; diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 665f21e6..91139455 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: SkyBlock main: me.goodandevil.skyblock.SkyBlock -version: 35 +version: 36 api-version: 1.13 description: A unique SkyBlock plugin author: GoodAndEvil