Worldgen
All the functionality mentioned on this page requires WorldJS to work
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.states(state: Map<Block, List<BlockState>>)
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.states(states: Map<Block, List<WeightedValue<BlockState>>>)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.wallState(state: BlockState)
: The fluid within the fissure.fluid(state: BlockState)- Defaults to
'minecraft:air'
- Defaults to
: How many fissures to place.count(c: int)- Must be in the range
[1, ) - Defaults to
5
- Must be in the range
: The size of the area fissures will be placed in.radius(r: int)- Must be in the range
[1, ) - Defaults to
12
- Must be in the range
: The number of pieces which make up each fissure to place.pieces(minCount: int, maxCount: int)- Must be in the range
[1, ) maxCountmust be greater than or equal tominCount- Defaults to
10and24
- Must be in the range
: The max length of an individual fissure piece.maxPieceLength(m: int)- Must be in the range
[1, ) - Defaults to
6
- Must be in the range
: Additional decoration properties. Can be made as an object with the following fields.decoration(decoration: FissureDecoration)rarity?: int: The rarity for blocks being replaced by decoration blocks- Must be in the range
[1, ) - Defaults to
1
- Must be in the range
radius?: int: The radius around the fissure that blocks should be replaced- Must be in the range
[1, ) - Defaults to
1
- Must be in the range
count?: int: The number of blocks to replace. the true number of replaced blocks will becount / rarity- Must be in the range
[1, ) - Defaults to
1
- Must be in the range
states: Map<Block, List<WeightedValue<BlockState>>>: A mapping of blocks to the decoration states asWeightedValues- Must be set
: The height of the fissure origin as a [[ vertical_anchor ]].anchor(anchor: VerticalAnchor)- Defaults to
{ above_bottom: 16 }
- Defaults to
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.fill(state: BlockState)- Defaults to
'minecraft:water'
- Defaults to
: The fluids to replace when encountered by a lake.replaceFluids(fluids: List<Fluid>)- Defaults to
[]
- Defaults to
: Allows the lake to fill a potential basin upwards from the starting position as well as downwards.allowOverfill()
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.entries(entries: HolderSet<ConfiguredFeature<?, ?>>)- Must be set
- All entries must be configured features of the
tfc:forest_entrytype
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
: The climatic conditions this forest entry can spawn in. Can be made as an object with the fields.climate(placement: ClimatePlacement)minTemp?: number: The minimum temperature- Defaults to
-Infinity
- Defaults to
maxTemp?: number: The maximum temperature- Defaults to
Infinity
- Defaults to
minGroundwater?: number: The minimum groundwater value- Defaults to
-Infinity
- Defaults to
maxGroundwater?: number: The maximum groundwater value- Defaults to
Infinity
- Defaults to
minRainVariance?: number: The minimum rain variance- Defaults to
-1
- Defaults to
maxRainVariance?: number: The maximum rain variance- Defaults to
1
- Defaults to
absoluteRainVariance?: boolean: If the sign of the rain variance at a location should be ignored when checking ranges- Defaults to
false
- Defaults to
fuzzy?: boolean: If climate values should be evaluated fuzzily- Defaults to
false
- Defaults to
ignoreRivers?: boolean: If climate values should be influenced before river influence- Defaults to
false
- Defaults to
minForestDensity?: int: The minimum forest density- Must be in the range
[0, ) - Defaults to
0
- Must be in the range
maxForestDensity?: int: The maximum forest density- Must be in the range
[0, ) - Defaults to
4
- Must be in the range
minElevation?: int: The minimum elevation- Defaults to
-64
- Defaults to
maxElevation?: int: The maximum elevation- Defaults to
320
- Defaults to
forestTypes?: List<ForestType>: The forest types the entry may spawn in. Will spawn in all types if empty or unset- Defaults to
[]
- Defaults to
: The bush blocks.bush(log: BlockState, leaves: BlockState)
: The fallen tree blocks.fallen(log: BlockState, leaves: BlockState)- The
logblock must be TFC’snaturaland the vanillaaxisstate properties. See the log builder - The
leavesblock must have TFC’slayersstate property. See the fallen leaves builder
- The
: The groundcover present in the forest as.groundcover(cover: List<WeightedValue<BlockState>>)WeightedValues
: The living and dead tree configured features to place in the forest.trees(normal: Holder<ConfiguredFeature<?, ?>>, dead: Holder<ConfiguredFeature<?, ?>>)- Must be set
: The configured feature to place for old growth trees.oldGrowthTree(old: Holder<ConfiguredFeature<?, ?>>)
: The configured feature to place for krummholz.krummholz(krummholz: Holder<ConfiguredFeature<?, ?>>)- See the krummholz feature builder
: The soil disc feature to place.soilDisc(disc: Holder<ConfiguredFeature<?, ?>>)
: The chance any given tree will be old growth. Approximately one per.oldGrowthChance(chance: int)chancetrees- Must be in the range
[1, ) - Defaults to
6
- Must be in the range
: The secondary chance that any given tree will be old growth. Approximately one per.spoilerOldGrowthChance(chance: int)chancetrees- Must be in the range
[1, ) - Defaults to
200
- Must be in the range
: The chance that any given tree will instead be a fallen tree. Approximately one per.fallenChance(chance: int)chancetrees- Must be in the range
[1, ) - Defaults to
14
- Must be in the range
: The chance that any given tree will instead be a dead tree. Approximately one per.deadChance(chance: int)chancetrees- Must be in the range
[1, ) - Defaults to
75
- Must be in the range
: If trees are allowed to float when placing.floating(floating: boolean)- Defaults to
false
- Defaults to
: Add the entry to the.addToDefaultForest()tfc:forest_treestag, 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.krummholz(block: Block)- Must have TFC’s
tipandbottomstate properties - Defaults to
'tfc:plant/spruce_krummholz'
- Must have TFC’s
: How tall the krummholz can be.height(height: intProvider)- Defaults to
2
- Defaults to
: Allows the krummholz to generate on stone.spawnsOnStone()
: Allows the krummholz to generate on gravel.spawnsOnGravel()
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.trunk(trunk: TrunkConfig)state: BlockState: The trunk block to place- Defaults to
'minecraft:air'
- Defaults to
minHeight?: int: The minimum height of the trunk- Must be <=
maxHeight - Defaults to
0
- Must be <=
maxHeight?: int: The maximum height of the trunk- Must be >=
minHeight - Defaults to
2
- Must be >=
wide?: boolean: If the trunk should be 2x2- Defaults to
false
- Defaults to
: The root system properties. Can be made as an object with the fields.roots(roots: TreeRootBuilder)blocks: Map<Block, List<WeightedValue<BlockState>>>: The blocks to place, mapping from the surface blocks to theWeightedValuestates to place- Must be set
width?: int: The maximum horizontal distance the roots can place- Must be in the range
[1, ) - Defaults to
4
- Must be in the range
height?: int: The maximum vertical distance below the surface the roots can place- Must be in the range
[1, ) - Defaults to
3
- Must be in the range
tries?: int: The number of times to attempt to place each root- Must be in the range
[1, ) - Defaults to
5
- Must be in the range
skewChance?: number: The chance a root position is skewed downwards- Defaults to
NaN
- Defaults to
required?: bool: If the tree requires the roots to place in order to place- Defaults to
false
- Defaults to
: The tree placement properties. Can be made as an object with the fields.treePlacement(placement: TreePlacementConfig)width?: int: The width of ground clearance needed- Defaults to
5
- Defaults to
height?: int: The height of ground clearance needed- Defaults to
3
- Defaults to
groundType?: GroundType: The type of ground the tree can spawn onReveal/hide list of ground types
normalsandshallow_watersubmergedshallow_allow_saltwatersubmerged_allow_saltwaterfloating
- Defaults to
normal
: The base and overlay structures of the trees. Ids of structures located at.structures(base: ResourceLocation, overlay: ResourceLocation)data/<namespace>/structures/<path>.nbt- Defaults to
'tfc:white_cedar/base'and'tfc:white_cedar/overlay'
- Defaults to
: The integrity of the overlay structure, how much of it is actually placed.overlayIntegrity(integrity: number)- Defaults to
0.5 - Must be in the range
[0, 1]
- Defaults to
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.trunk(trunk: TrunkConfig)state: BlockState: The trunk block to place- Defaults to
'minecraft:air'
- Defaults to
minHeight?: int: The minimum height of the trunk- Must be <=
maxHeight - Defaults to
0
- Must be <=
maxHeight?: int: The maximum height of the trunk- Must be >=
minHeight - Defaults to
2
- Must be >=
wide?: boolean: If the trunk should be 2x2- Defaults to
false
- Defaults to
: The root system properties. Can be made as an object with the fields.roots(roots: TreeRootBuilder)blocks: Map<Block, List<WeightedValue<BlockState>>>: The blocks to place, mapping from the surface blocks to theWeightedValuestates to place- Must be set
width?: int: The maximum horizontal distance the roots can place- Must be in the range
[1, ) - Defaults to
4
- Must be in the range
height?: int: The maximum vertical distance below the surface the roots can place- Must be in the range
[1, ) - Defaults to
3
- Must be in the range
tries?: int: The number of times to attempt to place each root- Must be in the range
[1, ) - Defaults to
5
- Must be in the range
skewChance?: number: The chance a root position is skewed downwards- Defaults to
NaN
- Defaults to
required?: bool: If the tree requires the roots to place in order to place- Defaults to
false
- Defaults to
: The tree placement properties. Can be made as an object with the fields.treePlacement(placement: TreePlacementConfig)width?: int: The width of ground clearance needed- Defaults to
5
- Defaults to
height?: int: The height of ground clearance needed- Defaults to
3
- Defaults to
groundType?: GroundType: The type of ground the tree can spawn onReveal/hide list of ground types
normalsandshallow_watersubmergedshallow_allow_saltwatersubmerged_allow_saltwaterfloating
- Defaults to
normal
: The tree structures to randomly choose from to place. Ids of structures located at.trees(trees: List<ResourceLocation>)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.trunk(trunk: TrunkConfig)state: BlockState: The trunk block to place- Defaults to
'minecraft:air'
- Defaults to
minHeight?: int: The minimum height of the trunk- Must be <=
maxHeight - Defaults to
0
- Must be <=
maxHeight?: int: The maximum height of the trunk- Must be >=
minHeight - Defaults to
2
- Must be >=
wide?: boolean: If the trunk should be 2x2- Defaults to
false
- Defaults to
- Must be set
: The root system properties. Can be made as an object with the fields.roots(roots: TreeRootBuilder)blocks: Map<Block, List<WeightedValue<BlockState>>>: The blocks to place, mapping from the surface blocks to theWeightedValuestates to place- Must be set
width?: int: The maximum horizontal distance the roots can place- Must be in the range
[1, ) - Defaults to
4
- Must be in the range
height?: int: The maximum vertical distance below the surface the roots can place- Must be in the range
[1, ) - Defaults to
3
- Must be in the range
tries?: int: The number of times to attempt to place each root- Must be in the range
[1, ) - Defaults to
5
- Must be in the range
skewChance?: number: The chance a root position is skewed downwards- Defaults to
NaN
- Defaults to
required?: bool: If the tree requires the roots to place in order to place- Defaults to
false
- Defaults to
: The tree placement properties. Can be made as an object with the fields.treePlacement(placement: TreePlacementConfig)width?: int: The width of ground clearance needed- Defaults to
5
- Defaults to
height?: int: The height of ground clearance needed- Defaults to
3
- Defaults to
groundType?: GroundType: The type of ground the tree can spawn onReveal/hide list of ground types
normalsandshallow_watersubmergedshallow_allow_saltwatersubmerged_allow_saltwaterfloating
- Defaults to
normal
: The layers making up a tree. Each layer can be made as an object with the fields.layers(layers: List<StackedTreeLayer>)templates: List<ResourceLocation>: The id of the layer’s structure, located atdata/<namesapce>/structures/<path>.nbt- Must be set
minCount: int: The minimum number of structures from the layer to use- Must be <=
maxCount
- Must be <=
maxCount: int: The maximum number of structures from the layer to use- Must be >=
minCount
- Must be >=
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.wallState(state: BlockState)
: The fluid of the hot spring.fluidState(state: BlockState)- Defaults to
'minecraft:air'
- Defaults to
: The radius of the hot spring.radius(r: int)- Must be in the range
[1, 16] - Defaults to
14
- Must be in the range
: Additional decoration properties. Can be made as an object with the following fields.decoration(decoration: FissureDecoration)rarity?: int: The rarity for blocks being replaced by decoration blocks- Must be in the range
[1, ) - Defaults to
1
- Must be in the range
radius?: int: The radius around the fissure that blocks should be replaced- Must be in the range
[1, ) - Defaults to
1
- Must be in the range
count?: int: The number of blocks to replace. the true number of replaced blocks will becount / rarity- Must be in the range
[1, ) - Defaults to
1
- Must be in the range
states: Map<Block, List<WeightedValue<BlockState>>>: A mapping of blocks to the decoration states asWeightedValues- Must be set
: If the hot spring can generate underwater.allowedUnderwater(allowed: boolean)- Defaults to
false
- Defaults to
: The blocks to replace and what to replace them with, as.replaceOnFluidContact(replacements: Map<Block, List<WeightedValue<BlockState>>>)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.features(ifFeature: Holder<PlacedFeature>, thenFeature: Holder<PlacedFeature>)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 theifFeatureplaces- 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.replacementStates(state: Map<Block, BlockState>)- Must be set
: The minimum and maximum horizontal radius of the disc.radius(min: int, max: int)- Must be in the range
[1, ) - Defaults to
3and5
- Must be in the range
: The height of the disc.height(h: int)- Must be in the range
[0, 256] - Defaults to
2
- Must be in the range
: The portion of the disc’s area that is replaced.integrity(i: number)- Must be in the range
[0, 1] - Defaults to
1
- Must be in the range
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
: The block to place.block(block: Block)- Must be a
SpreadingBushBlock - Must be set
- Must be a
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
: The block to place.block(block: Block)- Must be a
WildSpreadingCropBlock - Must be set
- Must be a
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
: The block to place.block(block: Block)- Must be a
WildDoubleCropBlock - Must be set
- Must be a
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.state(state: BlockState)- Defaults to
'tfc:icicle'
- Defaults to
: The radius around the target location to place spikes.radius(r: int)- Must be in the range
[1, 16] - Defaults to
1
- Must be in the range
: The number of tries to attempt to place spikes.tries(t: int)- Must be in the range
[1, ) - Defaults to
1
- Must be in the range
: The minimum and maximum heights of a spike.height(min: int, max: int)- Must be in the range
[1, ) maxmust be greater than or equal tomin- Defaults to
1and10
- Must be in the range
: If the spike can place underwater.allowedUnderwater(b: boolean)- Defaults to
false
- Defaults to
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.replacementStates(states: Map<Block, List<WeightedValue<BlockState>>>)WeightedValues- Must be set
: How often the vein will place, approximately once per.rarity(r: int)rchunks- Must be in the range
[1, ) - Defaults to
1
- Must be in the range
: Within the vein volume, the portion of the base rock that should be replaced with ore.density(d: number)- Must be in the range
[0, 1] - Defaults to
1
- Must be in the range
: The lowest y-value the vein can spawn at.minY(y: int)- Defaults to
-64
- Defaults to
: The highest y-value the vein can spawn at.maxY- Defaults to
320
- Defaults to
: If the vein should project to the surface during placement.projectToSurface(p: boolean)- Defaults to
false
- Defaults to
: If an offset should be applied to the vein when projecting to surface.projectOffset(p: boolean)- Defaults to
false
- Defaults to
: If the vein should only spawn near lava.nearLava(n: boolean)- Defaults to
false
- Defaults to
: The seed of the vein.seed(seed: int)- 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.indicator(indicator: IndicatorBuilder)depth?: int: The maximum depth below the surface the vein will place indicators- Must be in the range
[1, ) - Defaults to
1
- Must be in the range
rarity?: int: The rarity to place indicators, as a fraction of the horizontal locations the vein places ore blocks- Defaults to
1
- Defaults to
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
- Must be in the range
undergroundCount?: int: The number of times to attempt to place an underground indicator in a given location- Defaults to
1
- Defaults to
states: List<WeightedValue<BlockState>>: The indicator states to place, asWeightedValues- Must be set
: The size of the vein.size(s: int)- Must be in the range
[1, ) - Defaults to
10
- Must be in the range
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.size(s: int)- Must be in the range
[1, ) - Defaults to
5
- Must be in the range
: The height of the disc.height(h: int)- Must be in the range
[1, ) - Defaults to
5
- Must be in the range
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.size(r: int)- Must be in the range
[1, ) - Defaults to
3
- Must be in the range
: The height of the pipe.height(h: int)- Defaults to
10
- Defaults to
: The radius of the pipe.radius(r: int)- Must be in the range
[1, ) - Defaults to
3
- Must be in the range
: The skew range.skew(min: int, max: int)- Defaults to
-1and0
- Defaults to
: The slant range.slant(min: int, max: int)- Defaults to
-1and0
- Defaults to
: The sign of the slant.sign(s: number)- Must be in the range
[0, 1] - Defaults to
0
- Must be in the range
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.underground()tfc:undergroundmodifier
: Add a.noSolidNeighbors()tfc:no_solid_neighborsmodifier
: Add a.volcano(minEasing: float, maxEasing: float)tfc:volcanomodifierminEasing: float: The minimum easing valuemaxEasing: float: The maximum easing value
: Add a.volcanoCenter()tfc:volcanomodifier which only accepts positions at the center
: Add a.tuffCone(minEasing: float, maxEasing: float)tfc:tuff_conemodifierminEasing: float: The minimum easing valuemaxEasing: float: The maximum easing value
: Add a.tuffConeCenter()tfc:tuff_conemodifier which only accepts positions at the center
: Add a.tuya(minEasing: float, maxEasing: float)tfc:tuyamodifierminEasing: float: The minimum easing valuemaxEasing: float: The maximum easing value
: Add a.tuyaCenter()tfc:tuyamodifier which only accepts positions at the center
: Add a.atoll(minEasing: float, maxEasing: float)tfc:atollmodifierminEasing: float: The minimum easing valuemaxEasing: float: The maximum easing value
: Add a.atollCenter()tfc:atollmodifier which only accepts positions at the center
: Add a.shallowWater(minDepth: int, maxDepth: int)tfc:shallow_watermodifierminDepth: int: The minimum depth of water requiredmaxDepth: int: The maximum depth of water permitted
: Add a.nearFluid(radius: int, fluids?: List<Fluid>)tfc:near_fluidmodifierradius: int: The radius to check for fluidfluids?: List<Fluid>: The fluids to consider- Optional. Considers all fluids if not set
: Add a.intertidal(minElevation: int, maxElevation: int)tfc:intertidalmodifierminElevation: int: The minimum valid tide elevationmaxElevation: int: The maximum valid tide elevation
: Add a.intertidalMin(minElevation: int)tfc:intertidalmodifier which is unbounded on the topminElevation: int: The minimum valid tide elevation
: Add a.intertidalMax(maxElevation: int)tfc:intertidalmodifier which is unbounded on the bottommaxElevation: int: The maximum valid tide elevation
: Add a.flatEnough(flatness: float, radius: int, maxDepth: int)tfc:flat_enoughmodifierflatness: float: The minimum flatness of the checked arearadius: int: The horizontal distance to checkmaxDepth: int: The depth below the initial position to check
: Add a.climate(climate: ClimatePlacementBuilder)tfc:climatemodifierclimate: ClimatePlacementBuilder: The climate restrictions, which can be made as an object with the fieldsminTemp?: number: The minimum temperature. Optional, defaults to-InfinitymaxTemp?: number: The maximum temperature. Optional, defaults toInfinityminGroundWater?: number: The minimum groundwater. Optional, defaults to-InfinitymaxGroundwater?: number: The maximum groundwater. Optional, defaults toInfinityminRainVariance?: number: The minimum rain variance value. Optional, defaults to-1maxRainVariance?: number: The maximum rain variance value. Optional, defaults to1absoluteRainVariance?: boolean: If the sign of the rain variance should be ignored. Optional, defaults tofalsefuzzy?: boolean: If values should be evaluated fuzzily. Optional, defaults tofalseignoreRivers?: boolean: If values should be evaluated before river influences. Optional, defaults tofalseminForestDensity?: int: The minimum forest density, in the range[0, ). Optional, defaults to0maxForestDensity?: int: The maximum forest density, in the range[0, ). Optional, defaults to4minElevation?: int: The minimum y-level. Optional, defaults to-64maxElevation?: int: The maximum y-level. Optional, defaults to320forestTypes?: List<ForestType>: The permitted forest types to spawn in. Optional, if not set or empty permits all forest types
: Add a.carvingMask(minY: VerticalAnchor, maxY: VerticalAnchor, step: GenerationStep$Carving)tfc:carving_maskmodifierminY: VerticalAnchor: The minimum valid vertical anchormaxY: VerticalAnchor: The maximum valid vertical anchorstep: GenerationStep$Carving: The carving step volume for which the feature will try to place in. Does not include blocks ‘carved’ out by noise cavesReveal/hide list of carving steps
airliquid
: Add a.carvingMaskMin(minY: VerticalAnchor, step: GenerationStep$Carving)tfc:carving_maskmodifier which is unbounded aboveminY: VerticalAnchor: The minimum valid vertical anchorstep: GenerationStep$Carving: The carving step volume for which the feature will try to place in. Does not include blocks ‘carved’ out by noise cavesReveal/hide list of carving steps
airliquid
: Add a.carvingMaskMax(maxY: VerticalAnchor, step: GenerationStep$Carving)tfc:carving_maskmodifier which is unbounded belowmaxY: VerticalAnchor: The maximum valid vertical anchorstep: GenerationStep$Carving: The carving step volume for which the feature will try to place in. Does not include blocks ‘carved’ out by noise cavesReveal/hide list of carving steps
airliquid
: Add a.onTop(predicate: BlockPredicate)tfc:on_topmodifierpredicate: BlockPredicate: The block required below for a position to be valid
: Adds a.stratovolcano(stratovolcano: StratovolcanoBuilder)tfc:stratovolcanomodifierstratovolcano: StratovolcanoBuilder: The stratovolcano properties, which can be made as an object with the fieldscenter?: boolean: If the feature should place exclusively near the center of the volcanic features. Optional, defaults tofalseuseOffsetCenter?: boolean: If the feature should place exclusively near the offset center of volcanic features, if the variant has an offset centervariant?: String: The variant to place in. Optional, defaults to'all'minEasing?: number: The minimum easing value, in the range[0, 1]. Optional, defaults to0maxEasing?: number: The maximum easing value, in the range[0, 1]. Optional, defaults to1hashMin?: number: The minimum hash value, in the range[0, 1]. Optional, defaults to0hashMax?: number: The maximum hash value, in the range[0, 1]. Optional, defaults to1