From 400e76382a03c5190893caaac33c91b7114b00f3 Mon Sep 17 00:00:00 2001 From: Daniar Mannanov Date: Tue, 11 Aug 2026 14:01:40 +0300 Subject: [PATCH] Report fixture ore schedules --- .../world/ore_schedule_diagnostic_test.go | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 internal/world/ore_schedule_diagnostic_test.go diff --git a/internal/world/ore_schedule_diagnostic_test.go b/internal/world/ore_schedule_diagnostic_test.go new file mode 100644 index 0000000..fc8bf10 --- /dev/null +++ b/internal/world/ore_schedule_diagnostic_test.go @@ -0,0 +1,60 @@ +package world + +import ( + "os" + "testing" + + "regionio/internal/worldgen" +) + +func TestOreScheduleDiagnostic(t *testing.T) { + if os.Getenv("REGIONIO_ORE_SCHEDULE_DIAGNOSTIC") != "1" { + t.Skip("set REGIONIO_ORE_SCHEDULE_DIAGNOSTIC=1 to print ore schedules") + } + seed := int64(12345) + od, err := worldgen.LoadOverworldFinalDensity(seed) + if err != nil { + t.Fatal(err) + } + fluidPicker := worldgen.OverworldFluidPicker(od.SeaLevel) + veins := worldgen.NewOreVeinifier(od) + carver, err := worldgen.NewCarver(od, seed) + if err != nil { + t.Fatal(err) + } + for _, target := range []decorationSource{{0, 0}, {1, 0}, {0, 1}, {-1, -1}} { + var chunks []*Chunk + for cx := target.X - 1; cx <= target.X+1; cx++ { + for cz := target.Z - 1; cz <= target.Z+1; cz++ { + chunks = append(chunks, generateVanillaWithoutDecoration(od, fluidPicker, veins, carver, seed, cx, cz)) + } + } + region, err := newDecorationRegion(chunks) + if err != nil { + t.Fatal(err) + } + if err := region.setSource(target.X, target.Z); err != nil { + t.Fatal(err) + } + schedule, err := region.scheduledFeatures(undergroundOresStage) + if err != nil { + t.Fatal(err) + } + t.Logf("source (%d,%d) biomes=%v", target.X, target.Z, region.sourceBiomes()) + for _, feature := range schedule { + placed := mustFeatureSet(t).Placed[feature.Name] + if mustFeatureSet(t).Configured[placed.Feature].Type == "minecraft:ore" { + t.Logf("source (%d,%d) %s index=%d", target.X, target.Z, feature.Name, feature.Index) + } + } + } +} + +func mustFeatureSet(t *testing.T) *worldgen.FeatureSet { + t.Helper() + set, err := worldgen.LoadFeatureSet() + if err != nil { + t.Fatal(err) + } + return set +}