Modding:HorizontalOrientable behavior: Difference between revisions

From Vintage Story Wiki
(→‎Purpose: worldvariantgroups link)
(Update and compare with other behaviors)
Line 1: Line 1:
== Purpose ==
== Purpose ==
Block can be rotated horizontally. Used for:
The behavior selects an orientation variant of a block when the block is placed. Only 4 orientations are supported: north, east, south, and west, hence why it is called HorizontalOrientable.
* Workbench
 
* Ladder
Similar block behaviors:
* Echochamber
; [[Json_block_behaviors_WrenchOrientable|WrenchOrientable]] : Allows the variant to be changed after the block is placed
* Chest
; [[Json_block_behaviors_OmniRotatable|OmniRotatable]] : Supports more orientation types. Using the <code>rotateH: "true"</code> property, it can support the horizontal orientation type, just like HorizontalOrientable. However, OmniRotatable requires the variant code to be named "rot" instead of HorizontalOrientable's variant code of "horizontalorientation" or "side". Also OmniRotatable allows changing the drop chance instead of the dropped block.
* Stove
 
* Altar
== Used by blocks ==
* Windmillrotor
* agedwallpaperplanks
* Bellows
* altar
Requires a variant group loaded from the <code>abstract/horizontalorientation</code> [[Json:block:worldvariantgroups|world property]]:
* bellows
* bloomerybase
* brake
* cage
* churn
* clayoven
* clutch
* cokeovendoor
* condenser
* crank
* creativerotor
* helvehammerbase
* jonas
* labeledchest - the HorizontalOrientable behavior is redundant for this block. The <code>BlockLabeledChest</code> block class inherits from <code>BlockGenericTypedContainer</code>, which also handles rotation. The regular chest block only uses <code>BlockGenericTypedContainer</code> for its rotation.
* metalpartpile
* palisadestakes
* palisadewall
* pulverizerframe
* resonator
* skep
* slantedroofing
* slantedroofingcornerinner
* slantedroofingcornerouter
* statictranslocator
* stationarybasket
* stonecoffinsection
* stove
* trunk
* verticalboiler
* wagonwheels
* windmillrotor
* workbench
 
== Usage ==
 
The block must have a variant code of "horizontalorientation" or "side". It is a mistake to add both variant codes to the block, but in this situation, the behavior will use the "horizontalorientation" code. The variant code must contain the 4 cardinal directions. They can be directly specified via the <code>states</code> field, but the cleaner way is to load them from the <code>abstract/horizontalorientation</code> [[Json:block:worldvariantgroups|world property]]:
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
variantgroups: [
variantgroups: [
Line 15: Line 50:
],
],
</syntaxhighlight>
</syntaxhighlight>
One of the <code>dropBlockFace</code> or <code>dropBlock</code> properties must be used to specify which item is dropped when the block is broken.


== Properties ==
== Properties ==
<code>dropBlockFace (compassdirection, default: "north")</code>: Determines which direction the block drop face is done. <br>
; <code>dropBlockFace</code>&colon; (compassdirection, default&colon; "north")
<code>dropBlock (optional) </code>: Determines which block to drop.
: Specifies which variant is dropped when the block is broken. The value is used as a variant value for the orientation variant code.
; <code>dropBlock</code>&colon; (optional)
: Specifies which block to drop. The value is a full item code. Only one of the <code>dropBlock</code> and <code>dropBlockFace</code> properties should be specified.


{{Navbox/modding|Vintage Story}}
{{Navbox/modding|Vintage Story}}