Modding:Block Json Properties: Difference between revisions

From Vintage Story Wiki
no edit summary
No edit summary
(6 intermediate revisions by one other user not shown)
Line 2: Line 2:
== Overview ==
== Overview ==
A complete list of all available properties
A complete list of all available properties
Definitions:
'''Key''' - The name of the property, which should be used as it appears in the column.
'''Value''' - A component of a property.
'''Array''' - A list of objects or values that can be referenced in code.
'''String''' - A sequence of characters that can be used as an identifier in code. Essentially a word that can be referenced and assigned to something. Generally does not use numbers.
'''Boolean''' - A true or false value, essentially "on" or "off".
'''Int''' - An integer, or whole number. Cannot use decimal values.
'''Float''' - A decimal, specifically one that does not exceed more than 1 significant digit
'''Object''' - This is a bit more complex, but essentially objects are the items, blocks and entities that can be interacted with. In most cases, when an "object" type appears it means you must use a specific item variant code, which follows the "itemcode-variant_1-variant_2-variant_n" style of naming.


<table id="treeviewtable" class="table table-bordered tt-table" style='table-layout: fixed'>
<table id="treeviewtable" class="table table-bordered tt-table" style='table-layout: fixed'>
Line 847: Line 866:
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_cprops_gstages" data-tt-parent="p_cropprops">grwothStages</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_cprops_gstages" data-tt-parent="p_cropprops">growthStages</div></td>
     <td>number</td>
     <td>number</td>
     <td>-</td>
     <td>-</td>
Line 940: Line 959:
},
},
</syntaxhighlight>
</syntaxhighlight>
</td>
</td>
   </tr>
   </tr>
Line 982: Line 999:
</syntaxhighlight>
</syntaxhighlight>
</td>
</td>
  </tr>
<tr>
    <td scope="row"><div class="tt" data-tt-id="p_cprops_gstages" data-tt-parent="root">liquidCode</div></td>
    <td>string</td>
    <td>-</td>
    <td>An identifier for other liquids to utilize during collisions.</td>
    <td>lava, water</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 1,017: Line 1,041:
</syntaxhighlight>
</syntaxhighlight>
</td>
</td>
  </tr>
  <tr>
    <td scope="row"><div class="tt" data-tt-id="p_creativestacks" data-tt-parent="root">CreativeInventoryStacks</div></td>
    <td>-</td>
    <td>-</td>
    <td>If you want to add itemstacks with custom attributes to the creative inventory, add them to this list.</td>
    <td>-</td>
  </tr>
  <tr>
    <td scope="row"><div class="tt" data-tt-id="p_notincreative" data-tt-parent="root">notCreateveInventoryStacks</div></td>
    <td>-</td>
    <td>-</td>
    <td>Prevents the variant from being included in the creative inventory.</td>
    <td>tapestry</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 1,205: Line 1,243:
   </tr>
   </tr>
  <tr>
  <tr>
     <td colspan="5" style='font-size: 14pt; border-bottom: 2pt solid black; padding-left: 100px;'><b>Attributes</b></td>
     <td scope="row"><div class="tt" data-tt-id="p_transprops" data-tt-parent="root">transitionableProps</div></td>
    <td>-</td>
    <td>-</td>
    <td>Can be used to transition an item to another item or block.</td>
    <td>redmeat, hide</td>
   </tr>
   </tr>
