Currently, the following issues exist:
- Entities are only checked at one position 0.5 blocks above the bottom of their hitbox. For large entities (including just 2-block tall entities such as players), this means that most of the entity can be visible but the raycast can fail.
- While offsets to check the corners of entities can be added, entities can change in size via attributes.
- Many users want players only to be hidden if they are sneaking, so that name tags still show presence through walls
- A specific user wants glowing entities to always be visible
Proposed solution: Core exposes API to update certain data fields on entities which are fed by the platform. On Paper, the player sneak event and effect event among others can be used to feed data to Core. On Velocity, a paper bridge plugin can be used, and this platform data can be supplied via plugin messages. I imagine Sponge will have events similar to Paper. I have no clue if/how this will look on a fabric server.
Note that this entity updating would have to be global, not per player. Therefore, the Core API would have to keep track of state independently.
Alternatives: All of this data can be decoded from clientbound packets, but that significantly increases the surface area of affected packets, which will take development time and increases the chances of cross-version breakage.
Currently, the following issues exist:
Proposed solution: Core exposes API to update certain data fields on entities which are fed by the platform. On Paper, the player sneak event and effect event among others can be used to feed data to Core. On Velocity, a paper bridge plugin can be used, and this platform data can be supplied via plugin messages. I imagine Sponge will have events similar to Paper. I have no clue if/how this will look on a fabric server.
Note that this entity updating would have to be global, not per player. Therefore, the Core API would have to keep track of state independently.
Alternatives: All of this data can be decoded from clientbound packets, but that significantly increases the surface area of affected packets, which will take development time and increases the chances of cross-version breakage.