Confirmedusers, editor, Administrators
886
edits
CreativeMD (talk | contribs) No edit summary |
CreativeMD (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
__NOTOC__ | |||
== Overview == | |||
An incomplete list of all available properties | |||
.tt-table td,th { | <table id="treeviewtable" class="table table-bordered tt-table" style='table-layout: fixed'> | ||
<tr style='background-color: gray;'> | |||
} | <th width='300' align='left'>Property</th> | ||
<th width='200' align='left'>Type</th> | |||
<th width='120' align='left'>Default</th> | |||
<th align='left'>Usage</th> | |||
</tr> | |||
<tr> | |||
<td><div class="tt" data-tt-id="root">json</div></td> | |||
<td></td> | |||
<td></td> | |||
<td></td> | |||
</tr> | |||
<tr> | |||
<td colspan="4" style='font-size: 14pt; border-bottom: 2pt solid black; padding-left: 100px;'><b>Core (no byType available)</b></td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_code" data-tt-parent="root">Code</div></td> | |||
<td>string</td> | |||
<td>required</td> | |||
<td>A unique identifier for the block.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_code_info" data-tt-parent="p_code" data-invisible="true"></div></td> | |||
<td colspan="3"> | |||
A '''domain prefix''' will be added dynamically depending on the location of the file. Every mod and the VintageStory itself have a unique prefix. | |||
For example the code '''<code>stone</code>''' would turn into '''<code>game:stone</code>'''. | |||
The code identifier has to be unique, at least inside his domain, so in theory there can be equal identifiers with different domain prefixes. | |||
Find out more about [[Basic Modding#Domains|Domains]]. | |||
</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_enabled" data-tt-parent="root">Enabled</div></td> | |||
<td>boolean</td> | |||
<td>true</td> | |||
<td>If the block will be loaded or not. Can be used to temporarily remove the block.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_variantgroups" data-tt-parent="root">VariantGroups</div></td> | |||
<td>array of object</td> | |||
<td>-</td> | |||
<td>Allows you define multiple variants of the same block.</td> | |||
</tr> | |||
<tr> | |||
<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"> | |||
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 external lists that are found in the worldproperties folder, 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> | |||
</tr> | |||
<tr> | |||
<td colspan="4" style='font-size: 14pt; border-bottom: 2pt solid black; padding-left: 100px;'><b>Specific</b></td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_class" data-tt-parent="root">Class</div></td> | |||
<td>string</td> | |||
<td>"block"</td> | |||
<td>The block class can add special functionalities for the block.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_class_info" data-tt-parent="p_class" data-invisible="true"></div></td> | |||
<td colspan="3"> | |||
A complete tutorial of how to create your own class can be found [[Advanced Blocks|here]]. | |||
</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_entityclass" data-tt-parent="root">EntityClass</div></td> | |||
<td>string</td> | |||
<td>-</td> | |||
<td>The block entity class is able to tick and to store extra data.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_entityclass_info" data-tt-parent="p_entityclass" data-invisible="true"></div></td> | |||
<td colspan="3"> | |||
A complete tutorial of creating your own entityclass can be found [[Block Entity|here]]. | |||
</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_behaviors" data-tt-parent="root">Behaviors</div></td> | |||
<td>array of object</td> | |||
<td>-</td> | |||
<td>A behavior adds custom abilities such as falling block..</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_behaviors_info" data-tt-parent="p_behaviors" data-invisible="true"></div></td> | |||
<td colspan="3"> | |||
Here is an overview of all exisiting behaviors, if you want to create your own custom behavior you can read [[Adding Block Behavior]]. | |||
{{:json:block:behavior}} | |||
</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_blockmaterial" data-tt-parent="root">BlockMaterial</div></td> | |||
<td>string</td> | |||
<td>-</td> | |||
<td>A behavior adds custom abilities such as falling block.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"> | |||
<div class="tt" data-tt-id="p_blockmaterial_soil" data-tt-parent="p_blockmaterial">Soil</div><br> | |||
<div class="tt" data-tt-id="p_blockmaterial_gravel" data-tt-parent="p_blockmaterial">Gravel</div><br> | |||
<div class="tt" data-tt-id="p_blockmaterial_sand" data-tt-parent="p_blockmaterial">Sand</div><br> | |||
<div class="tt" data-tt-id="p_blockmaterial_wood" data-tt-parent="p_blockmaterial">Wood</div><br> | |||
<div class="tt" data-tt-id="p_blockmaterial_leaves" data-tt-parent="p_blockmaterial">Leaves</div><br> | |||
<div class="tt" data-tt-id="p_blockmaterial_stone" data-tt-parent="p_blockmaterial">Stone</div><br> | |||
<div class="tt" data-tt-id="p_blockmaterial_liquid" data-tt-parent="p_blockmaterial">Liquid</div><br> | |||
<div class="tt" data-tt-id="p_blockmaterial_snow" data-tt-parent="p_blockmaterial">Snow</div><br> | |||
<div class="tt" data-tt-id="p_blockmaterial_ice" data-tt-parent="p_blockmaterial">Ice</div><br> | |||
<div class="tt" data-tt-id="p_blockmaterial_metal" data-tt-parent="p_blockmaterial">Metal</div><br> | |||
<div class="tt" data-tt-id="p_blockmaterial_mantle" data-tt-parent="p_blockmaterial">Mantle</div><br> | |||
<div class="tt" data-tt-id="p_blockmaterial_plant" data-tt-parent="p_blockmaterial">Plant</div><br> | |||
<div class="tt" data-tt-id="p_blockmaterial_glass" data-tt-parent="p_blockmaterial">Glass</div><br> | |||
<div class="tt" data-tt-id="p_blockmaterial_ceramic" data-tt-parent="p_blockmaterial">Ceramic</div><br> | |||
<div class="tt" data-tt-id="p_blockmaterial_cloth" data-tt-parent="p_blockmaterial">Cloth</div><br> | |||
<div class="tt" data-tt-id="p_blockmaterial_lava" data-tt-parent="p_blockmaterial">Lava</div><br> | |||
<div class="tt" data-tt-id="p_blockmaterial_brick" data-tt-parent="p_blockmaterial">Brick</div><br> | |||
<div class="tt" data-tt-id="p_blockmaterial_fire" data-tt-parent="p_blockmaterial">Fire</div><br> | |||
<div class="tt" data-tt-id="p_blockmaterial_other" data-tt-parent="p_blockmaterial">Other</div> | |||
</td> | |||
<td colspan="3" valign="top"> | |||
Materials are hardcoded and currently only used to determine mining speed with a specific tool. | |||
</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_matterstate" data-tt-parent="root">MatterState</div></td> | |||
<td>array of object</td> | |||
<td>"block"</td> | |||
<td>Determines whether the block is in a '''''solid''''', a '''''liquid''''', a '''''gas''''' or a '''''plasma''''' state.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"> | |||
<div class="tt" data-tt-id="p_matterstate_solid" data-tt-parent="p_matterstate">solid</div><br><br> | |||
<div class="tt" data-tt-id="p_matterstate_liquid" data-tt-parent="p_matterstate">liquid</div><br><br> | |||
<div class="tt" data-tt-id="p_matterstate_gas" data-tt-parent="p_matterstate">gas</div><br><br> | |||
<div class="tt" data-tt-id="p_matterstate_plasma" data-tt-parent="p_matterstate">plasma</div><br><br> | |||
</td> | |||
<td colspan="3"> | |||
Used for special collision behavior and rendering. Currently used for: | |||
Liquid: | |||
*Lava | |||
*Water | |||
*Water with particles | |||
Gas/Plasma: | |||
none added yet | |||
</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_resistance" data-tt-parent="root">Resistance</div></td> | |||
<td>decimal number</td> | |||
<td>6</td> | |||
<td>How long it takes to break this block in seconds (with a mining speed of 1).</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_resistance_info" data-tt-parent="p_resistance" data-invisible="true"></div></td> | |||
<td colspan="3"> | |||
Same examples of resistance's values used in VintageStory: | |||
<table class="wikitable"> | |||
<tr style="background-color: grey;"> | |||
<th style="background-color: grey;">Block</th> | |||
<th style="background-color: grey;">Value</th> | |||
</tr> | |||
<tr> | |||
<td>'''leave'''</td> | |||
<td>''0.5''</td> | |||
</tr> | |||
<tr> | |||
<td>'''wool'''</td> | |||
<td>''1.0''</td> | |||
</tr> | |||
<tr> | |||
<td>'''bowl'''</td> | |||
<td>''1.5''</td> | |||
</tr> | |||
<tr> | |||
<td>'''obsidian'''</td> | |||
<td>''2''</td> | |||
</tr> | |||
<tr> | |||
<td>'''plank'''</td> | |||
<td>''3.5''</td> | |||
</tr> | |||
<tr> | |||
<td>'''log'''</td> | |||
<td>''4.5''</td> | |||
</tr> | |||
<tr> | |||
<td>'''rock'''</td> | |||
<td>''6''</td> | |||
</tr> | |||
</table> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_requiredminingtier" data-tt-parent="root">RequiredMiningTier</div></td> | |||
<td>integer</td> | |||
<td>0</td> | |||
<td>Minimum required mining tier to get the drop out of the block.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_requiredminingtier_info" data-tt-parent="p_requiredminingtier" data-invisible="true"></div></td> | |||
<td colspan="3"> | |||
<table class="wikitable"> | |||
<tr style="background-color: grey;"> | |||
<th style="background-color: grey;">Tier</th> | |||
<th style="background-color: grey;">Ores</th> | |||
</tr> | |||
<tr> | |||
<td>'''1'''</td> | |||
<td>'''''gelena''''' and '''''rocksalt_sylvite'''''</td> | |||
</tr> | |||
<tr> | |||
<td>'''2'''</td> | |||
<td>'''''lignite''''', '''''cassiterite''''', '''''sphalerite''''', '''''rocksalt''''', '''''sulfur''''' and '''''nativecopper'''''</td> | |||
</tr> | |||
<tr> | |||
<td>'''3'''</td> | |||
<td>'''''bituminouscoal''''', '''''quartz_nativegold''''', '''''quartz_nativesilver''''', '''''lapislazuli''''', '''''bismuthinite''''', '''''quartz''''', '''''magnetite''''' and '''''limonite'''''</td> | |||
</tr> | |||
<tr> | |||
<td>'''4'''</td> | |||
<td>'''''diamond''''' and '''''emerald'''''</td> | |||
</tr> | |||
<tr> | |||
<td>'''5'''</td> | |||
<td>'''''chromite''''', '''''platinum''''' and '''''ilmenite'''''</td> | |||
</tr> | |||
</table> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_climbable" data-tt-parent="root">Climbable</div></td> | |||
<td>boolean</td> | |||
<td>false</td> | |||
<td>If true, walking against this block will make the player climb (used for ladders).</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_rainpermeable" data-tt-parent="root">RainPermeable</div></td> | |||
<td>boolean</td> | |||
<td>false</td> | |||
<td>If rain can fall through this block.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_snowcoverage" data-tt-parent="root">SnowCoverage</div></td> | |||
<td>boolean</td> | |||
<td>-</td> | |||
<td>Whether snow may rest on top of this block.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_snowcoverage_info" data-tt-parent="p_snowcoverage" data-invisible="true"></div></td> | |||
<td colspan="3"> | |||
All none solid blocks can't be covered by snow unless it's defined different: | |||
*Leaves (also branchy): '''true''', | |||
*Water with particles, Lakeice: '''false''' | |||
</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_collisionbox" data-tt-parent="root">CollisionBox</div></td> | |||
<td>object</td> | |||
<td>box (0,0,0 -> 1,1,1)</td> | |||
<td>Defines a box with which the player collides with.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_collisionbox_info" data-tt-parent="p_collisionbox" data-invisible="true"></div></td> | |||
<td colspan="3"> | |||
A '''half slab''' for example, has either a box going from 0,0,0 to 1,0.5,1 or going from 0,0.5,0 to 1,1,1, depending on whether it is a slab is down or up: | |||
<syntaxhighlight lang="json"> | |||
collisionboxByType: { | |||
"*-down": { x1: 0, y1: 0, z1: 0, x2: 1, y2: 0.5, z2: 1 }, | |||
"*-up": { x1: 0, y1: 0.5, z1: 0, x2: 1, y2: 1, z2: 1 } | |||
}, | |||
</syntaxhighlight> | |||
Collision and selection boxes are most likely equal. | |||
</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_collisionboxes" data-tt-parent="root">CollisionBoxes</div></td> | |||
<td>array of object</td> | |||
<td>-</td> | |||
<td>Defines multiple boxes with which the player collides with.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_collisionboxes_info" data-tt-parent="p_collisionboxes" data-invisible="true"></div></td> | |||
<td colspan="3"> | |||
A '''crate''' for example requires multiple collision boxes: | |||
<syntaxhighlight lang="json"> | |||
collisionboxesByType: { | |||
"*-opened": [ | |||
{ x1: 0, y1: 0, z1: 0, x2: 1, y2: 0.0625, z2: 1 }, | |||
{ x1: 0, y1: 0, z1: 0, x2: 1, y2: 1, z2: 0.0625 }, | |||
{ x1: 0, y1: 0, z1: 0, x2: 1, y2: 1, z2: 0.0625, rotateY: 90 }, | |||
{ x1: 0, y1: 0, z1: 0, x2: 1, y2: 1, z2: 0.0625, rotateY: 180 }, | |||
{ x1: 0, y1: 0, z1: 0, x2: 1, y2: 1, z2: 0.0625, rotateY: 270 }, | |||
] | |||
}, | |||
</syntaxhighlight> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_selectionbox" data-tt-parent="root">SelectionBox</div></td> | |||
<td>object</td> | |||
<td>box (0,0,0 -> 1,1,1)</td> | |||
<td>Defines a box which the player's mouse pointer collides with for selection.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_selectionbox_info" data-tt-parent="p_selectionbox" data-invisible="true"></div></td> | |||
<td colspan="3"> | |||
A '''half slab''' for example, has either a box going from 0,0,0 to 1,0.5,1 or going from 0,0.5,0 to 1,1,1, depending on whether it is a slab is down or up: | |||
<syntaxhighlight lang="json"> | |||
selectionboxByType: { | |||
"*-down": { x1: 0, y1: 0, z1: 0, x2: 1, y2: 0.5, z2: 1 }, | |||
"*-up": { x1: 0, y1: 0.5, z1: 0, x2: 1, y2: 1, z2: 1 } | |||
}, | |||
</syntaxhighlight> | |||
Collision and selection boxes are most likely equal. | |||
</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_selectionboxes" data-tt-parent="root">SelectionBoxes</div></td> | |||
<td>array of object</td> | |||
<td>-</td> | |||
<td>Defines multiple boxes which the player's mouse pointer collides with for selection.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_selectionboxes_info" data-tt-parent="p_selectionboxes" data-invisible="true"></div></td> | |||
<td colspan="3"> | |||
A '''crate''' for example requires multiple selection boxes: | |||
<syntaxhighlight lang="json"> | |||
selectionboxesByType: { | |||
"*-opened": [ | |||
{ x1: 0, y1: 0, z1: 0, x2: 1, y2: 0.0625, z2: 1 }, | |||
{ x1: 0, y1: 0, z1: 0, x2: 1, y2: 1, z2: 0.0625 }, | |||
{ x1: 0, y1: 0, z1: 0, x2: 1, y2: 1, z2: 0.0625, rotateY: 90 }, | |||
{ x1: 0, y1: 0, z1: 0, x2: 1, y2: 1, z2: 0.0625, rotateY: 180 }, | |||
{ x1: 0, y1: 0, z1: 0, x2: 1, y2: 1, z2: 0.0625, rotateY: 270 }, | |||
] | |||
}, | |||
</syntaxhighlight> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_replaceable" data-tt-parent="root">Replaceable</div></td> | |||
<td>integer</td> | |||
<td>0</td> | |||
<td>A value usually between 0-9999 that indicates which blocks may be replaced with others.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_replaceable_info" data-tt-parent="p_replaceable" data-invisible="true"></div></td> | |||
<td colspan="3"> | |||
<table class="wikitable"> | |||
<tr style="background-color: grey;"> | |||
<th style="background-color: grey;">Value</th> | |||
<th style="background-color: grey;">Effect (Blocks)</th> | |||
</tr> | |||
<tr> | |||
<td>'''0'''</td> | |||
<td>'''''ordinary blocks''''' (stone for example)</td> | |||
</tr> | |||
<tr> | |||
<td>'''5000'''</td> | |||
<td>Everything equal or above will be washed away by water (such as '''''Fruit''''').</td> | |||
</tr> | |||
<tr> | |||
<td>'''6000'''</td> | |||
<td>Everything equal or above wwill replaced when the player tries to place a block (such as '''''Tallgrass''''').</td> | |||
</tr> | |||
<tr> | |||
<td>'''9000'''</td> | |||
<td>'''''Lava'''''</td> | |||
</tr> | |||
<tr> | |||
<td>'''9500'''</td> | |||
<td>'''''Water'''''</td> | |||
</tr> | |||
<tr> | |||
<td>'''9999'''</td> | |||
<td>'''''Air'''''</td> | |||
</tr> | |||
</table> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_fertility" data-tt-parent="root">Fertility</div></td> | |||
<td>integer</td> | |||
<td>0</td> | |||
<td>Which plants can grow on top of this block.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_fertility_info" data-tt-parent="p_fertility" data-invisible="true"></div></td> | |||
<td colspan="3"> | |||
<table class="wikitable"> | |||
<tr style="background-color: grey;"> | |||
<th style="background-color: grey;">Value</th> | |||
<th style="background-color: grey;">Effect</th> | |||
</tr> | |||
<tr> | |||
<td>'''0'''</td> | |||
<td>''nothing can grow.''</td> | |||
</tr> | |||
<tr> | |||
<td>'''10'''</td> | |||
<td>''some tallgrass and small trees can be grow on it.''</td> | |||
</tr> | |||
<tr> | |||
<td>'''100'''</td> | |||
<td>''all grass and trees can grow on it.''</td> | |||
</tr> | |||
</table> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_glowlevel" data-tt-parent="root">GlowLevel</div></td> | |||
<td>0 ... 255</td> | |||
<td>0</td> | |||
<td>Basic glow level for all the blocks model elements.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_glowlevel_info" data-tt-parent="p_glowlevel" data-invisible="true"></div></td> | |||
<td colspan="3"> | |||
<table class="wikitable"> | |||
<tr style="background-color: grey;"> | |||
<th style="background-color: grey;">Blocks</th> | |||
<th style="background-color: grey;">Value</th> | |||
</tr> | |||
<tr> | |||
<td>''Glacierice''</td> | |||
<td>'''8'''</td> | |||
</tr> | |||
<tr> | |||
<td>''Paperlantern''</td> | |||
<td>'''32'''</td> | |||
</tr> | |||
<tr> | |||
<td>''Ember''</td> | |||
<td>'''48'''</td> | |||
</tr> | |||
<tr> | |||
<td>''Fire'', ''Firepit'', ''Oillamp'', ''Torch''</td> | |||
<td>'''64'''</td> | |||
</tr> | |||
<tr> | |||
<td>''Lava''</td> | |||
<td>'''128'''</td> | |||
</tr> | |||
</table> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_lightabsorption" data-tt-parent="root">LightAbsorption</div></td> | |||
<td>0 ... 32</td> | |||
<td>0</td> | |||
<td>For light blocking blocks. Any value above 32 will completely block all light.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_walkspeedmultiplier" data-tt-parent="root">WalkspeedMultiplier</div></td> | |||
<td>decimal number</td> | |||
<td>1</td> | |||
<td>Percentage walk-speed when standing on or inside this block.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_walkspeedmultiplier_info" data-tt-parent="p_walkspeedmultiplier" data-invisible="true"></div></td> | |||
<td colspan="3"> | |||
<table class="wikitable"> | |||
<tr style="background-color: grey;"> | |||
<th style="background-color: grey;">Blocks</th> | |||
<th style="background-color: grey;">Value</th> | |||
</tr> | |||
<tr> | |||
<td>''Spiderweb''</td> | |||
<td>'''0.25'''</td> | |||
</tr> | |||
<tr> | |||
<td>''Stonepath''</td> | |||
<td>'''1.15'''</td> | |||
</tr> | |||
</table> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_dragmultiplier" data-tt-parent="root">DragMultiplier</div></td> | |||
<td>decimal number</td> | |||
<td>1</td> | |||
<td>Drag multiplier applied to entities standing on it (slipperiness factor).</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_dragmultiplier_info" data-tt-parent="p_dragmultiplier" data-invisible="true"></div></td> | |||
<td colspan="3"> | |||
<table class="wikitable"> | |||
<tr style="background-color: grey;"> | |||
<th style="background-color: grey;">Blocks</th> | |||
<th style="background-color: grey;">Value</th> | |||
</tr> | |||
<tr> | |||
<td>''Glacierice'', ''Lakeice''</td> | |||
<td>'''0.02'''</td> | |||
</tr> | |||
</table> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_drops" data-tt-parent="root">Drops</div></td> | |||
<td>array of object</td> | |||
<td>-</td> | |||
<td>The items that should drop from breaking this block.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_drops_info" data-tt-parent="p_drops" data-invisible="true"></div></td> | |||
<td colspan="3"> | |||
'''Drop itself''' | |||
If this property does not exist the block will drop itself. | |||
---- | |||
'''No drop''' | |||
A '''firepit''' for example doesn't drop anything. You can do so if you specify an empty array: | |||
<syntaxhighlight lang="json"> | |||
drops: [], | |||
</syntaxhighlight> | |||
---- | |||
'''Special drop''' | |||
You can also specify a special item/ block. Therefore you need to define an '''ItemStack''', with the given properties: | |||
<table class="wikitable"> | |||
<tr style="background-color: grey;"> | |||
<th style="background-color: grey;">Property</th> | |||
<th style="background-color: grey;">Default</th> | |||
<th style="background-color: grey;">Explanation</th> | |||
</tr> | |||
<tr> | |||
<td>'''type'''</td> | |||
<td>''block''</td> | |||
<td>Can either be '''''block''''' or '''''item'''''.</td> | |||
</tr> | |||
<tr> | |||
<td>'''code''' (required)</td> | |||
<td>-</td> | |||
<td>The complete code (can also include domain) of the item or block.</td> | |||
</tr> | |||
<tr> | |||
<td>'''lastdrop'''</td> | |||
<td>false</td> | |||
<td>If true and the quantity dropped is >=1 any subsequent drop will be ignored.</td> | |||
</tr> | |||
<tr> | |||
<td>'''attributes'''</td> | |||
<td>-</td> | |||
<td>Tree Attributes that will be attached to the resulting itemstack.</td> | |||
</tr> | |||
<tr> | |||
<td>'''tool'''</td> | |||
<td>-</td> | |||
<td>If specified then given tool is required to break this block.</td> | |||
</tr> | |||
<tr> | |||
<td>'''quantity'''</td> | |||
<td>- (one)</td> | |||
<td>Determines the quantity of items which will be dropped.</td> | |||
</tr> | |||
</table> | |||
For example, the drop of a '''charcoalpile''' looks like this: | |||
<syntaxhighlight lang="json"> | |||
drops: [ | |||
{ type: "item", code: "charcoal" } | |||
], | |||
</syntaxhighlight> | |||
'''Tallgrass''' will only drop something if it's mined by a knife: | |||
<syntaxhighlight lang="json"> | |||
drops: [ | |||
{ type: "item", code: "drygrass", tool: "knife" }, | |||
], | |||
</syntaxhighlight> | |||
---- | |||
'''Chance drops''' | |||
Let's take a look at an example. This is the drop property of rock: | |||
<syntaxhighlight lang="json"> | |||
drops: [ | |||
{ | |||
type: "item", | |||
code: "stone-{rock}", | |||
quantity: { avg: 2.5, var: 0.5 } | |||
}, | |||
] | |||
</syntaxhighlight> | |||
This will drop 2-3 blocks. | |||
'''''avg''''': Stands for the default drop quantity. If var is 0 or not specified it will always drop the given average. | |||
'''''var''''': How much the drop rate can vary. Meaning the drop rate can be <code>avg - var</code> at minimum and <code>age + var</code> at maximum. | |||
Futhermore you can also switch between different distribution modes using the '''''dist''''' property. | |||
<table class="wikitable mw-collapsible mw-collapsed"> | |||
<tr> | |||
<th colspan="2">Overview - Distribution modes</th> | |||
</tr> | |||
<tr style="background-color: grey;"> | |||
<th style="background-color: grey;">Name</th> | |||
<th style="background-color: grey;">Explanation</th> | |||
</tr> | |||
<tr> | |||
<td>'''uniform'''</td> | |||
<td>''Select completely random numbers within avg-var until avg+var.''</td> | |||
</tr> | |||
<tr> | |||
<td>'''triangle'''</td> | |||
<td>''Select random numbers with numbers near avg being the most commonly selected ones, following a triangle curve.''</td> | |||
</tr> | |||
<tr> | |||
<td>'''gaussian'''</td> | |||
<td>''Select random numbers with numbers near avg being the most commonly selected ones, following a gaussian curve.''</td> | |||
</tr> | |||
<tr> | |||
<td>'''narrowgaussian'''</td> | |||
<td>''Select random numbers with numbers near avg being the most commonly selected ones, following a narrow gaussian curve.''</td> | |||
</tr> | |||
<tr> | |||
<td>'''inversegaussian'''</td> | |||
<td>''Select random numbers with numbers near avg being the least commonly selected ones, following an upside down gaussian curve.''</td> | |||
</tr> | |||
<tr> | |||
<td>'''narrowinversegaussian'''</td> | |||
<td>''Select random numbers with numbers near avg being the least commonly selected ones, following an upside down gaussian curve.''</td> | |||
</tr> | |||
<tr> | |||
<td>'''invexp'''</td> | |||
<td>''Select numbers in the form of avg + var, wheras low value of var are preferred.''</td> | |||
</tr> | |||
<tr> | |||
<td>'''stronginvexp'''</td> | |||
<td>''Select numbers in the form of avg + var, wheras low value of var are strongly preferred.''</td> | |||
</tr> | |||
<tr> | |||
<td>'''strongerinvexp'''</td> | |||
<td>''Select numbers in the form of avg + var, wheras low value of var are very strongly preferred.''</td> | |||
</tr> | |||
<tr> | |||
<td>'''dirac'''</td> | |||
<td>''Select completely random numbers within avg-var until avg+var only ONCE and then always 0.''</td> | |||
</tr> | |||
</table> | |||
---- | |||
'''Multiple Drops''' | |||
Of course you can also define multiple drops at once. '''Sapling''' can drop a sapling and a stick: | |||
<syntaxhighlight lang="json"> | |||
drops: [ | |||
{ | |||
type: "block", | |||
code: "sapling-{wood}", | |||
quantity: { avg: 0.02, var: 0 }, | |||
}, | |||
{ | |||
type: "item", | |||
code: "stick", | |||
quantity: { avg: 0.02, var: 0 }, | |||
} | |||
], | |||
</syntaxhighlight> | |||
---- | |||
'''Last Drop''' | |||
In order to add a special drop, which (if dropped) prevents all other drops, you can use the lastDrop property: | |||
<syntaxhighlight lang="json"> | |||
dropsByType: { | |||
} | "ore-quartz-*": [ | ||
{ type: "item", code: "clearquartz", quantity: { avg: 0.2, var: 0 }, lastDrop: true }, | |||
{ type: "item", code: "ore-{ore}", quantity: { avg: 1.25, var: 0 } } | |||
], | |||
"*": [ | |||
{ type: "item", code: "ore-{ore}", quantity: { avg: 1.25, var: 0 } } | |||
], | |||
} | } | ||
</syntaxhighlight> | |||
.tt- | Quartz ore will drop with a 20% chance clearquartz, if not it will drop the regular ore. If lastDrop wouldn't be true it could drop both at the same time. | ||
</td> | |||
} | </tr> | ||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_particleproperties" data-tt-parent="root">ParticleProperties</div></td> | |||
<td>array of object</td> | |||
<td>-</td> | |||
<td>Particles that should spawn in regular intervals from this block.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_liquidlevel" data-tt-parent="root">LiquidLevel</div></td> | |||
<td>0 ... 7</td> | |||
<td>0</td> | |||
<td>Value between 0...7 for Liquids to determine the height of the liquid.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_cropprops" data-tt-parent="root">CropProps</div></td> | |||
<td>object</td> | |||
<td>-</td> | |||
<td>Information about the block as a crop.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_sounds" data-tt-parent="root">Sounds</div></td> | |||
<td>key: string, value: string</td> | |||
<td>-</td> | |||
<td>The sounds played for this block during step, break, build and walk.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_sounds_walk" data-tt-parent="p_sounds">Walk</div></td> | |||
<td colspan="3">An entity walks over it.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_sounds_inside" data-tt-parent="p_sounds">Inside</div></td> | |||
<td colspan="3">The player is inside the block.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_sounds_break" data-tt-parent="p_sounds">Break</div></td> | |||
<td colspan="3">Breaking the block.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_sounds_place" data-tt-parent="p_sounds">Place</div></td> | |||
<td colspan="3">Placing the block.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_sounds_hit" data-tt-parent="p_sounds">Hit</div></td> | |||
<td colspan="3">While mining the block.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_sounds_ambient" data-tt-parent="p_sounds">Ambient</div></td> | |||
<td colspan="3">Played from time to time if the player is close to it.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_sounds_info" data-tt-parent="p_sounds" data-invisible="true"></div></td> | |||
<td colspan="3"> | |||
'''Anvil''': | |||
<syntaxhighlight lang="json"> | |||
sounds: { | |||
"place": "block/anvil", | |||
"break": "block/anvil" | |||
} | |||
</syntaxhighlight> | |||
'''Rails''': | |||
<syntaxhighlight lang="json"> | |||
sounds: { | |||
} | place": "block/planks", | ||
"walk": "walk/wood" | |||
} | |||
</syntaxhighlight> | |||
'''Water''': | |||
<syntaxhighlight lang="json"> | |||
sounds: { | |||
place: "block/water", | |||
inside: "walk/water", | |||
ambient: "environment/creek" | |||
}, | |||
</syntaxhighlight> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td colspan="4" style='font-size: 14pt; border-bottom: 2pt solid black; padding-left: 100px;'><b>Common</b></td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_creativeinventory" data-tt-parent="root">CreativeInventory</div></td> | |||
<td>key: string, value: string[]</td> | |||
<td>-</td> | |||
<td>In which creative inventory tabs the block should be visible in.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_creativeinventory_info" data-tt-parent="p_creativeinventory" data-invisible="true"></div></td> | |||
<td colspan="3"> | |||
There are several tabs to you can add your stuff. Note that general should always be included, since it should contain everything. | |||
*general | |||
*terrain | |||
*flora | |||
*construction | |||
*decorative | |||
*items | |||
'''Rock''' adds all of it's variantions to general, terrain and construction: | |||
<syntaxhighlight lang="json"> | |||
creativeinventory: { "general": ["*"], "terrain": ["*"], "construction": ["*"] }, | |||
</syntaxhighlight> | |||
'''<code>*</code>''' reprents the variants which will be added. You can specify multiple and separate them with a comma. It follows the same way as the '''byType''' property. | |||
. | A '''Torch''' on the other hand only adds the variation '''<code>up</code>''': | ||
<syntaxhighlight lang="json"> | |||
creativeinventory: { "general": ["*-up"], "decorative": ["*-up"] }, | |||
</syntaxhighlight> | |||
. | </td> | ||
</tr> | |||
float | <tr> | ||
<td scope="row"><div class="tt" data-tt-id="p_maxstacksize" data-tt-parent="root">MaxStackSize</div></td> | |||
<td>integer</td> | |||
<td>64</td> | |||
list- | <td>Determines the maximum amount you can stack the block in one slot.</td> | ||
</tr> | |||
. | |||
. | |||
<tr> | |||
<td colspan="4" style='font-size: 14pt; border-bottom: 2pt solid black; padding-left: 100px;'><b>Rendering</b></td> | |||
</tr> | |||
. | <tr> | ||
<td scope="row"><div class="tt" data-tt-id="p_renderpass" data-tt-parent="root">renderpass</div></td> | |||
<td>string (of enum)</td> | |||
<td>opaque</td> | |||
<td>Determines how the block will be drawn.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_opaque" data-tt-parent="p_renderpass">opaque</div></td> | |||
<td></td> | |||
<td>0</td> | |||
<td>Used for solid blocks with no half transparency.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_opaquenocull" data-tt-parent="p_renderpass">opaquenocull</div></td> | |||
<td></td> | |||
<td>1</td> | |||
<td>Used for non-solid single faced blocks, such as tall grass.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_transparent" data-tt-parent="p_renderpass">transparent</div></td> | |||
<td></td> | |||
<td>2</td> | |||
<td>Use for solid halftransparent blocks, such as glass</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_liquid" data-tt-parent="p_renderpass">liquid</div></td> | |||
<td></td> | |||
<td>3</td> | |||
<td>Used for liquids, produces waves.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_topsoil" data-tt-parent="p_renderpass">topsoil</div></td> | |||
<td></td> | |||
<td>4</td> | |||
<td>Used for grass covered blocks. Allows for a smooth transition from grass to soil, while still allowing climate tinting of grass.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_shape" data-tt-parent="root">shape</div></td> | |||
<td>shape</td> | |||
<td></td> | |||
<td>For the json drawtype, the shape definition of the block as shown in the world, dropped on the ground or held in hand.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_base" data-tt-parent="p_shape">base</div></td> | |||
<td></td> | |||
<td></td> | |||
<td>The path to the shape json file, the base dir is ''assets/shapes/''.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_rotateX" data-tt-parent="p_shape">rotateX</div></td> | |||
<td>float</td> | |||
<td>0</td> | |||
<td></td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_rotateY" data-tt-parent="p_shape">rotateY</div></td> | |||
<td>float</td> | |||
<td>0</td> | |||
<td></td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_rotateZ" data-tt-parent="p_shape">rotateZ</div></td> | |||
<td>float</td> | |||
<td>0</td> | |||
<td></td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_shapeinventory" data-tt-parent="root">shapeinventory</div></td> | |||
<td>shape</td> | |||
<td></td> | |||
<td>For the json drawtype, the shape definition of the block as shown in the players inventory.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_invbase" data-tt-parent="p_shapeinventory">base</div></td> | |||
<td></td> | |||
<td></td> | |||
<td>The path to the shape json file, the base dir is ''assets/shapes/''.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_invrotateX" data-tt-parent="p_shapeinventory">rotateX</div></td> | |||
<td>float</td> | |||
<td>0</td> | |||
<td></td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_invrotateY" data-tt-parent="p_shapeinventory">rotateY</div></td> | |||
<td>float</td> | |||
<td>0</td> | |||
<td></td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_invrotateZ" data-tt-parent="p_shapeinventory">rotateZ</div></td> | |||
<td>float</td> | |||
<td>0</td> | |||
<td></td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_ambientocclusion" data-tt-parent="root">ambientocclusion</div></td> | |||
<td>boolean</td> | |||
<td>true</td> | |||
<td>If ambient occlusion will be applied to the block.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_drawtype" data-tt-parent="root" hide="children">drawtype</div></td> | |||
<td>string (of enum)</td> | |||
<td>cube</td> | |||
<td>Determines how the block is tesselated, select JSON for being able to use custom JSON Models. The other values are hardcoded methods of tesselating the block. Check [[Drawtypes]] for a full list.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_blockLayer_1" data-tt-parent="p_drawtype">blockLayer_1</div></td> | |||
<td></td> | |||
<td>0</td> | |||
<td></td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_blockLayer_2" data-tt-parent="p_drawtype">blockLayer_2</div></td> | |||
<td></td> | |||
<td>1</td> | |||
<td></td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_blockLayer_3" data-tt-parent="p_drawtype">blockLayer_3</div></td> | |||
<td></td> | |||
<td>2</td> | |||
<td></td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_blockLayer_4" data-tt-parent="p_drawtype">blockLayer_4</div></td> | |||
<td></td> | |||
<td>3</td> | |||
<td></td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_blockLayer_5" data-tt-parent="p_drawtype">blockLayer_5</div></td> | |||
<td></td> | |||
<td>4</td> | |||
<td></td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_blockLayer_6" data-tt-parent="p_drawtype">blockLayer_6</div></td> | |||
<td></td> | |||
<td>5</td> | |||
<td></td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_blockLayer_7" data-tt-parent="p_drawtype">blockLayer_7</div></td> | |||
<td></td> | |||
<td>6</td> | |||
<td></td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_json" data-tt-parent="p_drawtype">json</div></td> | |||
<td></td> | |||
<td>7</td> | |||
<td>Will draw a json model.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_empty" data-tt-parent="p_drawtype">empty</div></td> | |||
<td></td> | |||
<td>8</td> | |||
<td>Nothing will be drawn.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_cube" data-tt-parent="p_drawtype">cube</div></td> | |||
<td></td> | |||
<td>9</td> | |||
<td>Draws an ordinary cube.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_cross" data-tt-parent="p_drawtype">cross</div></td> | |||
<td></td> | |||
<td>10</td> | |||
<td></td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_transparent" data-tt-parent="p_drawtype">transparent</div></td> | |||
<td></td> | |||
<td>11</td> | |||
<td></td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_liquid" data-tt-parent="p_drawtype">liquid</div></td> | |||
<td></td> | |||
<td>12</td> | |||
<td></td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_crossandsnowlayer" data-tt-parent="p_drawtype">crossandsnowlayer</div></td> | |||
<td></td> | |||
<td>13</td> | |||
<td></td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_textures" data-tt-parent="root">textures</div></td> | |||
<td>key: direction, value: texture</td> | |||
<td></td> | |||
<td>The texture definitions for the block as seen in the world, when dropped on the ground or held in the hand.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row" valign="top"><div class="tt" data-tt-id="p_textures_base" data-tt-parent="p_textures">base</div><br><br><div class="tt" data-tt-id="p_textures_overlays" data-tt-parent="p_textures">overlays</div><br><br><div class="tt" data-tt-id="p_textures_base" data-tt-parent="p_textures">alternates</div></td> | |||
<td colspan="3">{{:json:block:texture}}</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_texturesinventory" data-tt-parent="root">texturesinventory</div></td> | |||
<td>key: direction, value: texture</td> | |||
<td></td> | |||
<td>The texture definitions for the block as seen in the player inventory. Overrides the textures definition if set.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_sideopaque" data-tt-parent="root">sideopaque</div></td> | |||
<td>key: direction, value: boolean</td> | |||
<td>true</td> | |||
<td>Determines if given block face is fully opaque. If yes, the opposite face of the adjacent block will not be drawn for efficiency reasons.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"> | |||
<div class="tt" data-tt-id="p_sideopaque_all" data-tt-parent="p_sideopaque">all</div><br> | |||
<div class="tt" data-tt-id="p_sideopaque_east" data-tt-parent="p_sideopaque">east</div><br> | |||
<div class="tt" data-tt-id="p_sideopaque_west" data-tt-parent="p_sideopaque">west</div><br> | |||
<div class="tt" data-tt-id="p_sideopaque_up" data-tt-parent="p_sideopaque">up</div><br> | |||
<div class="tt" data-tt-id="p_sideopaque_down" data-tt-parent="p_sideopaque">down</div><br> | |||
<div class="tt" data-tt-id="p_sideopaque_north" data-tt-parent="p_sideopaque">north</div><br> | |||
<div class="tt" data-tt-id="p_sideopaque_south" data-tt-parent="p_sideopaque">south</div> | |||
</td> | |||
<td></td> | |||
<td></td> | |||
<td></td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_sidesolid" data-tt-parent="root">sidesolid</div></td> | |||
<td>key: direction, value: boolean</td> | |||
<td>true</td> | |||
<td>Determins if given block side is solid. If true, other blocks like torches can be attached to it</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"> | |||
<div class="tt" data-tt-id="p_sidesolid_all" data-tt-parent="p_sidesolid">all</div><br> | |||
<div class="tt" data-tt-id="p_sidesolid_east" data-tt-parent="p_sidesolid">east</div><br> | |||
<div class="tt" data-tt-id="p_sidesolid_west" data-tt-parent="p_sidesolid">west</div><br> | |||
<div class="tt" data-tt-id="p_sidesolid_up" data-tt-parent="p_sidesolid">up</div><br> | |||
<div class="tt" data-tt-id="p_sidesolid_down" data-tt-parent="p_sidesolid">down</div><br> | |||
<div class="tt" data-tt-id="p_sidesolid_north" data-tt-parent="p_sidesolid">north</div><br> | |||
<div class="tt" data-tt-id="p_sidesolid_south" data-tt-parent="p_sidesolid">south</div> | |||
</td> | |||
<td></td> | |||
<td></td> | |||
<td></td> | |||
</tr> | |||
</table> |