From 85acae17e514f1c5432203319f88b6100b5e79d0 Mon Sep 17 00:00:00 2001 From: fullwall Date: Tue, 30 Jun 2020 18:16:48 +0800 Subject: [PATCH] Run through placeholderAPI even if player is null --- .../citizensnpcs/api/util/Placeholders.java | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/main/java/net/citizensnpcs/api/util/Placeholders.java b/src/main/java/net/citizensnpcs/api/util/Placeholders.java index cbd5f50c..e6ef6a71 100644 --- a/src/main/java/net/citizensnpcs/api/util/Placeholders.java +++ b/src/main/java/net/citizensnpcs/api/util/Placeholders.java @@ -2,8 +2,9 @@ import java.util.regex.Pattern; +import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; +import org.bukkit.entity.Entity; import me.clip.placeholderapi.PlaceholderAPI; import net.citizensnpcs.api.npc.NPC; @@ -11,9 +12,7 @@ public class Placeholders { public static String replace(String text, CommandSender sender, NPC npc) { - if (sender instanceof Player) { - text = replace(text, (Player) sender); - } + text = replace(text, sender instanceof OfflinePlayer ? (OfflinePlayer) sender : null); if (npc == null) { return text; } @@ -23,17 +22,23 @@ public static String replace(String text, CommandSender sender, NPC npc) { return text; } - public static String replace(String text, Player player) { + public static String replace(String text, OfflinePlayer player) { if (player == null) { - return text; + return setPlaceholderAPIPlaceholders(text, player); } text = PLAYER_MATCHER.matcher(text).replaceAll(player.getName()); - text = text.replace("", player.getWorld().getName()); + if (player instanceof Entity && ((Entity) player).isValid()) { + text = text.replace("", ((Entity) player).getWorld().getName()); + } + return setPlaceholderAPIPlaceholders(text, player); + } + + private static String setPlaceholderAPIPlaceholders(String text, OfflinePlayer player) { try { - PlaceholderAPI.setPlaceholders(player, text); + return PlaceholderAPI.setPlaceholders(player, text); } catch (Throwable t) { + return text; } - return text; } private static Pattern PLAYER_MATCHER = Pattern.compile("|

");