Spring feature
The spring_feature
allows you to single-block fluid springs in the world.
Configuration
The spring_feature
has the following configuration options:
Option | Type | Description |
---|---|---|
state |
A BlockState (Has to be a fluid) |
The fluid state to use for the spring. |
requires_block_below (optional in Json, defaults to true ) |
A boolean |
Whether the spring requires a block in valid_blocks below. |
rock_count (optional in Json, defaults to 4) |
An int |
The required amount of blocks in valid_blocks around the spring. |
hole_count (optional in Json, defaults to 1) |
An int |
The required amount of air blocks around the spring. |
valid_blocks |
A list of BlockStates |
The blocks that are valid for the spring to spawn in. |
In code, the SpringConfiguration
class is used to configure the feature.
Example
As an example, here's the placed and configured feature used to place water springs in caves.
ConfiguredFeatures.kt
@OptIn(ExperimentalWorldGen::class)
@Init(stage = InitStage.POST_PACK_PRE_WORLD)
object ConfiguredFeatures : FeatureRegistry by ExampleAddon.registry {
val SPRING_WATER = registerConfiguredFeature(
"spring_water",
Feature.SPRING,
SpringConfiguration(
Fluids.WATER.defaultFluidState(), // state
true, // requires_block_below
4, // rock_count
1, // hole_count
HolderSet.direct( // valid_blocks
Block::builtInRegistryHolder,
Blocks.STONE, Blocks.GRANITE, Blocks.DIORITE, Blocks.ANDESITE, Blocks.DEEPSLATE, Blocks.TUFF, Blocks.CALCITE, Blocks.DIRT, Blocks.SNOW_BLOCK, Blocks.POWDER_SNOW, Blocks.PACKED_ICE
)
)
)
}
PlacedFeatures.kt
@OptIn(ExperimentalWorldGen::class)
@Init(stage = InitStage.POST_PACK_PRE_WORLD)
object PlacedFeatures : FeatureRegistry by ExampleAddon.registry {
val SPRING_WATER = placedFeature("spring_water", ConfiguredFeatures.SPRING_WATER)
.count(25) // (1)!
.inSquareSpread() // (2)!
.heightRangeUniform(VerticalAnchor.bottom(), VerticalAnchor.absolute(192)) // (3)!
.biomeFilter() // (4)!
.register()
}
- 25 attempts per chunk.
- Spread the springs out.
- Set the y-coordinate to a random value between the minimum y-level and 192.
- Only place the springs in biomes that have the configured feature.
configured_feature/spring_water.json
{
"type": "minecraft:spring_feature",
"config": {
"hole_count": 1,
"requires_block_below": true,
"rock_count": 4,
"state": {
"Name": "minecraft:water",
"Properties": {
"falling": "true"
}
},
"valid_blocks": [
"minecraft:stone",
"minecraft:granite",
"minecraft:diorite",
"minecraft:andesite",
"minecraft:deepslate",
"minecraft:tuff",
"minecraft:calcite",
"minecraft:dirt",
"minecraft:snow_block",
"minecraft:powder_snow",
"minecraft:packed_ice"
]
}
}
placed_feature/spring_water.json
{
"feature": "minecraft:spring_water",
"placement": [
{
"type": "minecraft:count", // (1)!
"count": 25
},
{
"type": "minecraft:in_square" // (2)!
},
{
"type": "minecraft:height_range", // (3)!
"height": {
"type": "minecraft:uniform",
"max_inclusive": {
"absolute": 192
},
"min_inclusive": {
"above_bottom": 0
}
}
},
{
"type": "minecraft:biome" // (4)!
}
]
}
- 25 attempts per chunk.
- Spread the springs out.
- Set the y-coordinate to a random value between 0 and 192.
- Only place the springs in biomes that have the configured feature.