Modding:Json Block Behaviors: Difference between revisions

From Vintage Story Wiki
No edit summary
(→‎All Block Behaviors: Update HorizontalOrientable link)
 
(24 intermediate revisions by 4 users not shown)
Line 1: Line 1:
== Adding behaviors to your block ==
Block behaviors are an array of objects with properties attached to your block. They are added through the <code>behaviors</code> field at the top level (same level as the <code>code</code> field) of a block json file.
Below is an example of two behaviors, one with properties and one without properties.
<syntaxhighlight lang="json">
{
  ...
  code: "exampleblock",
  ...
  behaviors: [{name: "behavior1", properties: {myProperty1: "myValue1", myProperty2: "myValue2"}},{name: "behavior2"}],
  ...
}
</syntaxhighlight>
== All Block Behaviors ==
Here is a table containing all properties of the base game as of 1.18.14.
{| class="wikitable"
{| class="wikitable"
|-
|-
! Behavior Name !! Additional Properties !! Detail link
! Behavior Name
! style="width: 25em" | Properties
! Used by Blocks
|-
|-
| HorizontalAttachable || handleDrops (bool, default: true) || [[Json_block_behaviors_horizontalattachable|Horizontal Attachable]]
| [[Json_block_behaviors_BlockEntityInteract|BlockEntityInteract]] || - || door
|-
|-
| HorizontalOrientable || dropBlockFace (Compass Direction, default: "North") <br> dropBlock (block name) || [[Json_block_behaviors_horizontalorientable|Horizontal Orientable]]
| [[Json_block_behaviors_BreakIfFloating|BreakIfFloating]] || - || termitemound, crackedrock, meteorite, ore, ore, ore, rock, rottenlog
|-
|-
| NWOrientable || none || [[Json_block_behaviors_NWOrientable|North/West Orientable]]
| [[Json_block_behaviors_BreakSnowFirst|BreakSnowFirst]] || - || tallgrass, stonepath
|-
|-
| Pillar || none || [[Json_block_behaviors_pillar|Pillar]]
| [[Json_block_behaviors_CanAttach|CanAttach]]
|
* sides
| drystonefence, woodenfence, roughhewnfence
|-
|-
| Slab || none || [[Json_block_behaviors_slab|Slab]]
| [[Json_block_behaviors_CanIgnite|CanIgnite]] || - || torch
|-
|-
| HorizontalUpDownOrientable || none || [[Json_block_behaviors_HorizontalUpDownOrientable| Horizontal Up/Down Orientable]]
| [[Json_block_behaviors_CollectFromThis|CollectFrom]] || - || henbox
|-
|-
| FiniteSpreadingLiquid || liquidCollisionSound (path from sounds folder) <br> sourceReplacementCode (block code) <br> flowingReplacementCode (block code) <br> collidesWith (other liquid) <br> spreadDelay (int, default: 150) || [[Json_block_behaviors_FiniteSpreadingLiquid| Finite Spreading Liquid]]
| [[Json_block_behaviors_Container|Container]] || - || storagevessel, stove, hopper, quern, crate, labeledchest, trunk, chest, firepit, stationarybasket
|-
|-
| OmniAttachable || facingPos (int, default: 1)|| [[Json_block_behaviors_OmniAttachable|Omni-Attachable]]
| [[Json_block_behaviors_Decor|Decor]]
|
* sides
* sidedVariants
* nwOrientable
* drawIfCulled
* alternateZOffset
* notFullFace
* removable
* thickness
| linen, mediumcarpet, rushmat, smallcarpet, wallpaper, wool, hotspringbacteriasmooth, hotspringbacteria, attachingplant, overlay, overlay, oxidation, transition, fallenleaves, caveart
|-
|-
| Unplaceable || none || [[Json_block_behaviors_Unplaceable|Unplaceable]]
| [[Json_block_behaviors_Door|Door]] || - || door
|-
|-
| Unstable || attachedToFaces (default: down) || [[Json_block_behaviors_Unstable|Unstable]]
| [[Json_block_behaviors_DropNotSnowCovered|DropNotSnowCovered]] || - || fern, flower
|-
|-
| Harvestable || none || [[Json_block_behaviors_Harvestable|Harvestable]]
| [[Json_block_behaviors_ExchangeOnInteract|ExchangeOnInteract]]
|
* exchangeStates (string array of block states)
* sounds (path from sounds folder)
* actionLangCode (language key from the lang file)
| trapdoor
|-
|-
| NoParticles || none || [[Json_block_behaviors_NoParticles|No Particles]]
| [[Json_block_behaviors_FiniteSpreadingLiquid|FiniteSpreadingLiquid]]
|
* liquidCollisionSound (path from sounds folder)
* sourceReplacementCode (block code)
* flowingReplacementCode (block code)
* collidesWith (other liquid)
* spreadDelay (int, default: 0)
| boilingwater, water, lava, saltwater
|-
|-
| Container || none || [[Json_block_behaviors_Container|Container]]
| [[Json_block_behaviors_Harvestable|Harvestable]]
|
* harvestTime (float, seconds, default: 0)
* harvestedStack (BlockDropItemStack)
* harvestingSound (path from sounds folder)
* harvestedBlockCode (block code)
| bigberrybush, saguarocactus, smallberrybush, log-resin
|-
|-
| Ignitable || none || [[Json_block_behaviors_ignitable|Ignitable]]
| [[Json_block_behaviors_HeatSource|HeatSource]]
|
* heatStrength (float)
| boilingwater, lava, forge, firepit, pitkiln, coalpile, ember, fire
|-
|-
| UnstableFalling || none || [[Json_block_behaviors_UnstableFalling| Unstable Falling]]
| [[Json_block_behaviors_horizontalattachable|HorizontalAttachable]]
|
* handleDrops (bool, default: true)
* dropBlockFace (Compass Direction, default: "north")
* dropBlock (block name)
* attachmentAreas (side -> RotatableCube)
* attachmentArea (cuboid)
| tapestry, torchholder, mushroom, canvas, moldrack, painting, shelf, toolrack
|-
|-
| BreakIfFloating || none || [[Json_block_behaviors_BreakIfFloating| Break if Floating]]
| [[Modding:HorizontalOrientable_behavior|HorizontalOrientable]]
|
* dropBlockFace (Compass Direction, default: "North")
* drop (block name)
| agedwallpaperplanks, altar, bellows, bloomerybase, brake, cage, churn, clayoven, clutch, cokeovendoor, condenser, crank, creativerotor, helvehammerbase, jonas, labeledchest, metalpartpile, palisadestakes, palisadewall, pulverizerframe, resonator, skep, slantedroofing, slantedroofingcornerinner, slantedroofingcornerouter, statictranslocator, stationarybasket, stonecoffinsection, stove, trunk, verticalboiler, wagonwheels, windmillrotor, workbench
|-
|-
| CanIgnite || none || [[Json_block_behaviors_CanIgnite|Can Ignite]]
| [[Json_block_behaviors_HorizontalUpDownOrientable|HorizontalUpDownOrientable]] || - || -
|-
|-
| ExchangeOnInteract || exchangeStates (string array of block states) <br> sounds (path from sounds folder) || [[Json_block_behaviors_ExchangeOnInteract|Exchange On Interact]]
| [[Json_block_behaviors_ignitable|Ignitable]] || - || charcoalpit, clayoven, firepit
|-
|-
| OmniRotatable || rotateH (bool, default: false) <br> rotateV (bool, default: false) <br> rotatev4 (bool, default: false) <br> rotateSides (bool, default: false) <br> facing (string)|| [[Json_block_behaviors_OmniRotatable|Omni-Rotatable]]
| [[Json_block_behaviors_JonasBoilerDoor|JonasBoilerDoor]] || - || jonas
|-
|-
| Ladder || dropBlockFace (face direction, Default: north)|| [[Json_block_behaviors_Ladder|Ladder]]
| [[Json_block_behaviors_JonasGasifier|JonasGasifier]] || - || jonas
|-
|-
| PushEventOnBlockBroken || string EventName || [[Json_block_behaviors_PushEventOnBlockBroken|Push Event on Block Broken]]
| [[Json_block_behaviors_JonasHydraulicPump|JonasHydraulicPump]] || - || jonas
|-
|-
| RightClickPickup || none || [[Json_block_behaviors_RightClickPickup|Right Click Pickup]]
| [[Json_block_behaviors_Ladder|Ladder]]
|
* dropBlockFace (face direction, Default: north)
* isFlexible (bool, default: false)
| ladder
|-
|-
| SneakPlacing || none || [[Json_block_behaviors_SneakPlacing|Sneak Placing]]
| [[Json_block_behaviors_Lockable|Lockable]] || - || archimedesscrew, chest, chute, cokeovendoor, crate, door, hopper, irondoor, labeledchest, roughhewnfencegate, stationarybasket, storagevessel, trapdoor, trunk, woodenfencegate
|-
| [[Json_block_behaviors_MilkingContainer|MilkingContainer]] || - || woodbucket
|-
| [[Json_block_behaviors_Multiblock|Multiblock]]
|
* sizex
* sizey
* sizez
* type
* cposition
| jonas, riftward, verticalboiler, banner, trunk, painting
|-
| [[Json_block_behaviors_MyceliumHost|MyceliumHost]] || - || creativegrass, forestfloor, log, soil
|-
| [[Json_block_behaviors_NoParticles|NoParticles]] || - || claybrickchimney
|-
| [[Json_block_behaviors_NWOrientable|NWOrientable]] || - || bookshelves (legacy), claybrickchimney, fruitpress, fruitpresstop, mannequin, slantedroofingridge, transmission, trough, woodenpath, woodentoggle
|-
| [[Json_block_behaviors_OmniAttachable|OmniAttachable]]
|
* facingCode (string, default: orientation)
* attachmentAreas (side -> RotatableCube)
| crystal, lantern
|-
| [[Json_block_behaviors_OmniRotatable|OmniRotatable]]
|
* rotateH (bool, default: false)
* rotateV (bool, default: false)
* rotateV4 (bool, default: false)
* rotateSides (bool, default: false)
* facing (string, "block" or "player", default: "player")
* dropChance(float, default: 1)
| brickslabs, clayshinglelabs, cobblestoneslab, glassslab, mudbrickslab, plankslab, polishedrockslab, quartzslab, stonebrickslab, trapdoor
|-
| [[Json_block_behaviors_pillar|Pillar]]
|
* invertedPlacement (bool, default: false)
| carvedlog, debarkedlog, hay, log, lognarrow, planks, plaster, quartzpillar, stackedbamboo, woodenaxle
|-
| [[Json_block_behaviors_Pumpkin|Pumpkin]]
|
* vineGrowthStage(int)
* vineGrowthQuantity(NatFloat)
| crop
|-
| [[Json_block_behaviors_PushEventOnBlockBroken|PushEventOnBlockBroken]]
|
* eventName (string)
| bamboo, bambooleaves, leaves, leavesbranchy, leavesnarrow, log, lognarrow, logsection
|-
| [[Json_block_behaviors_RainDrip|RainDrip]] || - || -
|-
| [[Json_block_behaviors_Reinforcable|Reinforcable]] || - || -
|-
| [[Json_block_behaviors_RightClickPickup|RightClickPickup]]
|
* dropsPickupMode (bool, default: false)
* sound (path from sounds folder)
* placeSound (path from sounds folder)
| basereturnteleporter, bowl, bowl-meal, clayplanter, claypot, crock, crucible, egg, flowerpot, ingotmold, jug, lantern, looseflints, looseores, loosestick, loosestones, metal, oillamp, pan, pie, pineapple, pumpkin, seashell, storagevessel, toolmold, wateringcan, woodbucket
|-
| [[Json_block_behaviors_RopeTieable|RopeTieable]] || - || roughhewnfence, woodenfence
|-
| [[Json_block_behaviors_slab|Slab]] || - || -
|-
| [[Json_block_behaviors_Steaming|Steaming]] || - || boilingwater
|-
| [[Json_block_behaviors_SneakPlacing|SneakPlacing]] || - || pan, pie, wateringcan
|-
| [[Json_block_behaviors_Unplaceable|Unplaceable]] || - || bloomerychimney, bowl, bowl-meal, clayplanter, claypot, crock, crucible, flowerpot, ingotmold, jug, metal, pineapple, pumpkin, storagevessel, toolmold, wateringcan
|-
| [[Json_block_behaviors_Unstable|Unstable]]
|
* attachedToFaces (default: down)
* attachmentAreas (side -> RotatableCube)
| bunchocandles, crop, deadcrop, firepit, oreblastingbomb, silvertorchcactus, verticalboiler, wildbeehive, woodenpath, woodenrails
|-
| [[Json_block_behaviors_UnstableFalling|UnstableFalling]]
|
* attachableFaces (string array)
* attachmentArea (cuboid)
* attachmentAreas (side -> RotatableCube)
* ignorePlaceTest (bool, default: false)
* exceptions (block code array)
* fallSideways (bool, default: false)
* dustIntensity (float, default: 0)
* fallSidewaysChance (float, default: 0.3)
* fallSound (path from sounds folder)
* impactDamageMul (float, default 1)
| anvil, anvilpart, barrel, barrelcactus, bloomerychimney, bonyremains, bonysoil, carcass, chair, chandelier, cheese, churn, clayplanter, coalpile, dirtygravel, displaycase, drycarcass, egg, flowerpot, gravel, groundstorage, ingotmold, knappingsurface, lightningrod, looseboulders, looseflints, loosegears, looseores, loosestick, loosestones, lootvessel, metal, metalpartpile, muddygravel, oillamp, omoktabletop, pan, pie, quern, sand, seashell, sieve, sludgygravel, snowlayer, stonecoffinlid, storagevessel, table, talldisplaycase, toolmold, wateringcan, woodbucket
|-
| [[Json_block_behaviors_WrenchOrientable|WrenchOrientable]]
|
* hideInteractionHelpInSurvival (bool, default: false)
* baseCode (string)
| banner, brickslabs, brickstairs, carvedlog, chute, clayshinglelabs, clayshinglestairs, clutter, cobblestoneslab, cobblestonestairs, debarkedlog, glassslab, jonas, log, mudbrickslab, planks, plankslab, plankstairs, plaster, polishedrockslab, quartzpillar, quartzslab, quartzstairs, stonebrickslab, stonebrickstairs, stonepathstairs
|-
| [[Json_block_behaviors_WorldEditFixGhostBlockPlace|WorldEditFixGhostBlockPlace]] || - || -
|}
|}
{{Navbox/modding|Vintage Story}}