<tr>
  <tr>
     <td scope="row"><div class="tt" data-tt-id="p_attributes_list" data-tt-parent="root">attributes</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_tprops_type" data-tt-parent="p_transprops">type</div></td>
     <td>-</td>
     <td>-</td>
     <td>-</td>
     <td>-</td>
     <td>Custom Attributes associated with this item.</td>
    <td>The type of transition method to utilize.</td>
     <td>barrel, chest, pot, skep</td>  
    <td>redmeat, hide</td>
  </tr>
  <tr>
    <td scope="row"><div class="tt" data-tt-id="p_tprops_type_cure" data-tt-parent="p_tprops_type">Cure</div></td>
    <td>string</td>
    <td>-</td>
    <td>Will "cure" an item by showing percent progress until cured.</td>
    <td>hide</td>
  </tr>
  <tr>
    <td scope="row"><div class="tt" data-tt-id="p_tprops_type_perish" data-tt-parent="p_tprops_type">Perish</div></td>
    <td>string</td>
    <td>-</td>
    <td>Will gradually reduce the saturation of a food item once it's fresh period has passed, eventually converting into the product item (usually rot).</td>
    <td>hide</td>
  </tr>
  <tr>
    <td scope="row"><div class="tt" data-tt-id="p_tprops_fresh" data-tt-parent="p_transprops">freshHours</div></td>
    <td>number (hours)</td>
    <td>-</td>
    <td>An optional "fresh" period that must pass before the transition time starts. With food, this is the period of time that saturation is not affected.</td>
    <td>bread, vegetable, redmeat</td>
  </tr>
  <tr>
    <td scope="row"><div class="tt" data-tt-id="p_tprops_ttime" data-tt-parent="p_transprops">transitionHours</div></td>
    <td>number (hours)</td>
    <td>-</td>
    <td>Number of hours before the item transitions into a different item.</td>
    <td>redmeat, hide</td>
  </tr>
  <tr>
    <td scope="row"><div class="tt" data-tt-id="p_tprops_stack" data-tt-parent="p_transprops">transitionedStack</div></td>
    <td>object (item or block)</td>
    <td>-</td>
    <td>The item or block that the item will transition into.</td>
    <td>redmeat, hide</td>
  </tr>
  <tr>
    <td scope="row"><div class="tt" data-tt-id="p_tprops_ratio" data-tt-parent="p_transprops">transitionRatio</div></td>
    <td>number</td>
    <td>-</td>
    <td>The quantity of the item that will be consumed after the transition period.</td>
    <td>redmeat, hide</td>
  </tr>
<tr>
    <td colspan="5" style='font-size: 14pt; border-bottom: 2pt solid black; padding-left: 100px;'><b>Attributes</b></td>
  </tr>
<tr>
    <td scope="row"><div class="tt" data-tt-id="p_attributes_list" data-tt-parent="root">attributes</div></td>
    <td>-</td>
    <td>-</td>
     <td>Custom Attributes associated with this item.</td>
     <td>barrel, chest, pot, skep</td>  
   </tr>
   </tr>
   <tr>
   <tr>
Line 1,930: Line 2,024:
  </tr>
  </tr>
  <tr>
  <tr>
     <td scope="row"><div class="tt" data-tt-id="p_alist_growthblock" data-tt-parent="p_attributes_misc">growthBlockLayer</div></td>
  <td scope="row"><div class="tt" data-tt-id="p_alist_grinding" data-tt-parent="p_attributes_misc">grindingProps</div></td>
  <td>-</td>
  <td>-</td>
  <td>Gives the block a grinding recipe in a quern.</td>
  <td>ore-ungraded</td>
</tr>
<tr>
  <td scope="row"><div class="tt" data-tt-id="p_gprops_type" data-tt-parent="p_alist_grinding">type</div></td>
  <td>object</td>
  <td>-</td>
  <td>Type of stack produced, either a <code>block</code> or <code>item</code>.</td>
  <td>-</td>
</tr>
<tr>
  <td scope="row"><div class="tt" data-tt-id="p_gprops_code" data-tt-parent="p_alist_grinding">code</div></td>
  <td>string</td>
  <td>-</td>
  <td>Name of the item or block produced by the recipe.''</td>
  <td>ore-ungraded</td>
</tr>
<tr>
  <td scope="row"><div class="tt" data-tt-id="p_gprops_stacksize" data-tt-parent="p_alist_grinding">stacksize</div></td>
  <td>number</td>
  <td>-</td>
  <td>The amount of the output produced after grinding.''</td>
  <td>ore-ungraded</td>
</tr>
<tr>
     <td scope="row"><div class="tt" data-tt-id="p_alist_growthblock" data-tt-parent="p_attributes_misc">growthBlockLayer</div></td>
     <td>string</td>
     <td>string</td>
     <td>-</td>
     <td>-</td>
Line 2,079: Line 2,201:
     <td colspan="5" style='font-size: 14pt; border-bottom: 2pt solid black; padding-left: 100px;'><b>Rendering</b></td>
     <td colspan="5" style='font-size: 14pt; border-bottom: 2pt solid black; padding-left: 100px;'><b>Rendering</b></td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_textures" data-tt-parent="root">textures</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_textures" data-tt-parent="root">textures</div></td>
