pdinklag / MinecraftStats

A Minecraft player statistics browser for the web - supports 1.13 and later!
https://discord.gg/brH5PGG8By
Other
227 stars 53 forks source link

Advancements Display #52

Open mechcalvin opened 5 years ago

mechcalvin commented 5 years ago

Is it possible to add /advancements data to stats? In this case player can also check their progress in the server which create more "sticky" factor to stay :)

pdinklag commented 5 years ago

Hm, could be added as a tab to a player profile indeed. Cool idea!

TheMrEngMan commented 2 years ago

This could look similar to the interface in this tool: https://github.com/DarwinBaker/AATool Perhaps adding a page like this for each player, and/or displaying % of and list of players that have made each advancement on a central page.

pdinklag commented 2 years ago

Some thoughts on potential server-side (Python) development. The key part is representing the advancements in an easily maintainable and extensible manner.

Much like for stats, every advancement should be defined in its own Python file. This allows rather easy maintenance, modification and extension. Minecraft itself defines the tree by introducing a parent field, which can and probably should be adapted here. The major difference compared to stats is that the advancement tree structure must also be known to the browser client for display, so the information must be included in the database (it must not be hardcoded or duplicated). MinecraftStats supports any server version from 1.13, which is a hard requirement (earlier versions cannot be supported anymore). I have absolutely no idea how much advancements changed since then, but support for old version should be retained as far back as possible, ideally up to 1.13 as well. This means that advancement definitions must provide a minimum and maximum version, much like the stats.

Implementing those things is rather easy, the most work lies in defining the advancements initially and do research on what Minecraft version introduced or removed them.

The web frontend is a project of its own. It must be dynamic, because there is no fixed advancement tree that is valid for all versions of Minecraft and furthermore, people may define their own advancements. The tree must be read from the database and displayed properly. All advancements need icons and localization, though, these can luckily be taken from Minecraft directly.

As a heads-up, I don't know when or even if I will work on this and would much appreciate contributions.