Latest revision as of 20:36, 16 March 2024

Adding behaviors to your block

Block behaviors are an array of objects with properties attached to your block. They are added through the behaviors field at the top level (same level as the code field) of a block json file. Below is an example of two behaviors, one with properties and one without properties.

{
  ...
  code: "exampleblock",
  ...
  behaviors: [{name: "behavior1", properties: {myProperty1: "myValue1", myProperty2: "myValue2"}},{name: "behavior2"}],
  ...
}

All Block Behaviors

Here is a table containing all properties of the base game as of 1.18.14.

Behavior Name Properties Used by Blocks
BlockEntityInteract - door
BreakIfFloating - termitemound, crackedrock, meteorite, ore, ore, ore, rock, rottenlog
BreakSnowFirst - tallgrass, stonepath
CanAttach
  • sides
drystonefence, woodenfence, roughhewnfence
CanIgnite - torch
CollectFrom - henbox
Container - storagevessel, stove, hopper, quern, crate, labeledchest, trunk, chest, firepit, stationarybasket
Decor
  • sides
  • sidedVariants
  • nwOrientable
  • drawIfCulled
  • alternateZOffset
  • notFullFace
  • removable
  • thickness
linen, mediumcarpet, rushmat, smallcarpet, wallpaper, wool, hotspringbacteriasmooth, hotspringbacteria, attachingplant, overlay, overlay, oxidation, transition, fallenleaves, caveart
Door - door
DropNotSnowCovered - fern, flower
ExchangeOnInteract
  • exchangeStates (string array of block states)
  • sounds (path from sounds folder)
  • actionLangCode (language key from the lang file)