Line 2,084: Line 2,208:
     <td></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. Within a mod, to refer to a texture from the base game, prefix the path with "game:" (i.e. base: "game:path/to/texture") </td>
     <td>The texture definitions for the block as seen in the world, when dropped on the ground or held in the hand. Within a mod, to refer to a texture from the base game, prefix the path with "game:" (i.e. base: "game:path/to/texture") </td>
    <td>all blocks</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,094: Line 2,219:
     <td></td>
     <td></td>
     <td>The texture definitions for the block as seen in the player inventory. Overrides the textures.</td>
     <td>The texture definitions for the block as seen in the player inventory. Overrides the textures.</td>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,100: Line 2,226:
     <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>
    <td>Barrel, firepit</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,106: Line 2,233:
     <td></td>
     <td></td>
     <td>The path to the shape json file, the base dir is ''assets/shapes/''.</td>
     <td>The path to the shape json file, the base dir is ''assets/shapes/''.</td>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,112: Line 2,240:
     <td>0</td>
     <td>0</td>
     <td>Only 90 degree rotations are possible.</td>
     <td>Only 90 degree rotations are possible.</td>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,118: Line 2,247:
     <td>0</td>
     <td>0</td>
     <td>Only 90 degree rotations are possible.</td>
     <td>Only 90 degree rotations are possible.</td>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,124: Line 2,254:
     <td>0</td>
     <td>0</td>
     <td>Only 90 degree rotations are possible.</td>
     <td>Only 90 degree rotations are possible.</td>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,130: Line 2,261:
     <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>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,136: Line 2,268:
     <td>&quot;cube&quot;</td>
     <td>&quot;cube&quot;</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.</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.</td>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,142: Line 2,275:
     <td>0</td>
     <td>0</td>
     <td></td>
     <td></td>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,148: Line 2,282:
     <td>1</td>
     <td>1</td>
     <td></td>
     <td></td>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,154: Line 2,289:
     <td>2</td>
     <td>2</td>
     <td></td>
     <td></td>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,160: Line 2,296:
     <td>3</td>
     <td>3</td>
     <td></td>
     <td></td>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,166: Line 2,303:
     <td>4</td>
     <td>4</td>
     <td></td>
     <td></td>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,172: Line 2,310:
     <td>5</td>
     <td>5</td>
     <td></td>
     <td></td>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,178: Line 2,317:
     <td>6</td>
     <td>6</td>
     <td></td>
     <td></td>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,184: Line 2,324:
     <td>7</td>
     <td>7</td>
     <td>Will draw a json model.</td>
     <td>Will draw a json model.</td>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,190: Line 2,331:
     <td>8</td>
     <td>8</td>
     <td>Nothing will be drawn.</td>
     <td>Nothing will be drawn.</td>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,196: Line 2,338:
     <td>9</td>
     <td>9</td>
     <td>Draws an ordinary cube.</td>
     <td>Draws an ordinary cube.</td>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,202: Line 2,345:
     <td>10</td>
     <td>10</td>
     <td></td>
     <td></td>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,208: Line 2,352:
     <td>11</td>
     <td>11</td>
     <td></td>
     <td></td>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,214: Line 2,359:
     <td>12</td>
     <td>12</td>
     <td></td>
     <td></td>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,220: Line 2,366:
     <td>13</td>
     <td>13</td>
     <td></td>
     <td></td>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,226: Line 2,373:
     <td>&quot;opaque&quot;</td>
     <td>&quot;opaque&quot;</td>
     <td>Determines how the block will be drawn.</td>
     <td>Determines how the block will be drawn.</td>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,232: Line 2,380:
     <td>0</td>
     <td>0</td>
     <td>Used for solid blocks with no half transparency.</td>
     <td>Used for solid blocks with no half transparency.</td>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,238: Line 2,387:
     <td>1</td>
     <td>1</td>
     <td>Used for non-solid single faced blocks, such as tall grass.</td>
     <td>Used for non-solid single faced blocks, such as tall grass.</td>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,244: Line 2,394:
     <td>2</td>
     <td>2</td>
     <td>Use for solid halftransparent blocks, such as glass</td>
     <td>Use for solid halftransparent blocks, such as glass</td>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,250: Line 2,401:
     <td>3</td>
     <td>3</td>
     <td>Used for liquids, produces waves.</td>
     <td>Used for liquids, produces waves.</td>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,256: Line 2,408:
     <td>4</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>
     <td>Used for grass covered blocks. Allows for a smooth transition from grass to soil, while still allowing climate tinting of grass.</td>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,262: Line 2,415:
     <td>true</td>
     <td>true</td>
     <td>If ambient occlusion will be applied to the block.</td>
     <td>If ambient occlusion will be applied to the block.</td>
    <td>-</td>
   </tr>
   </tr>
  <tr>
  <tr>
