Last update: 18.06.2023
Collecting all items in the popular video game Minecraft
So one day I decided to collect all minecraft items. But then it hit me. How tf do I do that? D:Chapter 1 - Research
Of course, the first thing you do is get a list of all the items. But then it hit me. I couldn’t find any helpful latest version list. So, if that happens, time to just grab it myself, then?Chapter 2 - Finding the items
So, the first thing I did, was extract the latest minecraft version jar. It contained an assets folder, hey so cool. Inside the assets folder I was able to locate a helpful folder:assets/minecraft/models/items
It seemed to contain a list of all minecraft items in form of json files. So, the first thing I did, was writing a python script that scrapes all items from that folder using os.listdir
and puts it into a file named items.txt
. But then it hit me. There are useless shit items in there. Nice compass_31. Though possible to collect, it wasn’t what I wanted. Additionally, I wanted the English name of the item too, not just the ID, which would filter out these shit things if one exists, because yeah.
So, I grepped with -r -o for the english name of a block. I don’t remember which one, but I ended up finding it in /assets/minecraft/lang/en_us.json
. So, I checked the file, and et voila I have a list of all the item IDs I scraped earlier AND a list of all the actual names. So, all I had to do now, was splitting that shit to death and comparing the individual line contents with each other, and printing correct stuff to another txt respectively. So, I moved en_us.json to the current pile, wrote another script that uses a lot of string split and writes to the files correctly, 100% didnt take me 2 hours to get it to work and it’s probably hella dirty so make your own one.
Chapter 3 - Making the list good
So, now that I had a list of all the items, time to shuffle them so I have a good experience. So I googled a way, and ended up finding an array shuffle function in the random package, and applied that in the last python scriptChapter 4 - Writing a front-end to make it cool
So, I had a shuffled list with a lot of items in them, and I thought to myself, I have to make a graphical front-end. For some reason the only experience I have with graphics is love2d, for LovePotion(lovebrew), a game framework using Lua, and citro2d on the 3DS, so I decided to go with love <3. So, the program I ended up creating does the following things, it has 3 buttons, one to go to the next item, one to reset to item 1, and one to save the current progress. Above the buttons, it displays the current item and progress. I will not release the source on GitHub, and I will not maintain it, but I made it and I’ll host a link. The zip contains all the source files by the way. Keep in mind, I’m not a PC love2d user so the GUI has a self-coded mechanism against holding the mouse noone needed probably.
It will look for a folder named:
- Windows:
%appdata%\LOVE\curline\
- macOS:
/Users/user/Library/Application Support/LOVE/curline/
- Linux:
$XDG_DATA_HOME/love/curline/
/~/.local/share/love/curline/
output.txt
with a list of all the items seperated by newlines, like my second script creates
progress.txt
in the folder containing the number of the current item.
Also, screenshot.
Usage:
- green button: go to next item
- red button: reset
- blue button: save