Skip to content

2.0.0 Pre-Release 3

Pre-release
Pre-release

Choose a tag to compare

@wallenjos01 wallenjos01 released this 15 Nov 04:36
· 308 commits to master since this release

This release fixes a few bugs which especially affected older Spigot versions.

  • Fixed a bug which caused all legacy (1.8-1.16) Spigot adapters to strip the signature from skins when retrieving them from players.
    • This meant that they could not be applied to Players properly, because the client expects signed skins.
  • Moved the construction of lang components to LangManager, and renamed the overload of component which accepts a collection of objects to componentWith
    • This was primarily done because the Java 8 compiler would prioritize the overload which accepts a varargs array of Objects, whereas the Java 17 compiler would prioritize the overload which accepts a collection of Objects. This discrepancy could cause bugs when compiling multiple versions of a mod/plugin, so the two methods needed to be renamed.
  • Fixed a bug which caused some lang entries in a registry to not be serialized if there were two or more keys with the same value.

Known Issues:

  • Lang entries stored in YAML can have missing entries in certain cases.
    • This is due to the way YAML is interpreted. The . symbol is be used to address sub-sections, and therefore should generally not be used in keys. Right now, the lang system is designed to use . symbols in its keys (although this is not a requirement.) This means that YAML lang files cannot store certain combinations of keys. For example: my.lang.key: Hello and my.lang.key.two: World could not be stored in YAML without some sort of workaround, because my.lang.key would be interpreted as both a string and a subsection simultaneously, which is obviously invalid.
    • Currently, this has the effect of making the command.module.reload lang key for this plugin not configurable on Spigot servers.
    • As of now, there is no solution for this implemented. For the time being, developers who use lang managers should either not use conflicting keys, or pass a custom FileCodecRegistry which only allows JSON files to be used.
  • When updating skins on older versions (tested on 1.8, 1.8.3, and 1.8.8), another model of the updated player briefly appears where they were standing on the updated client.
    • Attempting to interact with this model will cause the player to be kicked from the server for attempting to interact with themself.
    • The model disappears after a couple seconds, but the timing is highly inconsistent.
    • I haven't done enough research to know if this is an issue which can be fixed or mitigated.