`i32` is really ambiguous and it is not immediately obvious what it is supposed to represent.
`BlockId` is much more readable.
Changed internal type to u16 because we currently have ~30k/64k block states.
(and i32 doesn't make a lot of sense for an Id, except when replicating mojang behavior)