Worldgen

All the functionality mentioned on this page requires WorldJS to work

Worldgen features are primarily done through placed and configured features. KubeJS TFC adds the ability to make these through builders in the worldgen/configured_feature server registry event

KubeJS TFC also adds a tfc namespace to the modifiers function of WorldJS’s placed feature builder, which is also used by TFC’s configured feature types

Boulder

Type: tfc:boulder

Creates a tfc:boulder configured feature

Inherits the methods of the no op builder

  • : Sets the states to place, mapping from the raw rock of a region to the collection of blockstate the boulder is made of

Example

ServerEVents.registry('minecraft:configured_feature', event => {
    event.create('boulder', 'tfc:boulder')
        // TODO
})

Baby Boulder

Type: tfc:baby_boulder

Creates a tfc:baby_boulder configured feature

Inherits the methods of the boulder builder

Example

ServerEVents.registry('minecraft:configured_feature', event => {
    event.create('baby_boulder', 'tfc:baby_boulder')
        // TODO
})

Cave Vegetation

Type: tfc:cave_vegetation

Creates a tfc:cave_vegetation configured feature

Inherits the methods of the no op builder

  • : A mapping of cave block to weighted vegetation blocks, via WeightedValues, to place

Example

ServerEVents.registry('minecraft:configured_feature', event => {
    event.create('cave_vegetation', 'tfc:cave_vegetation')
        // TODO
})

Fissure

Type: tfc:fissure

Creates a tfc:fissure configured feature

Inherits the methods of the no op builder

  • : The wall state of the fissure
  • : The fluid within the fissure
    • Defaults to 'minecraft:air'
  • : How many fissures to place
    • Must be in the range [1, )
    • Defaults to 5
  • : The size of the area fissures will be placed in
    • Must be in the range [1, )
    • Defaults to 12
  • : The number of pieces which make up each fissure to place
    • Must be in the range [1, )
    • maxCount must be greater than or equal to minCount
    • Defaults to 10 and 24
  • : The max length of an individual fissure piece
    • Must be in the range [1, )
    • Defaults to 6
  • : Additional decoration properties. Can be made as an object with the following fields
    • rarity?: int: The rarity for blocks being replaced by decoration blocks
      • Must be in the range [1, )
      • Defaults to 1
    • radius?: int: The radius around the fissure that blocks should be replaced
      • Must be in the range [1, )
      • Defaults to 1
    • count?: int: The number of blocks to replace. the true number of replaced blocks will be count / rarity
      • Must be in the range [1, )
      • Defaults to 1
    • states: Map<Block, List<WeightedValue<BlockState>>>: A mapping of blocks to the decoration states as WeightedValues
      • Must be set
  • : The height of the fissure origin as a [[ vertical_anchor ]]
    • Defaults to { above_bottom: 16 }

Example

ServerEVents.registry('minecraft:configured_feature', event => {
    event.create('fissure', 'tfc:fissure')
        // TODO
})

Flood Fill Lake

Type: tfc:flood_fill_lake

Creates a tfc:flood_fill_lake configured feature

Inherits the methods of the no op builder

  • : The state to fill the lake with
    • Defaults to 'minecraft:water'
  • : The fluids to replace when encountered by a lake
    • Defaults to []
  • : Allows the lake to fill a potential basin upwards from the starting position as well as downwards

Example

ServerEVents.registry('minecraft:configured_feature', event => {
    event.create('flood_fill_lake', 'tfc:flood_fill_lake')
        // TODO
})

Forest

Type: tfc:forest

Creates a tfc:forest configured feature

Inherits the methods of the no op builder

  • : The forest entries to place
    • Must be set
    • All entries must be configured features of the tfc:forest_entry type

Example

ServerEVents.registry('minecraft:configured_feature', event => {
    event.create('forest', 'tfc:forest')
        // TODO
})

Forest Entry

Type: tfc:forest_entry

