Gruetzig's shithole

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 script

Chapter 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/
assuming you didn’t rename the app and for
  • output.txt with a list of all the items seperated by newlines, like my second script creates
It will also save 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