Usage

File Name

From 13w36a to 1.7.5/14w05b the game used the player's name as the name of the statistics file, this was then changed to the player's UUID to allow for players to change their name and still be able to keep their all their data.

Thankfully Mojang did implement a datafixer for this - besides a small gap in 18w03a to 18w19b (1.13)? - and with it always being the first thing that gets datafixed once upgrading you can always name the outputted file a player's name and the game will rename it to the correct version, if necessary.

Who to complain to

If there is any issues with this program and or you find another issue with statistics please say in the issues section of the GitHub repo! I would hate to mess up someone's data like that, even something so minor (always take backups!).


          
        

      

Explanations

In 13w36a/b the redstone torch statistics uses the unlit version which then got deleted in 13w37a causing all their corresponding statistics to be deleted along side.

In 14w03a minecraft started its switch from numerical to namespace - I.e #0003 into minecraft:dirt - for blocks and items, this hit the statistics in 14w06a but Mojang never added a datafixer ever for upgrading numeric IDs deleting all blocks and items once upgrading after 14w05b.

In 16w32a entity names were changed from UpperCamelCase to lower_snake_case and the statistics followed suit, but they failed to add a datafixer for these meaning once upgrading, all entity killed and killed by statistics are deleted.

The entity renames for the statistics then later gets reverted in 16w36a (1.11) back to the old format but with the mobs that became seperate use their new names: this effects horses, donkeys, mules, skeleton horses and zombie horses all being seperated from EntityHorse, skeletons, wither skeletons and strays from Skeleton and zombies, zombie villagers and husks from Zombie all into their own seperate entities instead of being a tag on the base entity.

Due to skeleton and zombies still having the same name from before the changes, they upgrade to 16w36a and beyond perfectly fine but the horses do not, meaning no matter what, when upgrading to versions after 1.10.2 it will always delete the kills and killed by horse statistics.

Originally when shulker boxes were added all the colours shared the same ID shulker_box and had a color tag to control each type, this was then changed the following snapshot to have seperate ID, they added a datafixer for the item but not the statistic.

This is a little more complicated than the usual ID change as eventually in 18w10b (1.13) they added an undyed version with the same ID, meaning that it'd be more accurate to leave the ID if upgrading to versions after that.

In 1.11.1-pre the totem of undying's ID changed from Totem to Totem of Undying, Mojang added a datafixer for but forgot about the statistics meaning updating totem statistics to this version and beyond will delete them.

As with most things, 17w47a - also known as the start of "The Flattening" - reworked at lot of things, including how statistics are stored: no more stat.useItem.minecraft.[ID] now each entry is stored in its own section to do with that specific stat - I.e "dropped", "used", "crafted" etc. - and with the offical datafixer for this not being created until 1.13-pre3 means playing in versions between 17w47a and 1.13-pre3 will delete all statistics.

As well as reworking the statistic format The Flattening also reworked how items worked, importantly for us, spawn eggs. Before, all spawn eggs shared the same ID and either had a DV pre-15w33a (1.9) pertaining to that entity's internal ID - I.e Creeper = 50, FallingSand = 21, MinecartCommandBlock = 40 etc. - or afterwards, having a EntityTag ID of that specific mob - "creeper", "falling_block", "commandblock_minecart". But after The Flattening they seperated them all into their own items, leaving the generic "spawn_egg" stats without a corresponding item.

They also just accidently forgot to update to update terracotta's name. whoopies.

They updated the ID of terracotta in 17w47b from hardened_clay into terracotta.

When turtle scute was first added it was called turtle_shell_piece, this was then changed the next snapshot into its modern name of turtle_scute though without a datafixer.

When corals were first added in 18w10a - though not being obtainable in survival till 10d - till 18w14a they had a diffrent naming scheme: they named by colour, coral blocks were called [colour]_coral, coral [colour]_plant and dead coral [colour]_dead_coral, this was then changed in the next snapshot to the modern formatting, but without a datafixer for the statistic till 1.13-pre3 and dead coral till 18w32a (1.13.1) which erroneously converts it into waterlogged dead coral, which conveniently can be used for shenanigans.

When seagrass was first added in 18w07a its ID was originally sea_grass to seagrass and once this was changed in the next snapshot, not all did they forget to add a datafixer for the block till 1.13-pre1 they forgot about the statistics till 1.13-pre3.

When pufferfish mob was first added in 18w08b it was called puffer_fish the underscore was then removed in the next snapshot, but without a datafixer for the statistic, deleting them once upgrading out of these versions.

Following suit from the previous changes with the pufferfish, salmon and cod were changed in 18w20a to remove their suffix of _mob, though with a datafixer for the statistics being added in 1.13-pre6

Kelp, like most plants after the removal of numerical IDs, have two related blocks: The stem and the tippy top part. The stem was called kelp and the top and item was called kelp_top, this was then changed to kelp_plant and kelp respectively but without a datafixer till 1.13-pre3 for the statistics.

Prismarine brick stairs and slabs were originally plural-ised in their ID, having prismarine_bricks_[type] as to follow the base block's name. This was then changed to removal the S only for the slabs and stairs - but still keeping the base block plural? - without a datafixer till 1.13-pre3.

In 18w20b melons were Mojang's target for the day: changing the melon slice from melon into melon_slice, melon from melon_block to melon and glistering melon from speckled_melon to glistering_melon_slice but forgetting a datafixer for the statistics till 1.13-pre3.

In 1.13-pre5 the flattening was slowing down but one of the last few things they did was update a few entities ID's that were strangely named. this included:

1.12 ID 1.13 ID
evocation_illager evoker
vindication_illager vindicator
illusion_illager illusioner
evocation_fangs evoker_fangs
commandblock_minecart command_block_minecart
eye_of_ender_signal eye_of_ender
fireworks_rocket firework_rocket
snowman snow_golem
villager_golem iron_golem
xp_bottle experience_bottle
xp_orb experience_orb

Mojang did these changes without adding a data fixer initally, meaning once upgrading into this version all entities statistics are deleted and so are evoker spawn eggs due to this and weirdly as well as bucket of clownfish because screw them in particular?

In 1.20.3-pre1 the item ID of grass (not block of, nor double tall) was changed to short_grass, Mojang forgot a datafixer initally and as such all related statistics are deleted once upgrading to this version.