I was thinking about putting an item in the issue tracker for this, but realized it is too early and I don't have enough of an idea of what shape it will take to really put any sort of specification together on it. So here's a forum thread instead for the basics.
To get some quick concepts out there:
* A Custom Block is the idea of a single block that is made up by sub-components (like a fancy stair block)
* Currently all blocks in the world are stored as simply Byte values to disk, so we have a limit of basic blocks of 256 (air at 0 is the only hard coded one, I'm thinking Custom Blocks could be id 255) - that won't be enough to cover all permutations of custom blocks possible for a player to put together
* The blueprint concept is a whole block selection that can be used in various formats (like the copy paste terrain tool, eventually workshops/rooms)
* The schematics concept is a sub-block construct that makes up one whole block, but is made by tiny versions of normal blocks.
* A blueprint of a certain size (say 2x2x2) can be turned into a schematic by shrinking it, which can then create a custom block in the world
* A blueprint can contain schematics / custom blocks
A few big questions:
* How do we render blocks that aren't boring squares with whole textures for each side? Some blocks can cheat with transparency in the texture (like cacti technically look smaller than a whole block but actually are whole blocks with a small invisible part)
* Do we create some advanced blocks separately from custom blocks? A good example might be a door, which has a non-standard bounding box, a state (open / closed), the ability to be made up by multiple blocks (1x1x2 standard door, 2x1x2 double door, bigger doors) - doors are clearly meta blocks, but are they custom blocks so players can easily create their own?
* How do we decide between custom blocks dynamically created by players (like a fancy staircase) and non-square standard blocks (like doors or some furniture). You could approximate the shape of a chair with a custom block, but how would such a block compare with an actual pre-defined chair? Texturing might also be tricky between the two if you aren't using boring blocks with the same texture on each side, likewise orientation.
A lot of this is still rough in my head and likely confusing - that's what discussion is there for helping clarify
To get some quick concepts out there:
* A Custom Block is the idea of a single block that is made up by sub-components (like a fancy stair block)
* Currently all blocks in the world are stored as simply Byte values to disk, so we have a limit of basic blocks of 256 (air at 0 is the only hard coded one, I'm thinking Custom Blocks could be id 255) - that won't be enough to cover all permutations of custom blocks possible for a player to put together
* The blueprint concept is a whole block selection that can be used in various formats (like the copy paste terrain tool, eventually workshops/rooms)
* The schematics concept is a sub-block construct that makes up one whole block, but is made by tiny versions of normal blocks.
* A blueprint of a certain size (say 2x2x2) can be turned into a schematic by shrinking it, which can then create a custom block in the world
* A blueprint can contain schematics / custom blocks
A few big questions:
* How do we render blocks that aren't boring squares with whole textures for each side? Some blocks can cheat with transparency in the texture (like cacti technically look smaller than a whole block but actually are whole blocks with a small invisible part)
* Do we create some advanced blocks separately from custom blocks? A good example might be a door, which has a non-standard bounding box, a state (open / closed), the ability to be made up by multiple blocks (1x1x2 standard door, 2x1x2 double door, bigger doors) - doors are clearly meta blocks, but are they custom blocks so players can easily create their own?
* How do we decide between custom blocks dynamically created by players (like a fancy staircase) and non-square standard blocks (like doors or some furniture). You could approximate the shape of a chair with a custom block, but how would such a block compare with an actual pre-defined chair? Texturing might also be tricky between the two if you aren't using boring blocks with the same texture on each side, likewise orientation.
A lot of this is still rough in my head and likely confusing - that's what discussion is there for helping clarify