for a long time, I've been thinking that the current paramtype2 variants don't fully cover the needs. In many cases, we require more unique nodes (which also fills the node limit). To address this issue, I have prepared a proposal for new variants (below). A few days ago, I mentioned this in a package of my drafts - viewtopic.php?t=31363.
- For different textures of a single node type (e.g., a wall with either a brick or stone texture).
New paramtypes:
texture4dir
texturefacedir
texturewallmounted
texturedegrotate
Each of these works similarly to the existing "color..." types, such as "colorwallmounted."
How does it work?
For every variation of "color...", we use texture replacement for the same bits and define the feature using texture_prefix="nicewall","png". This can apply either to the entire node or to each side individually. Each texture variation of param2 will have its own texture named <texture_prefix><decimal_number>. For example, the texture name could be nicewall7.png or, for a specific side, nicewall_leftside_7.png (where `texture_prefix` for the left side is `"nicewall_leftside_","png"`). - At least one group of nodes should have a dedicated paramtype2 variant for structural configurations—nodes that have 0 to 4 "backs" and (4 - backs) "fronts," similar to fences but with specific properties (e.g., not interacting with adjacent nodes or having different nodeboxes for each variation). Each side requires its own 0/1 paramtype2 state. For this, I propose the following variants, under the name "intstate" (which I find better than the working name "eachside"):
intstate
colorintstate
textureintstate - only after variant 1 is completed
Textures and nodeboxes must be defined using a state-based system called "statevar," such as:
statevar="alone"{nodebox, tiles ...}
statevar="front"{nodebox, tiles ...}
statevar="corner"{nodebox, tiles ...}
statevar="sides"{nodebox, tiles ...}
statevar="3sides"{nodebox, tiles ...}
statevar="cross"{nodebox, tiles ...} - For even more specialized nodes, a unique paramtype2 variant could be introduced:
userdefined - where everything is defined by the user.