MaterialIDs are stored internally as a 16-bit unsigned integer and simply has this definition: Code: typedef uint16_t MaterialId; Which means that valid materialID values exist in the range 0-65535, as numbers above this are not representable as a 16-bit integer. Previously, you could specify any 64-bit number as a material ID, and it would simply be cast to a MaterialID. However due to a bug (compiler bug? implementation defined behavior?) with inconsistent casting we were forced to force you to explicitly use a materialID within this range (which is where it all mapped to anyway.) Easiest way to find what your materialID should be is to simply type "yourMatID mod 65536" into google, and google will tell you. Example: 847837 Material IDs should be unique and within this range. However, there are reserved Material IDs, Any MatID from 65520-65535 (inclusive) is a MetaMaterial. MetaMaterials are used internally by the engine to build things like Dungeons or Ships, or as chunks load, or to represent empty space. Any materialID specified above this number will throw an exception. There are three major sanity checks for MaterialIDs when loaded. 1. Is the materialID between 0 and 65535 2. Is the materialID not in the range of metamaterials 3. Is the materialID not already in use Everything I just said also applies to ModIDs, if you're making Tile Mods as well.