Skip to content

Commit ff959ba

Browse files
fancyholograms v3: Use config for feature flags
1 parent 5f047bb commit ff959ba

7 files changed

Lines changed: 54 additions & 28 deletions

File tree

plugins/fancyholograms/fh-api/src/main/java/de/oliver/fancyholograms/api/HologramConfiguration.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,18 @@ public interface HologramConfiguration {
5050
* @return The log level for the plugin.
5151
*/
5252
String getLogLevel();
53+
54+
/**
55+
* Returns whether holograms should be shown to bedrock players.
56+
*
57+
* @return {@code true} if holograms should be shown to bedrock players, {@code false} otherwise.
58+
*/
59+
boolean isHologramsForBedrockPlayersEnabled();
60+
61+
/**
62+
* Returns whether holograms should be shown to players with an old client version.
63+
*
64+
* @return {@code true} if holograms should be shown to players with an old client version, {@code false} otherwise.
65+
*/
66+
boolean isHologramsForOldClientsEnabled();
5367
}

plugins/fancyholograms/src/main/java/de/oliver/fancyholograms/config/FHConfiguration.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ public final class FHConfiguration implements HologramConfiguration {
1515
private static final String VISIBILITY_DISTANCE_PATH = "visibility_distance";
1616
private static final String REGISTER_COMMANDS_PATH = "register_commands";
1717
private static final String LOG_LEVEL_PATH = "log_level";
18+
private static final String DISABLE_HOLOGRAMS_FOR_BEDROCK_PLAYERS_PATH = "disable_holograms_for_bedrock_players";
19+
private static final String DISABLE_HOLOGRAMS_FOR_OLD_CLIENTS = "disable_holograms_for_old_clients";
1820

1921
private Config config;
2022

@@ -84,6 +86,28 @@ public void init() {
8486
String.class
8587
));
8688

89+
/*
90+
FEATURE FLAGS
91+
*/
92+
93+
config.addField(new ConfigField<>(
94+
DISABLE_HOLOGRAMS_FOR_BEDROCK_PLAYERS_PATH,
95+
"Do not show holograms to bedrock players",
96+
false,
97+
false,
98+
false,
99+
Boolean.class
100+
));
101+
102+
config.addField(new ConfigField<>(
103+
DISABLE_HOLOGRAMS_FOR_OLD_CLIENTS,
104+
"Do not show holograms to clients with a version older than 1.19.4",
105+
false,
106+
false,
107+
false,
108+
Boolean.class
109+
));
110+
87111
config.reload();
88112
}
89113

@@ -125,4 +149,14 @@ public boolean isRegisterCommands() {
125149
public String getLogLevel() {
126150
return config.get(LOG_LEVEL_PATH);
127151
}
152+
153+
@Override
154+
public boolean isHologramsForBedrockPlayersEnabled() {
155+
return !(boolean) config.get(DISABLE_HOLOGRAMS_FOR_BEDROCK_PLAYERS_PATH);
156+
}
157+
158+
@Override
159+
public boolean isHologramsForOldClientsEnabled() {
160+
return !(boolean) config.get(DISABLE_HOLOGRAMS_FOR_OLD_CLIENTS);
161+
}
128162
}

plugins/fancyholograms/src/main/java/de/oliver/fancyholograms/config/FHFeatureFlags.java

Lines changed: 0 additions & 19 deletions
This file was deleted.

plugins/fancyholograms/src/main/java/de/oliver/fancyholograms/hologram/version/HologramImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import de.oliver.fancyholograms.api.events.HologramDespawnEvent;
77
import de.oliver.fancyholograms.api.events.HologramSpawnEvent;
88
import de.oliver.fancyholograms.api.hologram.Hologram;
9-
import de.oliver.fancyholograms.config.FHFeatureFlags;
9+
import de.oliver.fancyholograms.main.FancyHologramsPlugin;
1010
import de.oliver.fancyholograms.util.PluginUtils;
1111
import de.oliver.fancysitula.api.entities.*;
1212
import de.oliver.fancysitula.factories.FancySitula;
@@ -49,7 +49,7 @@ public void spawnTo(@NotNull final Player player) {
4949
return;
5050
}
5151