Creates a tfc:forest_entry configured feature

  • .climate(placement: ClimatePlacement)
    : The climatic conditions this forest entry can spawn in. Can be made as an object with the fields
    • minTemp?: number: The minimum temperature
      • Defaults to -Infinity
    • maxTemp?: number: The maximum temperature
      • Defaults to Infinity
    • minGroundwater?: number: The minimum groundwater value
      • Defaults to -Infinity
    • maxGroundwater?: number: The maximum groundwater value
      • Defaults to Infinity
    • minRainVariance?: number: The minimum rain variance
      • Defaults to -1
    • maxRainVariance?: number: The maximum rain variance
      • Defaults to 1
    • absoluteRainVariance?: boolean: If the sign of the rain variance at a location should be ignored when checking ranges
      • Defaults to false
    • fuzzy?: boolean: If climate values should be evaluated fuzzily
      • Defaults to false
    • ignoreRivers?: boolean: If climate values should be influenced before river influence
      • Defaults to false
    • minForestDensity?: int: The minimum forest density
      • Must be in the range [0, )
      • Defaults to 0
    • maxForestDensity?: int: The maximum forest density
      • Must be in the range [0, )
      • Defaults to 4
    • minElevation?: int: The minimum elevation
      • Defaults to -64
    • maxElevation?: int: The maximum elevation
      • Defaults to 320
    • forestTypes?: List<ForestType>: The forest types the entry may spawn in. Will spawn in all types if empty or unset
      • Defaults to []
  • .bush(log: BlockState, leaves: BlockState)
    : The bush blocks
  • .fallen(log: BlockState, leaves: BlockState)
    : The fallen tree blocks
    • The log block must be TFC’s natural and the vanilla axis state properties. See the log builder
    • The leaves block must have TFC’s layers state property. See the fallen leaves builder
  • .groundcover(cover: List<WeightedValue<BlockState>>)
    : The groundcover present in the forest as WeightedValues
  • .trees(normal: Holder<ConfiguredFeature<?, ?>>, dead: Holder<ConfiguredFeature<?, ?>>)
    : The living and dead tree configured features to place in the forest
    • Must be set
  • .oldGrowthTree(old: Holder<ConfiguredFeature<?, ?>>)
    : The configured feature to place for old growth trees
  • .krummholz(krummholz: Holder<ConfiguredFeature<?, ?>>)
    : The configured feature to place for krummholz
  • .soilDisc(disc: Holder<ConfiguredFeature<?, ?>>)
    : The soil disc feature to place
  • .oldGrowthChance(chance: int)
    : The chance any given tree will be old growth. Approximately one per chance trees
    • Must be in the range [1, )
    • Defaults to 6
  • .spoilerOldGrowthChance(chance: int)
    : The secondary chance that any given tree will be old growth. Approximately one per chance trees
    • Must be in the range [1, )
    • Defaults to 200
  • .fallenChance(chance: int)
    : The chance that any given tree will instead be a fallen tree. Approximately one per chance trees
    • Must be in the range [1, )
    • Defaults to 14
  • .deadChance(chance: int)
    : The chance that any given tree will instead be a dead tree. Approximately one per chance trees
    • Must be in the range [1, )
    • Defaults to 75
  • .floating(floating: boolean)
    : If trees are allowed to float when placing
    • Defaults to false
  • .addToDefaultForest()
    : Add the entry to the tfc:forest_trees tag, which is used by TFC’s forest feature for its entries

Example

ServerEVents.registry('minecraft:configured_feature', event => {
    event.create('forest_entry', 'tfc:forest_entry')
        // TODO
})

Krummholz

Type: tfc:krummholz

Creates a tfc:krummholz configured feature

Inherits the methods of the no op builder

  • : The block to place
    • Must have TFC’s tip and bottom state properties
    • Defaults to 'tfc:plant/spruce_krummholz'
  • : How tall the krummholz can be
    • Defaults to 2
  • : Allows the krummholz to generate on stone
  • : Allows the krummholz to generate on gravel

Example

