registeredListeners = new ArrayList<>();
private Registry() {
- // plugin and logger are initialized in setPlugin(EzAfk) before init() is called.
}
public static void init(EzAfk plugin) {
@@ -53,9 +55,9 @@ public void init() {
this.configManager = new ConfigManager(plugin);
this.scheduler = SchedulerAdapterFactory.create(plugin);
+ this.versionAdapter = VersionAdapterFactory.create(plugin, this.logger);
this.bootstrap = new Bootstrap(plugin);
- // initialize storage after Registry is available
try {
storageRepository = StorageFactory.create();
if (storageRepository != null) storageRepository.init();
@@ -103,6 +105,10 @@ public SchedulerAdapter getScheduler() {
return scheduler;
}
+ public VersionAdapter getVersionAdapter() {
+ return versionAdapter;
+ }
+
/**
* Reload the storage repository based on current configuration.
* This will create a new repository via StorageFactory, init it,
diff --git a/src/main/java/com/gyvex/ezafk/command/AfkZoneCommand.java b/ezafk-core/src/main/java/com/gyvex/ezafk/command/AfkZoneCommand.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/command/AfkZoneCommand.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/command/AfkZoneCommand.java
diff --git a/src/main/java/com/gyvex/ezafk/command/EzAfkCommand.java b/ezafk-core/src/main/java/com/gyvex/ezafk/command/EzAfkCommand.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/command/EzAfkCommand.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/command/EzAfkCommand.java
diff --git a/src/main/java/com/gyvex/ezafk/command/EzAfkTabCompleter.java b/ezafk-core/src/main/java/com/gyvex/ezafk/command/EzAfkTabCompleter.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/command/EzAfkTabCompleter.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/command/EzAfkTabCompleter.java
diff --git a/src/main/java/com/gyvex/ezafk/compatibility/LoreUtil.java b/ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/LoreUtil.java
similarity index 98%
rename from src/main/java/com/gyvex/ezafk/compatibility/LoreUtil.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/LoreUtil.java
index 28bd28d..bd988d1 100644
--- a/src/main/java/com/gyvex/ezafk/compatibility/LoreUtil.java
+++ b/ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/LoreUtil.java
@@ -69,13 +69,13 @@ public static boolean validateMiniMessage(String miniMessageString, String conte
/**
* Converts a raw message string to a legacy §-color string suitable for
- * {@link ItemMeta#setDisplayName} / {@link ItemMeta#setLore}.
+ * {@link ItemMeta#setDisplayName} / {@link ItemMeta#setLore} and chat messages.
*
* When the bundled MiniMessage library is available (always, since it is shaded into the
* JAR), MiniMessage tags such as {@code } are parsed and the result is serialized back
* to a legacy color string. Otherwise, {@code &}-color codes are translated directly.
*/
- private static String toDisplayString(String text, Logger logger) {
+ public static String toDisplayString(String text, Logger logger) {
try {
Object component = deserializeToComponent(text);
if (component != null) {
diff --git a/src/main/java/com/gyvex/ezafk/compatibility/ParticleCompat.java b/ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/ParticleCompat.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/compatibility/ParticleCompat.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/ParticleCompat.java
diff --git a/src/main/java/com/gyvex/ezafk/compatibility/inventory/InventoryCompat.java b/ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/inventory/InventoryCompat.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/compatibility/inventory/InventoryCompat.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/inventory/InventoryCompat.java
diff --git a/src/main/java/com/gyvex/ezafk/compatibility/item/HeadCompat.java b/ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/item/HeadCompat.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/compatibility/item/HeadCompat.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/item/HeadCompat.java
diff --git a/src/main/java/com/gyvex/ezafk/compatibility/item/ItemMetaCompat.java b/ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/item/ItemMetaCompat.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/compatibility/item/ItemMetaCompat.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/item/ItemMetaCompat.java
diff --git a/src/main/java/com/gyvex/ezafk/compatibility/item/MaterialCompat.java b/ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/item/MaterialCompat.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/compatibility/item/MaterialCompat.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/item/MaterialCompat.java
diff --git a/src/main/java/com/gyvex/ezafk/compatibility/platform/PlatformDetector.java b/ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/platform/PlatformDetector.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/compatibility/platform/PlatformDetector.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/platform/PlatformDetector.java
diff --git a/src/main/java/com/gyvex/ezafk/compatibility/player/PlayerDisplayCompat.java b/ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/player/PlayerDisplayCompat.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/compatibility/player/PlayerDisplayCompat.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/player/PlayerDisplayCompat.java
diff --git a/src/main/java/com/gyvex/ezafk/compatibility/player/PlayerKickCompat.java b/ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/player/PlayerKickCompat.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/compatibility/player/PlayerKickCompat.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/player/PlayerKickCompat.java
diff --git a/src/main/java/com/gyvex/ezafk/compatibility/scheduler/BukkitSchedulerAdapter.java b/ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/scheduler/BukkitSchedulerAdapter.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/compatibility/scheduler/BukkitSchedulerAdapter.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/scheduler/BukkitSchedulerAdapter.java
diff --git a/src/main/java/com/gyvex/ezafk/compatibility/scheduler/SchedulerAdapter.java b/ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/scheduler/SchedulerAdapter.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/compatibility/scheduler/SchedulerAdapter.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/scheduler/SchedulerAdapter.java
diff --git a/src/main/java/com/gyvex/ezafk/compatibility/scheduler/SchedulerAdapterFactory.java b/ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/scheduler/SchedulerAdapterFactory.java
similarity index 64%
rename from src/main/java/com/gyvex/ezafk/compatibility/scheduler/SchedulerAdapterFactory.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/scheduler/SchedulerAdapterFactory.java
index 9025442..5c6d200 100644
--- a/src/main/java/com/gyvex/ezafk/compatibility/scheduler/SchedulerAdapterFactory.java
+++ b/ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/scheduler/SchedulerAdapterFactory.java
@@ -22,13 +22,21 @@ private SchedulerAdapterFactory() {}
public static SchedulerAdapter create(Plugin plugin) {
if (PlatformDetector.isFolia()) {
try {
- return new FoliaSchedulerAdapter(plugin);
+ return createFoliaSchedulerAdapter(plugin);
} catch (NoClassDefFoundError e) {
plugin.getLogger().warning("[EzAfk] Folia classes not found, falling back to Bukkit scheduler: " + e.getMessage());
+ } catch (ClassNotFoundException e) {
+ plugin.getLogger().warning("[EzAfk] FoliaSchedulerAdapter class not found, falling back to Bukkit scheduler.");
} catch (Throwable e) {
- plugin.getLogger().warning("[EzAfk] Folia detected but Folia scheduler API unavailable — falling back to Bukkit scheduler.");
+ plugin.getLogger().warning("[EzAfk] Folia detected but Folia scheduler API unavailable — falling back to Bukkit scheduler: " + e.getMessage());
}
}
return new BukkitSchedulerAdapter(plugin);
}
+
+ private static SchedulerAdapter createFoliaSchedulerAdapter(Plugin plugin) throws ClassNotFoundException, ReflectiveOperationException {
+ Class> clazz = Class.forName("com.gyvex.ezafk.compatibility.scheduler.FoliaSchedulerAdapter");
+ java.lang.reflect.Constructor> ctor = clazz.getConstructor(Plugin.class);
+ return (SchedulerAdapter) ctor.newInstance(plugin);
+ }
}
diff --git a/src/main/java/com/gyvex/ezafk/compatibility/scheduler/TaskHandle.java b/ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/scheduler/TaskHandle.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/compatibility/scheduler/TaskHandle.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/scheduler/TaskHandle.java
diff --git a/src/main/java/com/gyvex/ezafk/compatibility/sound/SoundCompat.java b/ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/sound/SoundCompat.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/compatibility/sound/SoundCompat.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/compatibility/sound/SoundCompat.java
diff --git a/src/main/java/com/gyvex/ezafk/config/ConfigManager.java b/ezafk-core/src/main/java/com/gyvex/ezafk/config/ConfigManager.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/config/ConfigManager.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/config/ConfigManager.java
diff --git a/src/main/java/com/gyvex/ezafk/event/PlayerAfkStatusChangeEvent.java b/ezafk-core/src/main/java/com/gyvex/ezafk/event/PlayerAfkStatusChangeEvent.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/event/PlayerAfkStatusChangeEvent.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/event/PlayerAfkStatusChangeEvent.java
diff --git a/src/main/java/com/gyvex/ezafk/gui/GuiAction.java b/ezafk-core/src/main/java/com/gyvex/ezafk/gui/GuiAction.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/gui/GuiAction.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/gui/GuiAction.java
diff --git a/src/main/java/com/gyvex/ezafk/gui/GuiActionFactory.java b/ezafk-core/src/main/java/com/gyvex/ezafk/gui/GuiActionFactory.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/gui/GuiActionFactory.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/gui/GuiActionFactory.java
diff --git a/src/main/java/com/gyvex/ezafk/integration/EconomyIntegration.java b/ezafk-core/src/main/java/com/gyvex/ezafk/integration/EconomyIntegration.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/integration/EconomyIntegration.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/integration/EconomyIntegration.java
diff --git a/src/main/java/com/gyvex/ezafk/integration/Integration.java b/ezafk-core/src/main/java/com/gyvex/ezafk/integration/Integration.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/integration/Integration.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/integration/Integration.java
diff --git a/src/main/java/com/gyvex/ezafk/integration/MetricsIntegration.java b/ezafk-core/src/main/java/com/gyvex/ezafk/integration/MetricsIntegration.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/integration/MetricsIntegration.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/integration/MetricsIntegration.java
diff --git a/src/main/java/com/gyvex/ezafk/integration/PlaceholderApiIntegration.java b/ezafk-core/src/main/java/com/gyvex/ezafk/integration/PlaceholderApiIntegration.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/integration/PlaceholderApiIntegration.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/integration/PlaceholderApiIntegration.java
diff --git a/src/main/java/com/gyvex/ezafk/integration/PlayerListNameAdapter.java b/ezafk-core/src/main/java/com/gyvex/ezafk/integration/PlayerListNameAdapter.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/integration/PlayerListNameAdapter.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/integration/PlayerListNameAdapter.java
diff --git a/src/main/java/com/gyvex/ezafk/integration/SimpleVoiceChatIntegration.java b/ezafk-core/src/main/java/com/gyvex/ezafk/integration/SimpleVoiceChatIntegration.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/integration/SimpleVoiceChatIntegration.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/integration/SimpleVoiceChatIntegration.java
diff --git a/src/main/java/com/gyvex/ezafk/integration/SpigotIntegration.java b/ezafk-core/src/main/java/com/gyvex/ezafk/integration/SpigotIntegration.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/integration/SpigotIntegration.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/integration/SpigotIntegration.java
diff --git a/src/main/java/com/gyvex/ezafk/integration/TabIntegration.java b/ezafk-core/src/main/java/com/gyvex/ezafk/integration/TabIntegration.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/integration/TabIntegration.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/integration/TabIntegration.java
diff --git a/src/main/java/com/gyvex/ezafk/integration/VoiceChatIntegration.java b/ezafk-core/src/main/java/com/gyvex/ezafk/integration/VoiceChatIntegration.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/integration/VoiceChatIntegration.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/integration/VoiceChatIntegration.java
diff --git a/src/main/java/com/gyvex/ezafk/integration/WorldEditIntegration.java b/ezafk-core/src/main/java/com/gyvex/ezafk/integration/WorldEditIntegration.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/integration/WorldEditIntegration.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/integration/WorldEditIntegration.java
diff --git a/src/main/java/com/gyvex/ezafk/integration/WorldGuardIntegration.java b/ezafk-core/src/main/java/com/gyvex/ezafk/integration/WorldGuardIntegration.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/integration/WorldGuardIntegration.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/integration/WorldGuardIntegration.java
diff --git a/src/main/java/com/gyvex/ezafk/integration/ezcountdown/EzCountdownIntegration.java b/ezafk-core/src/main/java/com/gyvex/ezafk/integration/ezcountdown/EzCountdownIntegration.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/integration/ezcountdown/EzCountdownIntegration.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/integration/ezcountdown/EzCountdownIntegration.java
diff --git a/src/main/java/com/gyvex/ezafk/integration/placeholder/EzAfkPlaceholderExpansion.java b/ezafk-core/src/main/java/com/gyvex/ezafk/integration/placeholder/EzAfkPlaceholderExpansion.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/integration/placeholder/EzAfkPlaceholderExpansion.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/integration/placeholder/EzAfkPlaceholderExpansion.java
diff --git a/src/main/java/com/gyvex/ezafk/integration/spigot/UpdateChecker.java b/ezafk-core/src/main/java/com/gyvex/ezafk/integration/spigot/UpdateChecker.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/integration/spigot/UpdateChecker.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/integration/spigot/UpdateChecker.java
diff --git a/src/main/java/com/gyvex/ezafk/integration/tab/PlayerListNameAdapter.java b/ezafk-core/src/main/java/com/gyvex/ezafk/integration/tab/PlayerListNameAdapter.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/integration/tab/PlayerListNameAdapter.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/integration/tab/PlayerListNameAdapter.java
diff --git a/src/main/java/com/gyvex/ezafk/integration/tab/TabApiPlayerListNameAdapter.java b/ezafk-core/src/main/java/com/gyvex/ezafk/integration/tab/TabApiPlayerListNameAdapter.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/integration/tab/TabApiPlayerListNameAdapter.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/integration/tab/TabApiPlayerListNameAdapter.java
diff --git a/src/main/java/com/gyvex/ezafk/integration/voicechat/EzAfkVoicechatPlugin.java b/ezafk-core/src/main/java/com/gyvex/ezafk/integration/voicechat/EzAfkVoicechatPlugin.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/integration/voicechat/EzAfkVoicechatPlugin.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/integration/voicechat/EzAfkVoicechatPlugin.java
diff --git a/src/main/java/com/gyvex/ezafk/integration/voicechat/EzAfkVoicechatServiceRegistrar.java b/ezafk-core/src/main/java/com/gyvex/ezafk/integration/voicechat/EzAfkVoicechatServiceRegistrar.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/integration/voicechat/EzAfkVoicechatServiceRegistrar.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/integration/voicechat/EzAfkVoicechatServiceRegistrar.java
diff --git a/src/main/java/com/gyvex/ezafk/integration/voicechat/SimpleVoiceChatIntegration.java b/ezafk-core/src/main/java/com/gyvex/ezafk/integration/voicechat/SimpleVoiceChatIntegration.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/integration/voicechat/SimpleVoiceChatIntegration.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/integration/voicechat/SimpleVoiceChatIntegration.java
diff --git a/src/main/java/com/gyvex/ezafk/integration/worldedit/LegacyWorldEditHelper.java b/ezafk-core/src/main/java/com/gyvex/ezafk/integration/worldedit/LegacyWorldEditHelper.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/integration/worldedit/LegacyWorldEditHelper.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/integration/worldedit/LegacyWorldEditHelper.java
diff --git a/src/main/java/com/gyvex/ezafk/integration/worldedit/WorldEditHelper.java b/ezafk-core/src/main/java/com/gyvex/ezafk/integration/worldedit/WorldEditHelper.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/integration/worldedit/WorldEditHelper.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/integration/worldedit/WorldEditHelper.java
diff --git a/src/main/java/com/gyvex/ezafk/integration/worldguard/FlagRegistrar.java b/ezafk-core/src/main/java/com/gyvex/ezafk/integration/worldguard/FlagRegistrar.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/integration/worldguard/FlagRegistrar.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/integration/worldguard/FlagRegistrar.java
diff --git a/src/main/java/com/gyvex/ezafk/integration/worldguard/WorldGuardSupport.java b/ezafk-core/src/main/java/com/gyvex/ezafk/integration/worldguard/WorldGuardSupport.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/integration/worldguard/WorldGuardSupport.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/integration/worldguard/WorldGuardSupport.java
diff --git a/src/main/java/com/gyvex/ezafk/integration/worldguard/flag/AfkBypassFlag.java b/ezafk-core/src/main/java/com/gyvex/ezafk/integration/worldguard/flag/AfkBypassFlag.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/integration/worldguard/flag/AfkBypassFlag.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/integration/worldguard/flag/AfkBypassFlag.java
diff --git a/src/main/java/com/gyvex/ezafk/listener/AfkPlayerActionsGUI.java b/ezafk-core/src/main/java/com/gyvex/ezafk/listener/AfkPlayerActionsGUI.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/listener/AfkPlayerActionsGUI.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/listener/AfkPlayerActionsGUI.java
diff --git a/src/main/java/com/gyvex/ezafk/listener/AfkPlayerOverviewGUI.java b/ezafk-core/src/main/java/com/gyvex/ezafk/listener/AfkPlayerOverviewGUI.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/listener/AfkPlayerOverviewGUI.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/listener/AfkPlayerOverviewGUI.java
diff --git a/src/main/java/com/gyvex/ezafk/listener/EconomyServiceListener.java b/ezafk-core/src/main/java/com/gyvex/ezafk/listener/EconomyServiceListener.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/listener/EconomyServiceListener.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/listener/EconomyServiceListener.java
diff --git a/src/main/java/com/gyvex/ezafk/listener/MoveListener.java b/ezafk-core/src/main/java/com/gyvex/ezafk/listener/MoveListener.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/listener/MoveListener.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/listener/MoveListener.java
diff --git a/src/main/java/com/gyvex/ezafk/listener/PlayerActivityListener.java b/ezafk-core/src/main/java/com/gyvex/ezafk/listener/PlayerActivityListener.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/listener/PlayerActivityListener.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/listener/PlayerActivityListener.java
diff --git a/src/main/java/com/gyvex/ezafk/listener/PlayerQuitListener.java b/ezafk-core/src/main/java/com/gyvex/ezafk/listener/PlayerQuitListener.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/listener/PlayerQuitListener.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/listener/PlayerQuitListener.java
diff --git a/src/main/java/com/gyvex/ezafk/listener/SimpleVoiceChatAfkListener.java b/ezafk-core/src/main/java/com/gyvex/ezafk/listener/SimpleVoiceChatAfkListener.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/listener/SimpleVoiceChatAfkListener.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/listener/SimpleVoiceChatAfkListener.java
diff --git a/src/main/java/com/gyvex/ezafk/manager/AfkTimeManager.java b/ezafk-core/src/main/java/com/gyvex/ezafk/manager/AfkTimeManager.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/manager/AfkTimeManager.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/manager/AfkTimeManager.java
diff --git a/src/main/java/com/gyvex/ezafk/manager/AfkZoneManager.java b/ezafk-core/src/main/java/com/gyvex/ezafk/manager/AfkZoneManager.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/manager/AfkZoneManager.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/manager/AfkZoneManager.java
diff --git a/src/main/java/com/gyvex/ezafk/manager/AfkZoneRewardManager.java b/ezafk-core/src/main/java/com/gyvex/ezafk/manager/AfkZoneRewardManager.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/manager/AfkZoneRewardManager.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/manager/AfkZoneRewardManager.java
diff --git a/src/main/java/com/gyvex/ezafk/manager/BypassList.java b/ezafk-core/src/main/java/com/gyvex/ezafk/manager/BypassList.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/manager/BypassList.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/manager/BypassList.java
diff --git a/src/main/java/com/gyvex/ezafk/manager/BypassListManager.java b/ezafk-core/src/main/java/com/gyvex/ezafk/manager/BypassListManager.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/manager/BypassListManager.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/manager/BypassListManager.java
diff --git a/src/main/java/com/gyvex/ezafk/manager/EconomyManager.java b/ezafk-core/src/main/java/com/gyvex/ezafk/manager/EconomyManager.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/manager/EconomyManager.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/manager/EconomyManager.java
diff --git a/src/main/java/com/gyvex/ezafk/manager/IntegrationManager.java b/ezafk-core/src/main/java/com/gyvex/ezafk/manager/IntegrationManager.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/manager/IntegrationManager.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/manager/IntegrationManager.java
diff --git a/src/main/java/com/gyvex/ezafk/manager/MessageManager.java b/ezafk-core/src/main/java/com/gyvex/ezafk/manager/MessageManager.java
similarity index 96%
rename from src/main/java/com/gyvex/ezafk/manager/MessageManager.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/manager/MessageManager.java
index 13979b4..8377b4a 100644
--- a/src/main/java/com/gyvex/ezafk/manager/MessageManager.java
+++ b/ezafk-core/src/main/java/com/gyvex/ezafk/manager/MessageManager.java
@@ -2,9 +2,9 @@
import com.gyvex.ezafk.EzAfk;
import com.gyvex.ezafk.bootstrap.Registry;
+import com.gyvex.ezafk.compatibility.LoreUtil;
import com.gyvex.ezafk.state.AfkState;
import com.gyvex.ezafk.util.PlaceholderUtil;
-import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@@ -71,7 +71,7 @@ public static String getMessage(String path, String fallback, Map 1 || (major == 1 && minor > 21) || (major == 1 && minor == 21 && patch >= 1);
+ } catch (Exception e) {
+ return false;
+ }
+ }
+
+ public static VersionAdapter create(Plugin plugin, Logger logger) {
+ if (isRegistryAccessSupported()) {
+ try {
+ Class> clazz = VersionAdapterFactory.class.getClassLoader()
+ .loadClass("com.gyvex.ezafk.version.Paper261PlusVersionAdapter");
+ java.lang.reflect.Constructor> ctor = clazz.getDeclaredConstructor();
+ return (VersionAdapter) ctor.newInstance();
+ } catch (ClassNotFoundException e) {
+ logger.warning("[EzAfk] Paper261PlusVersionAdapter not found, using fallback");
+ } catch (Exception e) {
+ logger.warning("[EzAfk] Failed to load Paper261PlusVersionAdapter: " + e.getMessage());
+ }
+ }
+
+ return new FallbackVersionAdapter();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/gyvex/ezafk/zone/Zone.java b/ezafk-core/src/main/java/com/gyvex/ezafk/zone/Zone.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/zone/Zone.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/zone/Zone.java
diff --git a/src/main/java/com/gyvex/ezafk/zone/ZoneCache.java b/ezafk-core/src/main/java/com/gyvex/ezafk/zone/ZoneCache.java
similarity index 100%
rename from src/main/java/com/gyvex/ezafk/zone/ZoneCache.java
rename to ezafk-core/src/main/java/com/gyvex/ezafk/zone/ZoneCache.java
diff --git a/src/main/resources/config.yml b/ezafk-core/src/main/resources/config.yml
similarity index 100%
rename from src/main/resources/config.yml
rename to ezafk-core/src/main/resources/config.yml
diff --git a/src/main/resources/gui.yml b/ezafk-core/src/main/resources/gui.yml
similarity index 100%
rename from src/main/resources/gui.yml
rename to ezafk-core/src/main/resources/gui.yml
diff --git a/src/main/resources/messages/messages.yml b/ezafk-core/src/main/resources/messages/messages.yml
similarity index 100%
rename from src/main/resources/messages/messages.yml
rename to ezafk-core/src/main/resources/messages/messages.yml
diff --git a/src/main/resources/messages/messages_de.yml b/ezafk-core/src/main/resources/messages/messages_de.yml
similarity index 100%
rename from src/main/resources/messages/messages_de.yml
rename to ezafk-core/src/main/resources/messages/messages_de.yml
diff --git a/src/main/resources/messages/messages_en.yml b/ezafk-core/src/main/resources/messages/messages_en.yml
similarity index 100%
rename from src/main/resources/messages/messages_en.yml
rename to ezafk-core/src/main/resources/messages/messages_en.yml
diff --git a/src/main/resources/messages/messages_es.yml b/ezafk-core/src/main/resources/messages/messages_es.yml
similarity index 100%
rename from src/main/resources/messages/messages_es.yml
rename to ezafk-core/src/main/resources/messages/messages_es.yml
diff --git a/src/main/resources/messages/messages_ja.yml b/ezafk-core/src/main/resources/messages/messages_ja.yml
similarity index 100%
rename from src/main/resources/messages/messages_ja.yml
rename to ezafk-core/src/main/resources/messages/messages_ja.yml
diff --git a/src/main/resources/messages/messages_nl.yml b/ezafk-core/src/main/resources/messages/messages_nl.yml
similarity index 100%
rename from src/main/resources/messages/messages_nl.yml
rename to ezafk-core/src/main/resources/messages/messages_nl.yml
diff --git a/src/main/resources/messages/messages_ru.yml b/ezafk-core/src/main/resources/messages/messages_ru.yml
similarity index 100%
rename from src/main/resources/messages/messages_ru.yml
rename to ezafk-core/src/main/resources/messages/messages_ru.yml
diff --git a/src/main/resources/messages/messages_zh.yml b/ezafk-core/src/main/resources/messages/messages_zh.yml
similarity index 100%
rename from src/main/resources/messages/messages_zh.yml
rename to ezafk-core/src/main/resources/messages/messages_zh.yml
diff --git a/src/main/resources/mp3/ezafk-sound.mp3 b/ezafk-core/src/main/resources/mp3/ezafk-sound.mp3
similarity index 100%
rename from src/main/resources/mp3/ezafk-sound.mp3
rename to ezafk-core/src/main/resources/mp3/ezafk-sound.mp3
diff --git a/src/main/resources/mysql.yml b/ezafk-core/src/main/resources/mysql.yml
similarity index 100%
rename from src/main/resources/mysql.yml
rename to ezafk-core/src/main/resources/mysql.yml
diff --git a/src/main/resources/plugin.yml b/ezafk-core/src/main/resources/plugin.yml
similarity index 100%
rename from src/main/resources/plugin.yml
rename to ezafk-core/src/main/resources/plugin.yml
diff --git a/src/main/resources/zones.yml b/ezafk-core/src/main/resources/zones.yml
similarity index 100%
rename from src/main/resources/zones.yml
rename to ezafk-core/src/main/resources/zones.yml
diff --git a/ezafk-folia/pom.xml b/ezafk-folia/pom.xml
new file mode 100644
index 0000000..80694ab
--- /dev/null
+++ b/ezafk-folia/pom.xml
@@ -0,0 +1,44 @@
+
+
+ 4.0.0
+
+
+ com.gyvex
+ ezafk-parent
+ 3.1.1
+
+
+ ezafk-folia
+ jar
+ EzAfk Folia Adapter
+
+
+
+ com.gyvex
+ ezafk-core
+ ${project.version}
+
+
+ io.papermc.paper
+ paper-api
+ ${paper.version}
+ provided
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${maven.compiler.plugin.version}
+
+ ${maven.compiler.release}
+ true
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/gyvex/ezafk/compatibility/scheduler/FoliaSchedulerAdapter.java b/ezafk-folia/src/main/java/com/gyvex/ezafk/compatibility/scheduler/FoliaSchedulerAdapter.java
similarity index 81%
rename from src/main/java/com/gyvex/ezafk/compatibility/scheduler/FoliaSchedulerAdapter.java
rename to ezafk-folia/src/main/java/com/gyvex/ezafk/compatibility/scheduler/FoliaSchedulerAdapter.java
index ca9a5dd..4736768 100644
--- a/src/main/java/com/gyvex/ezafk/compatibility/scheduler/FoliaSchedulerAdapter.java
+++ b/ezafk-folia/src/main/java/com/gyvex/ezafk/compatibility/scheduler/FoliaSchedulerAdapter.java
@@ -11,12 +11,7 @@
* {@link SchedulerAdapter} backed by Folia's {@link GlobalRegionScheduler} and
* {@link AsyncScheduler}.
*
- * This class directly imports Folia API types — it must never be
- * instantiated on servers that do not provide those types (Spigot, pre-1.19.4
- * Paper). {@link SchedulerAdapterFactory} guards instantiation so that the JVM
- * only class-loads this type when Folia is actually detected at runtime; if the
- * Folia classes are unexpectedly absent the resulting {@link NoClassDefFoundError}
- * is caught and a {@link BukkitSchedulerAdapter} is used as a fallback.
+ *
This class directly imports Folia API types.
*/
public final class FoliaSchedulerAdapter implements SchedulerAdapter {
@@ -66,4 +61,4 @@ private static TaskHandle wrap(ScheduledTask task) {
@Override public boolean isCancelled() { return task.isCancelled(); }
};
}
-}
+}
\ No newline at end of file
diff --git a/ezafk-paper-26.1/pom.xml b/ezafk-paper-26.1/pom.xml
new file mode 100644
index 0000000..237913f
--- /dev/null
+++ b/ezafk-paper-26.1/pom.xml
@@ -0,0 +1,44 @@
+
+
+ 4.0.0
+
+
+ com.gyvex
+ ezafk-parent
+ 3.1.1
+
+
+ ezafk-paper-26.1
+ jar
+ EzAfk Paper 26.1 Adapter
+
+
+
+ com.gyvex
+ ezafk-api
+ ${project.version}
+
+
+ io.papermc.paper
+ paper-api
+ ${paper.version}
+ provided
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${maven.compiler.plugin.version}
+
+ ${maven.compiler.release}
+ true
+
+
+
+
+
\ No newline at end of file
diff --git a/ezafk-paper-26.1/src/main/java/com/gyvex/ezafk/version/Paper261PlusVersionAdapter.java b/ezafk-paper-26.1/src/main/java/com/gyvex/ezafk/version/Paper261PlusVersionAdapter.java
new file mode 100644
index 0000000..347f2f5
--- /dev/null
+++ b/ezafk-paper-26.1/src/main/java/com/gyvex/ezafk/version/Paper261PlusVersionAdapter.java
@@ -0,0 +1,28 @@
+package com.gyvex.ezafk.version;
+
+import io.papermc.paper.registry.RegistryAccess;
+import io.papermc.paper.registry.RegistryKey;
+import org.bukkit.NamespacedKey;
+import org.bukkit.attribute.Attribute;
+import org.bukkit.enchantments.Enchantment;
+import org.bukkit.potion.PotionEffectType;
+
+public final class Paper261PlusVersionAdapter implements VersionAdapter {
+
+ @Override
+ public Attribute getMaxHealthAttribute() {
+ return Attribute.MAX_HEALTH;
+ }
+
+ @Override
+ public PotionEffectType getEffect(String minecraftKey) {
+ RegistryAccess registryAccess = RegistryAccess.registryAccess();
+ return registryAccess.getRegistry(RegistryKey.MOB_EFFECT).get(NamespacedKey.minecraft(minecraftKey));
+ }
+
+ @Override
+ public Enchantment getEnchantment(String minecraftKey) {
+ RegistryAccess registryAccess = RegistryAccess.registryAccess();
+ return registryAccess.getRegistry(RegistryKey.ENCHANTMENT).get(NamespacedKey.minecraft(minecraftKey));
+ }
+}
\ No newline at end of file
diff --git a/ezafk/pom.xml b/ezafk/pom.xml
new file mode 100644
index 0000000..e7fa59c
--- /dev/null
+++ b/ezafk/pom.xml
@@ -0,0 +1,136 @@
+
+
+ 4.0.0
+
+
+ com.gyvex
+ ezafk-parent
+ 3.1.1
+
+
+ ezafk
+ jar
+ EzAfk Distribution
+
+
+
+ github
+ GitHub Packages
+ https://maven.pkg.github.com/${github.repository}
+
+
+
+
+
+ com.gyvex
+ ezafk-api
+ ${project.version}
+
+
+ com.gyvex
+ ezafk-core
+ ${project.version}
+
+
+ com.gyvex
+ ezafk-paper-26.1
+ ${project.version}
+
+
+ com.gyvex
+ ezafk-folia
+ ${project.version}
+
+
+
+
+
+
+ ${project.basedir}/../ezafk-core/src/main/resources
+ true
+
+ plugin.yml
+ config.yml
+ gui.yml
+ mysql.yml
+ zones.yml
+ messages/**
+
+
+
+ ${project.basedir}/../ezafk-core/src/main/resources
+ false
+
+ mp3/ezafk-sound.mp3
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${maven.compiler.plugin.version}
+
+ ${maven.compiler.release}
+ true
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ ${maven.shade.plugin.version}
+
+
+ package
+
+ shade
+
+
+ false
+
+
+ org.bstats:bstats-bukkit
+ org.bstats:bstats-base
+ net.kyori:adventure-api
+ net.kyori:adventure-key
+ net.kyori:adventure-text-minimessage
+ net.kyori:adventure-text-serializer-legacy
+ net.kyori:examination-api
+ net.kyori:examination-string
+ javazoom:jlayer
+ com.github.EzFramework:Jaloquent
+ com.github.EzFramework:JavaQueryBuilder
+
+ com.gyvex:ezafk-api
+ com.gyvex:ezafk-core
+ com.gyvex:ezafk-paper-26.1
+ com.gyvex:ezafk-folia
+
+
+
+
+ org.bstats
+ com.gyvex.ezafk.bstats
+
+
+ net.kyori
+ com.gyvex.ezafk.libs.net.kyori
+
+
+ javazoom
+ com.gyvex.ezafk.libs.javazoom
+
+
+ com.github.ezframework
+ com.gyvex.ezafk.libs.ezframework
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index ba8fe37..a7bdbd8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,17 +1,19 @@
-
4.0.0
com.gyvex
- ezafk
+ ezafk-parent
3.1.1
+ pom
UTF-8
provided
21
+ 3.5.5
26.1.2.build.57-stable
3.1.0
7.0.13
@@ -28,6 +30,14 @@
true
+
+ ezafk-api
+ ezafk-core
+ ezafk-paper-26.1
+ ezafk-folia
+ ezafk
+
+
papermc-repo
@@ -59,402 +69,7 @@
maxhenkel-public
https://maven.maxhenkel.de/repository/public
-
-
-
-
- io.papermc.paper
- paper-api
- ${paper.version}
- provided
-
-
- com.google.code.gson
- gson
-
-
- org.apache.commons
- commons-lang3
-
-
- org.slf4j
- slf4j-api
-
-
- org.jetbrains
- annotations
-
-
-
-
-
- com.google.code.gson
- gson
- 2.11.0
- provided
-
-
- com.google.errorprone
- error_prone_annotations
-
-
-
-
- com.google.errorprone
- error_prone_annotations
- ${errorprone.annotations.version}
- provided
-
-
- org.jetbrains
- annotations
- ${jetbrains.annotations.version}
- provided
-
-
- org.apache.logging.log4j
- log4j-api
- ${log4j.api.version}
- provided
-
-
- org.slf4j
- slf4j-api
- 2.0.17
- provided
-
-
- org.bstats
- bstats-bukkit
- ${bstats.version}
- compile
-
-
- com.sk89q.worldguard
- worldguard-bukkit
- ${worldguard.version}
- provided
-
-
- it.unimi.dsi
- fastutil
-
-
- org.yaml
- snakeyaml
-
-
- com.google.guava
- guava
-
-
- com.google.code.gson
- gson
-
-
- org.bstats
- bstats-bukkit
-
-
- org.apache.logging.log4j
- log4j-api
-
-
-
-
-
- net.kyori
- adventure-api
- 4.26.1
-
-
- net.kyori
- adventure-key
- 4.26.1
-
-
- net.kyori
- adventure-text-minimessage
- 4.26.1
-
-
- net.kyori
- adventure-text-serializer-legacy
- 4.26.1
-
-
- net.kyori
- examination-api
- 1.3.0
-
-
- org.jetbrains
- annotations
-
-
-
-
- net.kyori
- examination-string
- 1.3.0
-
-
- org.jetbrains
- annotations
-
-
-
-
- javazoom
- jlayer
- 1.0.1
-
-
-
- de.maxhenkel.voicechat
- voicechat-api
- 2.2.5
- provided
-
-
-
- com.github.ez-plugins
- ezcountdown
- 2.0.1
- provided
-
-
- io.papermc.paper
- paper-api
-
-
- net.kyori
- adventure-api
-
-
- net.kyori
- adventure-key
-
-
- net.kyori
- adventure-text-minimessage
-
-
- net.kyori
- adventure-text-serializer-legacy
-
-
- org.bstats
- bstats-bukkit
-
-
- org.bstats
- bstats-base
-
-
-
-
- com.github.NEZNAMY
- TAB-API
- 5.5.0
- provided
-
-
- org.jetbrains
- annotations
-
-
-
-
- com.github.MilkBowl
- VaultAPI
- 1.7.1
- provided
-
-
- me.clip
- placeholderapi
- 2.11.5
- provided
-
-
- org.jetbrains
- annotations
-
-
- org.bstats
- bstats-bukkit
-
-
- org.bstats
- bstats-base
-
-
- net.kyori
- adventure-api
-
-
- net.kyori
- adventure-text-serializer-legacy
-
-
- net.kyori
- adventure-text-serializer-gson
-
-
-
-
- com.github.EzFramework
- Jaloquent
- ${jaloquent.version}
- compile
-
-
- com.github.EzFramework
- jaker
- 1.0.6
- test
-
-
- org.yaml
- snakeyaml
-
-
- org.apache.commons
- commons-lang3
-
-
-
-
- com.github.EzFramework.Jaker
- jaker-data-en-US
- 1.0.6
- test
-
-
- org.junit.jupiter
- junit-jupiter
- 5.10.2
- test
-
-
- org.mockito
- mockito-core
- 5.5.0
- test
-
-
-
-
-
-
- src/main/resources
- true
-
- plugin.yml
- config.yml
- gui.yml
- mysql.yml
- zones.yml
- messages/**
-
-
-
- src/main/resources
- false
-
- mp3/ezafk-sound.mp3
-
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- ${maven.compiler.plugin.version}
-
- ${maven.compiler.release}
- true
-
-
-
- org.apache.maven.plugins
- maven-shade-plugin
- ${maven.shade.plugin.version}
-
-
- package
-
- shade
-
-
- false
-
-
- org.bstats:bstats-bukkit
- org.bstats:bstats-base
- net.kyori:adventure-api
- net.kyori:adventure-key
- net.kyori:adventure-text-minimessage
- net.kyori:adventure-text-serializer-legacy
- net.kyori:examination-api
- net.kyori:examination-string
- javazoom:jlayer
- com.github.EzFramework:Jaloquent
- com.github.EzFramework:JavaQueryBuilder
-
-
-
-
- org.bstats
- com.gyvex.ezafk.bstats
-
-
- net.kyori
- com.gyvex.ezafk.libs.net.kyori
-
-
- javazoom
- com.gyvex.ezafk.libs.javazoom
-
-
- com.github.ezframework
- com.gyvex.ezafk.libs.ezframework
-
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
- 3.5.5
-
- false
- ${argLine} -Dnet.bytebuddy.experimental=true
-
-
-
-
-
-
-
- github
- GitHub Packages
- https://maven.pkg.github.com/${github.repository}
-
-
+