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