ServerEVents.registry('minecraft:configured_feature', event => {
    event.create('krummholz', 'tfc:krummholz')
        // TODO
})

Overlay Tree

Type: tfc:overlay_tree

Creates a tfc:overlay_tree configured feature

Inherits the methods of the no op builder

  • : The trunk properties. Can be made as an object with the following fields
    • state: BlockState: The trunk block to place
      • Defaults to 'minecraft:air'
    • minHeight?: int: The minimum height of the trunk
      • Must be <= maxHeight
      • Defaults to 0
    • maxHeight?: int: The maximum height of the trunk
      • Must be >= minHeight
      • Defaults to 2
    • wide?: boolean: If the trunk should be 2x2
      • Defaults to false
  • : The root system properties. Can be made as an object with the fields
    • blocks: Map<Block, List<WeightedValue<BlockState>>>: The blocks to place, mapping from the surface blocks to the WeightedValue states to place
      • Must be set
    • width?: int: The maximum horizontal distance the roots can place
      • Must be in the range [1, )
      • Defaults to 4
    • height?: int: The maximum vertical distance below the surface the roots can place
      • Must be in the range [1, )
      • Defaults to 3
    • tries?: int: The number of times to attempt to place each root
      • Must be in the range [1, )
      • Defaults to 5
    • skewChance?: number: The chance a root position is skewed downwards
      • Defaults to NaN
    • required?: bool: If the tree requires the roots to place in order to place
      • Defaults to false
  • : The tree placement properties. Can be made as an object with the fields
    • width?: int: The width of ground clearance needed
      • Defaults to 5
    • height?: int: The height of ground clearance needed
      • Defaults to 3
    • groundType?: GroundType: The type of ground the tree can spawn on
      Reveal/hide list of ground types
      • normal
      • sand
      • shallow_water
      • submerged
      • shallow_allow_saltwater
      • submerged_allow_saltwater
      • floating
      • Defaults to normal
  • : The base and overlay structures of the trees. Ids of structures located at data/<namespace>/structures/<path>.nbt
    • Defaults to 'tfc:white_cedar/base' and 'tfc:white_cedar/overlay'
  • : The integrity of the overlay structure, how much of it is actually placed
    • Defaults to 0.5
    • Must be in the range [0, 1]

Example

ServerEVents.registry('minecraft:configured_feature', event => {
    event.create('overlay_tree', 'tfc:overlay_tree')
        // TODO
})

Random Tree

Type: tfc:random_tree

Creates a tfc:random_tree configured feature

Inherits the methods of the no op builder

  • : The trunk properties. Can be made as an object with the following fields
    • state: BlockState: The trunk block to place
      • Defaults to 'minecraft:air'
    • minHeight?: int: The minimum height of the trunk
      • Must be <= maxHeight
      • Defaults to 0
    • maxHeight?: int: The maximum height of the trunk
      • Must be >= minHeight
      • Defaults to 2
    • wide?: boolean: If the trunk should be 2x2
      • Defaults to false
  • : The root system properties. Can be made as an object with the fields
    • blocks: Map<Block, List<WeightedValue<BlockState>>>: The blocks to place, mapping from the surface blocks to the WeightedValue states to place
      • Must be set
    • width?: int: The maximum horizontal distance the roots can place
      • Must be in the range [1, )
      • Defaults to 4
    • height?: int: The maximum vertical distance below the surface the roots can place
      • Must be in the range [1, )
      • Defaults to 3
    • tries?: int: The number of times to attempt to place each root
      • Must be in the range [1, )
      • Defaults to 5
    • skewChance?: number: The chance a root position is skewed downwards
      • Defaults to NaN
    • required?: bool: If the tree requires the roots to place in order to place
      • Defaults to false
  • : The tree placement properties. Can be made as an object with the fields
    • width?: int: The width of ground clearance needed
      • Defaults to 5
    • height?: int: The height of ground clearance needed
      • Defaults to 3
    • groundType?: GroundType: The type of ground the tree can spawn on
      Reveal/hide list of ground types
      • normal
      • sand
      • shallow_water
      • submerged
      • shallow_allow_saltwater
      • submerged_allow_saltwater
      • floating
      • Defaults to normal
  • : The tree structures to randomly choose from to place. Ids of structures located at data/<namespace>/structures/<path>.nbt
    • Must be set

