From fc3473e83ae46ef314ff75dc055ffeb9b002a5cf Mon Sep 17 00:00:00 2001 From: Ryan Date: Tue, 20 Mar 2018 13:06:42 -0400 Subject: [PATCH] Use PlaceholderExpansion instead of EZPlaceholderHook to support relational placeholders (#1095) --- pom.xml | 2 +- .../java/com/massivecraft/factions/P.java | 5 +- .../util/ClipPlaceholderAPIManager.java | 47 +++++++++++++++++-- 3 files changed, 47 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index e662c664..c7ca7cf0 100644 --- a/pom.xml +++ b/pom.xml @@ -299,7 +299,7 @@ me.clip placeholderapi - 2.8.2 + 2.8.4 provided diff --git a/src/main/java/com/massivecraft/factions/P.java b/src/main/java/com/massivecraft/factions/P.java index 8e9c1c92..5018c130 100644 --- a/src/main/java/com/massivecraft/factions/P.java +++ b/src/main/java/com/massivecraft/factions/P.java @@ -141,8 +141,9 @@ public class P extends MPlugin { Plugin clip = getServer().getPluginManager().getPlugin("PlaceholderAPI"); if (clip != null && clip.isEnabled()) { this.clipPlaceholderAPIManager = new ClipPlaceholderAPIManager(); - this.clipPlaceholderAPIManager.hook(); - log(Level.INFO, "Found Clip's PlaceholderAPI. Adding hooks."); + if (this.clipPlaceholderAPIManager.register()) { + log(Level.INFO, "Successfully registered placeholders with PlaceholderAPI."); + } } Plugin mvdw = getServer().getPluginManager().getPlugin("MVdWPlaceholderAPI"); diff --git a/src/main/java/com/massivecraft/factions/util/ClipPlaceholderAPIManager.java b/src/main/java/com/massivecraft/factions/util/ClipPlaceholderAPIManager.java index 2e6d5f57..9b47ef2c 100644 --- a/src/main/java/com/massivecraft/factions/util/ClipPlaceholderAPIManager.java +++ b/src/main/java/com/massivecraft/factions/util/ClipPlaceholderAPIManager.java @@ -4,7 +4,8 @@ import com.massivecraft.factions.*; import com.massivecraft.factions.integration.Econ; import com.massivecraft.factions.struct.Relation; import com.massivecraft.factions.zcore.util.TL; -import me.clip.placeholderapi.external.EZPlaceholderHook; +import me.clip.placeholderapi.expansion.Relational; +import me.clip.placeholderapi.expansion.PlaceholderExpansion; import org.apache.commons.lang.time.DurationFormatUtils; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -12,10 +13,48 @@ import org.bukkit.entity.Player; import java.util.UUID; -public class ClipPlaceholderAPIManager extends EZPlaceholderHook { +public class ClipPlaceholderAPIManager extends PlaceholderExpansion implements Relational { - public ClipPlaceholderAPIManager() { - super(P.p, "factionsuuid"); + // Identifier for this expansion + @Override + public String getIdentifier() { + return "factionsuuid"; + } + + // Idk...... + @Override + public String getAuthor() { + return "FactionsUUID"; + } + + // Since we are registering this expansion from the dependency, this can be null + @Override + public String getPlugin() { + return null; + } + + // Return the plugin version since this expansion is bundled with the dependency + @Override + public String getVersion() { + return P.p.getDescription().getVersion(); + } + + // Relational placeholders + @Override + public String onPlaceholderRequest(Player p1, Player p2, String placeholder) { + if (p1 == null || p2 == null || placeholder == null) return ""; + FPlayer fp1 = FPlayers.getInstance().getByPlayer(p1); + FPlayer fp2 = FPlayers.getInstance().getByPlayer(p2); + if (fp1 == null || fp2 == null) return ""; + switch (placeholder) { + case "relation": + String c = fp1.getRelationTo(fp2).nicename; + return c != null ? c : ""; + case "relation_color": + ChatColor clr = fp1.getColorTo(fp2); + return clr != null ? clr.toString() : ""; + } + return null; } @Override