52-
if (FHFeatureFlags.DISABLE_HOLOGRAMS_FOR_OLD_CLIENTS.isEnabled()) {
52+
if (FancyHologramsPlugin.get().getFHConfiguration().isHologramsForOldClientsEnabled()) {
5353
final var protocolVersion = PluginUtils.isViaVersionEnabled() ? Via.getAPI().getPlayerVersion(player.getUniqueId()) : MINIMUM_PROTOCOL_VERSION;
5454
if (protocolVersion < MINIMUM_PROTOCOL_VERSION) {
5555
FancyHolograms.get().getFancyLogger().debug("Player " + player.getName() + " is using an outdated protocol version (" + protocolVersion + "). Hologram will not be shown.");

plugins/fancyholograms/src/main/java/de/oliver/fancyholograms/listeners/BedrockPlayerListener.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package de.oliver.fancyholograms.listeners;
22

33
import de.oliver.fancyholograms.api.events.HologramSpawnEvent;
4-
import de.oliver.fancyholograms.config.FHFeatureFlags;
4+
import de.oliver.fancyholograms.main.FancyHologramsPlugin;
55
import de.oliver.fancyholograms.util.PluginUtils;
66
import org.bukkit.event.EventHandler;
77
import org.bukkit.event.Listener;
@@ -11,7 +11,7 @@ public class BedrockPlayerListener implements Listener {
1111

1212
@EventHandler
1313
public void onHologramShow(final HologramSpawnEvent event) {
14-
if (FHFeatureFlags.DISABLE_HOLOGRAMS_FOR_BEDROCK_PLAYERS.isEnabled() && PluginUtils.isFloodgateEnabled()) {
14+
if (FancyHologramsPlugin.get().getFHConfiguration().isHologramsForBedrockPlayersEnabled() && PluginUtils.isFloodgateEnabled()) {
1515
boolean isBedrockPlayer = FloodgateApi.getInstance().isFloodgatePlayer(event.getPlayer().getUniqueId());
1616
if (isBedrockPlayer) {
1717
event.setCancelled(true);

plugins/fancyholograms/src/main/java/de/oliver/fancyholograms/main/FancyHologramsPlugin.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import de.oliver.fancyholograms.commands.FancyHologramsTestCMD;
1717
import de.oliver.fancyholograms.commands.HologramCMD;
1818
import de.oliver.fancyholograms.config.FHConfiguration;
19-
import de.oliver.fancyholograms.config.FHFeatureFlags;
2019
import de.oliver.fancyholograms.controller.HologramControllerImpl;
2120
import de.oliver.fancyholograms.converter.FHConversionRegistry;
2221
import de.oliver.fancyholograms.hologram.version.*;
@@ -131,7 +130,6 @@ public static boolean canGet() {
131130

132131
@Override
133132
public void onLoad() {
134-
FHFeatureFlags.load();
135133
configuration.init();
136134

137135
LogLevel logLevel;
@@ -276,7 +274,7 @@ private void registerListeners() {
276274
getServer().getPluginManager().registerEvents(new NpcListener(this), this);
277275
}
278276

279-
if (FHFeatureFlags.DISABLE_HOLOGRAMS_FOR_BEDROCK_PLAYERS.isEnabled() && PluginUtils.isFloodgateEnabled()) {
277+
if (configuration.isHologramsForBedrockPlayersEnabled() && PluginUtils.isFloodgateEnabled()) {
280278
getServer().getPluginManager().registerEvents(new BedrockPlayerListener(), this);
281279
}
282280
}

plugins/fancyholograms/src/main/java/de/oliver/fancyholograms/metrics/FHMetrics.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import de.oliver.fancyanalytics.api.metrics.MetricSupplier;
55
import de.oliver.fancyanalytics.logger.ExtendedFancyLogger;
66
import de.oliver.fancyholograms.api.HologramRegistry;
7-
import de.oliver.fancyholograms.config.FHFeatureFlags;
87
import de.oliver.fancyholograms.main.FancyHologramsPlugin;
98
import de.oliver.fancylib.Metrics;
109
import org.bukkit.Bukkit;
@@ -55,7 +54,7 @@ public void register() {
5554

5655
fancyAnalytics.registerNumberMetric(new MetricSupplier<>("amount_holograms", () -> (double) registry.getAll().size()));
5756
fancyAnalytics.registerStringMetric(new MetricSupplier<>("enabled_update_notifications", () -> FancyHologramsPlugin.get().getFHConfiguration().areVersionNotificationsMuted() ? "false" : "true"));
58-
fancyAnalytics.registerStringMetric(new MetricSupplier<>("fflag_disable_holograms_for_bedrock_players", () -> FHFeatureFlags.DISABLE_HOLOGRAMS_FOR_BEDROCK_PLAYERS.isEnabled() ? "true" : "false"));
57+
fancyAnalytics.registerStringMetric(new MetricSupplier<>("fflag_disable_holograms_for_bedrock_players", () -> FancyHologramsPlugin.get().getFHConfiguration().isHologramsForBedrockPlayersEnabled() ? "false" : "true"));
5958
fancyAnalytics.registerStringMetric(new MetricSupplier<>("using_development_build", () -> FancyHologramsPlugin.get().getVersionConfig().isDevelopmentBuild() ? "true" : "false"));
6059

6160
fancyAnalytics.registerStringArrayMetric(new MetricSupplier<>("hologram_type", () -> {

0 commit comments

Comments
 (0)