Example

ServerEVents.registry('minecraft:configured_feature', event => {
    event.create('random_tree', 'tfc:random_tree')
        // TODO
})

Stacked Tree

Type: tfc:stacked_tree

Creates a tfc:stacked_tree configured feature

Inherits the methods of the no op builder

  • : The trunk properties. Can be made as an object with the following fields
    • state: BlockState: The trunk block to place
      • Defaults to 'minecraft:air'
    • minHeight?: int: The minimum height of the trunk
      • Must be <= maxHeight
      • Defaults to 0
    • maxHeight?: int: The maximum height of the trunk
      • Must be >= minHeight
      • Defaults to 2
    • wide?: boolean: If the trunk should be 2x2
      • Defaults to false
    • Must be set
  • : The root system properties. Can be made as an object with the fields
    • blocks: Map<Block, List<WeightedValue<BlockState>>>: The blocks to place, mapping from the surface blocks to the WeightedValue states to place
      • Must be set
    • width?: int: The maximum horizontal distance the roots can place
      • Must be in the range [1, )
      • Defaults to 4
    • height?: int: The maximum vertical distance below the surface the roots can place
      • Must be in the range [1, )
      • Defaults to 3
    • tries?: int: The number of times to attempt to place each root
      • Must be in the range [1, )
      • Defaults to 5
    • skewChance?: number: The chance a root position is skewed downwards
      • Defaults to NaN
    • required?: bool: If the tree requires the roots to place in order to place
      • Defaults to false
  • : The tree placement properties. Can be made as an object with the fields
    • width?: int: The width of ground clearance needed
      • Defaults to 5
    • height?: int: The height of ground clearance needed
      • Defaults to 3
    • groundType?: GroundType: The type of ground the tree can spawn on
      Reveal/hide list of ground types
      • normal
      • sand
      • shallow_water
      • submerged
      • shallow_allow_saltwater
      • submerged_allow_saltwater
      • floating
      • Defaults to normal
  • : The layers making up a tree. Each layer can be made as an object with the fields
    • templates: List<ResourceLocation>: The id of the layer’s structure, located at data/<namesapce>/structures/<path>.nbt
      • Must be set
    • minCount: int: The minimum number of structures from the layer to use
      • Must be <= maxCount
    • maxCount: int: The maximum number of structures from the layer to use
      • Must be >= minCount

Example

ServerEVents.registry('minecraft:configured_feature', event => {
    event.create('stacked_tree', 'tfc:stacked_tree')
        // TODO
})

Hot Spring

Type: tfc:hot_spring

Creates a tfc:hot_spring configured feature

Inherits the methods of the no op builder

  • : The wall of the hot spring. If not set blocks from the lowest rock layer will be used
  • : The fluid of the hot spring
    • Defaults to 'minecraft:air'
  • : The radius of the hot spring
    • Must be in the range [1, 16]
    • Defaults to 14
  • : Additional decoration properties. Can be made as an object with the following fields
    • rarity?: int: The rarity for blocks being replaced by decoration blocks
      • Must be in the range [1, )
      • Defaults to 1
    • radius?: int: The radius around the fissure that blocks should be replaced
      • Must be in the range [1, )
      • Defaults to 1
    • count?: int: The number of blocks to replace. the true number of replaced blocks will be count / rarity
      • Must be in the range [1, )
      • Defaults to 1
    • states: Map<Block, List<WeightedValue<BlockState>>>: A mapping of blocks to the decoration states as WeightedValues
      • Must be set
  • : If the hot spring can generate underwater
    • Defaults to false
  • : The blocks to replace and what to replace them with, as WeightedValues, when contacting fluid

Example

ServerEVents.registry('minecraft:configured_feature', event => {
    event.create('hot_spring', 'tfc:hot_spring')
        // TODO
})

If Then

Type: tfc:if_then

Creates a tfc:if_then configured feature

Inherits the methods of the no op builder

  • : The features to place
    • ifFeature: Holder<PlacedFeature>: The primary feature, will always try to place
      • Must be set
    • thenFeature: Holder<PlacedFeature>: The secondary feature, which will only place if the ifFeature places
      • Must be set

Example

ServerEVents.registry('minecraft:configured_feature', event => {
    event.create('if_then', 'tfc:if_then')
        // TODO
})

Soil Disc

Type: tfc:soil_disc

Creates a tfc:soil_disc configured feature

Inherits the methods of the no op builder

  • : A mapping defining the block replacements of the disc
    • Must be set
  • : The minimum and maximum horizontal radius of the disc
    • Must be in the range [1, )
    • Defaults to 3 and 5
  • : The height of the disc
    • Must be in the range [0, 256]
    • Defaults to 2
  • : The portion of the disc’s area that is replaced
    • Must be in the range [0, 1]
    • Defaults to 1

Example

ServerEVents.registry('minecraft:configured_feature', event => {
    event.create('soil_disc', 'tfc:soil_disc')
        // TODO
})

Spreading Bush

Type: tfc:spreading_bush

Creates a tfc:spreading_bush configured feature

Inherits the methods of the no op builder

Example

ServerEVents.registry('minecraft:configured_feature', event => {
    event.create('spreading_bush', 'tfc:spreading_bush')
        // TODO
})

Spreading Crop

Type: tfc:spreading_crop

Creates a tfc:spreading_crop configured feature

Inherits the methods of the no op builder

Example

ServerEVents.registry('minecraft:configured_feature', event => {
    event.create('spreading_crop', 'tfc:spreading_crop')
        // TODO
})

Tall Wild Crop

Type: tfc:tall_wild_crop

Creates a tfc:tall_wild_crop configured feature

Inherits the methods of the no op builder

Example

ServerEVents.registry('minecraft:configured_feature', event => {
    event.create('tall_wild_crop', 'tfc:tall_wild_crop')
        // TODO
})

Thin Spike

Type: tfc:thin_spike

Creates a tfc:thin_spike configured feature

Inherits the methods of the no op builder

  • : The state to place, must be a thin spike block
    • Defaults to 'tfc:icicle'
  • : The radius around the target location to place spikes
    • Must be in the range [1, 16]
    • Defaults to 1
  • : The number of tries to attempt to place spikes
    • Must be in the range [1, )
    • Defaults to 1
  • : The minimum and maximum heights of a spike
    • Must be in the range [1, )
    • max must be greater than or equal to min
    • Defaults to 1 and 10
  • : If the spike can place underwater
    • Defaults to false

Example

ServerEVents.registry('minecraft:configured_feature', event => {
    event.create('thin_spike', 'tfc:thin_spike')
        // TODO
})

Cluster Vein

Type: tfc:cluster_vein

Creates a tfc:cluster_vein configured feature

