44,051
edits
Mirotworez (talk | contribs) (Created page with "'''Object''' - это немного сложнее, но, по сути, объекты - это элементы, блоки и сущности, с которыми мож...") |
(Updating to match new version of source page) |
||
Line 1: | Line 1: | ||
<languages/> | <languages/> | ||
<div class="mw-translate-fuzzy"> | |||
__NOTOC__ | __NOTOC__ | ||
== Обзор == | == Обзор == | ||
Полный список всех доступных свойств | Полный список всех доступных свойств | ||
</div> | |||
Определения: | Определения: | ||
Line 69: | Line 71: | ||
<td>array of objects</td> | <td>array of objects</td> | ||
<td>-</td> | <td>-</td> | ||
<td>Allows you define multiple variants of the same | <td>Allows you define multiple [[Modding:Registry_Object_JSON_Parsing|variants]] of the same block.</td> | ||
<td>armor, ore-graded, plank, </td> | <td>armor, ore-graded, plank, </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_byType" data-tt-parent="root">(any) bytype</div></td> | ||
<td>key: string; value: object</td> | |||
<td>-</td> | |||
<td>Allows different property values to be [[Modding:Registry_Object_JSON_Parsing#ByType_properties|specified]] based on the variant code.</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_allowedVariants" data-tt-parent="root">allowedVariants</div></td> | |||
<td>array of strings</td> | |||
<td>-</td> | |||
<td>Used to [[Modding:Registry_Object_JSON_Parsing#Filtering_out_variants|trim]] unnecessary blocks generated by combined variants. </td> | |||
<td>crystalizedore-graded, ore-graded, ore-ungraded</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_skipVariants" data-tt-parent="root">skipVariants</div></td> | |||
<td>array of strings</td> | |||
<td>-</td> | |||
<td>Similar to allowedVariants, but instead [[Modding:Registry_Object_JSON_Parsing#Filtering_out_variants|skips]] the creation of listed variants rather than assigning which are allowed. </td> | |||
<td>armor</td> | |||
</tr> | |||
<tr> | |||
<td colspan="5" 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> | |||
<td>anvil, firepit, quern, skep</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="4"> | <td colspan="4"> | ||
It can be used to open guis or adding other extra functionality to the block. A complete tutorial of how to add your own class to the game can be found [[Advanced Blocks|here]]. An ongoing list of block classes used in JSONS can also be found [[Block Classes|here]]. | |||
</td> | |||
An | </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. Allows for much more advanced properties.</td> | |||
</ | <td>anvil, firepit, quern, skep</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> | |||
<td>gravel, lantern, log, rock, torch</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="4"> | |||
Behaviors are useful traits as many can be assigned to a single block. If you want to create your own custom behavior you can read [[Adding Block Behavior]]. | |||
To see all of the current behaviors in the game see [[Json:block:behaviors|All Block Behaviors]] and [[Modding:Collectible_Behaviors|All Collectible Behaviors]]. | |||
</ | </td> | ||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_ebehaviors" data-tt-parent="root">entityBehaviors</div></td> | |||
<td>array of object</td> | |||
<td>-</td> | |||
<td>An entity behavior adds custom abilities to an entity assigned to a block, such as the mechanical power properties of the windmill.</td> | |||
< | <td>angledgears, axle, brake, clutch, helvehammerbase, toggle, transmission, windmillrotor</td> | ||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_ebehaviors_info" data-tt-parent="p_ebehaviors" data-invisible="true"></div></td> | |||
<td colspan="4"> | |||
Block entity behaviors are expanded capabilities that regular behaviors cannot accomplish. At the moment they are only used for Mechanical Power blocks, but if you're looking to make your own you can look through the existing files at the Vintage Story Github [https://github.com/anegostudios/vssurvivalmod/tree/master/Systems/MechanicalPower/BlockEntityBehavior here ]. | |||
To see all of the current block entity behaviors in the game see [[Modding:Block_Entity_Behaviors|All Block Entity Behaviors]]. | |||
</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="4"> | |||
A chest for example uses the BlockEntity to store the inventory. A tutorial of creating your own entityclass can be found [[Block Entity|here]]. You can also find every existing block entity and their relevant github links [[Block Entities|here]]. | |||
</td> | |||
</ | |||
< | |||
< | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_blockmaterial" data-tt-parent="root">blockmaterial</div></td> | ||
<td> | <td>string</td> | ||
<td>-</td> | <td>-</td> | ||
<td> | <td>A behavior adds custom abilities such as falling block.</td> | ||
<td>gravel</td> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_blockmaterial_info" data-tt-parent="p_blockmaterial" data-invisible="true"></div></td> | ||
<td colspan="4"> | <td colspan="4"> | ||
Materials are hardcoded and currently only used to determine mining speed with a specific tool. The following materials are available: | |||
''Brick, Ceramic, Cloth, Fire, Glass, Gravel, Ice, Lava, Leaves, Liquid, Mantle, Metal, Other, Plant, Sand, Snow, Soil, Stone, Wood'' | |||
</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> | |||
<td> water </td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_blockmaterial_info" data-tt-parent="p_blockmaterial" data-invisible="true"></div></td> | |||
<td colspan="4"> | |||
Used for special collision behavior and rendering. Currently used for lava and water, which are liquids (All other blocks default to solid). | |||
Gas and plasma are not yet implemented. | |||
< | </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> | |||
<td>leaves, meteorite, sand</td> | |||
< | |||
< | |||
</ | |||
</td> | |||
</tr> | </tr> | ||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_resistance_info" data-tt-parent="p_resistance" data-invisible="true"></div></td> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id=" | |||
<td colspan="4"> | <td colspan="4"> | ||
Resistance values range from very low with leaves (0.5) to the average of stone (6) to the very high resistance value of meteoric iron deposits (60). | |||
</td> | </td> | ||
</tr> | </tr> | ||
<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> | |||
<td>ore-graded, rock</td> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_requiredminingtier_info" data-tt-parent="p_requiredminingtier" data-invisible="true"></div></td> | ||
<td colspan="4"> | <td colspan="4"> | ||
The following are examples of the mining tiers required for certian ores in Vintage Story: | |||
<table class="wikitable"> | |||
<tr style="background-color: rgba(0,0,0,0.2);"> | |||
<th style="background-color: rgba(0,0,0,0.2);">Tier</th> | |||
<th style="background-color: rgba(0,0,0,0.2);">Ores</th> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td | <td>'''1'''</td> | ||
<td>'''''galena''''' and '''''rocksalt_sylvite'''''</td> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td | <td>'''2'''</td> | ||
<td>'''''lignite''''', '''''cassiterite''''', '''''sphalerite''''', '''''rocksalt''''', '''''sulfur''''' and '''''nativecopper'''''</td> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td | <td>'''3'''</td> | ||
<td>'''''bituminouscoal''''', '''''quartz_nativegold''''', '''''quartz_nativesilver''''', '''''lapislazuli''''', '''''bismuthinite''''', '''''quartz''''', '''''magnetite''''' and '''''limonite'''''</td> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td | <td>'''4'''</td> | ||
<td>'''''diamond''''' and '''''emerald'''''</td> | |||
</tr> | </tr> | ||
<tr> | |||
<td | <td>'''5'''</td> | ||
<td>'''''chromite''''', '''''platinum''''' and '''''ilmenite'''''</td> | |||
</tr> | </tr> | ||
</table> | |||
</td> | </td> | ||
</tr> | </tr> | ||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_climbable" data-tt-parent="root">climbable</div></td> | ||
<td> | <td>boolean</td> | ||
<td> | <td>false</td> | ||
<td> | <td>If true, walking against this block will make the player climb (used for ladders).</td> | ||
<td> | <td>ladder</td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_rainpermeable" data-tt-parent="root">rainpermeable</div></td> | ||
<td | <td>boolean</td> | ||
<td>false</td> | |||
<td>If rain can fall through this block.</td> | |||
<td>torch, torchholder</td> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_snowcoverage" data-tt-parent="root">snowcoverage</div></td> | ||
<td>boolean</td> | |||
<td> | |||
<td>-</td> | <td>-</td> | ||
<td> | <td>Whether snow may rest on top of this block.</td> | ||
<td> | <td>leavesbranchy</td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_snowcoverage_info" data-tt-parent="p_snowcoverage" data-invisible="true"></div></td> | ||
<td colspan="4"> | <td colspan="4"> | ||
All non-solid blocks can't be covered by snow unless it's defined different: | |||
*Leaves (also branchy): '''true''', | |||
'' | *Water with particles, Lakeice: '''false''' | ||
</td> | </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_collisionbox" data-tt-parent="root">collisionbox</div></td> | ||
<td> | <td>object</td> | ||
<td> | <td>box (0,0,0 -> 1,1,1)</td> | ||
<td> | <td>Defines a box with which the player collides with.</td> | ||
<td> | <td>carcass, door, fence, all slabs</td> | ||
</tr> | </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="4"> | <td colspan="4"> | ||
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. | |||
Also, setting the entire property to <code>null</code> will eliminate the collision box entirely. | |||
</td> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_collisionboxes" data-tt-parent="root">collisionboxes</div></td> | ||
<td> | <td>array of object</td> | ||
<td> | <td>-</td> | ||
<td> | <td>Defines multiple boxes with which the player collides with.</td> | ||
<td> | <td>all stairs, crate</td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_collisionboxes_info" data-tt-parent="p_collisionboxes" data-invisible="true"></div></td> | ||
<td colspan="4"> | <td colspan="4"> | ||
A '''crate''' for example requires multiple collision boxes: | |||
</td> | <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> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_collisionselectionboxes" data-tt-parent="root">collisionSelectionBoxes</div></td> | ||
<td> | <td>array of object</td> | ||
<td> | <td>-</td> | ||
<td> | <td>Simultaneously defines multiple boxes with which the player collides with and can select.</td> | ||
<td> | <td>all stairs</td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_colselsboxes_info" data-tt-parent="p_collisionselectionboxes" data-invisible="true"></div></td> | ||
<td colspan="4"> | <td colspan="4"> | ||
A '''crate''' for example requires multiple collision boxes: | |||
<syntaxhighlight lang="json"> | |||
< | collisionSelectionBoxesByType: { | ||
"*-down-*": [ | |||
{ x1: 0, y1: 0.5, z1: 0, x2: 1, y2: 1, z2: 1 }, | |||
{ | |||
x1: 0, y1: 0, z1: 0.5, x2: 1, y2: 0.5, z2: 1, | |||
rotateYByType: { | |||
"*-north": 180, | |||
"*-east": 90, | |||
"*-south": 0, | |||
"*-west": 270, | |||
} | |||
} | |||
], | |||
"*-up-*": [ | |||
{ x1: 0, y1: 0, z1: 0, x2: 1, y2: 0.5, z2: 1 }, | |||
{ | |||
x1: 0, y1: 0.5, z1: 0.5, x2: 1, y2: 1, z2: 1, | |||
rotateYByType: { | |||
"*-north": 180, | |||
"*-east": 90, | |||
"*-south": 0, | |||
"*-west": 270, | |||
} | |||
} | |||
], | |||
}, | |||
</syntaxhighlight> | |||
</td> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td> | <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> | |||
<td>carcass, door, fence, all slabs</td> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td> | <td scope="row"><div class="tt" data-tt-id="p_selectionbox_info" data-tt-parent="p_selectionbox" data-invisible="true"></div></td> | ||
<td colspan="4"> | |||
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"> | |||
<td>''' | 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> | </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_selectionboxes" data-tt-parent="root">selectionboxes</div></td> | ||
<td> | <td>array of object</td> | ||
<td>-</td> | <td>-</td> | ||
<td> | <td>Defines multiple boxes which the player's mouse pointer collides with for selection.</td> | ||
<td> | <td>carcass, door, fence, all slabs</td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_selectionboxes_info" data-tt-parent="p_selectionboxes" data-invisible="true"></div></td> | ||
<td colspan="4"> | <td colspan="4"> | ||
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> | </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_replaceable" data-tt-parent="root">replaceable</div></td> | ||
<td> | <td>integer</td> | ||
<td> | <td>0</td> | ||
<td> | <td>A value usually between 0-9999 that indicates which blocks may be replaced with others.</td> | ||
<td> | <td>bigberrybush, tallgrass, water</td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_replaceable_info" data-tt-parent="p_replaceable" data-invisible="true"></div></td> | ||
<td colspan="4"> | <td colspan="4"> | ||
<table class="wikitable"> | |||
< | <tr style="background-color: rgba(0,0,0,0.2);"> | ||
<th style="background-color: rgba(0,0,0,0.2);">value</th> | |||
<th style="background-color: rgba(0,0,0,0.2);">effect (blocks)</th> | |||
</tr> | |||
<tr> | |||
</ | <td>'''0'''</td> | ||
<td>'''''ordinary blocks''''' (stone for example)</td> | |||
</td> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td | <td>'''5000'''</td> | ||
<td>Everything equal or above will be washed away by water (such as '''''Fruit''''').</td> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td | <td>'''6000'''</td> | ||
<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> | </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_fertility" data-tt-parent="root">fertility</div></td> | ||
<td> | <td>integer</td> | ||
<td> | <td>0</td> | ||
<td> | <td>Which plants can grow on top of this block.</td> | ||
<td> | <td>clay, gravel, sand, soil</td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_fertility_info" data-tt-parent="p_fertility" data-invisible="true"></div></td> | ||
<td colspan="4"> | <td colspan="4"> | ||
<table class="wikitable"> | |||
< | <tr style="background-color: rgba(0,0,0,0.2);"> | ||
<th style="background-color: rgba(0,0,0,0.2);">value</th> | |||
<th style="background-color: rgba(0,0,0,0.2);">effect</th> | |||
</tr> | |||
<tr> | |||
<td>'''0'''</td> | |||
<td>''(rock) nothing can grow.''</td> | |||
</tr> | |||
<tr> | |||
<td>'''10'''</td> | |||
<td>''(sand) some tallgrass and small trees can be grow on it.''</td> | |||
</tr> | |||
<tr> | |||
<td>'''100'''</td> | |||
<td>''(soil) all grass and trees can grow on it.''</td> | |||
</tr> | |||
</table> | |||
</ | |||
</td> | </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_lightabsorption" data-tt-parent="root">lightabsorption</div></td> | ||
<td> | <td>0 ... 32</td> | ||
<td> | <td>0</td> | ||
<td> | <td>For light blocking blocks. Any value above 32 will completely block all light.</td> | ||
<td> | <td>full-plain (glass), water </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_walkspeedmultiplier" data-tt-parent="root">walkspeedmultiplier</div></td> | ||
<td colspan="4"> | <td>decimal number</td> | ||
<td>1.0</td> | |||
< | <td>Percentage walk-speed when standing on or inside this block.</td> | ||
<td>path, spiderweb, stonepath </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="4"> | |||
<table class="wikitable"> | |||
<tr style="background-color: rgba(0,0,0,0.2);"> | |||
<th style="background-color: rgba(0,0,0,0.2);">blocks</th> | |||
<th style="background-color: rgba(0,0,0,0.2);">value</th> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td | <td>''Spiderweb''</td> | ||
<td>'''0.25'''</td> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td | <td>''Stonepath''</td> | ||
<td>'''1.15'''</td> | |||
</tr> | |||
< | </table> | ||
</ | |||
</td> | </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_dragmultiplier" data-tt-parent="root">dragmultiplier</div></td> | ||
<td> | <td>decimal number</td> | ||
<td>0</td> | <td>1.0</td> | ||
<td> | <td>Drag multiplier applied to entities standing on it (slipperiness factor).</td> | ||
<td> | <td>Glacierice, Lakeice</td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_dragmultiplier_info" data-tt-parent="p_dragmultiplier" data-invisible="true"></div></td> | ||
<td colspan="4"> | <td colspan="4"> | ||
<table class="wikitable"> | <table class="wikitable"> | ||
<tr style="background-color: rgba(0,0,0,0.2);"> | <tr style="background-color: rgba(0,0,0,0.2);"> | ||
<th style="background-color: rgba(0,0,0,0.2);">blocks</th> | |||
<th style="background-color: rgba(0,0,0,0.2);">value</th> | <th style="background-color: rgba(0,0,0,0.2);">value</th> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''' | <td>''Glacierice'', ''Lakeice''</td> | ||
<td>''' | <td>'''0.02'''</td> | ||
</tr> | </tr> | ||
</table> | |||
</table> | |||
</td> | </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_drops" data-tt-parent="root">drops</div></td> | ||
<td> | <td>array of object</td> | ||
<td> | <td>-</td> | ||
<td> | <td>The items that should drop from breaking this block.</td> | ||
<td> | <td>crops, skep</td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_drops_info" data-tt-parent="p_drops" data-invisible="true"></div></td> | ||
<td colspan="4"> | <td colspan="4"> | ||
'''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"> | <table class="wikitable"> | ||
<tr style="background-color: rgba(0,0,0,0.2);"> | <tr style="background-color: rgba(0,0,0,0.2);"> | ||
<th style="background-color: rgba(0,0,0,0.2);"> | <th style="background-color: rgba(0,0,0,0.2);">property</th> | ||
<th style="background-color: rgba(0,0,0,0.2);"> | <th style="background-color: rgba(0,0,0,0.2);">default</th> | ||
<th style="background-color: rgba(0,0,0,0.2);">explanation</th> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''' | <td>'''type'''</td> | ||
<td>'' | <td>''block''</td> | ||
<td>Can either be '''''block''''' or '''''item'''''.</td> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''' | <td>'''code''' (required)</td> | ||
<td> | <td>-</td> | ||
<td>The complete code (can also include domain) of the item or block.</td> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''' | <td>'''lastdrop'''</td> | ||
<td> | <td>false</td> | ||
<td>If true and the quantity dropped is >=1 any subsequent drop in the list will be ignored.</td> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td | <td>'''attributes'''</td> | ||
<td>-</td> | |||
<td>Tree Attributes that will be attached to the resulting itemstack.</td> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td | <td>'''tool'''</td> | ||
<td>-</td> | |||
<td>If specified then given tool is required to break this block.</td> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td | <td>'''quantity'''</td> | ||
<td>- (one)</td> | |||
<td>Determines the quantity of items which will be dropped.</td> | |||
<td> | |||
</tr> | </tr> | ||
</table> | </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"> | |||
<syntaxhighlight lang="json"> | drops: [ | ||
drops: [] | { | ||
type: "item", | |||
code: "stone-{rock}", | |||
quantity: { avg: 2.5, var: 0.5 } | |||
}, | |||
] | |||
</syntaxhighlight> | </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. | |||
For more information see [[NatFloat]] page. | |||
---- | |||
'''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"> | <syntaxhighlight lang="json"> | ||
dropsByType: { | |||
{ type: "item", code: " | "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> | </syntaxhighlight> | ||
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> | |||
<td>torch> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_particleproperties_info" data-tt-parent="p_particleproperties" data-invisible="true"></div></td> | |||
<td colspan="4"> | |||
{{:json:block:particle}} | |||
< | </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> | |||
<td>water</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> | |||
<td>all crops</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_cprops_reqN" data-tt-parent="p_cropprops">requiredNutrient</div></td> | |||
---- | <td>Nutrient (N, P, or K)</td> | ||
<td>-</td> | |||
<td>The primary nutrient this crop uses and consumes from farmland.</td> | |||
<td>all crops</td> | |||
</tr> | |||
<tr> | |||
< | <td scope="row"><div class="tt" data-tt-id="p_cprops_consume" data-tt-parent="p_cropprops">nutrientConsumption</div></td> | ||
<td>number</td> | |||
<td>-</td> | |||
<td>The percentage value of the nutrient this plant will consume from farmland. This value should be whole, as in 50 = 50% consumption.</td> | |||
<td>all crops</td> | |||
</tr> | |||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id="p_cprops_gstages" data-tt-parent="p_cropprops">growthStages</div></td> | |||
<td>number</td> | |||
<td>-</td> | |||
<td>The number of growth stages this plant will go through before it can be harvested.</td> | |||
<td>all crops</td> | |||
</ | |||
< | |||
</ | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_cprops_gdays" data-tt-parent="p_cropprops">totalGrowthDays</div></td> | ||
<td> | <td>Number</td> | ||
<td>-</td> | <td>-</td> | ||
<td> | <td>The average number of days required for a plant to reach maturity. This value can include decimals, such as 4.5 days.</td> | ||
<td>all crops</td> | <td>all crops</td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_cprops_behaviors" data-tt-parent="p_cropprops">behaviors (crop)</div></td> | ||
<td> | <td>string</td> | ||
<td>-</td> | <td>-</td> | ||
<td> | <td>Crops can have additional functionality with special crop behaviors, currently used only by pumpkins.</td> | ||
<td> | <td>motherplant (pumpkin)</td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_pumpkin" data-tt-parent="p_cprops_behaviors">Pumpkin</div></td> | ||
<td>number</td> | <td>number</td> | ||
<td>-</td> | <td>-</td> | ||
<td>A unique pumpkin behavior utilize only by the pumpkin motherplant block.</td> | |||
<td>A unique pumpkin behavior utilize only by the pumpkin motherplant block.</td> | |||
<td>motherplant (pumpkin)</td> | <td>motherplant (pumpkin)</td> | ||
</tr> | </tr> | ||
Line 1,060: | Line 817: | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id="p_sounds_ambient" data-tt-parent="p_sounds">ambientBlockCount</div></td> | <td scope="row"><div class="tt" data-tt-id="p_sounds_ambient" data-tt-parent="p_sounds">ambientBlockCount</div></td> | ||
<td colspan="4">The | <td colspan="4">The amount of blocks required to be in the vicinity of the player to play the sound at full volume.</td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
Line 1,743: | Line 1,500: | ||
<td>Block Code</td> | <td>Block Code</td> | ||
<td>-</td> | <td>-</td> | ||
<td>Used by meal blocks to determine which variant is used when filled with a meal.</td> | <td>Used by [[Modding:Meal_Container|meal blocks]] to determine which variant is used when filled with a meal.</td> | ||
<td>bowl</td> | <td>bowl</td> | ||
</tr> | </tr> | ||
Line 1,750: | Line 1,507: | ||
<td>boolean</td> | <td>boolean</td> | ||
<td>-</td> | <td>-</td> | ||
<td>Allows the block to function as a meal container (can pull from meal blocks like crocks).</td> | <td>Allows the block to function as a [[Modding:Meal_Container|meal container]] (can pull from meal blocks like crocks).</td> | ||
<td>bowl</td> | <td>bowl</td> | ||
</tr> | </tr> | ||
Line 2,304: | Line 2,061: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row | <td scope="row"><div class="tt" data-tt-id="p_textures_base" data-tt-parent="p_textures" data-invisible="true"></div></td> | ||
<td colspan="4">{{:json:block:texture}}</td> | <td colspan="4">{{:json:block:texture}}</td> | ||
</tr> | </tr> | ||
Line 2,316: | Line 2,073: | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id="p_shape" data-tt-parent="root">shape</div></td> | <td scope="row"><div class="tt" data-tt-id="p_shape" data-tt-parent="root">shape</div></td> | ||
<td> | <td>[[Modding:CompositeShape|CompositeShape]]</td> | ||
<td>-</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> | <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> | ||
Line 2,372: | Line 2,129: | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id="p_shapeinventory" data-tt-parent="root">shapeinventory</div></td> | <td scope="row"><div class="tt" data-tt-id="p_shapeinventory" data-tt-parent="root">shapeinventory</div></td> | ||
<td> | <td>[[Modding:CompositeShape|CompositeShape]]</td> | ||
<td>-</td> | <td>-</td> | ||
<td>For the json drawtype, the shape definition of the block as shown in the players inventory.</td> | <td>For the json drawtype, the shape definition of the block as shown in the players inventory.</td> | ||
<td>-</td> | <td>-</td> | ||
</tr> | </tr> | ||
<tr> | |||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_lod0shape" data-tt-parent="root">lod0shape</div></td> | ||
<td>[[Modding:CompositeShape|CompositeShape]]</td> | |||
<td> | |||
<td>-</td> | <td>-</td> | ||
<td>Additional shape that is shown when the block is [[Modding:Block_Tessellator#Level_of_detail|very close]] to the camera. Most blocks do not use this.</td> | |||
<td>leavesbranchy</td> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_lod2shape" data-tt-parent="root">lod2shape</div></td> | ||
<td> | <td>[[Modding:CompositeShape|CompositeShape]]</td> | ||
<td>-</td> | <td>-</td> | ||
<td>Alternative shape that is shown when the block is [[Modding:Block_Tessellator#Level_of_detail|very far]] from the camera. Most blocks do not use this.</td> | |||
<td>looseboulders</td> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_drawtype" data-tt-parent="root">drawtype</div></td> | ||
<td></td> | <td>string</td> | ||
<td> | <td>"cube"</td> | ||
<td></td> | <td>Determines which [[Modding:Block_Tessellator|block tessellator]] processes the block. Select JSON for being able to use custom JSON Models. Use Cube for basic cubes.</td> | ||
<td>-</td> | <td>-</td> | ||
</tr> | </tr> | ||
Line 2,486: | Line 2,159: | ||
<td>string</td> | <td>string</td> | ||
<td>"opaque"</td> | <td>"opaque"</td> | ||
<td>Determines | <td>Determines which [[Modding:Render_Stages#Chunk_render_passes|pass]] the block is drawn in.</td> | ||
<td>-</td> | <td>-</td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td scope="row"><div class="tt" data-tt-id=" | <td scope="row"><div class="tt" data-tt-id="p_doNotRenderAtLod2" data-tt-parent="root">doNotRenderAtLod2</div></td> | ||
<td></td> | <td>boolean</td> | ||
<td> | <td>false</td> | ||
<td>When false, render the block at [[Modding:Level_of_detail|level of detail]] 1, which is visible at all distances within the frustum. When true, only render the block at short and medium distances. This property is only respected by some [[Modding:Block_Tessellator|block tessellators]].</td> | |||
<td>torch</td> | |||
<td>1 | |||
<td> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
Line 2,641: | Line 2,286: | ||
<td>key: string, value: boolean</td> | <td>key: string, value: boolean</td> | ||
<td>-</td> | <td>-</td> | ||
<td>Determines if given block side is solid. If true, other blocks like torches can be attached to it.</td> | <td>Determines if given block side is solid. If true, other blocks like torches can be [[Modding:Block_Attachment|attached]] to it.</td> | ||
<td>all stairs</td> | <td>all stairs</td> | ||
</tr> | </tr> |