Place biome-driven water and lava springs
This commit is contained in:
parent
dd2ea56850
commit
2bfa3155f3
7 changed files with 184 additions and 6 deletions
39
internal/world/springs_test.go
Normal file
39
internal/world/springs_test.go
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
package world
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"regionio/internal/worldgen"
|
||||
)
|
||||
|
||||
func TestSpringFeaturePlacesFallingFluid(t *testing.T) {
|
||||
chunk := NewChunk(0, 0, BiomePlains)
|
||||
valid := []string{"minecraft:stone"}
|
||||
for _, pos := range [][3]int{{8, 11, 8}, {8, 9, 8}, {7, 10, 8}, {9, 10, 8}, {8, 10, 7}} {
|
||||
chunk.setBlockRaw(pos[0], pos[1], pos[2], StateStone)
|
||||
}
|
||||
config := worldgen.SpringFeatureConfig{
|
||||
HoleCount: 1, RequiresBlockBelow: true, RockCount: 4,
|
||||
State: worldgen.BlockState{Name: "minecraft:water", Properties: map[string]string{"falling": "true"}},
|
||||
ValidBlocks: valid,
|
||||
}
|
||||
placeSpring(chunk, 8, 10, 8, config)
|
||||
falling, ok := nameToStateID("minecraft:water", map[string]string{"level": "8"})
|
||||
if !ok || chunk.GetBlock(8, 10, 8) != falling {
|
||||
t.Fatalf("spring state = %d, want falling water %d", chunk.GetBlock(8, 10, 8), falling)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPlacedSpringsAreDeterministic(t *testing.T) {
|
||||
gen := NewVanillaGenerator(12345)
|
||||
a, b := gen(-3, 4), gen(-3, 4)
|
||||
for y := MinY; y < MinY+WorldHeight; y++ {
|
||||
for x := 0; x < 16; x++ {
|
||||
for z := 0; z < 16; z++ {
|
||||
if got, want := a.GetBlock(x, y, z), b.GetBlock(x, y, z); got != want {
|
||||
t.Fatalf("block (%d,%d,%d): first %d second %d", x, y, z, got, want)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue