diff --git a/src/main/java/me/clip/placeholderapi/PlaceholderAPI.java b/src/main/java/me/clip/placeholderapi/PlaceholderAPI.java
index 187c552..1d57c37 100644
--- a/src/main/java/me/clip/placeholderapi/PlaceholderAPI.java
+++ b/src/main/java/me/clip/placeholderapi/PlaceholderAPI.java
@@ -21,6 +21,11 @@
package me.clip.placeholderapi;
import com.google.common.collect.ImmutableSet;
+import java.util.List;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import me.clip.placeholderapi.expansion.Relational;
import me.clip.placeholderapi.replacer.CharsReplacer;
@@ -34,508 +39,480 @@ import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import java.util.List;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.stream.Collectors;
+public final class PlaceholderAPI {
-public final class PlaceholderAPI
-{
+ private static final Replacer REPLACER_PERCENT = new CharsReplacer(Closure.PERCENT);
+ private static final Replacer REPLACER_BRACKET = new CharsReplacer(Closure.BRACKET);
- private static final Replacer REPLACER_PERCENT = new CharsReplacer(Closure.PERCENT);
- private static final Replacer REPLACER_BRACKET = new CharsReplacer(Closure.BRACKET);
+ private static final Pattern PLACEHOLDER_PATTERN = Pattern.compile("[%]([^%]+)[%]");
+ private static final Pattern BRACKET_PLACEHOLDER_PATTERN = Pattern.compile("[{]([^{}]+)[}]");
+ private static final Pattern RELATIONAL_PLACEHOLDER_PATTERN = Pattern
+ .compile("[%](rel_)([^%]+)[%]");
- @Deprecated
- private static final Pattern PLACEHOLDER_PATTERN = Pattern.compile("[%]([^%]+)[%]");
- @Deprecated
- private static final Pattern BRACKET_PLACEHOLDER_PATTERN = Pattern.compile("[{]([^{}]+)[}]");
- @Deprecated
- private static final Pattern RELATIONAL_PLACEHOLDER_PATTERN = Pattern.compile("[%](rel_)([^%]+)[%]");
+ private PlaceholderAPI() {
+ }
+
+ // === Current API ===
+
+ /**
+ * Translates all placeholders into their corresponding values.
+ *
The pattern of a valid placeholder is {@literal %_%}.
+ *
+ * @param player Player to parse the placeholders against
+ * @param text Text to set the placeholder values in
+ * @return String containing all translated placeholders
+ */
+ @NotNull
+ public static String setPlaceholders(@Nullable final OfflinePlayer player,
+ @NotNull final String text) {
+ return REPLACER_PERCENT.apply(text, player,
+ PlaceholderAPIPlugin.getInstance().getLocalExpansionManager()::getExpansion);
+ }
+
+ /**
+ * Translates all placeholders into their corresponding values.
+ *
The pattern of a valid placeholder is {@literal %_%}.
+ *
+ * @param player Player to parse the placeholders against
+ * @param text List of Strings to set the placeholder values in
+ * @return String containing all translated placeholders
+ */
+ @NotNull
+ public static List setPlaceholders(@Nullable final OfflinePlayer player,
+ @NotNull final List<@NotNull String> text) {
+ return text.stream().map(line -> setPlaceholders(player, line)).collect(Collectors.toList());
+ }
+
+ /**
+ * Translates all placeholders into their corresponding values.
+ *
The pattern of a valid placeholder is {@literal {_}}.
+ *
+ * @param player Player to parse the placeholders against
+ * @param text Text to set the placeholder values in
+ * @return String containing all translated placeholders
+ */
+ @NotNull
+ public static String setBracketPlaceholders(@Nullable final OfflinePlayer player,
+ @NotNull final String text) {
+ return REPLACER_BRACKET.apply(text, player,
+ PlaceholderAPIPlugin.getInstance().getLocalExpansionManager()::getExpansion);
+ }
+
+ /**
+ * Translates all placeholders into their corresponding values.
+ *
The pattern of a valid placeholder is {@literal {_}}.
+ *
+ * @param player Player to parse the placeholders against
+ * @param text List of Strings to set the placeholder values in
+ * @return String containing all translated placeholders
+ */
+ @NotNull
+ public static List setBracketPlaceholders(@Nullable final OfflinePlayer player,
+ @NotNull final List<@NotNull String> text) {
+ return text.stream().map(line -> setBracketPlaceholders(player, line))
+ .collect(Collectors.toList());
+ }
- private PlaceholderAPI()
- {
- }
+ /**
+ * Check if a specific placeholder identifier is currently registered
+ *
+ * @param identifier The identifier to check
+ * @return true if identifier is already registered
+ */
+ public static boolean isRegistered(@NotNull final String identifier) {
+ return PlaceholderAPIPlugin.getInstance().getLocalExpansionManager()
+ .findExpansionByIdentifier(identifier).isPresent();
+ }
- // === Current API ===
+ /**
+ * Get all registered placeholder identifiers
+ *
+ * @return All registered placeholder identifiers
+ */
+ @NotNull
+ public static Set getRegisteredIdentifiers() {
+ return ImmutableSet
+ .copyOf(PlaceholderAPIPlugin.getInstance().getLocalExpansionManager().getIdentifiers());
+ }
- /**
- * Translates all placeholders into their corresponding values.
- *
The pattern of a valid placeholder is {@literal %_%}.
- *
- * @param player Player to parse the placeholders against
- * @param text Text to set the placeholder values in
- * @return String containing all translated placeholders
- */
- @NotNull
- public static String setPlaceholders(@Nullable final OfflinePlayer player, @NotNull final String text)
- {
- return REPLACER_PERCENT.apply(text, player, PlaceholderAPIPlugin.getInstance().getLocalExpansionManager()::getExpansion);
- }
+ /**
+ * Get the normal placeholder pattern.
+ */
+ public static Pattern getPlaceholderPattern() {
+ return PLACEHOLDER_PATTERN;
+ }
- /**
- * Translates all placeholders into their corresponding values.
- *
The pattern of a valid placeholder is {@literal %_%}.
- *
- * @param player Player to parse the placeholders against
- * @param text List of Strings to set the placeholder values in
- * @return String containing all translated placeholders
- */
- @NotNull
- public static List setPlaceholders(@Nullable final OfflinePlayer player, @NotNull final List<@NotNull String> text)
- {
- return text.stream().map(line -> setPlaceholders(player, line)).collect(Collectors.toList());
- }
+ /**
+ * Get the bracket placeholder pattern.
+ */
+ public static Pattern getBracketPlaceholderPattern() {
+ return BRACKET_PLACEHOLDER_PATTERN;
+ }
- /**
- * Translates all placeholders into their corresponding values.
- *
The pattern of a valid placeholder is {@literal {_}}.
- *
- * @param player Player to parse the placeholders against
- * @param text Text to set the placeholder values in
- * @return String containing all translated placeholders
- */
- @NotNull
- public static String setBracketPlaceholders(@Nullable final OfflinePlayer player, @NotNull final String text)
- {
- return REPLACER_BRACKET.apply(text, player, PlaceholderAPIPlugin.getInstance().getLocalExpansionManager()::getExpansion);
- }
+ /**
+ * Get the relational placeholder pattern.
+ */
+ public static Pattern getRelationalPlaceholderPattern() {
+ return RELATIONAL_PLACEHOLDER_PATTERN;
+ }
- /**
- * Translates all placeholders into their corresponding values.
- *
The pattern of a valid placeholder is {@literal {_}}.
- *
- * @param player Player to parse the placeholders against
- * @param text List of Strings to set the placeholder values in
- * @return String containing all translated placeholders
- */
- @NotNull
- public static List setBracketPlaceholders(@Nullable final OfflinePlayer player, @NotNull final List<@NotNull String> text)
- {
- return text.stream().map(line -> setBracketPlaceholders(player, line)).collect(Collectors.toList());
- }
+ /**
+ * Check if a String contains any PlaceholderAPI placeholders ({@literal
+ * %_%}).
+ *
+ * @param text String to check
+ * @return true if String contains any matches to the normal placeholder pattern, false otherwise
+ */
+ public static boolean containsPlaceholders(String text) {
+ return text != null && PLACEHOLDER_PATTERN.matcher(text).find();
+ }
+
+ /**
+ * Check if a String contains any PlaceholderAPI bracket placeholders ({@literal
+ * {_}}).
+ *
+ * @param text String to check
+ * @return true if String contains any matches to the bracket placeholder pattern, false otherwise
+ */
+ public static boolean containsBracketPlaceholders(String text) {
+ return text != null && BRACKET_PLACEHOLDER_PATTERN.matcher(text).find();
+ }
+
+ // === Deprecated API ===
+
+ /**
+ * set relational placeholders in the text specified placeholders are matched with the pattern
+ * %% when set with this method
+ *
+ * @param one First player to compare
+ * @param two Second player to compare
+ * @param text Text to parse the placeholders in
+ * @return The text containing the parsed relational placeholders
+ * @deprecated Use {@link #setPlaceholders(OfflinePlayer, String)} instead.
+ */
+ @Deprecated
+ public static String setRelationalPlaceholders(Player one, Player two, String text) {
+ return setRelationalPlaceholders(one, two, text, true);
+ }
+
+ /**
+ * Translate placeholders in the provided List based on the relation of the two provided players.
+ *
The pattern of a valid placeholder is {@literal %rel__%}.
+ *
+ * @param one Player to compare
+ * @param two Player to compare
+ * @param text text to parse the placeholder values to
+ * @return The text containing the parsed relational placeholders
+ * @deprecated Use {@link #setPlaceholders(OfflinePlayer, List)} instead.
+ */
+ @Deprecated
+ public static List setRelationalPlaceholders(Player one, Player two, List text) {
+ return setRelationalPlaceholders(one, two, text, true);
+ }
+
+ /**
+ * Translate placeholders in the provided list based on the relation of the two provided players.
+ *
The pattern of a valid placeholder is {@literal %rel__%}.
+ *
+ * @param one First player to compare
+ * @param two Second player to compare
+ * @param text Text to parse the placeholders in
+ * @param colorize If color codes (&[0-1a-fk-o]) should be translated
+ * @return The text containing the parsed relational placeholders
+ * @deprecated Use {@link #setPlaceholders(OfflinePlayer, List)} instead.
+ */
+ @Deprecated
+ @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
+ public static List setRelationalPlaceholders(Player one, Player two, List text,
+ boolean colorize) {
+ if (text == null) {
+ return null;
+ }
+
+ return text.stream()
+ .map(line -> setRelationalPlaceholders(one, two, line, colorize))
+ .collect(Collectors.toList());
+ }
+
+ /**
+ * set relational placeholders in the text specified placeholders are matched with the pattern
+ * %% when set with this method
+ *
+ * @param one Player to compare
+ * @param two Player to compare
+ * @param text Text to parse the placeholders in
+ * @param colorize If color codes (&[0-1a-fk-o]) should be translated
+ * @return The text containing the parsed relational placeholders
+ * @deprecated Use {@link #setPlaceholders(OfflinePlayer, String)} instead.
+ */
+ @Deprecated
+ @SuppressWarnings("DuplicatedCode")
+ @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
+ public static String setRelationalPlaceholders(Player one, Player two, String text,
+ boolean colorize) {
+ if (text == null) {
+ return null;
+ }
+
+ if (PlaceholderAPIPlugin.getInstance().getLocalExpansionManager().getExpansionsCount() == 0) {
+ return colorize ? Msg.color(text) : text;
+ }
+
+ final Matcher matcher = RELATIONAL_PLACEHOLDER_PATTERN.matcher(text);
+
+ while (matcher.find()) {
+ final String format = matcher.group(2);
+ final int index = format.indexOf("_");
+
+ if (index <= 0 || index >= format.length()) {
+ continue;
+ }
+
+ String identifier = format.substring(0, index).toLowerCase();
+ String params = format.substring(index + 1);
+ final PlaceholderExpansion expansion = PlaceholderAPIPlugin.getInstance()
+ .getLocalExpansionManager().getExpansion(identifier);
+
+ if (!(expansion instanceof Relational)) {
+ continue;
+ }
+
+ final String value = ((Relational) expansion).onPlaceholderRequest(one, two, params);
+
+ if (value != null) {
+ text = text.replaceAll(Pattern.quote(matcher.group()), Matcher.quoteReplacement(value));
+ }
+ }
+
+ return colorize ? Msg.color(text) : text;
+ }
+
+ /**
+ * @deprecated Please use {@link me.clip.placeholderapi.expansion.PlaceholderExpansion} to
+ * register placeholders instead
+ */
+ @Deprecated
+ @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
+ public static boolean registerPlaceholderHook(Plugin plugin, PlaceholderHook placeholderHook) {
+ PlaceholderAPIPlugin.getInstance().getLogger().warning(plugin.getName()
+ + " is attempting to register placeholders via a PlaceholderHook class which is no longer supported!"
+ + " Please reach out to " + plugin.getDescription().getAuthors().toString()
+ + " and let them know that they need to update ASAP!");
+ return false;
+ }
+
+ /**
+ * @deprecated Please use {@link me.clip.placeholderapi.expansion.PlaceholderExpansion} to
+ * register placeholders instead
+ */
+ @Deprecated
+ @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
+ public static boolean registerPlaceholderHook(String identifier,
+ PlaceholderHook placeholderHook) {
+ PlaceholderAPIPlugin.getInstance().getLogger().warning(identifier
+ + " is attempting to register placeholders via a PlaceholderHook class which is no longer supported!");
+ return false;
+ }
- /**
- * Check if a specific placeholder identifier is currently registered
- *
- * @param identifier The identifier to check
- * @return true if identifier is already registered
- */
- public static boolean isRegistered(@NotNull final String identifier)
- {
- return PlaceholderAPIPlugin.getInstance().getLocalExpansionManager().findExpansionByIdentifier(identifier).isPresent();
- }
+ /**
+ * @deprecated Please use {@link me.clip.placeholderapi.expansion.PlaceholderExpansion} to
+ * unregister placeholders instead
+ */
+ @Deprecated
+ @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
+ public static boolean unregisterPlaceholderHook(Plugin plugin) {
+ PlaceholderAPIPlugin.getInstance().getLogger().warning(plugin.getName()
+ + " is attempting to unregister placeholders via the PlaceholderAPI class which is no longer supported!"
+ + " Please reach out to " + plugin.getDescription().getAuthors().toString()
+ + " and let them know that they need to update ASAP!");
+ return false;
+ }
+
+ /**
+ * @deprecated Please use {@link me.clip.placeholderapi.expansion.PlaceholderExpansion} to
+ * unregister placeholders instead
+ */
+ @Deprecated
+ @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
+ public static boolean unregisterPlaceholderHook(String identifier) {
+ PlaceholderAPIPlugin.getInstance().getLogger().warning(identifier
+ + " is attempting to unregister placeholders through the PlaceholderAPI class which is no longer supported!");
+ return false;
+ }
+
+ /**
+ * @deprecated Please use {@link #setPlaceholders(OfflinePlayer, String)} instead
+ */
+ @NotNull
+ @Deprecated
+ @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
+ public static String setPlaceholders(@Nullable final OfflinePlayer player,
+ @NotNull final String text, @NotNull final Pattern pattern, final boolean colorize) {
+ return setPlaceholders(player, text);
+ }
+
+ /**
+ * @deprecated Please use {@link #setPlaceholders(OfflinePlayer, List)} instead
+ */
+ @NotNull
+ @Deprecated
+ @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
+ public static List setPlaceholders(@Nullable final OfflinePlayer player,
+ @NotNull final List text, @NotNull final Pattern pattern, final boolean colorize) {
+ return setPlaceholders(player, text);
+ }
+
+ /**
+ * @deprecated Use {@link #setPlaceholders(OfflinePlayer, List)} instead.
+ */
+ @Deprecated
+ @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
+ public static List setBracketPlaceholders(OfflinePlayer player, List text,
+ boolean colorize) {
+ return setPlaceholders(player, text, BRACKET_PLACEHOLDER_PATTERN, colorize);
+ }
+
+ /**
+ * @deprecated Use {@link #setPlaceholders(OfflinePlayer, List)} instead.
+ */
+ @Deprecated
+ @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
+ public static List setPlaceholders(OfflinePlayer player, List text,
+ boolean colorize) {
+ return setPlaceholders(player, text, PLACEHOLDER_PATTERN, colorize);
+ }
+
+ /**
+ * @deprecated Use {@link #setPlaceholders(OfflinePlayer, List)} instead.
+ */
+ @Deprecated
+ @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
+ public static List setPlaceholders(OfflinePlayer player, List text,
+ Pattern pattern) {
+ return setPlaceholders(player, text, pattern, true);
+ }
- /**
- * Get all registered placeholder identifiers
- *
- * @return All registered placeholder identifiers
- */
- @NotNull
- public static Set getRegisteredIdentifiers()
- {
- return ImmutableSet.copyOf(PlaceholderAPIPlugin.getInstance().getLocalExpansionManager().getIdentifiers());
- }
+ /**
+ * @deprecated Use {@link #setPlaceholders(OfflinePlayer, String)} instead.
+ */
+ @Deprecated
+ @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
+ public static String setBracketPlaceholders(OfflinePlayer player, String text, boolean colorize) {
+ return setPlaceholders(player, text, BRACKET_PLACEHOLDER_PATTERN, colorize);
+ }
+ /**
+ * @deprecated Use {@link #setPlaceholders(OfflinePlayer, String)} instead.
+ */
+ @Deprecated
+ @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
+ public static String setPlaceholders(OfflinePlayer player, String text, boolean colorize) {
+ return setPlaceholders(player, text, PLACEHOLDER_PATTERN, colorize);
+ }
- // === Deprecated API ===
+ /**
+ * @deprecated Use {@link #setPlaceholders(OfflinePlayer, String)} instead.
+ */
+ @Deprecated
+ @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
+ public static String setPlaceholders(OfflinePlayer player, String text, Pattern pattern) {
+ return setPlaceholders(player, text, pattern, true);
+ }
- /**
- * Check if a String contains any PlaceholderAPI placeholders ({@literal %_%}).
- *
- * @param text String to check
- * @return true if String contains any registered placeholder identifiers, false otherwise
- * @deprecated Will be removed in a future release.
- */
- @Deprecated
- public static boolean containsPlaceholders(String text)
- {
- return text != null && PLACEHOLDER_PATTERN.matcher(text).find();
- }
+ /**
+ * @deprecated Will be removed in a future release.
+ */
+ @Deprecated
+ @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
+ public static Set getRegisteredPlaceholderPlugins() {
+ return getRegisteredIdentifiers();
+ }
- /**
- * Check if a String contains any PlaceholderAPI bracket placeholders ({@literal {_}}).
- *
- * @param text String to check
- * @return true if String contains any registered placeholder identifiers, false otherwise
- * @deprecated Will be removed in a future release.
- */
- @Deprecated
- public static boolean containsBracketPlaceholders(String text)
- {
- return text != null && BRACKET_PLACEHOLDER_PATTERN.matcher(text).find();
- }
+ /**
+ * @deprecated Will be removed in a future release.
+ */
+ @Deprecated
+ @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
+ public static Set getExternalPlaceholderPlugins() {
+ return null;
+ }
- /**
- * set relational placeholders in the text specified placeholders are matched with the pattern
- * %% when set with this method
- *
- * @param one First player to compare
- * @param two Second player to compare
- * @param text Text to parse the placeholders in
- * @return The text containing the parsed relational placeholders
- * @deprecated Use {@link #setPlaceholders(OfflinePlayer, String)} instead.
- */
- @Deprecated
- public static String setRelationalPlaceholders(Player one, Player two, String text)
- {
- return setRelationalPlaceholders(one, two, text, true);
- }
+ /**
+ * @deprecated Will be removed in a future release.
+ */
+ @Deprecated
+ @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
+ public static String setPlaceholders(Player player, String text) {
+ return setPlaceholders(((OfflinePlayer) player), text);
+ }
- /**
- * Translate placeholders in the provided List based on the relation of the two provided players.
- *
The pattern of a valid placeholder is {@literal %rel__%}.
- *
- * @param one Player to compare
- * @param two Player to compare
- * @param text text to parse the placeholder values to
- * @return The text containing the parsed relational placeholders
- * @deprecated Use {@link #setPlaceholders(OfflinePlayer, List)} instead.
- */
- @Deprecated
- public static List setRelationalPlaceholders(Player one, Player two, List text)
- {
- return setRelationalPlaceholders(one, two, text, true);
- }
+ /**
+ * @deprecated Will be removed in a future release.
+ */
+ @Deprecated
+ @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
+ public static String setPlaceholders(Player player, String text, boolean colorize) {
+ return setPlaceholders(player, text, PLACEHOLDER_PATTERN, colorize);
+ }
- /**
- * Translate placeholders in the provided list based on the relation of the two provided players.
- *
The pattern of a valid placeholder is {@literal %rel__%}.
- *
- * @param one First player to compare
- * @param two Second player to compare
- * @param text Text to parse the placeholders in
- * @param colorize If color codes (&[0-1a-fk-o]) should be translated
- * @return The text containing the parsed relational placeholders
- * @deprecated Use {@link #setPlaceholders(OfflinePlayer, List)} instead.
- */
- @Deprecated
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static List setRelationalPlaceholders(Player one, Player two, List text, boolean colorize)
- {
- if (text == null)
- {
- return null;
- }
+ /**
+ * @deprecated Will be removed in a future release.
+ */
+ @Deprecated
+ @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
+ public static List setPlaceholders(Player player, List text) {
+ return setPlaceholders(player, text, PLACEHOLDER_PATTERN, true);
+ }
- return text.stream()
- .map(line -> setRelationalPlaceholders(one, two, line, colorize))
- .collect(Collectors.toList());
- }
+ /**
+ * @deprecated Will be removed in a future release.
+ */
+ @Deprecated
+ @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
+ public static List setPlaceholders(Player player, List text, boolean colorize) {
+ return setPlaceholders(player, text, PLACEHOLDER_PATTERN, colorize);
+ }
- /**
- * set relational placeholders in the text specified placeholders are matched with the pattern
- * %% when set with this method
- *
- * @param one Player to compare
- * @param two Player to compare
- * @param text Text to parse the placeholders in
- * @param colorize If color codes (&[0-1a-fk-o]) should be translated
- * @return The text containing the parsed relational placeholders
- * @deprecated Use {@link #setPlaceholders(OfflinePlayer, String)} instead.
- */
- @Deprecated
- @SuppressWarnings("DuplicatedCode")
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static String setRelationalPlaceholders(Player one, Player two, String text, boolean colorize)
- {
- if (text == null)
- {
- return null;
- }
+ /**
+ * @deprecated Will be removed in a future release.
+ */
+ @Deprecated
+ @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
+ public static String setBracketPlaceholders(Player player, String text) {
+ return setPlaceholders(player, text, BRACKET_PLACEHOLDER_PATTERN, true);
+ }
- if (PlaceholderAPIPlugin.getInstance().getLocalExpansionManager().getExpansionsCount() == 0)
- {
- return colorize ? Msg.color(text) : text;
- }
+ /**
+ * @deprecated Will be removed in a future release.
+ */
+ @Deprecated
+ @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
+ public static String setBracketPlaceholders(Player player, String text, boolean colorize) {
+ return setPlaceholders(player, text, BRACKET_PLACEHOLDER_PATTERN, colorize);
+ }
- final Matcher matcher = RELATIONAL_PLACEHOLDER_PATTERN.matcher(text);
+ /**
+ * @deprecated Will be removed in a future release.
+ */
+ @Deprecated
+ @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
+ public static List setBracketPlaceholders(Player player, List text) {
+ return setPlaceholders(player, text, BRACKET_PLACEHOLDER_PATTERN, true);
+ }
- while (matcher.find())
- {
- final String format = matcher.group(2);
- final int index = format.indexOf("_");
-
- if (index <= 0 || index >= format.length())
- {
- continue;
- }
-
- String identifier = format.substring(0, index).toLowerCase();
- String params = format.substring(index + 1);
- final PlaceholderExpansion expansion = PlaceholderAPIPlugin.getInstance().getLocalExpansionManager().getExpansion(identifier);
-
- if (!(expansion instanceof Relational))
- {
- continue;
- }
-
- final String value = ((Relational) expansion).onPlaceholderRequest(one, two, params);
-
- if (value != null)
- {
- text = text.replaceAll(Pattern.quote(matcher.group()), Matcher.quoteReplacement(value));
- }
- }
-
- return colorize ? Msg.color(text) : text;
- }
-
- /**
- * @deprecated Please use {@link me.clip.placeholderapi.expansion.PlaceholderExpansion} to register placeholders instead
- */
- @Deprecated
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static boolean registerPlaceholderHook(Plugin plugin, PlaceholderHook placeholderHook) {
- throw new UnsupportedOperationException(plugin.getName() + " is attempting to register placeholders via a PlaceholderHook class which is no longer supported!"
- + " Please reach out to " + plugin.getDescription().getAuthors().toString() + " and let them know that they need to update ASAP!");
- }
-
- /**
- * @deprecated Please use {@link me.clip.placeholderapi.expansion.PlaceholderExpansion} to register placeholders instead
- */
- @Deprecated
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static boolean registerPlaceholderHook(String identifier, PlaceholderHook placeholderHook) {
- throw new UnsupportedOperationException(identifier + " is attempting to register placeholders via a PlaceholderHook class which is no longer supported!");
- }
-
-
- /**
- * @deprecated Please use {@link me.clip.placeholderapi.expansion.PlaceholderExpansion} to unregister placeholders instead
- */
- @Deprecated
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static boolean unregisterPlaceholderHook(Plugin plugin) {
- throw new UnsupportedOperationException(plugin.getName() + " is attempting to unregister placeholders via the PlaceholderAPI class which is no longer supported!"
- + " Please reach out to " + plugin.getDescription().getAuthors().toString() + " and let them know that they need to update ASAP!");
- }
-
- /**
- * @deprecated Please use {@link me.clip.placeholderapi.expansion.PlaceholderExpansion} to unregister placeholders instead
- */
- @Deprecated
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static boolean unregisterPlaceholderHook(String identifier) {
- throw new UnsupportedOperationException(identifier + " is attempting to unregister placeholders through the PlaceholderAPI class which is no longer supported!");
- }
-
- /**
- * @deprecated Please use {@link #setPlaceholders(OfflinePlayer, String)} instead
- */
- @NotNull
- @Deprecated
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static String setPlaceholders(@Nullable final OfflinePlayer player, @NotNull final String text, @NotNull final Pattern pattern, final boolean colorize)
- {
- return setPlaceholders(player, text);
- }
-
- /**
- * @deprecated Please use {@link #setPlaceholders(OfflinePlayer, List)} instead
- */
- @NotNull
- @Deprecated
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static List setPlaceholders(@Nullable final OfflinePlayer player, @NotNull final List text, @NotNull final Pattern pattern, final boolean colorize)
- {
- return setPlaceholders(player, text);
- }
-
- /**
- * @deprecated Use {@link #setPlaceholders(OfflinePlayer, List)} instead.
- */
- @Deprecated
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static List setBracketPlaceholders(OfflinePlayer player, List text, boolean colorize)
- {
- return setPlaceholders(player, text, BRACKET_PLACEHOLDER_PATTERN, colorize);
- }
-
- /**
- * @deprecated Use {@link #setPlaceholders(OfflinePlayer, List)} instead.
- */
- @Deprecated
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static List setPlaceholders(OfflinePlayer player, List text, boolean colorize)
- {
- return setPlaceholders(player, text, PLACEHOLDER_PATTERN, colorize);
- }
-
- /**
- * @deprecated Use {@link #setPlaceholders(OfflinePlayer, List)} instead.
- */
- @Deprecated
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static List setPlaceholders(OfflinePlayer player, List text, Pattern pattern)
- {
- return setPlaceholders(player, text, pattern, true);
- }
-
-
- /**
- * @deprecated Use {@link #setPlaceholders(OfflinePlayer, String)} instead.
- */
- @Deprecated
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static String setBracketPlaceholders(OfflinePlayer player, String text, boolean colorize)
- {
- return setPlaceholders(player, text, BRACKET_PLACEHOLDER_PATTERN, colorize);
- }
-
- /**
- * @deprecated Use {@link #setPlaceholders(OfflinePlayer, String)} instead.
- */
- @Deprecated
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static String setPlaceholders(OfflinePlayer player, String text, boolean colorize)
- {
- return setPlaceholders(player, text, PLACEHOLDER_PATTERN, colorize);
- }
-
- /**
- * @deprecated Use {@link #setPlaceholders(OfflinePlayer, String)} instead.
- */
- @Deprecated
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static String setPlaceholders(OfflinePlayer player, String text, Pattern pattern)
- {
- return setPlaceholders(player, text, pattern, true);
- }
-
- /**
- * @deprecated Will be removed in a future release.
- */
- @Deprecated
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static Pattern getPlaceholderPattern()
- {
- return PLACEHOLDER_PATTERN;
- }
-
- /**
- * @deprecated Will be removed in a future release.
- */
- @Deprecated
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static Pattern getBracketPlaceholderPattern()
- {
- return BRACKET_PLACEHOLDER_PATTERN;
- }
-
- /**
- * @deprecated Will be removed in a future release.
- */
- @Deprecated
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static Pattern getRelationalPlaceholderPattern()
- {
- return RELATIONAL_PLACEHOLDER_PATTERN;
- }
-
- /**
- * @deprecated Will be removed in a future release.
- */
- @Deprecated
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static Set getRegisteredPlaceholderPlugins()
- {
- return getRegisteredIdentifiers();
- }
-
- /**
- * @deprecated Will be removed in a future release.
- */
- @Deprecated
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static Set getExternalPlaceholderPlugins()
- {
- return null;
- }
-
- /**
- * @deprecated Will be removed in a future release.
- */
- @Deprecated
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static String setPlaceholders(Player player, String text)
- {
- return setPlaceholders(((OfflinePlayer) player), text);
- }
-
- /**
- * @deprecated Will be removed in a future release.
- */
- @Deprecated
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static String setPlaceholders(Player player, String text, boolean colorize)
- {
- return setPlaceholders(player, text, PLACEHOLDER_PATTERN, colorize);
- }
-
- /**
- * @deprecated Will be removed in a future release.
- */
- @Deprecated
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static List setPlaceholders(Player player, List text)
- {
- return setPlaceholders(player, text, PLACEHOLDER_PATTERN, true);
- }
-
- /**
- * @deprecated Will be removed in a future release.
- */
- @Deprecated
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static List setPlaceholders(Player player, List text, boolean colorize)
- {
- return setPlaceholders(player, text, PLACEHOLDER_PATTERN, colorize);
- }
-
- /**
- * @deprecated Will be removed in a future release.
- */
- @Deprecated
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static String setBracketPlaceholders(Player player, String text)
- {
- return setPlaceholders(player, text, BRACKET_PLACEHOLDER_PATTERN, true);
- }
-
- /**
- * @deprecated Will be removed in a future release.
- */
- @Deprecated
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static String setBracketPlaceholders(Player player, String text, boolean colorize)
- {
- return setPlaceholders(player, text, BRACKET_PLACEHOLDER_PATTERN, colorize);
- }
-
- /**
- * @deprecated Will be removed in a future release.
- */
- @Deprecated
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static List setBracketPlaceholders(Player player, List text)
- {
- return setPlaceholders(player, text, BRACKET_PLACEHOLDER_PATTERN, true);
- }
-
- /**
- * @deprecated Will be removed in a future release.
- */
- @Deprecated
- @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
- public static List setBracketPlaceholders(Player player, List text, boolean colorize)
- {
- return setPlaceholders(player, text, BRACKET_PLACEHOLDER_PATTERN, colorize);
- }
+ /**
+ * @deprecated Will be removed in a future release.
+ */
+ @Deprecated
+ @ApiStatus.ScheduledForRemoval(inVersion = "2.11.0")
+ public static List setBracketPlaceholders(Player player, List text,
+ boolean colorize) {
+ return setPlaceholders(player, text, BRACKET_PLACEHOLDER_PATTERN, colorize);
+ }
}