* 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>
ViaVersion has two entries in its fake chat registry that are not in the same order as Java. This commit supports that properly and renders subtitled text correctly.
Resolves#3023
* 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.
This reduces computation processing needing, since Bedrock doesn't have any hover text ability. This also fixes a 1.8 bug where villager titles would not process correctly - by having a dummy serializer, a recent MCProtocolLib update would not stop the window packet from processing.
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.