Using /geyser advancements, Bedrock clients can get a visual on their progress.
Co-authored-by: yehudahrrs <47502993+yehudahrrs@users.noreply.github.com>
Co-authored-by: Olivia <chew@chew.pw>
Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
Co-authored-by: DoctorMacc <toy.fighter1@gmail.com>
Co-authored-by: rtm516 <ryantmilner@hotmail.co.uk>
Co-authored-by: Camotoy <20743703+Camotoy@users.noreply.github.com>
Microsoft accounts can now use Geyser, while maintaining full backwards compatibility with Mojang accounts.
Co-authored-by: Camotoy <20743703+Camotoy@users.noreply.github.com>
* Prevent server pong from appearing if MOTDs are too long
If the server MOTDs are 340 characters or longer, they will not appear. If this is the case, we trim each.
* Implement a more exact fix
* Add Ender Dragon effects and sounds
* Add proper death effect and clean up
* Add Ender Dragon respawn sound
* Possibly fix dragon breath direction?
* Update mappings
* Fix death animation triggering at low health
* Trigger death event when health is 0 and add explosions back
* Add comment
Client-side block animations and reach checks are now added.
This commit also includes cleanup in BlockChangeTranslator as well as proper Netherite tool support for calculating block breaking.
Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
* Implement book editing
Updates the PR created by @ForceUpdate1 for 1.16 support. Seems to work fine now that hand support is in MCProtocolLib.
Co-authored-by: Camotoy <20743703+DoctorMacc@users.noreply.github.com>
* Remove debug line
* Simplify code
Currently still borked for creative mode.
* Fix books on creative
* Bug fixes
* Fix NPE?
* Blind fixes
* Send Book update before any player actions
* Remove debug prints
* Fix out of bounds for page replace and add
* Fix editing desync and remove empty pages from the end
* Send edit packet after signing
* Refactor
* Clean up and fix creative
* Apply suggestions from code review
Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
Co-authored-by: ForceUpdate1 <mneuhaus44@gmail.com>
Co-authored-by: Camotoy <20743703+DoctorMacc@users.noreply.github.com>
Co-authored-by: David Choo <davchoo3@gmail.com>
Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
* Trigger builds of Geyser-Fabric and GeyserAndroid after a build success
* Enable GeyserAndroid and fix paths
* Only build for master
* Disable propagation of build results
* Don't wait for sequential builds
* Add Tickable interface
By having a tickable interface, we're only dedicating one thread to ticking entities and running tasks as opposed to several. This will also help with implementing world border support.
* removeEntity already clears tickableEntities for us
* Only tick the entity if it's not being ticked
* Dimension switching cleanup
Cleans up dimension switching logic that should no longer be needed. Also fixes above Nether Bedrock building dimension switching.
* Clear thunder on dimension switch too
* Clarify fake dimension switch function name
* Javadoc that
* Work around there being a void floor in Bedrock
If the player's Y coordinate is -38 or below, we teleport the player below the void floor and they can safely die. :)
* Don't teleport if below Y -40
* sigh
* Have floorY be its own variable
* Add more comment
* More comments
* Finish my thought
Having an incongruency between the server render distance and the client render distance appears to cause issues, and I have not been able to encounter such a crash.
* Implement downstream PROXY protocol support
* Clarify the configuration version updating procedure
* Bump netty-resolver-dns to 4.1.56.Final
* Update Netty to .56
* Don't increase jar size by 2MB
Co-authored-by: Camotoy <20743703+Camotoy@users.noreply.github.com>
Previously, we wouldn't send the time if the server was sending the same time with doDaylightCycle on. However, this isn't vanilla behavior (for Bedrock nor Java) and can occasionally cause irregularities. The time is now always sent to Bedrock clients, and a daylightCycle field is added to GeyserSession to keep track of the doDaylightCycle gamerule we need to send to Bedrock. Removing the map we used to store the time may also improve memory usage since this was never cleaned up.
Previously, we wouldn't send the time if the server was sending the same time with doDaylightCycle on. However, this isn't vanilla behavior (for Bedrock nor Java) and can occasionally cause irregularities. The time is now always sent to Bedrock clients, and a daylightCycle field is added to GeyserSession to keep track of the doDaylightCycle gamerule we need to send to Bedrock. Removing the map we used to store the time may also improve memory usage since this was never cleaned up.
* Allow /help to work even if command suggestions are disabled
This sends a minimal available commands packet to permit /help sending to the server.
* Fix whitespace
* Just send an empty packet
* Change variable name
The ominous banner is a separate banner type in Bedrock. If we detect the ominous banner pattern, then we set the ominous banner type in NBT. This process is also checked vice-versa, allowing the ominous banner to be pulled from the Bedrock creative menu.