Darkhax-Minecraft / Game-Stages

An API for universal player based progression.
https://minecraft.curseforge.com/projects/game-stages
GNU Lesser General Public License v2.1
64 stars 17 forks source link

Add support (or config option) for vanilla tags #46

Closed LatvianModder closed 4 years ago

LatvianModder commented 4 years ago

In 1.14.4+, entity.getTags(), entity.addTag() and entity.removeTag() exist. It would be great if there was, at least a config option to switch to that system

Edit: Seems like these have existed since 1.12 already. The only downside to vanilla tags is that it doesn't seem like they are synced to client by minecraft

Darkhax commented 4 years ago

While this may seem like a good idea on the surface level, it doesn't work at all for what Game Stages is, or the features it provides.

  1. Entity tags are limited to 1024 tags per entity. GameStages has no such limit.
  2. Game Stages fires many events when checking, syncing, and applying stages. I would not be able to offer those events while using tags. ASM is not an option here.
  3. Tags do not seem to be part of a player's persistent NBT data meaning changing dimensions, respawning, and several other scenarios would wipe a player's tags. While you could add many events to track and make this data persistent, this was attempted with capabilities in Game Stages 1 and was dropped in favor of the current system due to manual tracking being too unreliable. (1 tick desync caused failure)
  4. Syncing stages to the client is an essential feature. Adding client side syncing of tags would be a lot of duplicate code and introduce an element of unreliability in the data.