Refactor network entity transform

Similar to block and item transform, entity transform now uses 2 steps:
first it transforms entity to legacy entity that existed on specific
protocol version (but still uses server data format), and only then it
transforms additional data to specific protocol versions format. That
allows to properly handle legacy entity type/metadata transformations,
where they affect other things (like use bed packet transformer for
example).
Added MinecraftEntityData which contains entity type <-> protocol id
mappings. This replaces the server platform entity type <-> protocol id
conversion method, which reduces the amount of platform code that needs
to maintained and makes unit testing NetworkEntityType possible.
Renamed many other entity transform related classes.
226 files changed
tree: da8f5f1d4db14412f6e8ca5af3a4cd4b2599ffe5
  1. .editorconfig
  2. .gitattributes
  3. .github/
  4. .gitignore
  5. LICENSE
  6. README.md
  7. build.gradle
  8. gradle/wrapper/
  9. gradlew
  10. gradlew.bat
  11. processors/
  12. resources/
  13. settings.gradle
  14. src/protocolsupport/
  15. tests/
README.md

ProtocolSupport

Build Status Chat

Support 1.16, 1.15, 1.14, 1.13, 1.12, 1.11, 1.10, 1.9, 1.8, 1.7, 1.6, 1.5, 1.4.7 clients on Spigot 1.16.3

Important notes:

  • Only latest version of this plugin is supported
  • This plugin can't be reloaded or loaded not at server startup

Known issues:

  • [Anything that is not latest] Items in creative mode may not work as expected, or may not work at all
  • [1.8 and earlier] Thrown potion texture is invalid

Known wontfix issues:

  • [Anything that is not latest] Stats are not sent
  • [All] Can't have multiple boats passengers (Intentional to prevent rendering glitches). Disable all versions before 1.9 using API to reenable multiple boat passengers.
  • [1.12 and earlier] Chests are seen as enderchests (Intentional to prevent rendering glitches). Block mappings can be changed using API if you with to see chests as chests again.
  • [1.8 and earlier] Can't control vehicle (Not directly translatable at network level, too much work to implement serverside)
  • [1.4.7 and earlier] Server shows up as “incompatible” in the server list (Impossible to fix due to the lack of an way to verify the client version during server list ping)

Website: https://protocol.support/

Spigot: https://www.spigotmc.org/resources/protocolsupport.7201/

BukkitDev: https://dev.bukkit.org/projects/protocolsupport/

MC Market: http://www.mc-market.org/resources/4607/

Main Jenkins: https://build.true-games.org/job/ProtocolSupport/
Backup Jenkins: https://ci.velocitypowered.com/job/ProtocolSupport/


Licensed under the terms of GNU AGPLv3