* Create a new HttpClient for each connection
If the instance is using Java 21, the HttpClient resources will be cleaned using its AutoCloseable interface
* Do not apply a resource pack that has already been applied
* Throw IllegalStateException in case of applying a resource pack already applied from the API
* Updated some dependencies
* Added support for ServerResourcePackSendEvent resource pack modification
* Ensure that we send a response to the correct server when in flight
* The rest of the codebase treats the hash as a String...
As does Mojang.
* Support sending the resource packet response to the in-process connection in the ModernResourcePackHandler
---------
Co-authored-by: Shane Freeder <theboyetronic@gmail.com>
* Initial ResourcePack refactor
* Implement sendResourcePacks method
* Initializes the ResourcePackHandler at player initialization
* Move adventure to velocity resource pack conversion to the same class
* Added some internal resource pack documentation
* Refactored Modern ResourcePack handling
* Handle RemoveResourcePackPacket from backend server
* Fixed license
* Use removeIf instead of manual iteration
* Improve ModernResourcePackHandler
* fix hash conversion
* bundle resource packs
* keep old constructors of PlayerResourcePackStatusEvent
* add @Nullable to PlayerResourcePackStatusEvent#getPackId
* Use a single instance of BundleDelimiterPacket
* Throw UnSupportedOperationException on operations not supported by LegacyResourcePackHandler
* Use a single instance on empty packets
* Handle active packet bundle sending from backend server in case of sending a packet bundle of resource packs
* Improve packet bundling
* Fixed login for players with version 1.20.2
---------
Co-authored-by: Gero <gecam59@gmail.com>
This commit fixes the sending of the client brand to the backend server and the execution of the PlayerClientBrandEvent from players with versions 1.20.2 or higher
* Fixed possible IOException if path is a directory
* Removed File usage
* Catch possible NumberFormatException on invalid config version
!Files.exists -> Files.notExists
* Improved Scheduler API
- Added `Scheduler#builder(plugin)`
This method allows a more simplified builder while maintaining the main requirement of the executor plugin
- Added `Scheduler#taskByPlugin(plugin)`
Allows to obtain the tasks that a plugin has sent to execute and that are currently active
- Added `TaskBuilder#task(Consumer<SchuledTask>)`
Allows to specify a task with access to the task itself with the ability to cancel itself
* Applied requested changes
- Removed tasks builder method
- Added `Scheduler#buildTask(plugin, Consumer<ScheduledTask>)`
* Removed some unused imports
* Applied suggested change
* Fix possible test bug
* Applied more suggested changes
* Fixed tests inside tasks
* Added ability to customize translations
* Removed remaining usage of `Paths#get`
As of java 11 its replacement `Path#of` was created, which is called when using `Paths#get`, besides, according to documentation, it mentions that it can be deprecated at any time
And fix a minor typo in LegacyChannelIdentifier