From 3f14a67b7345bd098881e0ce06a589ec4d2a4796 Mon Sep 17 00:00:00 2001 From: filoghost Date: Mon, 24 May 2021 11:53:00 +0200 Subject: [PATCH] Initial draft for PlaceholderAPI support (needs performance improvements) --- plugin/pom.xml | 5 +++ .../HolographicDisplays.java | 2 ++ .../placeholderapi/PlaceholderAPIHook.java | 36 +++++++++++++++++++ .../bridge/protocollib/PacketListener.java | 5 +++ plugin/src/main/resources/plugin.yml | 2 +- pom.xml | 12 +++++++ 6 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 plugin/src/main/java/me/filoghost/holographicdisplays/bridge/placeholderapi/PlaceholderAPIHook.java diff --git a/plugin/pom.xml b/plugin/pom.xml index a38e77f9..ce722d30 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -114,6 +114,11 @@ ProtocolLib + + me.clip + placeholderapi + + org.bstats bstats-bukkit-lite diff --git a/plugin/src/main/java/me/filoghost/holographicdisplays/HolographicDisplays.java b/plugin/src/main/java/me/filoghost/holographicdisplays/HolographicDisplays.java index e0c0943f..59f125aa 100644 --- a/plugin/src/main/java/me/filoghost/holographicdisplays/HolographicDisplays.java +++ b/plugin/src/main/java/me/filoghost/holographicdisplays/HolographicDisplays.java @@ -12,6 +12,7 @@ import me.filoghost.fcommons.config.exception.ConfigException; import me.filoghost.fcommons.logging.ErrorCollector; import me.filoghost.holographicdisplays.api.internal.HolographicDisplaysAPIProvider; import me.filoghost.holographicdisplays.bridge.bungeecord.BungeeServerTracker; +import me.filoghost.holographicdisplays.bridge.placeholderapi.PlaceholderAPIHook; import me.filoghost.holographicdisplays.bridge.protocollib.ProtocolLibHook; import me.filoghost.holographicdisplays.commands.HologramCommandManager; import me.filoghost.holographicdisplays.core.nms.NMSManager; @@ -112,6 +113,7 @@ public class HolographicDisplays extends FCommonsPlugin implements ProtocolPacke load(true, errorCollector); ProtocolLibHook.setup(this, nmsManager, this, errorCollector); + PlaceholderAPIHook.setup(); placeholderManager.startUpdaterTask(this); diff --git a/plugin/src/main/java/me/filoghost/holographicdisplays/bridge/placeholderapi/PlaceholderAPIHook.java b/plugin/src/main/java/me/filoghost/holographicdisplays/bridge/placeholderapi/PlaceholderAPIHook.java new file mode 100644 index 00000000..61dbf9c8 --- /dev/null +++ b/plugin/src/main/java/me/filoghost/holographicdisplays/bridge/placeholderapi/PlaceholderAPIHook.java @@ -0,0 +1,36 @@ +/* + * Copyright (C) filoghost and contributors + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ +package me.filoghost.holographicdisplays.bridge.placeholderapi; + +import me.clip.placeholderapi.PlaceholderAPI; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; + +public class PlaceholderAPIHook { + + private static boolean enabled; + + public static void setup() { + if (!Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) { + return; + } + + enabled = true; + } + + public static boolean containsPlaceholders(String text) { + return PlaceholderAPI.containsPlaceholders(text); + } + + public static String replacePlaceholders(Player player, String text) { + return PlaceholderAPI.setPlaceholders(player, text); + } + + public static boolean isEnabled() { + return enabled; + } + +} diff --git a/plugin/src/main/java/me/filoghost/holographicdisplays/bridge/protocollib/PacketListener.java b/plugin/src/main/java/me/filoghost/holographicdisplays/bridge/protocollib/PacketListener.java index 90d01929..0744e1dc 100644 --- a/plugin/src/main/java/me/filoghost/holographicdisplays/bridge/protocollib/PacketListener.java +++ b/plugin/src/main/java/me/filoghost/holographicdisplays/bridge/protocollib/PacketListener.java @@ -12,6 +12,7 @@ import com.comphenix.protocol.events.PacketAdapter; import com.comphenix.protocol.events.PacketContainer; import com.comphenix.protocol.events.PacketEvent; import com.comphenix.protocol.wrappers.WrappedWatchableObject; +import me.filoghost.holographicdisplays.bridge.placeholderapi.PlaceholderAPIHook; import me.filoghost.holographicdisplays.bridge.protocollib.packet.AbstractPacket; import me.filoghost.holographicdisplays.bridge.protocollib.packet.WrapperPlayServerEntityMetadata; import me.filoghost.holographicdisplays.bridge.protocollib.packet.WrapperPlayServerSpawnEntityLiving; @@ -148,6 +149,10 @@ class PacketListener extends PacketAdapter { } } } + + if (PlaceholderAPIHook.isEnabled() && PlaceholderAPIHook.containsPlaceholders(text)) { + text = PlaceholderAPIHook.replacePlaceholders(player, text); + } return text; } diff --git a/plugin/src/main/resources/plugin.yml b/plugin/src/main/resources/plugin.yml index 10e3ff16..8c284c90 100644 --- a/plugin/src/main/resources/plugin.yml +++ b/plugin/src/main/resources/plugin.yml @@ -4,7 +4,7 @@ author: filoghost version: ${pluginVersion} api-version: 1.13 -softdepend: [ProtocolLib] +softdepend: [ProtocolLib, PlaceholderAPI] commands: holograms: diff --git a/pom.xml b/pom.xml index 0b38aa40..567392ec 100644 --- a/pom.xml +++ b/pom.xml @@ -56,6 +56,11 @@ dmulloy2-repo https://repo.dmulloy2.net/repository/public/ + + + placeholderapi-repo + https://repo.extendedclip.com/content/repositories/placeholderapi/ + @@ -199,6 +204,13 @@ 4.5.0 provided + + + me.clip + placeholderapi + 2.8.1 + provided + org.bstats