Table of Contents

Namespace Vintagestory.GameContent

Classes

AlloyRecipe

This is used to define what metals can be mixed together to create another type of metal inside of a crucible.

BarrelOutputStack

Defines an output for use in a BarrelRecipe. This object takes most of its properties from the JsonItemStack class.

BarrelRecipe

Creates a recipe for use inside a barrel. Primarily used to craft with liquids.

BarrelRecipeIngredient

Defines an ingredient for use in a BarrelRecipe.

BehaviorCollectFrom

When this block is right clicked, harvest its drops and replace it with an empty version. Uses the code "CollectFrom". This behavior has no properties.

Note that this behavior requires a variant which ends in "-empty", and also requires at least two drops. The first drop should be the item to collect, the second drop is the block itself. See 'henbox.json' for an example.

BehaviorElevatorControl

Used in combination with the "BEBehaviorElevatorControl" to create an elevator. Uses the code "ElevatorControl", and has no properties.

BehaviorMyceliumHost

Allows a block to have mushrooms naturally spawn on it. Uses the code "MyceliumHost", and has no properties.

BlockBehaviorBreakIfFloating

Forces the Block to drop as an item when surrounded by air blocks. It will override drops returned by the Block when this happens. Uses the code "BreakIfFloating". This behavior doesn't use any properties.

BlockBehaviorBreakSnowFirst

A simple block behavior that breaks a snow cover first, before breaking the block. Uses the code "BreakSnowFirst". This behavior has no properties.

BlockBehaviorCanAttach

Allows some other blocks, such as torches, to be attached onto specific sides of this block. Uses the code "CanAttach".

BlockBehaviorCanIgnite

Used if the attached block can ignite other blocks with Shift + Right Click. This behavior uses the code "CanIgnite", and has no properties.

BlockBehaviorChimney

If this block is placed directly above a smoke emitter (such as a firepit or pit kiln), smoke particles will be emitted. Uses the code "chimney" and has no properties.

BlockBehaviorContainer

Specifies that this block works as a container. Note that it requires a block entity class which implements BlockEntityOpenableContainer. Used with the code "Container". This behavior does not use any properties.

BlockBehaviorCreatureContainer

Allows a creature to be contained inside of this block, as well as catching and releasing the entity. Note that this behavior is built around use with the reed chest, and may have unexpected results with other blocks. This behavior uses the code "CreatureContainer", and has no properties.

BlockBehaviorDecor

Allows this block to be placed on the side of another block, as a decorational shape/texture. Uses the code "decor".

BlockBehaviorDoor

A block behavior for a door. Also requires the "door" block entity behavior type on a block to work. Defined with the "Door" code.

BlockBehaviorDropNotSnowCovered

Drops the non-snow-covered block, when the snow covered version one is destroyed. This behavior uses the "DropNotSnowCovered" code, and has no properties.

BlockBehaviorExchangeOnInteract

Allows a block to swap between a set of states on activation. Note that this behavior has some small hardcoding for legacy trapdoors. This behavior is used with the code "ExchangeOnInteract".

BlockBehaviorFiniteSpreadingLiquid

Used to create a liquid which distrubutes itself over an area, and has interaction with other liquids. Uses the "FiniteSpreadingLiquid" code.

BlockBehaviorGiveItemPerPlayer

Passes functions through to the BEBehaviorGiveItemPerPlayer block entity behavior. Therefore, requires that. Uses the "GiveItemPerPlayer" code.

BlockBehaviorHarvestable

Allows a block to be harvested with the right mouse button for set items. Uses the code "harvestable".

BlockBehaviorHeatSource

Allows this block to work as a heat source for entities. BlockEntities for a block with this behavior may also define their own custom heat strength. Uses the code "HeatSource".

BlockBehaviorHorizontalAttachable

Forces a block to only allow placement on the side of another block. Requires use of the "horizontalorientation" variant group. Uses the code "HorizontalAttachable".

BlockBehaviorHorizontalOrientable

Allows a block to automatically rotate between the four horizontal directions based on placement angle. Requires use of the "horizontalorientation" variant group. Uses the "HorizontalOrientable" code.

BlockBehaviorJonasBoilerDoor

Provides interaction for the JonasBoilerDoor block entity behavior. Uses the "JonasBoilerDoor" code. This behavior has no properties.

BlockBehaviorJonasGasifier

Passes functions to the BEBehaviorJonasGasifier block entity behavior, and therefore requires that. Uses the code "JonasGasifier". This behavior has no properties.

BlockBehaviorJonasHydraulicPump

Passes functions to the BEBehaviorJonasHydraulicPump block entity behavior, and therefore requires that. Uses the code "JonasHydraulicPump". This behavior has no properties.

BlockBehaviorLadder

Used to control ladder behavior, including horizontal orientation, placement, collection. Note that this does not control how entities react to ladders (see "climbable" in blocktype). Requires use of the 'horizontalorientation' variants. Uses the code "Ladder".

BlockBehaviorLockable

Allows a block to be locked by a player with a padlock, preventing any interaction from any other players. Uses the "lockable" code. This behavior has no properties.