trapdoor
FiniteSpreadingLiquid
  • liquidCollisionSound (path from sounds folder)
  • sourceReplacementCode (block code)
  • flowingReplacementCode (block code)
  • collidesWith (other liquid)
  • spreadDelay (int, default: 0)
boilingwater, water, lava, saltwater
Harvestable
  • harvestTime (float, seconds, default: 0)
  • harvestedStack (BlockDropItemStack)
  • harvestingSound (path from sounds folder)
  • harvestedBlockCode (block code)
bigberrybush, saguarocactus, smallberrybush, log-resin
HeatSource
  • heatStrength (float)
boilingwater, lava, forge, firepit, pitkiln, coalpile, ember, fire
HorizontalAttachable
  • handleDrops (bool, default: true)
  • dropBlockFace (Compass Direction, default: "north")
  • dropBlock (block name)
  • attachmentAreas (side -> RotatableCube)
  • attachmentArea (cuboid)
tapestry, torchholder, mushroom, canvas, moldrack, painting, shelf, toolrack
HorizontalOrientable
  • dropBlockFace (Compass Direction, default: "North")
  • drop (block name)
agedwallpaperplanks, altar, bellows, bloomerybase, brake, cage, churn, clayoven, clutch, cokeovendoor, condenser, crank, creativerotor, helvehammerbase, jonas, labeledchest, metalpartpile, palisadestakes, palisadewall, pulverizerframe, resonator, skep, slantedroofing, slantedroofingcornerinner, slantedroofingcornerouter, statictranslocator, stationarybasket, stonecoffinsection, stove, trunk, verticalboiler, wagonwheels, windmillrotor, workbench
HorizontalUpDownOrientable - -
Ignitable - charcoalpit, clayoven, firepit
JonasBoilerDoor - jonas
JonasGasifier - jonas
JonasHydraulicPump - jonas
Ladder
  • dropBlockFace (face direction, Default: north)
  • isFlexible (bool, default: false)
