Skip to content

[Bug]: runServer with LuckPerms NotLoadedException #13

Description

@Hazard4U

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

  1. Start with ./gradlew runServer.
  2. In-game, run /example * that checks for LuckPerms and then accesses LuckPermsProvider.get().
  3. You get an error

But if you build the plugin it works.

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingtriage

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions