* Try to properly check if so_reuseport is available
* io_uring "support"
* comment out io_uring, for now
* Make IO_uring opt-in via `-DGeyser.io_uring=true` flag
* dont include io_uring
* oops - bungee
editing on mobile is hard
* oops - spigot
* oops - velocity
* properly exclude all io_uring on all platforms except standalone
---------
Co-authored-by: Kas-tle <26531652+Kas-tle@users.noreply.github.com>
* Use JiJ inclusion for Fabric/NeoForge to prevent mod conflicts. Further: Don't publish shadow jars to maven.
* Shade and relocate dependencies that don't conform to SemVer on Fabric
* Shade/Relocate dependencies on Fabric to avoid version warnings
* Use relocate function from the build-logic plugin
* This makes `geyser reload` work the same across all platforms. For example, it ensures that we reload the config to the greatest extent possible (with the exception of compression/injection settings). Additionally, this clears up issues where Extensions were previously disabled during reloading - instead, the new Pre and Post reload events allow extensions to reload whatever necessary on their own.
* lookup players by uuid instead of name
* Fix: look up Players by UUID for permissions, dont throw if a player can't be found (e.g. disconnected)
* use api method
- the extensionmanagers `extension` method now takes in a extension id instead of name
- extension folders are now created using extension id's
- Extensions can load classes from other extensions now
- Added warning about external class loading
- Wherever applicable: store extensions internally by id instead of name
* Fix duplicate permission registration
* Register /<extensionid> help (and aliased ?) commands under the "geyser.command.exthelp.id" permission
* Fix: Show correct header for /geyser help vs /<extensionid> help
* System property stuff
* Add geyserUdpPort/Address system properties as overrides for pluginUdpPort/Address
* Fix formatting for if-else statements
---------
Co-authored-by: Camotoy <20743703+Camotoy@users.noreply.github.com>
Assigning permission allows people to possibly deny that permission to hide the command from tab complete list.
Permission is defaulted to true, so command keeps current behavior by default.