Confirmedusers, editor, Administrators
886
edits
CreativeMD (talk | contribs) No edit summary |
CreativeMD (talk | contribs) No edit summary |
||
Line 49: | Line 49: | ||
<td scope="row"><div class="tt" data-tt-id="p_variantgroups_info" data-tt-parent="p_variantgroups" data-invisible="true"></div></td> | <td scope="row"><div class="tt" data-tt-id="p_variantgroups_info" data-tt-parent="p_variantgroups" data-invisible="true"></div></td> | ||
<td colspan="3"> | <td colspan="3"> | ||
The variantgroups property allows you to define multiple variants of this block. All of them will have their unique code, which will added to the code. | |||
An easy example would be a bowl, which can either be raw or burned: | |||
<syntaxhighlight lang="json"> | |||
variantgroups: [ | |||
{ code:"type", states: ["raw", "burned"] }, | |||
], | |||
</syntaxhighlight> | |||
Meaning there will be two blocks <code>bowl-raw</code> and <code>bowl-burned</code>. | |||
---- | |||
It's also possible to define multiple groups. | |||
<syntaxhighlight lang="json"> | |||
variantgroups: [ | |||
{ code:"state", states: ["closed", "opened"] }, | |||
{ code:"contents", states: ["empty", "cabbage"] }, | |||
], | |||
</syntaxhighlight> | |||
As a result you will have 2x2 groups, which will be added one after each other: <code>barrel-closed-empty</code>, <code>barrel-closed-cabbage</code>, <code>barrel-opened-empty</code> and <code>barrel-opened-cabbage</code>. | |||
---- | |||
Additionally it is possible to refer to world properties, such as <code>block/rock</code>, which contains all states of all rock types. This used for <code>gravel</code>, <code>sand</code> and <code>rock</code>: | |||
<syntaxhighlight lang="json"> | |||
variantgroups: [ | |||
{ loadFromProperties: "block/rock" }, | |||
], | |||
</syntaxhighlight> | |||
Here is a full list of all groups and their variants (you can also find them in the <code>assets/worldproperties</code> folder): | |||
{{:json:block:worldvariantgroups}} | |||
---- | |||
Futhermore there are two ways of combining together groups. So far we covered the default combination mode, which is <code>multiplicative</code> (the total count of variants is the product of all states). | |||
Let's take a look at a different example (flowerpot), which uses the <code>additive</code> combination mode: | |||
<syntaxhighlight lang="json"> | |||
variantgroups: [ | |||
{ code: "type", states: ["raw"] }, | |||
{ code: "empty", states: ["empty"], combine: "additive" }, | |||
{ code: "flower", loadFromProperties: "block/flower", combine: "additive" }, | |||
{ code: "mushroom", loadFromProperties: "block/mushroom", combine: "additive" }, | |||
{ code: "sapling", loadFromProperties: "block/wood", combine: "additive" }, | |||
], | |||
</syntaxhighlight> | |||
The variants are <code>flowerpot-raw</code>, <code>flowerpot-empty</code>, <code>flowerpot-{all flowers}</code>, <code>flowerpot-{all mushrooms}</code> and <code>flowerpot-{all saplings}</code>. | |||
Things might get clearer if we look at another example: | |||
<syntaxhighlight lang="json"> | |||
variantgroups: [ | |||
{ code: "something", states: ["same", "different"] }, | |||
{ code: "type", states: ["raw", "baked"] }, | |||
{ code: "empty", states: ["red", "green"], "combine": "additive" }, | |||
], | |||
</syntaxhighlight> | |||
In this case, the result would be <code>same-raw</code>, <code>same-baked</code>, <code>different-raw</code>, <code>different-baked</code>, <code>red</code> and <code>green</code> | |||
The <code>additive</code> combination means all states will be added as a separate variant. | |||
</td> | </td> | ||
</tr> | </tr> |