diff --git a/api/src/main/java/com/rexcantor64/triton/api/TritonAPI.java b/api/src/main/java/com/rexcantor64/triton/api/TritonAPI.java index 89d1f30c..1ddf1007 100644 --- a/api/src/main/java/com/rexcantor64/triton/api/TritonAPI.java +++ b/api/src/main/java/com/rexcantor64/triton/api/TritonAPI.java @@ -1,5 +1,6 @@ package com.rexcantor64.triton.api; +import org.jetbrains.annotations.ApiStatus.Internal; import org.jetbrains.annotations.NotNull; /** @@ -7,7 +8,9 @@ * * @since 1.0.0 */ -public class TritonAPI { +public final class TritonAPI { + @Internal + private static Triton instance; /** * Get the instance of the {@link Triton plugin}. @@ -16,8 +19,20 @@ public class TritonAPI { * @since 1.0.0 */ public static @NotNull Triton getInstance() { - // This class gets replaced with a proper implementation in Triton's build. - throw new UnsupportedOperationException("Triton is not running! If you're seeing this, it is because some plugin shadowed the TritonAPI (when it should not have!)."); + if (instance == null) { + throw new UnsupportedOperationException("Triton is not running (yet?)! If you're seeing this, some plugin is trying to use the Triton API before Triton has loaded."); + } + return instance; + } + + @Internal + static void register(@NotNull Triton instance) { + TritonAPI.instance = instance; + } + + @Internal + private TritonAPI() { + throw new UnsupportedOperationException("This class cannot be instantiated."); } } diff --git a/core/src/main/java/com/rexcantor64/triton/Triton.java b/core/src/main/java/com/rexcantor64/triton/Triton.java index 1f00d84f..01db115a 100644 --- a/core/src/main/java/com/rexcantor64/triton/Triton.java +++ b/core/src/main/java/com/rexcantor64/triton/Triton.java @@ -1,5 +1,7 @@ package com.rexcantor64.triton; +import com.rexcantor64.triton.api.TritonAPI; +import com.rexcantor64.triton.api.TritonAPIUtils; import com.rexcantor64.triton.api.language.LanguageParser; import com.rexcantor64.triton.api.legacy.LegacyLanguageParser; import com.rexcantor64.triton.bridge.BridgeManager; @@ -86,6 +88,9 @@ public static boolean isSpigot() { } protected void onEnable() { + instance = this; + TritonAPIUtils.register(instance); + translationsFolder = new File(getDataFolder(), "translations"); logger = loader.getTritonLogger(); diff --git a/core/src/main/java/com/rexcantor64/triton/api/TritonAPI.java b/core/src/main/java/com/rexcantor64/triton/api/TritonAPI.java deleted file mode 100644 index ad3250a8..00000000 --- a/core/src/main/java/com/rexcantor64/triton/api/TritonAPI.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.rexcantor64.triton.api; - -public class TritonAPI { - - public static Triton getInstance() { - return com.rexcantor64.triton.Triton.get(); - } - -} diff --git a/core/src/main/java/com/rexcantor64/triton/api/TritonAPIUtils.java b/core/src/main/java/com/rexcantor64/triton/api/TritonAPIUtils.java new file mode 100644 index 00000000..2489fbca --- /dev/null +++ b/core/src/main/java/com/rexcantor64/triton/api/TritonAPIUtils.java @@ -0,0 +1,12 @@ +package com.rexcantor64.triton.api; + +import org.jetbrains.annotations.NotNull; + +// This class has to be in this package to have access to the methods in TritonAPI +public class TritonAPIUtils { + + public static void register(@NotNull Triton instance) { + TritonAPI.register(instance); + } + +} diff --git a/triton-bungeecord/src/main/java/com/rexcantor64/triton/bungeecord/BungeeTriton.java b/triton-bungeecord/src/main/java/com/rexcantor64/triton/bungeecord/BungeeTriton.java index 69306d0e..a53bc55d 100644 --- a/triton-bungeecord/src/main/java/com/rexcantor64/triton/bungeecord/BungeeTriton.java +++ b/triton-bungeecord/src/main/java/com/rexcantor64/triton/bungeecord/BungeeTriton.java @@ -56,7 +56,6 @@ public BungeePlugin getLoader() { @Override public void onEnable() { - instance = this; super.onEnable(); Metrics metrics = new Metrics(getPlugin(), 5607); diff --git a/triton-spigot/src/main/java/com/rexcantor64/triton/spigot/SpigotTriton.java b/triton-spigot/src/main/java/com/rexcantor64/triton/spigot/SpigotTriton.java index 69b3700b..56a48361 100644 --- a/triton-spigot/src/main/java/com/rexcantor64/triton/spigot/SpigotTriton.java +++ b/triton-spigot/src/main/java/com/rexcantor64/triton/spigot/SpigotTriton.java @@ -75,8 +75,6 @@ public static SpigotTriton asSpigot() { @Override public void onEnable() { - instance = this; - super.onEnable(); if (!this.isProtocolLibAvailable()) { diff --git a/triton-velocity/src/main/java/com/rexcantor64/triton/velocity/VelocityTriton.java b/triton-velocity/src/main/java/com/rexcantor64/triton/velocity/VelocityTriton.java index 3eab9fe6..28e37130 100644 --- a/triton-velocity/src/main/java/com/rexcantor64/triton/velocity/VelocityTriton.java +++ b/triton-velocity/src/main/java/com/rexcantor64/triton/velocity/VelocityTriton.java @@ -47,7 +47,6 @@ public Object getPlugin() { @Override public void onEnable() { - instance = this; super.onEnable(); // bStats