* 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>
The API changes required for adopting resource packs are still needed, however
the maven snapshots repo is dead, and nothing technically stops us from doing
this
Fixes#1047. We can't go any higher since that's an API-breaking change. In any event, this will likely disappear in 5.0.0 anyway, because Configurate 4.x now shades SnakeYAML internally.
* Send LoginAcknowledged immediately
* Resend player list header/footer after backend server switched to config state
* Fix clearHeaderAndFooter not clearing fields in ConnectedPlayer
* Clear boss bars, header/footer, tab list when switching client to config state
* Send client settings in config state
This is part of preparatory work for Velocity 5.0.0's revamped event system, but this change is safe to bring into the 3.x.x series. This affects the scheduler for now, but command execution will also be moved into the per-plugin thread pool, along with invocations of `EventTask.async()`.
Spiritually indebted to #518 and @alexstaeding.
There's a minor break - we're going up to 3.2.0-SNAPSHOT as the API now compiles against Java 11. But this is more academic in practice.
* Reduce Spam from the TabList by not sending every package multiple times
VelocityTabList#processUpsert called entry.setX which will create a package and send it to the client.
BackendPlaySessionHandler doesn't return true for those packages, therefore the package for tab list updates will be send two times.
* Cleanup TabList#buildEntry, added listed status to Entry builder
* 1.19.1-rc1
* More signature changes
* Further 1.19.1 changes
I also started on the checkstyle update, see the developers notes
for the rest I haven't gotten around to fixing yet.
* Fix checkstyle
* Checkstyle imports
* Fix logic error
* Changes 1.19.1-pre2
* 1.19-pre3
* Progress, some parts still WIP
* Overlooked changes
* Fix ServerData
* Fix ServerLogin send check
* Workaround the broken behavior of "No Chat Reports"
Note that if we ever choose to enforce chat signatures, then the mod will just break again... not our fault if we do that, you get what you pay for.
* more
Co-authored-by: Shane Freeder <theboyetronic@gmail.com>
Co-authored-by: Andrew Steinborn <git@steinborn.me>
* Implement the ServerData packet by firing ProxyPingEvent
Mojang introduced the enable-status server property with Minecraft 1.19, which if enabled causes servers to close the connection when a client tries to ping them. Mojang wants to show the MOTD and favicon on the server select screen for those who manage to log in, so we need to implement this packet as well.
The good news is that we can send this packet as many times as needed on the same connection
This matches the behavior of pinging the server. This is a minor, but completely backwards-compatible, API breakage: Player inherits from InboundConnection so we do not have to change ProxyPingEvent, however plugins not expecting a Player might get confused.
* typo