This commit implements basic functionality for villager trading. This is still incomplete and is buggy in areas such as with villager trades that have more than one input and trade inputs and outputs containing NBT.
Co-authored-by: DoctorMacc <toy.fighter1@gmail.com>
* Added legacy skin support for bedrock to bedrock clients
* Added bedrock to bedrock cape handling
* Added bedrock geometry support
* Bedrock skins now work in all auth modes
* Tonne of debug info
* Added fix to prevent customised skins from being loaded
* Added skin size to bedrock client data
* Cleaned debugging code
* Made bedrock cape take priority over third party
* Cut the customised skin image in half to hopefully get it to map
* Removed hacky conversion attempt
* Fixed bedrock skin caching on load and 1.14.60 support
* Cleaned up debug messages
* Added linked player ignore
* Implement helper methods for sending packets, fixes an NPE when chatting before connecting to the remote server
* Change method names
* Add a space between doc comment lines
* Add debug messages
These sound handlers had to be added since on Minecraft: Java Edition, these sounds are handled clientside whilst Minecraft: Bedrock Edition expects something from the server. To counter this, we emulate the sounds of that on Minecraft: Java Edition within Geyser and send it to the client. The code may seem a tadredundant, but there is not much of an alternative unfortunately.
The refactors in this commit go a bit beyond the scope of what the sound/effects branch was meant to accomplish, however most of these changes are necessary so chunk caching could be reintroduced for the standalone version. The chunk caching here allows for us to get the block ID before the block was broken, and in the future allow us to implement newer features. Chunk caching is optional (and disabled by default) as on non-Bukkit versions, it can eat up a lot of RAM with many players online.
Previously, any time a block was clicked whether it be with a block in the hand or not, a sound would play. This checks if the item in the players hand is indeed a block as well as the same block in the UpdateBlockPacket, and properly plays the packet.
The normal identity UUID caused problems and caused the bedrock client to crash when using Floodgate. This was likely because on bedrock edition, it's a version 3 UUID opposed to java edition which uses version 4.