ladder
Lockable - archimedesscrew, chest, chute, cokeovendoor, crate, door, hopper, irondoor, labeledchest, roughhewnfencegate, stationarybasket, storagevessel, trapdoor, trunk, woodenfencegate
MilkingContainer - woodbucket
Multiblock
  • sizex
  • sizey
  • sizez
  • type
  • cposition
jonas, riftward, verticalboiler, banner, trunk, painting
MyceliumHost - creativegrass, forestfloor, log, soil
NoParticles - claybrickchimney
NWOrientable - bookshelves (legacy), claybrickchimney, fruitpress, fruitpresstop, mannequin, slantedroofingridge, transmission, trough, woodenpath, woodentoggle
OmniAttachable
  • facingCode (string, default: orientation)
  • attachmentAreas (side -> RotatableCube)
crystal, lantern
OmniRotatable
  • rotateH (bool, default: false)
  • rotateV (bool, default: false)
  • rotateV4 (bool, default: false)
  • rotateSides (bool, default: false)
  • facing (string, "block" or "player", default: "player")
  • dropChance(float, default: 1)
brickslabs, clayshinglelabs, cobblestoneslab, glassslab, mudbrickslab, plankslab, polishedrockslab, quartzslab, stonebrickslab, trapdoor
Pillar
  • invertedPlacement (bool, default: false)
