From 32eb710d14b4a4e26e7d6fece7e44a04292265e9 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 27 Dec 2024 20:48:47 +0100 Subject: [PATCH] Cleanup plugin main class --- ...logramsPlugin.java => FancyHolograms.java} | 25 +- .../api/HologramConfiguration.java | 2 +- .../fancyholograms/api/data/HologramData.java | 6 +- .../fancyholograms/HologramManagerImpl.java | 4 +- .../commands/FancyHologramsCMD.java | 3 +- .../commands/FancyHologramsTestCMD.java | 4 +- .../fancyholograms/commands/HologramCMD.java | 2 +- .../commands/hologram/BackgroundCMD.java | 4 +- .../commands/hologram/BillboardCMD.java | 4 +- .../commands/hologram/BlockCMD.java | 4 +- .../commands/hologram/BrightnessCMD.java | 2 +- .../commands/hologram/CenterCMD.java | 2 +- .../commands/hologram/CopyCMD.java | 4 +- .../commands/hologram/CreateCMD.java | 9 +- .../commands/hologram/InsertAfterCMD.java | 4 +- .../commands/hologram/InsertBeforeCMD.java | 4 +- .../commands/hologram/ItemCMD.java | 4 +- .../commands/hologram/LinkWithNpcCMD.java | 2 +- .../commands/hologram/ListCMD.java | 2 +- .../commands/hologram/MoveHereCMD.java | 4 +- .../commands/hologram/NearbyCMD.java | 2 +- .../commands/hologram/RemoveCMD.java | 7 +- .../commands/hologram/ScaleCMD.java | 4 +- .../commands/hologram/SeeThroughCMD.java | 4 +- .../commands/hologram/SetLineCMD.java | 4 +- .../commands/hologram/ShadowRadiusCMD.java | 4 +- .../commands/hologram/ShadowStrengthCMD.java | 4 +- .../commands/hologram/TextAlignmentCMD.java | 4 +- .../commands/hologram/TextShadowCMD.java | 4 +- .../commands/hologram/TranslateCommand.java | 4 +- .../commands/hologram/UnlinkWithNpcCMD.java | 2 +- .../hologram/UpdateTextIntervalCMD.java | 4 +- .../commands/hologram/VisibilityCMD.java | 4 +- .../hologram/VisibilityDistanceCMD.java | 4 +- .../config/FHConfiguration.java | 7 +- .../fancyholograms/listeners/NpcListener.java | 2 +- .../listeners/PlayerListener.java | 11 +- .../fancyholograms/main/FancyHolograms.java | 291 +++++++----------- .../fancyholograms/metrics/FHMetrics.java | 87 ++++++ .../storage/FlatFileHologramStorage.java | 4 +- .../storage/converter/HologramConverter.java | 4 +- 41 files changed, 280 insertions(+), 276 deletions(-) rename api/src/main/java/de/oliver/fancyholograms/api/{FancyHologramsPlugin.java => FancyHolograms.java} (68%) create mode 100644 src/main/java/de/oliver/fancyholograms/metrics/FHMetrics.java diff --git a/api/src/main/java/de/oliver/fancyholograms/api/FancyHologramsPlugin.java b/api/src/main/java/de/oliver/fancyholograms/api/FancyHolograms.java similarity index 68% rename from api/src/main/java/de/oliver/fancyholograms/api/FancyHologramsPlugin.java rename to api/src/main/java/de/oliver/fancyholograms/api/FancyHolograms.java index 82cd3da7..7af41477 100644 --- a/api/src/main/java/de/oliver/fancyholograms/api/FancyHologramsPlugin.java +++ b/api/src/main/java/de/oliver/fancyholograms/api/FancyHolograms.java @@ -7,9 +7,9 @@ import java.util.concurrent.ScheduledExecutorService; -public interface FancyHologramsPlugin { +public interface FancyHolograms { - static FancyHologramsPlugin get() { + static FancyHolograms get() { if (isEnabled()) { return EnabledChecker.getPlugin(); } @@ -34,14 +34,6 @@ static boolean isEnabled() { */ HologramConfiguration getHologramConfiguration(); - /** - * Sets the configuration of the plugin. - * - * @param configuration The new configuration. - * @param reload Whether the configuration should be reloaded. - */ - void setHologramConfiguration(HologramConfiguration configuration, boolean reload); - /** * @return The hologram storage. */ @@ -52,18 +44,11 @@ static boolean isEnabled() { */ ScheduledExecutorService getHologramThread(); - /** - * Sets the hologram storage. - * - * @param storage The new hologram storage. - * @param reload Whether the current hologram cache should be reloaded. - */ - void setHologramStorage(HologramStorage storage, boolean reload); class EnabledChecker { private static Boolean enabled; - private static FancyHologramsPlugin plugin; + private static FancyHolograms plugin; public static Boolean isFancyHologramsEnabled() { if (enabled != null) return enabled; @@ -72,7 +57,7 @@ public static Boolean isFancyHologramsEnabled() { if (pl != null && pl.isEnabled()) { try { - plugin = (FancyHologramsPlugin) pl; + plugin = (FancyHolograms) pl; } catch (ClassCastException e) { throw new IllegalStateException("API failed to access plugin, if using the FancyHolograms API make sure to set the dependency to compile only."); } @@ -84,7 +69,7 @@ public static Boolean isFancyHologramsEnabled() { return false; } - public static FancyHologramsPlugin getPlugin() { + public static FancyHolograms getPlugin() { return plugin; } } diff --git a/api/src/main/java/de/oliver/fancyholograms/api/HologramConfiguration.java b/api/src/main/java/de/oliver/fancyholograms/api/HologramConfiguration.java index d5fba997..fa0a5b17 100644 --- a/api/src/main/java/de/oliver/fancyholograms/api/HologramConfiguration.java +++ b/api/src/main/java/de/oliver/fancyholograms/api/HologramConfiguration.java @@ -9,7 +9,7 @@ public interface HologramConfiguration { * * @param plugin The plugin instance. */ - void reload(@NotNull FancyHologramsPlugin plugin); + void reload(@NotNull FancyHolograms plugin); /** * Returns whether version notifications are muted. diff --git a/api/src/main/java/de/oliver/fancyholograms/api/data/HologramData.java b/api/src/main/java/de/oliver/fancyholograms/api/data/HologramData.java index 3c14aa36..ddeb7d31 100644 --- a/api/src/main/java/de/oliver/fancyholograms/api/data/HologramData.java +++ b/api/src/main/java/de/oliver/fancyholograms/api/data/HologramData.java @@ -1,6 +1,6 @@ package de.oliver.fancyholograms.api.data; -import de.oliver.fancyholograms.api.FancyHologramsPlugin; +import de.oliver.fancyholograms.api.FancyHolograms; import de.oliver.fancyholograms.api.data.property.Visibility; import de.oliver.fancyholograms.api.hologram.HologramType; import org.bukkit.Bukkit; @@ -78,7 +78,7 @@ public int getVisibilityDistance() { return visibilityDistance; } - return FancyHologramsPlugin.get().getHologramConfiguration().getDefaultVisibilityDistance(); + return FancyHolograms.get().getHologramConfiguration().getDefaultVisibilityDistance(); } public HologramData setVisibilityDistance(int visibilityDistance) { @@ -145,7 +145,7 @@ public boolean read(ConfigurationSection section, String name) { World world = Bukkit.getWorld(worldName); if (world == null) { - FancyHologramsPlugin.get().getFancyLogger().warn("Could not load hologram '" + name + "', because the world '" + worldName + "' is not loaded"); + FancyHolograms.get().getFancyLogger().warn("Could not load hologram '" + name + "', because the world '" + worldName + "' is not loaded"); return false; } diff --git a/src/main/java/de/oliver/fancyholograms/HologramManagerImpl.java b/src/main/java/de/oliver/fancyholograms/HologramManagerImpl.java index 5b3983d7..078d0651 100644 --- a/src/main/java/de/oliver/fancyholograms/HologramManagerImpl.java +++ b/src/main/java/de/oliver/fancyholograms/HologramManagerImpl.java @@ -45,7 +45,7 @@ public final class HologramManagerImpl implements HologramManager { */ private boolean isLoaded = false; - HologramManagerImpl(@NotNull final FancyHolograms plugin, @NotNull final Function adapter) { + public HologramManagerImpl(@NotNull final FancyHolograms plugin, @NotNull final Function adapter) { this.plugin = plugin; this.adapter = adapter; } @@ -176,7 +176,7 @@ public void loadHolograms(String world) { *

* This method is intended to be called internally by the plugin. */ - void initializeTasks() { + public void initializeTasks() { ScheduledExecutorService hologramThread = plugin.getHologramThread(); hologramThread.submit(() -> { loadHolograms(); diff --git a/src/main/java/de/oliver/fancyholograms/commands/FancyHologramsCMD.java b/src/main/java/de/oliver/fancyholograms/commands/FancyHologramsCMD.java index 2353c0c8..2924b72e 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/FancyHologramsCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/FancyHologramsCMD.java @@ -1,8 +1,8 @@ package de.oliver.fancyholograms.commands; -import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancyholograms.api.data.HologramData; import de.oliver.fancyholograms.api.hologram.Hologram; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancyholograms.storage.converter.ConverterTarget; import de.oliver.fancyholograms.storage.converter.FHConversionRegistry; import de.oliver.fancyholograms.storage.converter.HologramConversionSession; @@ -44,7 +44,6 @@ public boolean execute(@NotNull CommandSender sender, @NotNull String label, @No case "reload" -> { this.plugin.getHologramConfiguration().reload(plugin); this.plugin.getHologramsManager().reloadHolograms(); - this.plugin.reloadCommands(); MessageHelper.success(sender, "Reloaded config and holograms"); } diff --git a/src/main/java/de/oliver/fancyholograms/commands/FancyHologramsTestCMD.java b/src/main/java/de/oliver/fancyholograms/commands/FancyHologramsTestCMD.java index 568ccf3e..684753e4 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/FancyHologramsTestCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/FancyHologramsTestCMD.java @@ -1,8 +1,8 @@ package de.oliver.fancyholograms.commands; -import de.oliver.fancyholograms.main.FancyHolograms; -import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.api.data.TextHologramData; +import de.oliver.fancyholograms.api.hologram.Hologram; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancylib.MessageHelper; import org.bukkit.Color; import org.bukkit.command.Command; diff --git a/src/main/java/de/oliver/fancyholograms/commands/HologramCMD.java b/src/main/java/de/oliver/fancyholograms/commands/HologramCMD.java index d90fd34d..3c6073cf 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/HologramCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/HologramCMD.java @@ -1,7 +1,6 @@ package de.oliver.fancyholograms.commands; import com.google.common.primitives.Ints; -import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancyholograms.api.data.DisplayHologramData; import de.oliver.fancyholograms.api.data.HologramData; import de.oliver.fancyholograms.api.data.TextHologramData; @@ -9,6 +8,7 @@ import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.api.hologram.HologramType; import de.oliver.fancyholograms.commands.hologram.*; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancyholograms.util.Constants; import de.oliver.fancyholograms.util.PluginUtils; import de.oliver.fancylib.MessageHelper; diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/BackgroundCMD.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/BackgroundCMD.java index 0cde2f2a..64c6eee5 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/BackgroundCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/BackgroundCMD.java @@ -1,11 +1,11 @@ package de.oliver.fancyholograms.commands.hologram; -import de.oliver.fancyholograms.main.FancyHolograms; -import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.api.data.TextHologramData; import de.oliver.fancyholograms.api.events.HologramUpdateEvent; +import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.commands.HologramCMD; import de.oliver.fancyholograms.commands.Subcommand; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancylib.MessageHelper; import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Color; diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/BillboardCMD.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/BillboardCMD.java index 3c7370f9..7bc269e5 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/BillboardCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/BillboardCMD.java @@ -1,12 +1,12 @@ package de.oliver.fancyholograms.commands.hologram; import com.google.common.base.Enums; -import de.oliver.fancyholograms.main.FancyHolograms; -import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.api.data.DisplayHologramData; import de.oliver.fancyholograms.api.events.HologramUpdateEvent; +import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.commands.HologramCMD; import de.oliver.fancyholograms.commands.Subcommand; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancylib.MessageHelper; import org.apache.commons.lang3.StringUtils; import org.bukkit.command.CommandSender; diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/BlockCMD.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/BlockCMD.java index 8d8da746..600ea7c6 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/BlockCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/BlockCMD.java @@ -1,11 +1,11 @@ package de.oliver.fancyholograms.commands.hologram; -import de.oliver.fancyholograms.main.FancyHolograms; -import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.api.data.BlockHologramData; import de.oliver.fancyholograms.api.events.HologramUpdateEvent; +import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.commands.HologramCMD; import de.oliver.fancyholograms.commands.Subcommand; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancylib.MessageHelper; import org.bukkit.Material; import org.bukkit.command.CommandSender; diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/BrightnessCMD.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/BrightnessCMD.java index 66252dfc..198bc242 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/BrightnessCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/BrightnessCMD.java @@ -1,9 +1,9 @@ package de.oliver.fancyholograms.commands.hologram; -import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancyholograms.api.data.DisplayHologramData; import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.commands.Subcommand; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancyholograms.util.NumberHelper; import de.oliver.fancylib.MessageHelper; import org.bukkit.command.CommandSender; diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/CenterCMD.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/CenterCMD.java index 0c2a81ad..b1e93fb3 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/CenterCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/CenterCMD.java @@ -1,8 +1,8 @@ package de.oliver.fancyholograms.commands.hologram; -import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.commands.Subcommand; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancyholograms.util.Constants; import de.oliver.fancylib.MessageHelper; import org.bukkit.Location; diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/CopyCMD.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/CopyCMD.java index c06fa5e5..7c30b3da 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/CopyCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/CopyCMD.java @@ -1,9 +1,9 @@ package de.oliver.fancyholograms.commands.hologram; -import de.oliver.fancyholograms.main.FancyHolograms; -import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.api.events.HologramCreateEvent; +import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.commands.Subcommand; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancylib.MessageHelper; import org.bukkit.Bukkit; import org.bukkit.Location; diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/CreateCMD.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/CreateCMD.java index d5fd5411..fbfc97f3 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/CreateCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/CreateCMD.java @@ -1,11 +1,14 @@ package de.oliver.fancyholograms.commands.hologram; -import de.oliver.fancyholograms.main.FancyHolograms; +import de.oliver.fancyholograms.api.data.BlockHologramData; +import de.oliver.fancyholograms.api.data.DisplayHologramData; +import de.oliver.fancyholograms.api.data.ItemHologramData; +import de.oliver.fancyholograms.api.data.TextHologramData; +import de.oliver.fancyholograms.api.events.HologramCreateEvent; import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.api.hologram.HologramType; -import de.oliver.fancyholograms.api.data.*; -import de.oliver.fancyholograms.api.events.HologramCreateEvent; import de.oliver.fancyholograms.commands.Subcommand; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancylib.MessageHelper; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/InsertAfterCMD.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/InsertAfterCMD.java index 9a67deff..117ed958 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/InsertAfterCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/InsertAfterCMD.java @@ -1,12 +1,12 @@ package de.oliver.fancyholograms.commands.hologram; import com.google.common.primitives.Ints; -import de.oliver.fancyholograms.main.FancyHolograms; -import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.api.data.TextHologramData; import de.oliver.fancyholograms.api.events.HologramUpdateEvent; +import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.commands.HologramCMD; import de.oliver.fancyholograms.commands.Subcommand; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancylib.MessageHelper; import org.bukkit.command.CommandSender; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/InsertBeforeCMD.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/InsertBeforeCMD.java index 413e5807..1a6e6848 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/InsertBeforeCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/InsertBeforeCMD.java @@ -1,12 +1,12 @@ package de.oliver.fancyholograms.commands.hologram; import com.google.common.primitives.Ints; -import de.oliver.fancyholograms.main.FancyHolograms; -import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.api.data.TextHologramData; import de.oliver.fancyholograms.api.events.HologramUpdateEvent; +import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.commands.HologramCMD; import de.oliver.fancyholograms.commands.Subcommand; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancylib.MessageHelper; import org.bukkit.command.CommandSender; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/ItemCMD.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/ItemCMD.java index e90f3bcc..8b6ace97 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/ItemCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/ItemCMD.java @@ -1,11 +1,11 @@ package de.oliver.fancyholograms.commands.hologram; -import de.oliver.fancyholograms.main.FancyHolograms; -import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.api.data.ItemHologramData; import de.oliver.fancyholograms.api.events.HologramUpdateEvent; +import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.commands.HologramCMD; import de.oliver.fancyholograms.commands.Subcommand; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancylib.MessageHelper; import org.bukkit.Material; import org.bukkit.command.CommandSender; diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/LinkWithNpcCMD.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/LinkWithNpcCMD.java index c9316bb2..f3a58e6b 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/LinkWithNpcCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/LinkWithNpcCMD.java @@ -1,8 +1,8 @@ package de.oliver.fancyholograms.commands.hologram; -import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.commands.Subcommand; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancyholograms.util.PluginUtils; import de.oliver.fancylib.MessageHelper; import de.oliver.fancynpcs.api.FancyNpcsPlugin; diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/ListCMD.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/ListCMD.java index 93ef8e65..8d03f751 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/ListCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/ListCMD.java @@ -1,9 +1,9 @@ package de.oliver.fancyholograms.commands.hologram; import com.google.common.primitives.Ints; -import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.commands.Subcommand; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancyholograms.util.Constants; import de.oliver.fancylib.MessageHelper; import org.bukkit.command.CommandSender; diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/MoveHereCMD.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/MoveHereCMD.java index 637c5032..59a18077 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/MoveHereCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/MoveHereCMD.java @@ -1,11 +1,11 @@ package de.oliver.fancyholograms.commands.hologram; import com.google.common.primitives.Doubles; -import de.oliver.fancyholograms.main.FancyHolograms; -import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.api.events.HologramUpdateEvent; +import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.commands.HologramCMD; import de.oliver.fancyholograms.commands.Subcommand; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancyholograms.util.Constants; import de.oliver.fancylib.MessageHelper; import org.apache.commons.lang3.StringUtils; diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/NearbyCMD.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/NearbyCMD.java index 3f33cbee..61a60da8 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/NearbyCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/NearbyCMD.java @@ -1,8 +1,8 @@ package de.oliver.fancyholograms.commands.hologram; -import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.commands.Subcommand; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancyholograms.util.Constants; import de.oliver.fancyholograms.util.NumberHelper; import de.oliver.fancylib.MessageHelper; diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/RemoveCMD.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/RemoveCMD.java index b846f252..022b6c0f 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/RemoveCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/RemoveCMD.java @@ -1,7 +1,6 @@ package de.oliver.fancyholograms.commands.hologram; -import de.oliver.fancyholograms.main.FancyHolograms; -import de.oliver.fancyholograms.api.FancyHologramsPlugin; +import de.oliver.fancyholograms.api.FancyHolograms; import de.oliver.fancyholograms.api.events.HologramDeleteEvent; import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.commands.Subcommand; @@ -32,8 +31,8 @@ public boolean run(@NotNull CommandSender player, @Nullable Hologram hologram, @ return false; } - FancyHologramsPlugin.get().getHologramThread().submit(() -> { - FancyHolograms.get().getHologramsManager().removeHologram(hologram); + FancyHolograms.get().getHologramThread().submit(() -> { + de.oliver.fancyholograms.main.FancyHolograms.get().getHologramsManager().removeHologram(hologram); MessageHelper.success(player, "Removed the hologram"); }); diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/ScaleCMD.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/ScaleCMD.java index 843a839e..865f0a38 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/ScaleCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/ScaleCMD.java @@ -1,12 +1,12 @@ package de.oliver.fancyholograms.commands.hologram; import com.google.common.primitives.Floats; -import de.oliver.fancyholograms.main.FancyHolograms; -import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.api.data.DisplayHologramData; import de.oliver.fancyholograms.api.events.HologramUpdateEvent; +import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.commands.HologramCMD; import de.oliver.fancyholograms.commands.Subcommand; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancylib.MessageHelper; import org.bukkit.command.CommandSender; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/SeeThroughCMD.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/SeeThroughCMD.java index 5010277a..7b96d27f 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/SeeThroughCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/SeeThroughCMD.java @@ -1,11 +1,11 @@ package de.oliver.fancyholograms.commands.hologram; -import de.oliver.fancyholograms.main.FancyHolograms; -import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.api.data.TextHologramData; import de.oliver.fancyholograms.api.events.HologramUpdateEvent; +import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.commands.HologramCMD; import de.oliver.fancyholograms.commands.Subcommand; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancylib.MessageHelper; import org.bukkit.command.CommandSender; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/SetLineCMD.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/SetLineCMD.java index 6af0eecf..67a5a6f6 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/SetLineCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/SetLineCMD.java @@ -1,12 +1,12 @@ package de.oliver.fancyholograms.commands.hologram; import com.google.common.primitives.Ints; -import de.oliver.fancyholograms.main.FancyHolograms; -import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.api.data.TextHologramData; import de.oliver.fancyholograms.api.events.HologramUpdateEvent; +import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.commands.HologramCMD; import de.oliver.fancyholograms.commands.Subcommand; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancylib.MessageHelper; import org.bukkit.command.CommandSender; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/ShadowRadiusCMD.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/ShadowRadiusCMD.java index f13acf66..1d7c3948 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/ShadowRadiusCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/ShadowRadiusCMD.java @@ -1,12 +1,12 @@ package de.oliver.fancyholograms.commands.hologram; import com.google.common.primitives.Floats; -import de.oliver.fancyholograms.main.FancyHolograms; -import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.api.data.DisplayHologramData; import de.oliver.fancyholograms.api.events.HologramUpdateEvent; +import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.commands.HologramCMD; import de.oliver.fancyholograms.commands.Subcommand; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancylib.MessageHelper; import org.bukkit.command.CommandSender; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/ShadowStrengthCMD.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/ShadowStrengthCMD.java index 2480f717..02144a64 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/ShadowStrengthCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/ShadowStrengthCMD.java @@ -1,12 +1,12 @@ package de.oliver.fancyholograms.commands.hologram; import com.google.common.primitives.Floats; -import de.oliver.fancyholograms.main.FancyHolograms; -import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.api.data.DisplayHologramData; import de.oliver.fancyholograms.api.events.HologramUpdateEvent; +import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.commands.HologramCMD; import de.oliver.fancyholograms.commands.Subcommand; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancylib.MessageHelper; import org.bukkit.command.CommandSender; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/TextAlignmentCMD.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/TextAlignmentCMD.java index 28055689..292e1ac5 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/TextAlignmentCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/TextAlignmentCMD.java @@ -1,12 +1,12 @@ package de.oliver.fancyholograms.commands.hologram; import com.google.common.base.Enums; -import de.oliver.fancyholograms.main.FancyHolograms; -import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.api.data.TextHologramData; import de.oliver.fancyholograms.api.events.HologramUpdateEvent; +import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.commands.HologramCMD; import de.oliver.fancyholograms.commands.Subcommand; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancylib.MessageHelper; import org.bukkit.command.CommandSender; import org.bukkit.entity.TextDisplay; diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/TextShadowCMD.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/TextShadowCMD.java index 77a40aa3..732911cc 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/TextShadowCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/TextShadowCMD.java @@ -1,11 +1,11 @@ package de.oliver.fancyholograms.commands.hologram; -import de.oliver.fancyholograms.main.FancyHolograms; -import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.api.data.TextHologramData; import de.oliver.fancyholograms.api.events.HologramUpdateEvent; +import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.commands.HologramCMD; import de.oliver.fancyholograms.commands.Subcommand; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancylib.MessageHelper; import org.bukkit.command.CommandSender; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/TranslateCommand.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/TranslateCommand.java index f5aa115a..edd8513b 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/TranslateCommand.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/TranslateCommand.java @@ -1,12 +1,12 @@ package de.oliver.fancyholograms.commands.hologram; import com.google.common.primitives.Floats; -import de.oliver.fancyholograms.main.FancyHolograms; -import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.api.data.DisplayHologramData; import de.oliver.fancyholograms.api.events.HologramUpdateEvent; +import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.commands.HologramCMD; import de.oliver.fancyholograms.commands.Subcommand; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancylib.MessageHelper; import org.bukkit.command.CommandSender; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/UnlinkWithNpcCMD.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/UnlinkWithNpcCMD.java index 412ccf77..80533250 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/UnlinkWithNpcCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/UnlinkWithNpcCMD.java @@ -1,8 +1,8 @@ package de.oliver.fancyholograms.commands.hologram; -import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.commands.Subcommand; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancyholograms.util.PluginUtils; import de.oliver.fancylib.MessageHelper; import de.oliver.fancynpcs.api.FancyNpcsPlugin; diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/UpdateTextIntervalCMD.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/UpdateTextIntervalCMD.java index 6c59adf2..181eb5dd 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/UpdateTextIntervalCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/UpdateTextIntervalCMD.java @@ -1,12 +1,12 @@ package de.oliver.fancyholograms.commands.hologram; import com.google.common.primitives.Ints; -import de.oliver.fancyholograms.main.FancyHolograms; -import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.api.data.TextHologramData; import de.oliver.fancyholograms.api.events.HologramUpdateEvent; +import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.commands.HologramCMD; import de.oliver.fancyholograms.commands.Subcommand; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancylib.MessageHelper; import org.bukkit.command.CommandSender; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/VisibilityCMD.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/VisibilityCMD.java index d72dc07b..4294aed3 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/VisibilityCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/VisibilityCMD.java @@ -1,9 +1,9 @@ package de.oliver.fancyholograms.commands.hologram; -import de.oliver.fancyholograms.main.FancyHolograms; -import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.api.data.property.Visibility; +import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.commands.Subcommand; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancylib.MessageHelper; import org.bukkit.command.CommandSender; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/de/oliver/fancyholograms/commands/hologram/VisibilityDistanceCMD.java b/src/main/java/de/oliver/fancyholograms/commands/hologram/VisibilityDistanceCMD.java index d04d4550..caed1ac9 100644 --- a/src/main/java/de/oliver/fancyholograms/commands/hologram/VisibilityDistanceCMD.java +++ b/src/main/java/de/oliver/fancyholograms/commands/hologram/VisibilityDistanceCMD.java @@ -1,11 +1,11 @@ package de.oliver.fancyholograms.commands.hologram; import com.google.common.primitives.Ints; -import de.oliver.fancyholograms.main.FancyHolograms; -import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.api.events.HologramUpdateEvent; +import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.commands.HologramCMD; import de.oliver.fancyholograms.commands.Subcommand; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancylib.MessageHelper; import org.bukkit.command.CommandSender; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/de/oliver/fancyholograms/config/FHConfiguration.java b/src/main/java/de/oliver/fancyholograms/config/FHConfiguration.java index 78789bdc..0819f7b7 100644 --- a/src/main/java/de/oliver/fancyholograms/config/FHConfiguration.java +++ b/src/main/java/de/oliver/fancyholograms/config/FHConfiguration.java @@ -1,8 +1,7 @@ package de.oliver.fancyholograms.config; -import de.oliver.fancyholograms.api.FancyHologramsPlugin; +import de.oliver.fancyholograms.api.FancyHolograms; import de.oliver.fancyholograms.api.HologramConfiguration; -import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancylib.ConfigHelper; import org.jetbrains.annotations.NotNull; @@ -52,8 +51,8 @@ public final class FHConfiguration implements HologramConfiguration { private String logLevel; @Override - public void reload(@NotNull FancyHologramsPlugin plugin) { - FancyHolograms pluginImpl = (FancyHolograms) plugin; + public void reload(@NotNull FancyHolograms plugin) { + de.oliver.fancyholograms.main.FancyHolograms pluginImpl = (de.oliver.fancyholograms.main.FancyHolograms) plugin; pluginImpl.reloadConfig(); final var config = pluginImpl.getConfig(); diff --git a/src/main/java/de/oliver/fancyholograms/listeners/NpcListener.java b/src/main/java/de/oliver/fancyholograms/listeners/NpcListener.java index a2bcb661..35dd4afb 100644 --- a/src/main/java/de/oliver/fancyholograms/listeners/NpcListener.java +++ b/src/main/java/de/oliver/fancyholograms/listeners/NpcListener.java @@ -1,8 +1,8 @@ package de.oliver.fancyholograms.listeners; -import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancyholograms.api.data.HologramData; import de.oliver.fancyholograms.api.hologram.Hologram; +import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancylib.FancyLib; import de.oliver.fancylib.MessageHelper; import de.oliver.fancynpcs.api.events.NpcModifyEvent; diff --git a/src/main/java/de/oliver/fancyholograms/listeners/PlayerListener.java b/src/main/java/de/oliver/fancyholograms/listeners/PlayerListener.java index 452e7357..ffbc06e6 100644 --- a/src/main/java/de/oliver/fancyholograms/listeners/PlayerListener.java +++ b/src/main/java/de/oliver/fancyholograms/listeners/PlayerListener.java @@ -1,21 +1,16 @@ package de.oliver.fancyholograms.listeners; -import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancyholograms.api.hologram.Hologram; +import de.oliver.fancyholograms.main.FancyHolograms; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.*; import org.bukkit.event.player.PlayerResourcePackStatusEvent.Status; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - import org.jetbrains.annotations.NotNull; +import java.util.*; + public final class PlayerListener implements Listener { private final @NotNull FancyHolograms plugin; diff --git a/src/main/java/de/oliver/fancyholograms/main/FancyHolograms.java b/src/main/java/de/oliver/fancyholograms/main/FancyHolograms.java index 70505469..203c8031 100644 --- a/src/main/java/de/oliver/fancyholograms/main/FancyHolograms.java +++ b/src/main/java/de/oliver/fancyholograms/main/FancyHolograms.java @@ -1,15 +1,12 @@ package de.oliver.fancyholograms.main; import com.google.common.util.concurrent.ThreadFactoryBuilder; -import de.oliver.fancyanalytics.api.FancyAnalyticsAPI; -import de.oliver.fancyanalytics.api.metrics.MetricSupplier; import de.oliver.fancyanalytics.logger.ExtendedFancyLogger; import de.oliver.fancyanalytics.logger.LogLevel; import de.oliver.fancyanalytics.logger.appender.Appender; import de.oliver.fancyanalytics.logger.appender.ConsoleAppender; import de.oliver.fancyanalytics.logger.appender.JsonAppender; import de.oliver.fancyholograms.HologramManagerImpl; -import de.oliver.fancyholograms.api.FancyHologramsPlugin; import de.oliver.fancyholograms.api.HologramConfiguration; import de.oliver.fancyholograms.api.HologramManager; import de.oliver.fancyholograms.api.HologramStorage; @@ -25,11 +22,11 @@ import de.oliver.fancyholograms.listeners.NpcListener; import de.oliver.fancyholograms.listeners.PlayerListener; import de.oliver.fancyholograms.listeners.WorldListener; +import de.oliver.fancyholograms.metrics.FHMetrics; import de.oliver.fancyholograms.storage.FlatFileHologramStorage; import de.oliver.fancyholograms.storage.converter.FHConversionRegistry; import de.oliver.fancyholograms.util.PluginUtils; import de.oliver.fancylib.FancyLib; -import de.oliver.fancylib.Metrics; import de.oliver.fancylib.VersionConfig; import de.oliver.fancylib.serverSoftware.ServerSoftware; import de.oliver.fancylib.versionFetcher.MasterVersionFetcher; @@ -55,28 +52,24 @@ import static java.util.concurrent.CompletableFuture.supplyAsync; -public final class FancyHolograms extends JavaPlugin implements FancyHologramsPlugin { +public final class FancyHolograms extends JavaPlugin implements de.oliver.fancyholograms.api.FancyHolograms { private static @Nullable FancyHolograms INSTANCE; + private final ExtendedFancyLogger fancyLogger; - private final VersionFetcher versionFetcher = new MasterVersionFetcher("FancyHolograms"); - private final VersionConfig versionConfig = new VersionConfig(this, versionFetcher); - private final ScheduledExecutorService hologramThread = Executors.newSingleThreadScheduledExecutor( - new ThreadFactoryBuilder() - .setNameFormat("FancyHolograms-Holograms") - .build() - ); - private final ExecutorService fileStorageExecutor = Executors.newSingleThreadExecutor( - new ThreadFactoryBuilder() - .setDaemon(true) - .setPriority(Thread.MIN_PRIORITY + 1) - .setNameFormat("FancyHolograms-FileStorageExecutor") - .build() - ); - private FancyAnalyticsAPI fancyAnalytics; - private HologramConfiguration configuration = new FHConfiguration(); - private HologramStorage hologramStorage = new FlatFileHologramStorage(); - private @Nullable HologramManagerImpl hologramsManager; + + private final FHMetrics metrics; + + private final VersionFetcher versionFetcher; + private final VersionConfig versionConfig; + + private final ScheduledExecutorService hologramThread; + private final ExecutorService storageThread; + + private final HologramConfiguration configuration; + private HologramStorage hologramStorage; + + private HologramManagerImpl hologramsManager; public FancyHolograms() { INSTANCE = this; @@ -93,7 +86,28 @@ public FancyHolograms() { } } JsonAppender jsonAppender = new JsonAppender(false, false, true, logsFile.getPath()); - this.fancyLogger = new ExtendedFancyLogger("FancyHolograms", LogLevel.INFO, List.of(consoleAppender, jsonAppender), new ArrayList<>()); + fancyLogger = new ExtendedFancyLogger("FancyHolograms", LogLevel.INFO, List.of(consoleAppender, jsonAppender), new ArrayList<>()); + + metrics = new FHMetrics(); + + versionFetcher = new MasterVersionFetcher("FancyHolograms"); + versionConfig = new VersionConfig(this, versionFetcher); + + hologramThread = Executors.newSingleThreadScheduledExecutor( + new ThreadFactoryBuilder() + .setNameFormat("FancyHolograms-Hologram") + .build() + ); + + storageThread = Executors.newSingleThreadExecutor( + new ThreadFactoryBuilder() + .setDaemon(true) + .setPriority(Thread.MIN_PRIORITY + 1) + .setNameFormat("FancyHolograms-Storage") + .build() + ); + + configuration = new FHConfiguration(); } public static @NotNull FancyHolograms get() { @@ -106,8 +120,31 @@ public static boolean canGet() { @Override public void onLoad() { - final var adapter = resolveHologramAdapter(); + FHFeatureFlags.load(); + configuration.reload(this); + + LogLevel logLevel; + try { + logLevel = LogLevel.valueOf(configuration.getLogLevel()); + } catch (IllegalArgumentException e) { + logLevel = LogLevel.INFO; + } + fancyLogger.setCurrentLevel(logLevel); + IFancySitula.LOGGER.setCurrentLevel(logLevel); + + hologramStorage = new FlatFileHologramStorage(); + + if (!ServerSoftware.isPaper()) { + fancyLogger.warn(""" + -------------------------------------------------- + It is recommended to use Paper as server software. + Because you are not using paper, the plugin + might not work correctly. + -------------------------------------------------- + """); + } + final var adapter = resolveHologramAdapter(); if (adapter == null) { List supportedVersions = new ArrayList<>(List.of("1.19.4", "1.20", "1.20.1", "1.20.2", "1.20.3", "1.20.4")); supportedVersions.addAll(ServerVersion.getSupportedVersions()); @@ -130,50 +167,27 @@ Please update the server to one of (%s). @Override public void onEnable() { - getHologramConfiguration().reload(this); // initialize configuration - - new FancyLib(INSTANCE); // initialize FancyLib - - if (!ServerSoftware.isPaper()) { - fancyLogger.warn(""" - -------------------------------------------------- - It is recommended to use Paper as server software. - Because you are not using paper, the plugin - might not work correctly. - -------------------------------------------------- - """); - } - - LogLevel logLevel; - try { - logLevel = LogLevel.valueOf(getHologramConfiguration().getLogLevel()); - } catch (IllegalArgumentException e) { - logLevel = LogLevel.INFO; - } - fancyLogger.setCurrentLevel(logLevel); - IFancySitula.LOGGER.setCurrentLevel(logLevel); - - FHFeatureFlags.load(); - - reloadCommands(); + new FancyLib(INSTANCE); + registerCommands(); registerListeners(); versionConfig.load(); - if (!getHologramConfiguration().areVersionNotificationsMuted()) { + if (!configuration.areVersionNotificationsMuted()) { checkForNewerVersion(); } - registerMetrics(); + metrics.register(); + metrics.registerLegacy(); - getHologramsManager().initializeTasks(); + hologramsManager.initializeTasks(); - if (getHologramConfiguration().isAutosaveEnabled()) { + if (configuration.isAutosaveEnabled()) { getHologramThread().scheduleAtFixedRate(() -> { if (hologramsManager != null) { hologramsManager.saveHolograms(); } - }, getHologramConfiguration().getAutosaveInterval(), getHologramConfiguration().getAutosaveInterval() * 60L, TimeUnit.SECONDS); + }, configuration.getAutosaveInterval(), configuration.getAutosaveInterval() * 60L, TimeUnit.SECONDS); } FHConversionRegistry.registerBuiltInConverters(); @@ -185,75 +199,11 @@ public void onEnable() { public void onDisable() { hologramsManager.saveHolograms(); hologramThread.shutdown(); - fileStorageExecutor.shutdown(); - INSTANCE = null; + storageThread.shutdown(); fancyLogger.info("Successfully disabled FancyHolograms version %s".formatted(getDescription().getVersion())); - } - - @Override - public JavaPlugin getPlugin() { - return INSTANCE; - } - - @Override - public ExtendedFancyLogger getFancyLogger() { - return fancyLogger; - } - - public @NotNull VersionFetcher getVersionFetcher() { - return versionFetcher; - } - - public @NotNull VersionConfig getVersionConfig() { - return versionConfig; - } - - @ApiStatus.Internal - public @NotNull HologramManagerImpl getHologramsManager() { - return Objects.requireNonNull(this.hologramsManager, "plugin is not initialized"); - } - - @Override - public HologramManager getHologramManager() { - return Objects.requireNonNull(this.hologramsManager, "plugin is not initialized"); - } - - @Override - public HologramConfiguration getHologramConfiguration() { - return configuration; - } - - @Override - public void setHologramConfiguration(HologramConfiguration configuration, boolean reload) { - this.configuration = configuration; - - if (reload) { - configuration.reload(this); - reloadCommands(); - } - } - - @Override - public HologramStorage getHologramStorage() { - return hologramStorage; - } - - @Override - public void setHologramStorage(HologramStorage storage, boolean reload) { - this.hologramStorage = storage; - - if (reload) { - getHologramsManager().reloadHolograms(); - } - } - - public ScheduledExecutorService getHologramThread() { - return hologramThread; - } - public ExecutorService getFileStorageExecutor() { - return this.fileStorageExecutor; + INSTANCE = null; } private @Nullable Function resolveHologramAdapter() { @@ -273,10 +223,10 @@ public ExecutorService getFileStorageExecutor() { }; } - public void reloadCommands() { + private void registerCommands() { Collection commands = Arrays.asList(new HologramCMD(this), new FancyHologramsCMD(this)); - if (getHologramConfiguration().isRegisterCommands()) { + if (configuration.isRegisterCommands()) { commands.forEach(command -> getServer().getCommandMap().register("fancyholograms", command)); } else { commands.stream().filter(Command::isRegistered).forEach(command -> @@ -321,70 +271,57 @@ Please update to the newest version (%s). }); } - private void registerMetrics() { - boolean isDevelopmentBuild = !versionConfig.getBuild().equalsIgnoreCase("undefined"); - - Metrics metrics = new Metrics(this, 17990); - metrics.addCustomChart(new Metrics.SingleLineChart("total_holograms", () -> hologramsManager.getHolograms().size())); - metrics.addCustomChart(new Metrics.SimplePie("update_notifications", () -> configuration.areVersionNotificationsMuted() ? "No" : "Yes")); - metrics.addCustomChart(new Metrics.SimplePie("using_development_build", () -> isDevelopmentBuild ? "Yes" : "No")); - - fancyAnalytics = new FancyAnalyticsAPI("3b77bd59-2b01-46f2-b3aa-a9584401797f", "E2gW5zc2ZTk1OGFkNGY2ZDQ0ODlM6San"); - fancyAnalytics.getConfig().setDisableLogging(true); - - if (!isDevelopmentBuild) { - return; - } - - fancyAnalytics.registerMinecraftPluginMetrics(INSTANCE); - fancyAnalytics.getExceptionHandler().registerLogger(getLogger()); - fancyAnalytics.getExceptionHandler().registerLogger(Bukkit.getLogger()); - fancyAnalytics.getExceptionHandler().registerLogger(fancyLogger); - - fancyAnalytics.registerStringMetric(new MetricSupplier<>("commit_hash", () -> versionConfig.getHash().substring(0, 7))); - - fancyAnalytics.registerStringMetric(new MetricSupplier<>("server_size", () -> { - long onlinePlayers = Bukkit.getOnlinePlayers().size(); + @Override + public JavaPlugin getPlugin() { + return INSTANCE; + } - if (onlinePlayers == 0) { - return "empty"; - } + @Override + public ExtendedFancyLogger getFancyLogger() { + return fancyLogger; + } - if (onlinePlayers <= 25) { - return "small"; - } + public FHMetrics getMetrics() { + return metrics; + } - if (onlinePlayers <= 100) { - return "medium"; - } + public @NotNull VersionFetcher getVersionFetcher() { + return versionFetcher; + } - if (onlinePlayers <= 500) { - return "large"; - } + public @NotNull VersionConfig getVersionConfig() { + return versionConfig; + } - return "very_large"; - })); + @ApiStatus.Internal + public @NotNull HologramManagerImpl getHologramsManager() { + return Objects.requireNonNull(this.hologramsManager, "plugin is not initialized"); + } - fancyAnalytics.registerNumberMetric(new MetricSupplier<>("amount_holograms", () -> (double) hologramsManager.getHolograms().size())); - fancyAnalytics.registerStringMetric(new MetricSupplier<>("enabled_update_notifications", () -> configuration.areVersionNotificationsMuted() ? "false" : "true")); - fancyAnalytics.registerStringMetric(new MetricSupplier<>("fflag_disable_holograms_for_bedrock_players", () -> FHFeatureFlags.DISABLE_HOLOGRAMS_FOR_BEDROCK_PLAYERS.isEnabled() ? "true" : "false")); - fancyAnalytics.registerStringMetric(new MetricSupplier<>("using_development_build", () -> isDevelopmentBuild ? "true" : "false")); + @Override + public HologramManager getHologramManager() { + return Objects.requireNonNull(this.hologramsManager, "plugin is not initialized"); + } - fancyAnalytics.registerStringArrayMetric(new MetricSupplier<>("hologram_type", () -> { - if (hologramsManager == null) { - return new String[0]; - } + @Override + public HologramConfiguration getHologramConfiguration() { + return configuration; + } - return hologramsManager.getHolograms().stream() - .map(h -> h.getData().getType().name()) - .toArray(String[]::new); - })); + @Override + public HologramStorage getHologramStorage() { + return hologramStorage; + } + public ScheduledExecutorService getHologramThread() { + return hologramThread; + } - fancyAnalytics.initialize(); + public ExecutorService getStorageThread() { + return this.storageThread; } - public FancyAnalyticsAPI getFancyAnalytics() { - return fancyAnalytics; + public HologramConfiguration getFHConfiguration() { + return configuration; } } diff --git a/src/main/java/de/oliver/fancyholograms/metrics/FHMetrics.java b/src/main/java/de/oliver/fancyholograms/metrics/FHMetrics.java new file mode 100644 index 00000000..5826a24a --- /dev/null +++ b/src/main/java/de/oliver/fancyholograms/metrics/FHMetrics.java @@ -0,0 +1,87 @@ +package de.oliver.fancyholograms.metrics; + +import de.oliver.fancyanalytics.api.FancyAnalyticsAPI; +import de.oliver.fancyanalytics.api.metrics.MetricSupplier; +import de.oliver.fancyanalytics.logger.ExtendedFancyLogger; +import de.oliver.fancyholograms.api.HologramManager; +import de.oliver.fancyholograms.config.FHFeatureFlags; +import de.oliver.fancyholograms.main.FancyHolograms; +import de.oliver.fancylib.Metrics; +import org.bukkit.Bukkit; + +public class FHMetrics { + + private ExtendedFancyLogger logger; + private FancyAnalyticsAPI fancyAnalytics; + private boolean isDevelopmentBuild = true; + + public FHMetrics() { + logger = FancyHolograms.get().getFancyLogger(); + isDevelopmentBuild = !FancyHolograms.get().getVersionConfig().getBuild().equalsIgnoreCase("undefined"); + } + + public void register() { + fancyAnalytics = new FancyAnalyticsAPI("3b77bd59-2b01-46f2-b3aa-a9584401797f", "E2gW5zc2ZTk1OGFkNGY2ZDQ0ODlM6San"); + fancyAnalytics.getConfig().setDisableLogging(true); + + fancyAnalytics.registerMinecraftPluginMetrics(FancyHolograms.get()); + fancyAnalytics.getExceptionHandler().registerLogger(FancyHolograms.get().getLogger()); + fancyAnalytics.getExceptionHandler().registerLogger(Bukkit.getLogger()); + fancyAnalytics.getExceptionHandler().registerLogger(logger); + + HologramManager manager = FancyHolograms.get().getHologramManager(); + + fancyAnalytics.registerStringMetric(new MetricSupplier<>("commit_hash", () -> FancyHolograms.get().getVersionConfig().getHash().substring(0, 7))); + + fancyAnalytics.registerStringMetric(new MetricSupplier<>("server_size", () -> { + long onlinePlayers = Bukkit.getOnlinePlayers().size(); + + if (onlinePlayers == 0) { + return "empty"; + } + + if (onlinePlayers <= 25) { + return "small"; + } + + if (onlinePlayers <= 100) { + return "medium"; + } + + if (onlinePlayers <= 500) { + return "large"; + } + + return "very_large"; + })); + + fancyAnalytics.registerNumberMetric(new MetricSupplier<>("amount_holograms", () -> (double) manager.getHolograms().size())); + fancyAnalytics.registerStringMetric(new MetricSupplier<>("enabled_update_notifications", () -> FancyHolograms.get().getFHConfiguration().areVersionNotificationsMuted() ? "false" : "true")); + fancyAnalytics.registerStringMetric(new MetricSupplier<>("fflag_disable_holograms_for_bedrock_players", () -> FHFeatureFlags.DISABLE_HOLOGRAMS_FOR_BEDROCK_PLAYERS.isEnabled() ? "true" : "false")); + fancyAnalytics.registerStringMetric(new MetricSupplier<>("using_development_build", () -> isDevelopmentBuild ? "true" : "false")); + + fancyAnalytics.registerStringArrayMetric(new MetricSupplier<>("hologram_type", () -> { + if (manager == null) { + return new String[0]; + } + + return manager.getHolograms().stream() + .map(h -> h.getData().getType().name()) + .toArray(String[]::new); + })); + + + fancyAnalytics.initialize(); + } + + public void registerLegacy() { + Metrics metrics = new Metrics(FancyHolograms.get(), 17990); + metrics.addCustomChart(new Metrics.SingleLineChart("total_holograms", () -> FancyHolograms.get().getHologramManager().getHolograms().size())); + metrics.addCustomChart(new Metrics.SimplePie("update_notifications", () -> FancyHolograms.get().getFHConfiguration().areVersionNotificationsMuted() ? "No" : "Yes")); + metrics.addCustomChart(new Metrics.SimplePie("using_development_build", () -> isDevelopmentBuild ? "Yes" : "No")); + } + + public FancyAnalyticsAPI getFancyAnalytics() { + return fancyAnalytics; + } +} diff --git a/src/main/java/de/oliver/fancyholograms/storage/FlatFileHologramStorage.java b/src/main/java/de/oliver/fancyholograms/storage/FlatFileHologramStorage.java index 3c7cb838..1d3a5126 100644 --- a/src/main/java/de/oliver/fancyholograms/storage/FlatFileHologramStorage.java +++ b/src/main/java/de/oliver/fancyholograms/storage/FlatFileHologramStorage.java @@ -1,6 +1,5 @@ package de.oliver.fancyholograms.storage; -import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancyholograms.api.HologramStorage; import de.oliver.fancyholograms.api.data.BlockHologramData; import de.oliver.fancyholograms.api.data.DisplayHologramData; @@ -8,6 +7,7 @@ import de.oliver.fancyholograms.api.data.TextHologramData; import de.oliver.fancyholograms.api.hologram.Hologram; import de.oliver.fancyholograms.api.hologram.HologramType; +import de.oliver.fancyholograms.main.FancyHolograms; import org.bukkit.Location; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.YamlConfiguration; @@ -204,7 +204,7 @@ private void saveConfig(YamlConfiguration config) { config.set("version", 2); config.setInlineComments("version", List.of("DO NOT CHANGE")); - FancyHolograms.get().getFileStorageExecutor().execute(() -> { + FancyHolograms.get().getStorageThread().execute(() -> { lock.writeLock().lock(); try { config.save(HOLOGRAMS_CONFIG_FILE); diff --git a/src/main/java/de/oliver/fancyholograms/storage/converter/HologramConverter.java b/src/main/java/de/oliver/fancyholograms/storage/converter/HologramConverter.java index 236b0e65..15a49ab7 100644 --- a/src/main/java/de/oliver/fancyholograms/storage/converter/HologramConverter.java +++ b/src/main/java/de/oliver/fancyholograms/storage/converter/HologramConverter.java @@ -1,8 +1,8 @@ package de.oliver.fancyholograms.storage.converter; import de.oliver.fancyanalytics.api.events.Event; -import de.oliver.fancyholograms.main.FancyHolograms; import de.oliver.fancyholograms.api.data.HologramData; +import de.oliver.fancyholograms.main.FancyHolograms; import org.jetbrains.annotations.NotNull; import java.util.List; @@ -33,7 +33,7 @@ public abstract class HologramConverter { .withProperty("converter", getId()) .withProperty("target", spec.getTarget().getRegex().pattern()) .withProperty("amount", String.valueOf(converted.size())); - FancyHolograms.get().getFancyAnalytics().sendEvent(event); + FancyHolograms.get().getMetrics().getFancyAnalytics().sendEvent(event); return converted; }