Inherits the methods of the no op builder

  • : A mapping of blocks to the ore states as WeightedValues
    • Must be set
  • : How often the vein will place, approximately once per r chunks
    • Must be in the range [1, )
    • Defaults to 1
  • : Within the vein volume, the portion of the base rock that should be replaced with ore
    • Must be in the range [0, 1]
    • Defaults to 1
  • : The lowest y-value the vein can spawn at
    • Defaults to -64
  • : The highest y-value the vein can spawn at
    • Defaults to 320
  • : If the vein should project to the surface during placement
    • Defaults to false
  • : If an offset should be applied to the vein when projecting to surface
    • Defaults to false
  • : If the vein should only spawn near lava
    • Defaults to false
  • : The seed of the vein
    • Defaults to a random 64-bit integer seeded by the hash of the vein’s id
  • : Properties for the indicator blocks placed on the ground near the vein. Can be made as an object with the following fields
    • depth?: int: The maximum depth below the surface the vein will place indicators
      • Must be in the range [1, )
      • Defaults to 1
    • rarity?: int: The rarity to place indicators, as a fraction of the horizontal locations the vein places ore blocks
      • Defaults to 1
    • undergroundRarity?: int: The rarity to place indicators underground when the vein is too deep to place on the surface, as a fraction of the horizontal locations the vein places ore blocks
      • Must be in the range [1, )
      • Defaults to 1
    • undergroundCount?: int: The number of times to attempt to place an underground indicator in a given location
      • Defaults to 1
    • states: List<WeightedValue<BlockState>>: The indicator states to place, as WeightedValues
      • Must be set
  • : The size of the vein
    • Must be in the range [1, )
    • Defaults to 10

Example

ServerEVents.registry('minecraft:configured_feature', event => {
    event.create('cluster_vein', 'tfc:cluster_vein')
        // TODO
})

Disc Vein

Type: tfc:disc_vein

Creates a tfc:disc_vein configured feature

Inherits the methods of the cluster vein builder

  • : The radius of the disc
    • Must be in the range [1, )
    • Defaults to 5
  • : The height of the disc
    • Must be in the range [1, )
    • Defaults to 5

Example

ServerEVents.registry('minecraft:configured_feature', event => {
    event.create('disc_vein', 'tfc:disc_vein')
        // TODO
})

Kaolin Disc Vein

Type: tfc:kaolin_disc_vein

Creates a tfc:kaolin_disc_vein configured feature

Inherits the methods of the disc vein builder

Example

ServerEVents.registry('minecraft:configured_feature', event => {
    event.create('kaolin_disc_vein', 'tfc:kaolin_disc_vein')
        // TODO
})

Pipe Vein

Type: tfc:pipe_vein

Creates a tfc:pipe_vein configured feature

Inherits the methods of the cluster vein builder

  • : The radius of the pipe
    • Must be in the range [1, )
    • Defaults to 3
  • : The height of the pipe
    • Defaults to 10
  • : The radius of the pipe
    • Must be in the range [1, )
    • Defaults to 3
  • : The skew range
    • Defaults to -1 and 0
  • : The slant range
    • Defaults to -1 and 0
  • : The sign of the slant
    • Must be in the range [0, 1]
    • Defaults to 0

Example

ServerEVents.registry('minecraft:configured_feature', event => {
    event.create('pipe_vein', 'tfc:pipe_vein')
        // TODO
})

Placed Feature Modifiers