carvedlog, debarkedlog, hay, log, lognarrow, planks, plaster, quartzpillar, stackedbamboo, woodenaxle
Pumpkin
  • vineGrowthStage(int)
  • vineGrowthQuantity(NatFloat)
crop
PushEventOnBlockBroken
  • eventName (string)
bamboo, bambooleaves, leaves, leavesbranchy, leavesnarrow, log, lognarrow, logsection
RainDrip - -
Reinforcable - -
RightClickPickup
  • dropsPickupMode (bool, default: false)
  • sound (path from sounds folder)
  • placeSound (path from sounds folder)
basereturnteleporter, bowl, bowl-meal, clayplanter, claypot, crock, crucible, egg, flowerpot, ingotmold, jug, lantern, looseflints, looseores, loosestick, loosestones, metal, oillamp, pan, pie, pineapple, pumpkin, seashell, storagevessel, toolmold, wateringcan, woodbucket
RopeTieable - roughhewnfence, woodenfence
Slab - -
Steaming - boilingwater
SneakPlacing - pan, pie, wateringcan
Unplaceable - bloomerychimney, bowl, bowl-meal, clayplanter, claypot, crock, crucible, flowerpot, ingotmold, jug, metal, pineapple, pumpkin, storagevessel, toolmold, wateringcan
Unstable
  • attachedToFaces (default: down)
  • attachmentAreas (side -> RotatableCube)