Line 2,338: Line 2,492:
     <td>-</td>
     <td>-</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>
     <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>
    <td>-</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row">
     <td scope="row"><div class="tt" data-tt-id="p_sideopauqe_info" data-tt-parent="p_sideopaque" data-invisible="true"></div></td>
        <div class="tt" data-tt-id="p_sideopaque_all" data-tt-parent="p_sideopaque">all</div><br>
    <td colspan="4">
<div class="tt" data-tt-id="p_sideopaque_horizontals" data-tt-parent="p_sideopaque">horizontals</div><br>
Sides include: ''all; horizontals, verticals; east, west, up, down, north, south''.
<div class="tt" data-tt-id="p_sideopaque_verticals" data-tt-parent="p_sideopaque">verticals</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>
   <tr>
   <tr>
Line 2,360: Line 2,504:
     <td>-</td>
     <td>-</td>
     <td>If AmbientOcclusion will be applied for each side.</td>
     <td>If AmbientOcclusion will be applied for each side.</td>
    <td>-</td>
  </tr>
  <tr>
    <td scope="row"><div class="tt" data-tt-id="p_ao_info" data-tt-parent="p_sideao" data-invisible="true"></div></td>
    <td colspan="4">
Sides include: ''all; horizontals, verticals; east, west, up, down, north, south''.
   </tr>
   </tr>
  <tr>
<tr>
     <td scope="row">
     <td scope="row"><div class="tt" data-tt-id="p_sideemitao" data-tt-parent="root">sideEmitAo</div></td>
        <div class="tt" data-tt-id="p_sideao_all" data-tt-parent="p_sideao">all</div><br>
    <td>key: string, value: boolean</td>
<div class="tt" data-tt-id="p_sideao_horizontals" data-tt-parent="p_sideao">horizontals</div><br>
    <td>-</td>
<div class="tt" data-tt-id="p_sideao_verticals" data-tt-parent="p_sideao">verticals</div><br>
    <td>Defines which of the 6 block neighbours should receive AO if this block is in front of them.</td>
        <div class="tt" data-tt-id="p_sideao_east" data-tt-parent="p_sideao">east</div><br>
    <td>-</td>
        <div class="tt" data-tt-id="p_sideao_west" data-tt-parent="p_sideao">west</div><br>
  </tr>
        <div class="tt" data-tt-id="p_sideao_up" data-tt-parent="p_sideao">up</div><br>
  <tr>
        <div class="tt" data-tt-id="p_sideao_down" data-tt-parent="p_sideao">down</div><br>
    <td scope="row"><div class="tt" data-tt-id="p_sideemitao_info" data-tt-parent="p_sideemitao" data-invisible="true"></div></td>
        <div class="tt" data-tt-id="p_sideao_north" data-tt-parent="p_sideao">north</div><br>
     <td colspan="4">
        <div class="tt" data-tt-id="p_sideao_south" data-tt-parent="p_sideao">south</div>
Sides include: ''all; horizontals, verticals; east, west, up, down, north, south''.
    </td>
     <td></td>
    <td></td>
    <td></td>
   </tr>
   </tr>
   <tr>
   <tr>
Line 2,384: Line 2,530:
<td>all stairs</td>
<td>all stairs</td>
   </tr>
   </tr>
    <tr>
  <tr>
     <td scope="row"><div class="tt" data-tt-id="p_sidesolid_info" data-tt-parent="p_sidesolid" data-invisible="true"></div></td>
     <td scope="row"><div class="tt" data-tt-id="p_sidesolid_info" data-tt-parent="p_sidesolid" data-invisible="true"></div></td>
     <td colspan="4">
     <td colspan="4">
Line 2,400: Line 2,546:
     <td>boolean</td>
     <td>boolean</td>
     <td>false</td>
     <td>false</td>
     <td>If true then the block will be randomly rotated when placed.</td>
     <td>If true then the block will be randomly rotated when placed. Note: Many random rotated blocks in one chunk will slow down block placement updates. You can increase efficieny by defining alternate shapes with random rotations instead.</td>
     <td>flower</td>
     <td>flower</td>
   </tr>
   </tr>
Confirmedusers, Bureaucrats, editor, Administrators
1,778

edits