diff --git a/src/main/java/com/artemis/the/gr8/playerstats/Main.java b/src/main/java/com/artemis/the/gr8/playerstats/Main.java index d1cd611..f3d30e5 100644 --- a/src/main/java/com/artemis/the/gr8/playerstats/Main.java +++ b/src/main/java/com/artemis/the/gr8/playerstats/Main.java @@ -1,7 +1,8 @@ package com.artemis.the.gr8.playerstats; import com.artemis.the.gr8.playerstats.api.PlayerStats; -import com.artemis.the.gr8.playerstats.api.PlayerStatsAPI; +import com.artemis.the.gr8.playerstats.api.StatFormatter; +import com.artemis.the.gr8.playerstats.api.StatManager; import com.artemis.the.gr8.playerstats.statistic.RequestManager; import com.artemis.the.gr8.playerstats.msg.OutputManager; import com.artemis.the.gr8.playerstats.commands.ReloadCommand; @@ -27,13 +28,13 @@ import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scheduler.BukkitRunnable; import org.jetbrains.annotations.NotNull; - /** * PlayerStats' Main class */ -public final class Main extends JavaPlugin { +public final class Main extends JavaPlugin implements PlayerStats { private static JavaPlugin pluginInstance; + private static PlayerStats playerStatsAPI; private static BukkitAudiences adventure; private static ConfigHandler config; @@ -42,12 +43,10 @@ public final class Main extends JavaPlugin { private static OfflinePlayerHandler offlinePlayerHandler; private static EnumHandler enumHandler; + private static RequestManager statRequestManager; private static OutputManager outputManager; private static ShareManager shareManager; - private static PlayerStats playerStatsImpl; - - @Override public void onEnable() { //initialize all the Managers, singletons, ConfigHandler and the API @@ -103,14 +102,16 @@ public final class Main extends JavaPlugin { } public static @NotNull PlayerStats getPlayerStatsAPI() throws IllegalStateException { - if (playerStatsImpl == null) { + if (playerStatsAPI == null) { throw new IllegalStateException("PlayerStats does not seem to be loaded!"); } - return playerStatsImpl; + return playerStatsAPI; } private void initializeMainClasses() { pluginInstance = this; + playerStatsAPI = this; + adventure = BukkitAudiences.create(this); enumHandler = new EnumHandler(); languageKeyHandler = new LanguageKeyHandler(); @@ -121,9 +122,8 @@ public final class Main extends JavaPlugin { outputManager = new OutputManager(adventure, config, languageKeyHandler); RequestProcessor requestProcessor = new RequestProcessor(offlinePlayerHandler, outputManager, shareManager); - RequestManager statManager = new RequestManager(offlinePlayerHandler, requestProcessor); - threadManager = new ThreadManager(this, config, outputManager, statManager); - playerStatsImpl = new PlayerStatsAPI(statManager, outputManager); + statRequestManager = new RequestManager(offlinePlayerHandler, requestProcessor); + threadManager = new ThreadManager(this, config, outputManager, statRequestManager); } private void setupMetrics() { @@ -145,4 +145,19 @@ public final class Main extends JavaPlugin { } }.runTaskLaterAsynchronously(this, 200); } + + @Override + public String getVersion() { + return "1.8"; + } + + @Override + public StatManager getStatManager() { + return statRequestManager; + } + + @Override + public StatFormatter getFormatter() { + return outputManager.getMainMessageBuilder(); + } } \ No newline at end of file diff --git a/src/main/java/com/artemis/the/gr8/playerstats/api/PlayerStats.java b/src/main/java/com/artemis/the/gr8/playerstats/api/PlayerStats.java index af0fc74..ef00776 100644 --- a/src/main/java/com/artemis/the/gr8/playerstats/api/PlayerStats.java +++ b/src/main/java/com/artemis/the/gr8/playerstats/api/PlayerStats.java @@ -8,18 +8,21 @@ import org.jetbrains.annotations.NotNull; /** * The outgoing API that represents the core functionality of PlayerStats! * - *

To work with it, you'll need to call PlayerStats.{@link #getAPI()} and get an instance of - * {@link PlayerStatsAPI}. You can then use this object to access any of the further methods. + *

To work with it, you'll need to call PlayerStats.{@link #getAPI()} + * and get an instance of PlayerStats. You can then use this object to + * access any of the further methods. * * @see RequestManager * @see StatFormatter */ public interface PlayerStats { - /** Gets an instance of the {@link PlayerStatsAPI}. + /** Gets an instance of the PlayerStatsAPI. * @return the PlayerStats API - * @throws IllegalStateException if PlayerStats is not loaded on the server when this method is called*/ + * @throws IllegalStateException if PlayerStats is not loaded on + * the server when this method is called + */ @Contract(pure = true) static @NotNull PlayerStats getAPI() throws IllegalStateException { return Main.getPlayerStatsAPI(); @@ -34,9 +37,7 @@ public interface PlayerStats { * * @return the version of PlayerStatsAPI present on the server */ - default String getVersion() { - return "1.8"; - } + String getVersion(); StatManager getStatManager(); diff --git a/src/main/java/com/artemis/the/gr8/playerstats/api/PlayerStatsAPI.java b/src/main/java/com/artemis/the/gr8/playerstats/api/PlayerStatsAPI.java deleted file mode 100644 index a65d1e6..0000000 --- a/src/main/java/com/artemis/the/gr8/playerstats/api/PlayerStatsAPI.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.artemis.the.gr8.playerstats.api; - -import com.artemis.the.gr8.playerstats.msg.OutputManager; - -import static org.jetbrains.annotations.ApiStatus.Internal; - -/** The implementation of the API Interface */ -public final class PlayerStatsAPI implements PlayerStats { - - private static OutputManager outputManager; - private final StatManager statManager; - - @Internal - public PlayerStatsAPI(StatManager statManager, OutputManager outputManager) { - PlayerStatsAPI.outputManager = outputManager; - this.statManager = statManager; - } - - @Override - public StatFormatter getFormatter() { - return outputManager.getMainMessageBuilder(); - } - - @Override - public StatManager getStatManager() { - return statManager; - } -} \ No newline at end of file diff --git a/src/main/java/com/artemis/the/gr8/playerstats/commands/TabCompleter.java b/src/main/java/com/artemis/the/gr8/playerstats/commands/TabCompleter.java index 68819f7..2a53914 100644 --- a/src/main/java/com/artemis/the/gr8/playerstats/commands/TabCompleter.java +++ b/src/main/java/com/artemis/the/gr8/playerstats/commands/TabCompleter.java @@ -1,7 +1,5 @@ package com.artemis.the.gr8.playerstats.commands; -import com.artemis.the.gr8.playerstats.api.PlayerStats; -import com.artemis.the.gr8.playerstats.statistic.StatRequest; import com.artemis.the.gr8.playerstats.utils.EnumHandler; import com.artemis.the.gr8.playerstats.utils.OfflinePlayerHandler; import org.bukkit.Material; @@ -29,14 +27,12 @@ public final class TabCompleter implements org.bukkit.command.TabCompleter { this.enumHandler = enumHandler; this.offlinePlayerHandler = offlinePlayerHandler; prepareLists(); - } //args[0] = statistic (length = 1) //args[1] = target (player/server/top) OR sub-stat (block/item/entity) (length = 2) //args[2] = playerName OR target (player/server/top) (length = 3) //args[3] = playerName (length = 4) - @Override public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { if (args.length >= 1) { diff --git a/src/main/java/com/artemis/the/gr8/playerstats/enums/Unit.java b/src/main/java/com/artemis/the/gr8/playerstats/enums/Unit.java index cdd08e3..ed07595 100644 --- a/src/main/java/com/artemis/the/gr8/playerstats/enums/Unit.java +++ b/src/main/java/com/artemis/the/gr8/playerstats/enums/Unit.java @@ -131,15 +131,6 @@ public enum Unit { }; } - /** - * Gets the Unit corresponding to the given String. This String - * does not need to match exactly (it can be "day" or "days", - * for example), and is case-insensitive. - * - * @param unitName the name belonging to the desired Unit, - * case-insensitive - * @return the Unit - */ /** Converts the current Unit into a short label (and returns a '?' if the current Unit is not of Type TIME)*/ public char getShortLabel(){ return switch (this) { diff --git a/src/main/java/com/artemis/the/gr8/playerstats/msg/msgutils/NumberFormatter.java b/src/main/java/com/artemis/the/gr8/playerstats/msg/msgutils/NumberFormatter.java index 4f8c79c..74ff77a 100644 --- a/src/main/java/com/artemis/the/gr8/playerstats/msg/msgutils/NumberFormatter.java +++ b/src/main/java/com/artemis/the/gr8/playerstats/msg/msgutils/NumberFormatter.java @@ -83,9 +83,9 @@ public final class NumberFormatter { while(currUnit != null){ //Define amount of units - int amount = 0; + int amount; - //Current unit is equal to smallest unit, in this case round the remainder + //Current unit is equal to the smallest unit, in this case round the remainder if(currUnit == smallestUnit){ amount = (int) Math.round(leftoverSeconds / currUnit.getSeconds()); }