bunchocandles, crop, deadcrop, firepit, oreblastingbomb, silvertorchcactus, verticalboiler, wildbeehive, woodenpath, woodenrails
UnstableFalling
  • attachableFaces (string array)
  • attachmentArea (cuboid)
  • attachmentAreas (side -> RotatableCube)
  • ignorePlaceTest (bool, default: false)
  • exceptions (block code array)
  • fallSideways (bool, default: false)
  • dustIntensity (float, default: 0)
  • fallSidewaysChance (float, default: 0.3)
  • fallSound (path from sounds folder)
  • impactDamageMul (float, default 1)
anvil, anvilpart, barrel, barrelcactus, bloomerychimney, bonyremains, bonysoil, carcass, chair, chandelier, cheese, churn, clayplanter, coalpile, dirtygravel, displaycase, drycarcass, egg, flowerpot, gravel, groundstorage, ingotmold, knappingsurface, lightningrod, looseboulders, looseflints, loosegears, looseores, loosestick, loosestones, lootvessel, metal, metalpartpile, muddygravel, oillamp, omoktabletop, pan, pie, quern, sand, seashell, sieve, sludgygravel, snowlayer, stonecoffinlid, storagevessel, table, talldisplaycase, toolmold, wateringcan, woodbucket
WrenchOrientable
  • hideInteractionHelpInSurvival (bool, default: false)
  • baseCode (string)
banner, brickslabs, brickstairs, carvedlog, chute, clayshinglelabs, clayshinglestairs, clutter, cobblestoneslab, cobblestonestairs, debarkedlog, glassslab, jonas, log, mudbrickslab, planks, plankslab, plankstairs, plaster, polishedrockslab, quartzpillar, quartzslab, quartzstairs, stonebrickslab, stonebrickstairs, stonepathstairs
WorldEditFixGhostBlockPlace - -
Icon Sign.png

Wondering where some links have gone?
The modding navbox is going through some changes! Check out Navigation Box Updates for more info and help finding specific pages.

Modding
Modding Introduction Getting Started Theme Pack
Content Modding Content Mods Developing a Content Mod Basic Tutorials Intermediate Tutorials Advanced Tutorials Content Mod Concepts
Code Modding Code Mods Setting up your Development Environment
Property Overview ItemEntityBlockBlock BehaviorsBlock ClassesBlock EntitiesBlock Entity BehaviorsWorld properties
Workflows & Infrastructure Modding Efficiency TipsMod-engine compatibilityMod ExtensibilityVS Engine
Additional Resources Community Resources Modding API Updates Programming Languages List of server commandsList of client commandsClient startup parametersServer startup parameters
Example ModsAPI DocsGitHub Repository