This commit brings full support for crawling, sneaking under 1.5-block-tall spaces, and swimming in one-block areas. There is a check in place that decreases the player's speed to something comparable to Java if they are in a situation where they would otherwise go at normal walking speed (for example: without the check, a Bedrock player would go at full walking speed while crawling).
On Bedrock, a banner must be placed in the chestplate slot in order to be visible. On Java Edition, banners are placed in the helmet slot. This commit fixes the issue by migrating banners to the chestplate spot if the chestplate spot is empty.
This commit also fixes pillager poses if they're not holding a crossbow, along with a couple other optimizations.
Conveniently enough, the minecart furnace icon still exists in the vanilla Bedrock Edition game (thanks to Kastle for this discovery). With this and the translation string still being present, we can add the item into the game with only minor issues.
- If GeyserConnector.getPlayerByUuid is given null, it will return null
- Never set a session's UUID to null if possible - but have precautions if for some reason it is
Note that this needs to be revisited to see if it's even needed, or perhaps some sort of Guava cache.
- `getCachedPlayerEntityLink` now removes the entry if found
- Skulls will not have player entity links so we shouldn't bother checking
- Clear the entity link cache on dimension switch
- Shield code is now down as the player is sneaking - it doesn't wait for the server to update our sneaking status
- Shield is now applied correctly when sneaking and then moving to the shield item
* Update Adventure from 4.5.0 to 4.7.0
* Fix test failure due to changes in Adventure color mapping
Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
For whatever reason, item frames use the PlayerActionPacket in any non-creative gamemode, but creative mode keeps existing behavior. This has the benefit of fixing adventure mode item frame item dropping.
This commit implements 1.16.210 support while still keeping 1.16.100 and 1.16.210 compatibility.
Co-authored-by: AJ Ferguson <AJ-Ferguson@users.noreply.github.com>
Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
* Fix logging into a server with Fabric Networking API
Turns out we prevented the response to LoginPluginRequestPacket. Fabric API 0.28 and later will not let a client join without this response.
* Switch back to Jitpack just for Protocol to prevent weird errors
* Re-add sub protocol check
* Simplify check
* Update protocol lib and fastutil
Move away from jitpack since we store each unique snapshot build in the opencollab repo.
Also, trove hasn't existed in the network repo for quite some time so the exclusion isn't needed anymore.
* Store fastutil version in a property
* Store adventure version in a property
Firework stars, unsurprisingly, share some code with fireworks. This commit adds a new FireworkBaseTranslator abstract class that both firework items extend from, in order to use the explosion translation code. Firework stars also show color.
Armor stands now show armor if invisible. This allows both names and armor to show on an armor stand, and should allow for custom models that use armor stands to show, to an extent.
Barrels are a bit more complicated to lump in with chests for the time being. It *can* be fixed, but it requires workarounds.
This reverts commit 07f36affb9.
Merge commands with the same parameters (thanks Supreme)
Add more suggestion types (blocks, items, entities)
More optimizations
Co-authored-by: SupremeMortal <6178101+SupremeMortal@users.noreply.github.com>
Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
As of 1.16.210.59, the sub-MOTD cannot be blank: https://bugs.mojang.com/browse/MCPE-117979
This workaround will be implemented now so the widest range of Geyser versions will properly show a ping in 1.16.210 - better an 'outdated server' message than 'unable to connect to world.'
* Skin and skull fixes
- Handle the occasional greater-than-128-px skin
- Remove unused Jackson dependency
- Update used Jackson dependency
- Handle skin downloading on another thread
* Other small touchups
* Flush after rescaling
- Don't schedule for setting jumping on and off if cache chunks is enabled, since we don't need to know that
- Add a new setting to disable player ping forwarding. Hopefully this helps with timeouts.
With this commit, debug messages in Netty and Protocol will now show if debug mode is enabled in the Geyser standalone config.
There is also some small tuning to the PacketTranslatorRegistry for cleanliness and maybe some minor performance.