@Draco18s
I may be misunderstanding the code but it seems like it is almost like a factory class, it randomly chooses from a set of registered items and acts as the interface for that item.
Which will be useful for handling the interactions once the item is created, but I still need to read through information Ernio gave me for the in-game item creation part.