From 3c61d409b97e8b7051cd2373bcff23222849320e Mon Sep 17 00:00:00 2001 From: Supermuctec Date: Wed, 17 Jun 2026 02:29:55 +0530 Subject: [PATCH 1/6] Implement global API access pattern --- .../ascendancy/api/AscendancyAPI.java | 34 +++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/io/github/hyscript7/ascendancy/api/AscendancyAPI.java b/api/src/main/java/io/github/hyscript7/ascendancy/api/AscendancyAPI.java index 5f223fc..aaf6ab9 100644 --- a/api/src/main/java/io/github/hyscript7/ascendancy/api/AscendancyAPI.java +++ b/api/src/main/java/io/github/hyscript7/ascendancy/api/AscendancyAPI.java @@ -1,4 +1,34 @@ package io.github.hyscript7.ascendancy.api; +import org.bukkit.Bukkit; +import org.bukkit.plugin.ServicePriority; +import java.util.Optional; +import org.bukkit.plugin.Plugin; -public class AscendancyAPI { -} +public interface class AscendancyAPI { + class Holder { + private static final AscendancyAPI INSTANCE; + } + + static AscendancyAPI get(){ + if (Holder.INSTANCE == null) { + throw new IllegalStateException("AscendancyAPI instance is not set. Please set it using AscendancyAPI.set() before calling AscendancyAPI.get()."); + } + return Holder.INSTANCE; + } + + static Optional fromServicesManager(){ + if (Optional.of(Holder.INSTANCE).isPresent()) { + return Optional.of(Holder.INSTANCE); + } + return Optional.empty() + } + + static void set(AscendancyAPI instance, Plugin plugin){ + if (Holder.INSTANCE != null) { + throw new AscendancyAPIAlreadyInitializedException("AscendancyAPI instance is already set. Cannot set it again."); + } + + Holder.INSTANCE = instance; + Bukkit.getServicesManager().register(AscendancyAPI.class, Holder.INSTANCE, plugin, ServicePriority.Normal); + } +} \ No newline at end of file From bd9c31c7cfba06fab9caa31baa0267147bedb906 Mon Sep 17 00:00:00 2001 From: Supermuctec Date: Wed, 17 Jun 2026 07:22:06 +0530 Subject: [PATCH 2/6] Fixed data retrieval from local and changed it to retrieve from bukkit ServiceManager --- .../io/github/hyscript7/ascendancy/api/AscendancyAPI.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/api/src/main/java/io/github/hyscript7/ascendancy/api/AscendancyAPI.java b/api/src/main/java/io/github/hyscript7/ascendancy/api/AscendancyAPI.java index aaf6ab9..24551ae 100644 --- a/api/src/main/java/io/github/hyscript7/ascendancy/api/AscendancyAPI.java +++ b/api/src/main/java/io/github/hyscript7/ascendancy/api/AscendancyAPI.java @@ -3,6 +3,8 @@ import org.bukkit.plugin.ServicePriority; import java.util.Optional; import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.ServicesManager; +import static org.bukkit.Bukkit.getServer; public interface class AscendancyAPI { class Holder { @@ -17,10 +19,10 @@ static AscendancyAPI get(){ } static Optional fromServicesManager(){ - if (Optional.of(Holder.INSTANCE).isPresent()) { - return Optional.of(Holder.INSTANCE); + if (Optional.of(getServer().getServicesManager().load(AscendancyAPI.class)).isPresent()) { + return Optional.of(getServer().getServicesManager().load(AscendancyAPI.class)); } - return Optional.empty() + return Optional.empty(); } static void set(AscendancyAPI instance, Plugin plugin){ From 8c711d662550245ecd20e8826cf324d3fad5bf7b Mon Sep 17 00:00:00 2001 From: Supermuctec Date: Wed, 17 Jun 2026 16:47:14 +0530 Subject: [PATCH 3/6] Fixed issues with AscendancyAPI being both interface and class at the same time and added the Exception class --- .../hyscript7/ascendancy/api/AscendancyAPI.java | 12 +++++------- .../AscendancyAPIAlreadyInitializedException.java | 7 +++++++ 2 files changed, 12 insertions(+), 7 deletions(-) create mode 100644 api/src/main/java/io/github/hyscript7/ascendancy/api/AscendancyAPIAlreadyInitializedException.java diff --git a/api/src/main/java/io/github/hyscript7/ascendancy/api/AscendancyAPI.java b/api/src/main/java/io/github/hyscript7/ascendancy/api/AscendancyAPI.java index 24551ae..ba94c2e 100644 --- a/api/src/main/java/io/github/hyscript7/ascendancy/api/AscendancyAPI.java +++ b/api/src/main/java/io/github/hyscript7/ascendancy/api/AscendancyAPI.java @@ -3,12 +3,10 @@ import org.bukkit.plugin.ServicePriority; import java.util.Optional; import org.bukkit.plugin.Plugin; -import org.bukkit.plugin.ServicesManager; -import static org.bukkit.Bukkit.getServer; -public interface class AscendancyAPI { +public interface AscendancyAPI { class Holder { - private static final AscendancyAPI INSTANCE; + private static AscendancyAPI INSTANCE; } static AscendancyAPI get(){ @@ -19,13 +17,13 @@ static AscendancyAPI get(){ } static Optional fromServicesManager(){ - if (Optional.of(getServer().getServicesManager().load(AscendancyAPI.class)).isPresent()) { - return Optional.of(getServer().getServicesManager().load(AscendancyAPI.class)); + if (Optional.ofNullable(Bukkit.getServer().getServicesManager().load(AscendancyAPI.class)).isPresent()) { + return Optional.of(Bukkit.getServer().getServicesManager().load(AscendancyAPI.class)); } return Optional.empty(); } - static void set(AscendancyAPI instance, Plugin plugin){ + static void set(AscendancyAPI instance, Plugin plugin) throws AscendancyAPIAlreadyInitializedException { if (Holder.INSTANCE != null) { throw new AscendancyAPIAlreadyInitializedException("AscendancyAPI instance is already set. Cannot set it again."); } diff --git a/api/src/main/java/io/github/hyscript7/ascendancy/api/AscendancyAPIAlreadyInitializedException.java b/api/src/main/java/io/github/hyscript7/ascendancy/api/AscendancyAPIAlreadyInitializedException.java new file mode 100644 index 0000000..315e8c7 --- /dev/null +++ b/api/src/main/java/io/github/hyscript7/ascendancy/api/AscendancyAPIAlreadyInitializedException.java @@ -0,0 +1,7 @@ +package io.github.hyscript7.ascendancy.api; + +public class AscendancyAPIAlreadyInitializedException extends RuntimeException { + public AscendancyAPIAlreadyInitializedException(String message) { + super(message); + } +} From db483a35bd39e84fa432af10caf4db5293d7cd7f Mon Sep 17 00:00:00 2001 From: Supermuctec Date: Thu, 18 Jun 2026 16:32:02 +0530 Subject: [PATCH 4/6] Script check this errors --- .../ascendancy/api/AscendancyAPI.java | 1 + .../api/events/AscendancyDisabledEvent.java | 17 +++++++++++ .../api/events/AscendancyEnabledEvent.java | 30 +++++++++++++++++++ .../ascendancy/AscendancyPlugin.java | 3 ++ 4 files changed, 51 insertions(+) create mode 100644 api/src/main/java/io/github/hyscript7/ascendancy/api/events/AscendancyDisabledEvent.java create mode 100644 api/src/main/java/io/github/hyscript7/ascendancy/api/events/AscendancyEnabledEvent.java diff --git a/api/src/main/java/io/github/hyscript7/ascendancy/api/AscendancyAPI.java b/api/src/main/java/io/github/hyscript7/ascendancy/api/AscendancyAPI.java index ba94c2e..34708d9 100644 --- a/api/src/main/java/io/github/hyscript7/ascendancy/api/AscendancyAPI.java +++ b/api/src/main/java/io/github/hyscript7/ascendancy/api/AscendancyAPI.java @@ -1,4 +1,5 @@ package io.github.hyscript7.ascendancy.api; + import org.bukkit.Bukkit; import org.bukkit.plugin.ServicePriority; import java.util.Optional; diff --git a/api/src/main/java/io/github/hyscript7/ascendancy/api/events/AscendancyDisabledEvent.java b/api/src/main/java/io/github/hyscript7/ascendancy/api/events/AscendancyDisabledEvent.java new file mode 100644 index 0000000..e1e6f1a --- /dev/null +++ b/api/src/main/java/io/github/hyscript7/ascendancy/api/events/AscendancyDisabledEvent.java @@ -0,0 +1,17 @@ +package io.github.hyscript7.ascendancy.api.events; + +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +public class AscendancyDisabledEvent extends Event{ + private static final HandlerList HANDLER_LIST = new HandlerList(); + + public static HandlerList getHandlerList() { + return HANDLER_LIST; + } + + @Override + public HandlerList getHandlers() { + return HANDLER_LIST; + } +} diff --git a/api/src/main/java/io/github/hyscript7/ascendancy/api/events/AscendancyEnabledEvent.java b/api/src/main/java/io/github/hyscript7/ascendancy/api/events/AscendancyEnabledEvent.java new file mode 100644 index 0000000..99e5116 --- /dev/null +++ b/api/src/main/java/io/github/hyscript7/ascendancy/api/events/AscendancyEnabledEvent.java @@ -0,0 +1,30 @@ +package io.github.hyscript7.ascendancy.api.events; + +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +import io.github.hyscript7.ascendancy.api.AscendancyAPI; + +public class AscendancyEnabledEvent extends Event { + + private static final HandlerList HANDLER_LIST = new HandlerList(); + private final AscendancyAPI api; + + public AscendancyEnabledEvent(AscendancyAPI api) { + this.api = api; + } + + public AscendancyAPI getApi() { + return api; + } + + + public static HandlerList getHandlerList() { + return HANDLER_LIST; + } + + @Override + public HandlerList getHandlers() { + return HANDLER_LIST; + } +} \ No newline at end of file diff --git a/core/src/main/java/io/github/hyscript7/ascendancy/AscendancyPlugin.java b/core/src/main/java/io/github/hyscript7/ascendancy/AscendancyPlugin.java index 4a9a8c7..087dd43 100644 --- a/core/src/main/java/io/github/hyscript7/ascendancy/AscendancyPlugin.java +++ b/core/src/main/java/io/github/hyscript7/ascendancy/AscendancyPlugin.java @@ -1,13 +1,16 @@ package io.github.hyscript7.ascendancy; +import io.github.hyscript7.ascendancy.api.events.AscendancyDisabledEvent; import org.bukkit.plugin.java.JavaPlugin; public class AscendancyPlugin extends JavaPlugin { @Override public void onEnable() { + } @Override public void onDisable() { + } } From 7d9e5dfa66ef29bf4efe0634e44b860e6d848929 Mon Sep 17 00:00:00 2001 From: Supermuctec Date: Thu, 18 Jun 2026 19:13:01 +0530 Subject: [PATCH 5/6] Completed ASC-5, up for review, called events on plugin startup and shutdown --- .../java/io/github/hyscript7/ascendancy/AscendancyPlugin.java | 1 + 1 file changed, 1 insertion(+) diff --git a/core/src/main/java/io/github/hyscript7/ascendancy/AscendancyPlugin.java b/core/src/main/java/io/github/hyscript7/ascendancy/AscendancyPlugin.java index 087dd43..df580d0 100644 --- a/core/src/main/java/io/github/hyscript7/ascendancy/AscendancyPlugin.java +++ b/core/src/main/java/io/github/hyscript7/ascendancy/AscendancyPlugin.java @@ -3,6 +3,7 @@ import io.github.hyscript7.ascendancy.api.events.AscendancyDisabledEvent; import org.bukkit.plugin.java.JavaPlugin; +@SuppressWarnings("unused") public class AscendancyPlugin extends JavaPlugin { @Override public void onEnable() { From 2787824220694894d47e8456620eb14add635107 Mon Sep 17 00:00:00 2001 From: Supermuctec Date: Thu, 18 Jun 2026 22:45:30 +0530 Subject: [PATCH 6/6] Add api and functionality --- .../hyscript7/ascendancy/AscendancyPlugin.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/io/github/hyscript7/ascendancy/AscendancyPlugin.java b/core/src/main/java/io/github/hyscript7/ascendancy/AscendancyPlugin.java index df580d0..bcb261e 100644 --- a/core/src/main/java/io/github/hyscript7/ascendancy/AscendancyPlugin.java +++ b/core/src/main/java/io/github/hyscript7/ascendancy/AscendancyPlugin.java @@ -1,17 +1,25 @@ package io.github.hyscript7.ascendancy; +import io.github.hyscript7.ascendancy.api.AscendancyAPI; import io.github.hyscript7.ascendancy.api.events.AscendancyDisabledEvent; +import io.github.hyscript7.ascendancy.api.events.AscendancyEnabledEvent; import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.Bukkit; -@SuppressWarnings("unused") public class AscendancyPlugin extends JavaPlugin { @Override public void onEnable() { - + // All remaining code goes above enable event, event is called when plugin is completely ready + AscendancyAPI api = new AscendancyAPI(){ + + }; + AscendancyAPI.set(api, this); + Bukkit.getPluginManager().callEvent(new AscendancyEnabledEvent(api)); } @Override public void onDisable() { - + Bukkit.getPluginManager().callEvent(new AscendancyDisabledEvent()); + // All remaining code goes under disable event, event is called when plugin starts shutting down } }