KubeJS TFC adds the following placement modifiers under the tfc namespace

  • : Add a tfc:underground modifier
  • : Add a tfc:no_solid_neighbors modifier
  • : Add a tfc:volcano modifier
    • minEasing: float: The minimum easing value
    • maxEasing: float: The maximum easing value
  • : Add a tfc:volcano modifier which only accepts positions at the center
  • : Add a tfc:tuff_cone modifier
    • minEasing: float: The minimum easing value
    • maxEasing: float: The maximum easing value
  • : Add a tfc:tuff_cone modifier which only accepts positions at the center
  • : Add a tfc:tuya modifier
    • minEasing: float: The minimum easing value
    • maxEasing: float: The maximum easing value
  • : Add a tfc:tuya modifier which only accepts positions at the center
  • : Add a tfc:atoll modifier
    • minEasing: float: The minimum easing value
    • maxEasing: float: The maximum easing value
  • : Add a tfc:atoll modifier which only accepts positions at the center
  • : Add a tfc:shallow_water modifier
    • minDepth: int: The minimum depth of water required
    • maxDepth: int: The maximum depth of water permitted
  • : Add a tfc:near_fluid modifier
    • radius: int: The radius to check for fluid
    • fluids?: List<Fluid>: The fluids to consider
      • Optional. Considers all fluids if not set
  • : Add a tfc:intertidal modifier
    • minElevation: int: The minimum valid tide elevation
    • maxElevation: int: The maximum valid tide elevation
  • : Add a tfc:intertidal modifier which is unbounded on the top
    • minElevation: int: The minimum valid tide elevation
  • : Add a tfc:intertidal modifier which is unbounded on the bottom
    • maxElevation: int: The maximum valid tide elevation
  • : Add a tfc:flat_enough modifier
    • flatness: float: The minimum flatness of the checked area
    • radius: int: The horizontal distance to check
    • maxDepth: int: The depth below the initial position to check
  • : Add a tfc:climate modifier
    • climate: ClimatePlacementBuilder: The climate restrictions, which can be made as an object with the fields
      • minTemp?: number: The minimum temperature. Optional, defaults to -Infinity
      • maxTemp?: number: The maximum temperature. Optional, defaults to Infinity
      • minGroundWater?: number: The minimum groundwater. Optional, defaults to -Infinity
      • maxGroundwater?: number: The maximum groundwater. Optional, defaults to Infinity
      • minRainVariance?: number: The minimum rain variance value. Optional, defaults to -1
      • maxRainVariance?: number: The maximum rain variance value. Optional, defaults to 1
      • absoluteRainVariance?: boolean: If the sign of the rain variance should be ignored. Optional, defaults to false
      • fuzzy?: boolean: If values should be evaluated fuzzily. Optional, defaults to false
      • ignoreRivers?: boolean: If values should be evaluated before river influences. Optional, defaults to false
      • minForestDensity?: int: The minimum forest density, in the range [0, ). Optional, defaults to 0
      • maxForestDensity?: int: The maximum forest density, in the range [0, ). Optional, defaults to 4
      • minElevation?: int: The minimum y-level. Optional, defaults to -64
      • maxElevation?: int: The maximum y-level. Optional, defaults to 320
      • forestTypes?: List<ForestType>: The permitted forest types to spawn in. Optional, if not set or empty permits all forest types
  • : Add a tfc:carving_mask modifier
    • minY: VerticalAnchor: The minimum valid vertical anchor
    • maxY: VerticalAnchor: The maximum valid vertical anchor
    • step: GenerationStep$Carving: The carving step volume for which the feature will try to place in. Does not include blocks ‘carved’ out by noise caves
      Reveal/hide list of carving steps
      • air
      • liquid
  • : Add a tfc:carving_mask modifier which is unbounded above
    • minY: VerticalAnchor: The minimum valid vertical anchor
    • step: GenerationStep$Carving: The carving step volume for which the feature will try to place in. Does not include blocks ‘carved’ out by noise caves
      Reveal/hide list of carving steps
      • air
      • liquid
  • : Add a tfc:carving_mask modifier which is unbounded below
    • maxY: VerticalAnchor: The maximum valid vertical anchor
    • step: GenerationStep$Carving: The carving step volume for which the feature will try to place in. Does not include blocks ‘carved’ out by noise caves
      Reveal/hide list of carving steps
      • air
      • liquid
  • : Add a tfc:on_top modifier
    • predicate: BlockPredicate: The block required below for a position to be valid
  • : Adds a tfc:stratovolcano modifier
    • stratovolcano: StratovolcanoBuilder: The stratovolcano properties, which can be made as an object with the fields
      • center?: boolean: If the feature should place exclusively near the center of the volcanic features. Optional, defaults to false
      • useOffsetCenter?: boolean: If the feature should place exclusively near the offset center of volcanic features, if the variant has an offset center
      • variant?: String: The variant to place in. Optional, defaults to 'all'
      • minEasing?: number: The minimum easing value, in the range [0, 1]. Optional, defaults to 0
      • maxEasing?: number: The maximum easing value, in the range [0, 1]. Optional, defaults to 1
      • hashMin?: number: The minimum hash value, in the range [0, 1]. Optional, defaults to 0
      • hashMax?: number: The maximum hash value, in the range [0, 1]. Optional, defaults to 1