* Fireball and ghast improvements
- Ghasts now visually show if they're charging a fireball
- Fireballs are now vastly better and will update better
* Add gravity and drag to projectiles
* Add check for session close and improve fireball
* Remove motion stuff from fireball
* Make fireball hittable
* Add wither skull entity
* Small changes
* Add note about laggy fireballs
Co-authored-by: David Choo <davchoo3@gmail.com>
* BlockEntity performance improvements
* Use chunk cache if possible for block caching
* Get new block state from ViaVersion if block entity
* Add Javadoc for FlowerPotBlockEntityTranslator.isFlowerBlock
* Remove debug line
* Don't add all RequiresBlockState instances if cache chunks is enabled
* Double chest map get optimization
* Last changes
Co-authored-by: DoctorMacc <toy.fighter1@gmail.com>
* Fix bell sound and visuals
The bell sound now correctly plays.
Bells will also visually ring when rung by another player.
* Compress elses
* Add more whitespace to new code
* Send position update every 3 seconds if idle
Prevents timeouts in certain instances when AFK.
* Cancel position sending on dimension switching
* Remove debug lines
* Create function to centralize movement translation
* 1.16.4-pre1 support
* Update to support ViaVersion 3.2.0 (#1358)
* Update to support ViaVersion 3.2.0
This commit updates ViaVersion integration to support their recent mappings changes.
Co-authored-by: Nassim <jahnke.nassim@gmail.com>
* Send adventure settings on gamemode change after gamemode swap
* Update Velocity to 1.1.0 proper
* Update to 1.16.4
Co-authored-by: Nassim <jahnke.nassim@gmail.com>
* Add support for more recipes
- Tool repairing
- Book cloning
- Suspicious stew
- Tipped arrows
What still needs to be done:
- Map cloning/extending (though there may be item mapping mismatch getting in the way)
- Banner duplication (couldn't figure this out)
* Add some more spacing
* Explain recipe UUIDs
* Create and position Ender Dragon Bounding Box
Currently allows the player to "kill aura" target
the ender dragon.
* Use an entity to handle attacks for each hitbox
* Use the proper flag to make entities invisible
* Clean up and add some comments
* Ender dragon entity metadata improvements
* Add doc to segment functions
* Add changes
Co-authored-by: DoctorMacc <toy.fighter1@gmail.com>
* Introduce CommandSender.getLocale()
This allows Geyser-specific commands (e.g. `/geyser help`) to be displayed in the (Java or Bedrock) player's default language, which stops those commands from simply being displayed in the default locale.
* Tweak Javadoc
* Set CommandManager's GeyserConnector to final
* Clean up
Usually this happened when joining from another dimension after the player exited to the main menu on the death screen. The player would not realize that they are dead.
- Added `GeyserCommand.isExecutableOnConsole()`. If this is set to false, the command will not appear as an option in the GUI.
- Added `GeyserCommand.getSubCommands()`. If not empty, the subcommand options will now appear in the GUI.
* Predict the trajectory of projectiles and add particles
* Correct lingering potion gravity
* Update last position on move absolute
* Clean up
* Add egg to ItemRegistry and update mappings
* Add statistics menu
* Changed back button text
* Add check to make sure the player requested the statistics display
* Better item translation support; misc changes
* Clean up session getting?
* Remove extra debug that is likely unnecessary
* Remove unused function
* Update languages submodule
* Clean up javadoc comment
* Fix typo
Co-authored-by: DoctorMacc <toy.fighter1@gmail.com>
Co-authored-by: Camotoy <20743703+DoctorMacc@users.noreply.github.com>
* Fix mob mount positions
Uses offsets from Java Edition.
* Fix Boat mount pos for multiple passengers and Fix Ravager
Remove unnecessary horse metadata
* Fix Minecart & Boat Mount Pos, Fix Player Height Offset
* Use offset of EntityType.PLAYER
* Add back metadata
* BlockStorage is never used concurrently, no need to synchronize
* initial, semi-functional, faster chunk conversion
* faster chunk conversion works well for every situation except spigot
* delete unused ChunkPosition class
* preallocate and pool chunk encoding buffers
* make it work correctly on spigot
* make field naming more consistent
* attempt to upgrade to latest MCProtocolLib
* remove debug code
* compile against my MCProtocolLib fork while i wait for my upstream PR to be accepted
* return to Steveice10 MCProtocolLib
* fix some NPEs caused by race conditions in chunk conversion
tbh the whole session should be read-write locked for every operation
* fix code style issues
* make ChunkPosition use a hashCode implementation with far better hash distribution
this should improve the performance when used as a hash table key
* ChunkCache no longer uses position wrapper objects
this yields a roughly 15-20% increase in performance when converting chunk data
* fix code style issues
* Fix bucket interactions on creative mode
Bedrock uses the BLOCK_INTERACT enum of BedrockActionTranslator to truly indicate if a bucket should be used or not. In order to hook into this, we need to delay the bucket placing by about 5 milliseconds - this gives us time to cancel the interaction if needed.
Bucket sounds will now not play in this case as well.
* Various Scoreboard fixes
Fixes#1328 and a few other potential Scoreboard problems
* Consistent whitespacing
Co-authored-by: DoctorMacc <toy.fighter1@gmail.com>
* Fix NotNull error with particles, replace incorrect string meta with int meta.
* Add back newline
* Remove debug line
* Update Protocol and prepare for merge
Co-authored-by: DoctorMacc <toy.fighter1@gmail.com>
Fishing rods pulling players is a clientside feature on Java. On Bedrock, a SetEntityMotionPacket is sent to the client. Therefore this PR implements the Java fishing rod pulling mechanics and sends it off to Bedrock, which sends MovePlayerPackets that are sent to the server.
* Forward keep alive packets to the client
Previously, MCProtocolLib (our Java protocol library) handled keep alive packets for us. This commit disables that option and 'forwards' the keep alive packets to the client, and sending the keep alive packet back once Bedrock sends us a ping response.
* Delete DataCache
* Update to latest MCProtocolLib
* Swap values around as a sanity check
* Tipped arrow translation
- Tipped arrow items are now properly translated both ways
- Tipped arrow particle effects are also translated, by having a list of all colors Java could send us and their Bedrock ID
* Remove a whitespace
This commit mainly focuses on fixing the crashing of villagers that occurred pre-1.14.
Co-authored-by: AJ Ferguson <AJ-Ferguson@users.noreply.github.com>
In vanilla Bedrock, if you have operator status, the client sends a packet to change gamemode without confirmation from the server. Since we have a custom server option to request the gamemode, we just reset the gamemode and ignore this packet.
* Fix picking up liquids with buckets
The last fix to prevent bucket placement upon interacting with an inventory had an oversight with empty buckets, making them unusable. This commit fixes that while keeping the previous fix.
* Remove debug line
* Fix milk drinking and visual bucket item apperance
* Comment elaboration
* Make indentiation better
* Fix interaction spam bug
This references the Nukkit 1.0 fix for the client bug of spamming to interact. Holding down still works.
* Remove interaction position set at action type 1
* Remove debug line