From c7e0f64469d1090399718ffff9bcf113e86e811b Mon Sep 17 00:00:00 2001 From: filoghost Date: Sat, 10 Sep 2022 14:41:41 +0200 Subject: [PATCH] Add options to disable PlaceholderAPI and to change the refresh interval --- .../holographicdisplays/plugin/config/Settings.java | 6 ++++++ .../plugin/config/SettingsModel.java | 6 ++++++ .../internal/placeholder/ImmutablePlaceholder.java | 13 +++++++++++-- .../PlaceholderAPIPlaceholderFactory.java | 9 ++++++++- 4 files changed, 31 insertions(+), 3 deletions(-) diff --git a/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/config/Settings.java b/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/config/Settings.java index 71936acd..fea3a0fe 100644 --- a/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/config/Settings.java +++ b/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/config/Settings.java @@ -24,6 +24,9 @@ public class Settings { public static DateTimeFormatter timeFormat; public static boolean updateNotification; + public static boolean placeholderAPIEnabled; + public static int placeholderAPIDefaultRefreshInternalTicks; + public static String imageSymbol; public static String transparencySymbol; @@ -43,6 +46,9 @@ public class Settings { timeFormat = parseTimeFormatter(config.timeFormat, config.timeZone, errorCollector); updateNotification = config.updateNotification; + placeholderAPIEnabled = config.placeholderAPIEnabled; + placeholderAPIDefaultRefreshInternalTicks = config.placeholderAPIDefaultRefreshIntervalTicks; + imageSymbol = DisplayFormat.apply(config.imageRenderingSolidPixel); transparencySymbol = DisplayFormat.apply(config.imageRenderingTransparentPixel); diff --git a/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/config/SettingsModel.java b/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/config/SettingsModel.java index 948931dd..9d19b64c 100644 --- a/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/config/SettingsModel.java +++ b/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/config/SettingsModel.java @@ -21,6 +21,12 @@ public class SettingsModel implements MappedConfig { @Path("quick-edit-commands") boolean quickEditCommands = true; + @Path("placeholders.PlaceholderAPI.enabled") + boolean placeholderAPIEnabled = true; + + @Path("placeholders.PlaceholderAPI.default-refresh-interval-ticks") + int placeholderAPIDefaultRefreshIntervalTicks = 200; + @Path("image-rendering.solid-pixel") String imageRenderingSolidPixel = "\\u2588"; diff --git a/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/internal/placeholder/ImmutablePlaceholder.java b/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/internal/placeholder/ImmutablePlaceholder.java index 20538ad6..d21e04e6 100644 --- a/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/internal/placeholder/ImmutablePlaceholder.java +++ b/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/internal/placeholder/ImmutablePlaceholder.java @@ -6,8 +6,12 @@ package me.filoghost.holographicdisplays.plugin.internal.placeholder; import me.filoghost.holographicdisplays.api.placeholder.GlobalPlaceholder; +import me.filoghost.holographicdisplays.api.placeholder.IndividualPlaceholder; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -public class ImmutablePlaceholder implements GlobalPlaceholder { +public class ImmutablePlaceholder implements GlobalPlaceholder, IndividualPlaceholder { private final String text; @@ -21,7 +25,12 @@ public class ImmutablePlaceholder implements GlobalPlaceholder { } @Override - public String getReplacement(String argument) { + public String getReplacement(@Nullable String argument) { + return text; + } + + @Override + public String getReplacement(@NotNull Player player, @Nullable String argument) { return text; } diff --git a/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/internal/placeholder/PlaceholderAPIPlaceholderFactory.java b/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/internal/placeholder/PlaceholderAPIPlaceholderFactory.java index 421a7212..9d11c7a7 100644 --- a/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/internal/placeholder/PlaceholderAPIPlaceholderFactory.java +++ b/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/internal/placeholder/PlaceholderAPIPlaceholderFactory.java @@ -8,6 +8,7 @@ package me.filoghost.holographicdisplays.plugin.internal.placeholder; import me.filoghost.holographicdisplays.api.placeholder.IndividualPlaceholder; import me.filoghost.holographicdisplays.api.placeholder.IndividualPlaceholderFactory; import me.filoghost.holographicdisplays.plugin.bridge.placeholderapi.PlaceholderAPIHook; +import me.filoghost.holographicdisplays.plugin.config.Settings; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -16,9 +17,14 @@ public class PlaceholderAPIPlaceholderFactory implements IndividualPlaceholderFa @Override public @Nullable IndividualPlaceholder getPlaceholder(@Nullable String argument) { + if (!Settings.placeholderAPIEnabled) { + return new ImmutablePlaceholder("[PlaceholderAPI not enabled in configuration]"); + } + if (argument == null) { return null; } + return new PlaceholderAPIPlaceholder("%" + argument + "%"); } @@ -33,7 +39,7 @@ public class PlaceholderAPIPlaceholderFactory implements IndividualPlaceholderFa @Override public int getRefreshIntervalTicks() { - return 1; + return Settings.placeholderAPIDefaultRefreshInternalTicks; } @Override @@ -41,6 +47,7 @@ public class PlaceholderAPIPlaceholderFactory implements IndividualPlaceholderFa if (!PlaceholderAPIHook.isEnabled()) { return null; } + return PlaceholderAPIHook.replacePlaceholders(player, content); }