This probably isn't needed anymore. This was introduced in https://github.com/GeyserMC/Geyser/pull/41 and is probably no longer needed since we never send movement before the player is spawned, and we don't allow movement to go through until the Bedrock player matches the unconfirmed teleport we create in JavaPlayerPositionTranslator. By removing this we should fix some instances of players kicked for 'flying' as players joining in the air would never respond to gravity until Bedrock finished loading.
* Remove Bedrock only banner patterns from the creative inventory
* Add sound for tadpole bucket
* Fix lily pad and frogspawn placing on mobile/single stacks
* Workaround? Fix? for bucket usage on mobile
* Simplify math and update position+rotation whenever ServerboundUseItemPacket is sent
* Rotate the player back after using an item and fix glass bottles
* ITEM_USE actionType 1 does not need the rotation fix
Increase delay for look back
* Add some checks
* Prevent buckets and spawn eggs from being unintentionally placed when interacting with special blocks
As of 1.19 Bedrock no longer sends a PlayerActionPacket with action=BLOCK_INTERACT. Bedrock now sends action=ITEM_USE_ON_START before and action=ITEM_USE_ON_STOP after using an item on a block. However, this is not useful as it is sent for all block interactions.
* Fix inventory transactions being rejected after restoreCorrectBlock
The held item's netId is always 0 in the InventoryTransactionPacket.
* Touch ups
* Fix lookAt for different poses and sneaking + cauldron + bucket interactions
Fix boat items being desynced when placing them very close to collision
Fix bottles being desynced when tapping above water
Resend the held item if we do encounter a desync
* Avoid getting blockstate twice and fix comment
* Use generated interaction data
* Fix glass bottles being double filled and phantom water bottles/water buckets
* Don't update the entire inventory on useItem
* Use Geyser's inventory copy for check
* Use ItemTranslator#getBedrockItemMapping to avoid NBT translation
* mappings
Co-authored-by: Camotoy <20743703+Camotoy@users.noreply.github.com>
* Add player skull render distance
* Improve updateVisibleSkulls a bit
Avoid rechecking visibility on small movements
* Periodically despawn unused skull entities
* Don't hide skull entity for position/rotation changes
Prevents flickering for skulls that are rotating
* Update visible skulls when a skull is removed
* Only update on removal if an entity is assigned
* No need to check for skull in ChunkUtils
Update copyright year
* Avoid rechecking all skulls when a skull is added/removed
* Allow skull render distance and number to be configured
Renamed some fields to better match their values
* Compare texture property directly from GameProfile
* Remove unnecessary blockState field from SkullPlayerEntity
* Use binarySearch for insertion
Wait for player movement before loading skulls
* Allow culling to be disabled by setting max-visible-custom-skulls to -1
* Only remove skulls in inRangeSkulls when culling is enabled
* Add suggestions from review
* Merge the for loops in updateVisibleSkulls
* Fix skulls being leaked on chunk unload
* Should fix some rotation issues
* Some more changes
* Small changes
* Fixed merge conflicts and updated other classes that changed
* Added translation for the LookAt packet
* Don't always store cert/client data used for skin uploaded
This takes up a decent 30K of memory that we don't use after the skin is uploaded. The GameProfileTranslator cannot be run more than once per session.
* Make all moon phases visible
The fix to prevent integer overflows also prevented moon phases from being visible until now.
Fixes#2927
* SetTimeTranslator: cast from long on the entire modulus
This should fix some inaccuracies with time on older worlds.
* Bump version; drop 1.17.40; support 1.18.30
* Actually bump to 2.0.3-SNAPSHOT
* Fix message being sent still if a single escape character is sent
* Replace instances of configs using `generateduuid` for Metrics
* Fix some merge mistakes
Co-authored-by: Camotoy <20743703+Camotoy@users.noreply.github.com>
Because of Bedrock limitations, if a player has text background opacity enabled, they'll see an empty section where the title is usually displayed as the fake cooldown is shown. This commit minimizes the time that is shown by clearing the text as soon as possible. Reference issue: https://github.com/GeyserMC/Geyser/issues/1710
This commit also removes starting the fake cooldown process if the client switches to an inventory slot with the same Java ID.
By simulating the exact processing that Java Edition does on the client-side, we can achieve full packet parity with Java when interacting with an entity.
These changes fix up things that were missed with Java Edition inventory changes in 1.17 and 1.17.1. Working with the inventory in modern versions should be much nicer.
Previously we've had discussions on if the render distance math should be tweaked like we do server -> client, but for now this is better than nothing and can be tweaked further in the future.
* Fix sneaking speed adjustment and bounding box
Also remove redundant session variable in SessionPlayerEntity
* Add comment to valid field
* Hopefully fix crawling after swimming in water
* Prevent boats from floating when a Bedrock player rides in the back
* Update llama and shulker mount height offset
* Fix Trader llama mount offset
* Change passengers to an IntList
Also move rotation lock stuff to EntityUtils
* Allow EntityCache.getEntityByJavaId to return the session's player
Removes many checks from several translators.
* Fix mount offset on armorstands and area effect clouds
Also prevent area effect clouds from despawning when used as an invisible entity (used in GSit to offset players riding on other players)
* Update mount offsets on height changes
TODO test this
* Actually update vehicleId and optimize StriderEntity metadata update
* Don't hide marker armor stands and properly update mount offsets
* What?
* Remove y offset for Shulkers riding other entities
* Confirm teleports in the order received
This allows Bedrock players to move after standing up when using GSit
* Fix mount offset for riders on baby zoglins
* Cache only the latest teleport and confirm teleports immediately
* Fix crawling with GSit
* Inline var and undo respawn method
* Use Entity reference for vehicles
* Remove ridingVehicleEntity from GeyserSession
* Use Entity references for passengers and drop cachedPlayerEntityLinks
* Reuse variable and remove setVehicle(null)
* Fix amount & javaId being used before it is initialized
Fixes invisible falling blocks and incorrectly sized exp orbs
* Add missing item metadata to throwable items and fireballs
Renamed ItemedFireballEntity -> FireballEntity
* Renamed more EntityDefinitions to match MCProtocolLib
* Add some missing metadata and add null check
* Use entity type when possible in debug spawn message
Fallback onto classes simple name
Also don't register ENDER_DRAGON_PART
* Remove redundant entity identifiers and fix END_CRYSTAL and FISHING_BOBBER identifiers
minecraft:end_crystal -> minecraft:ender_crystal
minecraft:fishing_book -> minecraft:fishing_hook
* Cave spider should inherit metadata from spider
* Keep entity definitions in roughly alphabetical order
* Alphabetize entity definitions
* ABCs?
* Bump MCProtocolLib version