Modding:Block Json Properties: Difference between revisions

From Vintage Story Wiki
no edit summary
No edit summary
No edit summary
Line 7: Line 7:
     <th width='300' align='left'>Property</th>
     <th width='300' align='left'>Property</th>
     <th width='200' align='left'>Type</th>
     <th width='200' align='left'>Type</th>
     <th width='80' align='left'>Default</th>
     <th width='120' align='left'>Default</th>
     <th align='left'>Usage</th>
     <th align='left'>Usage</th>
   </tr>
   </tr>
Line 128: Line 128:
     <td scope="row"><div class="tt" data-tt-id="p_class_info" data-tt-parent="p_class" data-invisible="true"></div></td>
     <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">
     <td colspan="3">
A complete tutorial of creating you own class can be found [[Advanced Blocks|here]].
A complete tutorial of how to create your own class can be found [[Advanced Blocks|here]].
</td>
</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_maxstacksize" data-tt-parent="root">maxstacksize</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_entityclass" data-tt-parent="root">EntityClass</div></td>
     <td>number</td>
     <td>string</td>
     <td>64</td>
     <td>-</td>
     <td>Determines the maximum amount you can stack the block in one slot.</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>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_enabled " data-tt-parent="root">enabled</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_behaviors_info" data-tt-parent="p_behaviors" data-invisible="true"></div></td>
     <td>boolean</td>
     <td colspan="3">
    <td>true</td>
Here is an overview of all exisiting behaviors, if you want to create your own custom behavior you can read [[Adding Block Behavior]].
    <td>If the block will be added to game or not.</td>
{{:json:block:behavior}}
</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_blockmaterial" data-tt-parent="root">blockmaterial</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_blockmaterial" data-tt-parent="root">BlockMaterial</div></td>
     <td>string</td>
     <td>string</td>
     <td></td>
     <td>-</td>
     <td>The blocks material. Amongst others, it will determine how quickly a specific tool can mine it.</td>
     <td>A behavior adds custom abilities such as falling block.</td>
   </tr>
   </tr>
   <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 scope="row"><div class="tt" data-tt-id="p_blockmaterial_info" data-tt-parent="p_blockmaterial" data-invisible="true"></div></td>
     <td colspan="3">{{:json:block:material}}</td>
     <td colspan="3">
Currently only used for mining speed for tools.
{{:json:block:material}}
</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>&quot;block&quot;</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_info" data-tt-parent="p_matterstate" data-invisible="true"></div></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:
 
*leaves: 0.5
*wool: 1
*bowl: 1.5
*obsidian: 2
*plank: 3.5
*log: 4.5
*rock: 6
</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>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_resistance" data-tt-parent="root">resistance</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_collisionboxes" data-tt-parent="root">CollisionBoxes</div></td>
     <td></td>
     <td>array of object</td>
     <td></td>
     <td>-</td>
     <td>How many seconds it takes to break the block (excluding speed mining bonus). Decimal numbers are allowed.</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_maxstacksize" data-tt-parent="root">maxstacksize</div></td>
    <td>number</td>
    <td>64</td>
    <td>Determines the maximum amount you can stack the block in one slot.</td>
   </tr>
   </tr>
   <tr>
   <tr>
Confirmedusers, editor, Administrators
886

edits