diff --git a/src/main/java/net/momirealms/customnameplates/hook/HookManager.java b/src/main/java/net/momirealms/customnameplates/hook/HookManager.java index 7fdd653..6dd1456 100644 --- a/src/main/java/net/momirealms/customnameplates/hook/HookManager.java +++ b/src/main/java/net/momirealms/customnameplates/hook/HookManager.java @@ -29,6 +29,7 @@ public class HookManager { if(CustomNameplates.instance.getServer().getPluginManager().getPlugin("PlaceholderAPI") != null){ AdventureManager.consoleMessage("[CustomNameplates] PlaceholderAPI Hooked!"); this.placeholderAPI = true; + new Placeholders().register(); } } diff --git a/src/main/java/net/momirealms/customnameplates/hook/Placeholders.java b/src/main/java/net/momirealms/customnameplates/hook/Placeholders.java new file mode 100644 index 0000000..305ca9f --- /dev/null +++ b/src/main/java/net/momirealms/customnameplates/hook/Placeholders.java @@ -0,0 +1,39 @@ +package net.momirealms.customnameplates.hook; + +import me.clip.placeholderapi.expansion.PlaceholderExpansion; +import net.momirealms.customnameplates.scoreboard.ScoreBoardManager; +import org.bukkit.OfflinePlayer; +import org.jetbrains.annotations.NotNull; + +public class Placeholders extends PlaceholderExpansion { + + @Override + public @NotNull String getIdentifier() { + return "nameplates"; + } + + @Override + public @NotNull String getAuthor() { + return "XiaoMoMi"; + } + + @Override + public @NotNull String getVersion() { + return "1.0"; + } + + @Override + public String onRequest(OfflinePlayer player, String params) { + if (params.equals("prefix")){ + if (ScoreBoardManager.teams.get(player.getName()) != null){ + return ScoreBoardManager.teams.get(player.getName()).getPrefixText(); + } + } + if (params.equals("suffix")){ + if (ScoreBoardManager.teams.get(player.getName()) != null){ + return ScoreBoardManager.teams.get(player.getName()).getSuffixText(); + } + } + return null; + } +} diff --git a/src/main/java/net/momirealms/customnameplates/listener/PlayerListener.java b/src/main/java/net/momirealms/customnameplates/listener/PlayerListener.java index 5fed176..f69888b 100644 --- a/src/main/java/net/momirealms/customnameplates/listener/PlayerListener.java +++ b/src/main/java/net/momirealms/customnameplates/listener/PlayerListener.java @@ -6,7 +6,6 @@ import net.momirealms.customnameplates.data.PlayerData; import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; -import org.bukkit.event.player.AsyncPlayerPreLoginEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerResourcePackStatusEvent; diff --git a/src/main/java/net/momirealms/customnameplates/scoreboard/NameplatesTeam.java b/src/main/java/net/momirealms/customnameplates/scoreboard/NameplatesTeam.java index 4b1170f..6ea5b91 100644 --- a/src/main/java/net/momirealms/customnameplates/scoreboard/NameplatesTeam.java +++ b/src/main/java/net/momirealms/customnameplates/scoreboard/NameplatesTeam.java @@ -25,6 +25,9 @@ public class NameplatesTeam { private final Team team; private Component prefix; private Component suffix; + private String prefixText; + private String suffixText; + private ChatColor color; public void hideNameplate() { @@ -43,6 +46,14 @@ public class NameplatesTeam { return this.color; } + public String getPrefixText() { + return prefixText; + } + + public String getSuffixText() { + return suffixText; + } + public NameplatesTeam(CustomNameplates plugin, Player player) { this.color = ChatColor.WHITE; this.plugin = plugin; @@ -66,9 +77,13 @@ public class NameplatesTeam { if (plugin.getHookManager().hasPlaceholderAPI()) { this.prefix = Component.text(ParsePapi.parsePlaceholders(this.player, ConfigManager.MainConfig.player_prefix)); this.suffix = Component.text(ParsePapi.parsePlaceholders(this.player, ConfigManager.MainConfig.player_suffix)); + this.prefixText = ParsePapi.parsePlaceholders(this.player, ConfigManager.MainConfig.player_prefix); + this.suffixText = ParsePapi.parsePlaceholders(this.player, ConfigManager.MainConfig.player_suffix); }else { this.prefix = Component.text(ConfigManager.MainConfig.player_prefix); this.suffix = Component.text(ConfigManager.MainConfig.player_suffix); + this.prefixText = ConfigManager.MainConfig.player_prefix; + this.suffixText = ConfigManager.MainConfig.player_suffix; } this.color = ChatColor.WHITE; this.team.setPrefix(""); @@ -116,6 +131,8 @@ public class NameplatesTeam { //最终suffix: 偏移 + 后缀 this.prefix = Component.text(nameplateUtil.makeCustomNameplate(playerPrefix, name, playerSuffix)).color(TextColor.color(255, 255, 255)).font(ConfigManager.MainConfig.key).append(Component.text(playerPrefix).font(Key.key("default"))); this.suffix = Component.text(playerSuffix).append(Component.text(nameplateUtil.getSuffixLength(playerPrefix + name + playerSuffix)).font(ConfigManager.MainConfig.key)); + this.prefixText = nameplateUtil.makeCustomNameplate(playerPrefix, name, playerSuffix) + playerPrefix; + this.suffixText = playerSuffix + nameplateUtil.getSuffixLength(playerPrefix + name + playerSuffix); this.color = nameplateUtil.getColor(); this.team.setPrefix(""); } diff --git a/src/main/java/net/momirealms/customnameplates/scoreboard/ScoreBoardManager.java b/src/main/java/net/momirealms/customnameplates/scoreboard/ScoreBoardManager.java index 93063f7..d22ebb2 100644 --- a/src/main/java/net/momirealms/customnameplates/scoreboard/ScoreBoardManager.java +++ b/src/main/java/net/momirealms/customnameplates/scoreboard/ScoreBoardManager.java @@ -10,30 +10,29 @@ import java.util.Map; public class ScoreBoardManager { private final CustomNameplates plugin; - private final Map teams; + public static Map teams = new HashMap<>(); public ScoreBoardManager(CustomNameplates plugin) { - this.teams = new HashMap<>(); this.plugin = plugin; } public NameplatesTeam getOrCreateTeam(Player player) { - if (!this.teams.containsKey(player.getName())) { - this.teams.put(player.getName(), new NameplatesTeam(this.plugin, player)); + if (!teams.containsKey(player.getName())) { + teams.put(player.getName(), new NameplatesTeam(this.plugin, player)); } - Bukkit.getScheduler().runTaskLater(this.plugin, () -> this.getTeam(player.getName()).updateNameplates(), 20); - return this.teams.get(player.getName()); + this.getTeam(player.getName()).updateNameplates(); + return teams.get(player.getName()); } public void removeTeam(String playerName) { - this.teams.remove(playerName); + teams.remove(playerName); } public NameplatesTeam getTeam(String team) { - return this.teams.get(team); + return teams.get(team); } public boolean doesTeamExist(String playerName) { - return this.teams.containsKey(playerName); + return teams.containsKey(playerName); } }