BlockBehaviorMilkingContainer

Allows a block to be used as a container for milking an entity. Must be on a block that has the "BlockLiquidContainerBase" class. Uses the code "MilkingContainer", and has no properties.

BlockBehaviorMultiblock

Turns this block into a multiblock, allowing it to be larger than a single block. By default, all blocks will have the same properties. If you need different properties or functionality for each block section, you will need to use a new block class. Uses the code "Multiblock".

BlockBehaviorNWOrientable

Automatically swaps between 'North/South' and 'West/East' variants based on placement rotation. Requires an "orientation" or "side" variant with the codes "ns" and "we". Uses the code "NWOrientable", and has no properties.

BlockBehaviorOmniAttachable

Allows a block to be attached to any face, including vertical faces. Requires states from "abstract/horizontalorientation", as well as additional "up" and "down" states. Uses the code "OmniAttachable".

BlockBehaviorPillar

Used to rotate a block that has a 'top' face, such as a wooden log. Requires a "rotation" variant group with "ud", "ns", "we" states. Uses the "pillar" code.

BlockBehaviorPushEventOnBlockBroken

Publishes the BlockPos when a Block is broken with the given event name. Likely used in tandem with code mods. Uses the "PushEventOnBlockBroken" code.

BlockBehaviorRainDrip

Makes a block emit rain particles during or after rainy weather. Uses the "RainDrip" code. This behavior has no properties.

BlockBehaviorReinforcable

Allows a block to be reinforced, which protects against it being broken as quickly. Appropriate blocks are automatically given this behavior. This behavior is not added through the normal property, but instead a custom attribute. This behavior has no properties. You can add the "reinforcable" attribute to force an object to be reinforcable.

BlockBehaviorReparable

Blocks which can be repaired using glue. If not repaired, they will shatter (dropping nothing) when broken. Requires use of the ShapeFromAttributes block entity behavior. Uses the code "Reparable".

BlockBehaviorRightClickPickup

Allows a block to be picked up with a right click. Uses the code "RightClickPickup".

BlockBehaviorRopeTieable

Allows rope to be tied to this block. This behavior does not have any specific JSON properties. This block behavior uses the code "RopeTieable".

BlockBehaviorSlab

Unused block behavior for slab placement. Consider using BlockBehaviorOmniRotatable instead. Uses the "slab" code. This behavior has no properties.

BlockBehaviorSneakPlacing

Forces a block to only allow to be placed when the player is sneaking. Uses the code "SneakPlacing". This behavior has no properties.

BlockBehaviorSnowballable

Allows a block to have snowballs taken from it. Many blocks automatically receive this behavior if they have a snow layer or the SnowballableDecrementedBlockCode attribute. Uses the code 'Snowballable'.

BlockBehaviorSteaming

Makes a block emit steam particles, and also marks some water blocks as 'boiling'. Uses the code "Steaming". This behavior has no properties.

BlockBehaviorTransformBreak

When a block with this behavior is broken. it will turn into another specified block instead of air. This block behavior uses the code "TransformBreak".

BlockBehaviorTrapDoor

Marks a block as an animated trapdoor. Requires the use of the BEBehaviorTrapDoor block entity behavior. Uses the "TrapDoor" code.

BlockBehaviorUnplaceable

Disallows standard placement for this block. If a previous listed behavior allows a special placement method (see CollectibleBehaviorGroundStorable), then that method will be allowed. Uses the "unplaceable" code. This behavior has no properties.

BlockBehaviorUnstable

Only allows a block to exist if it is attached to another block. Uses the code "unstable".

BlockBehaviorUnstableFalling

Spawns an EntityBlockFalling when the user places a block that has air underneath it or if a neighbor block is removed and causes air to be underneath it. Also has optional functionality to prevent a block being placed if it is unstable. Uses the code "UnstableFalling".

BlockBehaviorUnstableRock

Makes a block potentially unstable, but can be held up using support beams. This behavior will only function if the "caveIns" world config is set to true. Uses the code "UnstableRock".

BlockBehaviorWrenchOrientable

Allows a block to cycle through variants when using a wrench. Uses the code "WrenchOrientable".

ClayFormingRecipe

Creates a recipe that can be created using clay. This class takes all of its properties from the LayeredVoxelRecipe<T> class.

CookingRecipe

Defines a recipe to be made using a cooking pot. Creating a new recipe for a cooking pot will automatically register the new meal item, unless using CooksInto.

CookingRecipeIngredient

An ingredient for a CookingRecipe. Note that each ingredient can have multiple valid itemstacks that satisfy the ingredient.

CookingRecipeStack

An itemstack specific for a CookingRecipeIngredient. Most properties are extended from JsonItemStack.

KnappingRecipe

Defines a stone/flint knapping recipe. Uses all properties from LayeredVoxelRecipe<T>, however always uses a single layer.

MetalAlloyIngredient

Defines an ingredient for a AlloyRecipe recipe.

SmithingRecipe

Defines a smithing recipe, to be created on an anvil. Uses a total of 6 layers, and gets its properties from LayeredVoxelRecipe<T>.