Rather than trying to fake executing a command, just do the things that the command does.
i.e. instead of telling the server "the player typed /teleport, run the teleport command" just...teleport the player by changing their position.
Unlocalized names are for display purposes. The registry name is what identifies the item with the game.
Which one makes more sense to be the primary key?
Every block that is part of your structure should know where in that structure it is, relative to the center, and when it breaks, it should notify the center.
https://github.com/Draco18s/ReasonableRealism/blob/1.14.4/src/main/java/com/draco18s/harderores/block/WindvaneBlock.java#L72
Do not use item IDs. You do not need to know what they are or interact with them in any way.
Your class extends Item
Your method is an instance method
new ItemStack(this)
Errors are pretty self explanatory.
You have a NoClassDefFound error, meaning a class was not found, the name of the class that wasn't found, and the line of code that called it.
Dude, it's a Forge feature, Forge doesn't have to "update to automatically include it," it is Forge.
Check your resources folder.
https://mcforge.readthedocs.io/en/1.15.x/gettingstarted/structuring/#the-modstoml-file