This was initially conceived due to the work I had been doing research for Dual Stats Files DF where you can have both a [username] and a UUID file at the
same time and during it I noticed how many times there were issues with statistics, no doubt due to their perceived unimportance in development besides their initial implementation.
I started with some of the issues I already knew about: unlit redstone torch ID instead of lit in 13w36a/b (1.7.2), namespace IDs after 14w06a (1.8) and the before and after of the
entity renamings in 16w32a (1.11). These all were incredibly simple with it just being a simple replace though progressively getting harder: redstone torch ID from 75 to 76, the
namespace IDs I used their numerical ID - I.e #0003 to minecraft:dirt - as an index into the block and item array.
There is 3 separate arrays, block ID array that has every block up to ID 177: wall_banner, this is because the IDs around this region are very sporadic so I had to include many unnecessary blocks that get added much later (Prismarine and sea lanterns, namely in 14w25a) as well as ones you cannot normally get like flowing_water.
An array of item IDs which were thankfully more sensibly laid out though the armour stand ID is earlier on due that previously being the horse saddle item which then got removed. and lastly an array specifically for music discs due to them using their own ID system that starts at 2256. All of these a pain to manually write but the final system works great.
Initially looked at the existing PDVs for statistics at the time which were