Por experiência própria, eu achei bem tranquilo identificar as mecânicas do jogo dentro do código, os parâmetros são bem descritivos. Por exemplo, para definir um bloco e todas as suas configurações de comportamento e textura, a estrutura ficaria mais ou menos assim:
minetest.register_node("default:stone", {
description = S("Stone"),
tiles = {"default_stone.png"},
groups = {cracky = 3, stone = 1},
drop = "default:cobble",
legacy_mineral = true,
sounds = default.node_sound_stone_defaults(),
})