Plugin Version
1.0.43
Hytale Version
0.5.6
Stacktrace
No response
Describe the bug
Summary
When running via runServer with LuckPerms while LuckPerms is reported as installed/loaded by PluginManager#getPlugin its API (LuckPermsProvider.get()) throws NotLoadedException when accessed from a command handler. This does not happen when the plugin is built normally (build) and run outside of runServer everything works as expected in that case.
Might be because of d) the plugin in the stacktrace is incorrectly 'shading' the LuckPerms API into its jar ?
Observed behavior (via runServer)
[2026/07/12 13:26:49 INFO] [AbstractCommand] Hello from ExampleCommand!
[2026/07/12 13:26:49 INFO] [AbstractCommand] LuckPerms is installed
[2026/07/12 13:26:49 SEVERE] [CommandManager] Failed to execute command example for Hazard4U
net.luckperms.api.LuckPermsProvider$NotLoadedException: The LuckPerms API isn't loaded yet!
This could be because:
a) the LuckPerms plugin is not installed or it failed to enable
b) the plugin in the stacktrace does not declare a dependency on LuckPerms
c) the plugin in the stacktrace is retrieving the API before the plugin 'enable' phase
(call the #get method in onEnable, not the constructor!)
d) the plugin in the stacktrace is incorrectly 'shading' the LuckPerms API into its jar
at net.luckperms.api.LuckPermsProvider.get(LuckPermsProvider.java:53)
at dev.hytalemodding.commands.ExampleCommand.execute(ExampleCommand.java:34)
at com.hypixel.hytale.server.core.command.system.AbstractCommand.acceptCall0(AbstractCommand.java:770)
at com.hypixel.hytale.server.core.command.system.AbstractCommand.acceptCall(AbstractCommand.java:668)
at com.hypixel.hytale.server.core.command.system.CommandManager.runCommand(CommandManager.java:388)
at com.hypixel.hytale.server.core.command.system.CommandManager.lambda$handleCommand$0(CommandManager.java:359)
at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.compute(ForkJoinTask.java:1750)
at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.compute(ForkJoinTask.java:1742)
at java.base/java.util.concurrent.ForkJoinTask$InterruptibleTask.exec(ForkJoinTask.java:1659)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:511)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1450)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:2019)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:187)
Environment
- OS: Windows
- Gradle: 9.5.1
- Plugin:
com.azuredoom.hytale-tools, version 1.+
- Command:
./gradlew runServer
- Reproduces every time via
runServer; does not reproduce with a normal build.
Repro project
https://github.com/Hazard4U/LoadOrderingIssue
Happy to provide more logs or debug further if that helps track this down. Thanks for the plugin!
To Reproduce
Steps to reproduce
Minimal repro project: https://github.com/Hazard4U/LoadOrderingIssue
- Start with
./gradlew runServer.
- In-game, run
/example * that checks for LuckPerms and then accesses LuckPermsProvider.get().
- You get an error
But if you build the plugin it works.
Plugin Version
1.0.43
Hytale Version
0.5.6
Stacktrace
No response
Describe the bug
Summary
When running via
runServerwith LuckPerms while LuckPerms is reported as installed/loaded byPluginManager#getPluginits API (LuckPermsProvider.get()) throwsNotLoadedExceptionwhen accessed from a command handler. This does not happen when the plugin is built normally (build) and run outside ofrunServereverything works as expected in that case.Might be because of
d) the plugin in the stacktrace is incorrectly 'shading' the LuckPerms API into its jar?Observed behavior (via
runServer)Environment
com.azuredoom.hytale-tools, version1.+./gradlew runServerrunServer; does not reproduce with a normalbuild.Repro project
https://github.com/Hazard4U/LoadOrderingIssue
Happy to provide more logs or debug further if that helps track this down. Thanks for the plugin!
To Reproduce
Steps to reproduce
Minimal repro project: https://github.com/Hazard4U/LoadOrderingIssue
./gradlew runServer./example *that checks for LuckPerms and then accessesLuckPermsProvider.get().But if you build the plugin it works.