world: drop dead per-type feature replay wrappers

The combined stage-6 pass in placeScheduledUndergroundOresStage already
replays ores, underwater magma, and disks in datapack order; the separate
placeScheduledDisks and placeScheduledUnderwaterMagma passes have no
callers left. Keep the per-position helpers the combined pass and tests
use.
This commit is contained in:
Daniar Mannanov 2026-08-26 01:30:57 +03:00
parent cca7b1d3f1
commit 1f097de233
2 changed files with 8 additions and 88 deletions

View file

@ -2,49 +2,10 @@ package world
import "regionio/internal/worldgen"
// placeScheduledDisks replays the vanilla disk features from one source
// center into the mutable decoration region. Disks are in the underground-ore
// feature stage (6), after the ore entries in the 26.1.2 overworld datapack.
func (r *decorationRegion) placeScheduledDisks(seed int64) error {
set, err := worldgen.LoadFeatureSet()
if err != nil {
return err
}
if err := r.ensureSourceNeighborhood(); err != nil {
return err
}
schedule, err := set.FeatureSchedule(possibleBiomeOrder(), r.sourceBiomes(), undergroundOresStage)
if err != nil {
return err
}
random, decorationSeed := worldgen.DecorationRandom(seed, int(r.sourceX), int(r.sourceZ))
origin := worldgen.FeaturePosition{X: int(r.sourceX) << 4, Y: MinY, Z: int(r.sourceZ) << 4}
for _, scheduled := range schedule {
placed, ok := set.Placed[scheduled.Name]
if !ok {
continue
}
configured, ok := set.Configured[placed.Feature]
if !ok || configured.Type != "minecraft:disk" {
continue
}
config, err := set.Disk(placed.Feature)
if err != nil {
return err
}
random.SetFeatureSeed(decorationSeed, scheduled.Index, undergroundOresStage)
context := r.placementContext(func(position worldgen.FeaturePosition) bool {
return r.biomeAllowsFeature(set, scheduled.Name, undergroundOresStage, position)
})
if err := set.ForEachPlacementPosition(scheduled.Name, random, origin, context, func(position worldgen.FeaturePosition) error {
return r.placeDisk(set, random, position, config)
}); err != nil {
return err
}
}
return nil
}
// placeDisk places one disk feature at position. Disks are replayed by the
// combined stage-6 pass in region_ores.go, ordered between underwater magma
// and the biome's remaining entries exactly as the 26.1.2 datapack schedules
// them; this helper holds only the per-position placement.
func (r *decorationRegion) placeDisk(set *worldgen.FeatureSet, random worldgen.RandomSource, position worldgen.FeaturePosition, config worldgen.DiskFeatureConfig) error {
radius := config.RadiusMin
if config.RadiusMax > config.RadiusMin {

View file

@ -2,51 +2,10 @@ package world
import "regionio/internal/worldgen"
func (r *decorationRegion) placeScheduledUnderwaterMagma(seed int64) error {
set, err := worldgen.LoadFeatureSet()
if err != nil {
return err
}
if err := r.ensureSourceNeighborhood(); err != nil {
return err
}
schedule, err := set.FeatureSchedule(possibleBiomeOrder(), r.sourceBiomes(), undergroundOresStage)
if err != nil {
return err
}
random, decorationSeed := worldgen.DecorationRandom(seed, int(r.sourceX), int(r.sourceZ))
origin := worldgen.FeaturePosition{X: int(r.sourceX) << 4, Y: MinY, Z: int(r.sourceZ) << 4}
for _, scheduled := range schedule {
placed, ok := set.Placed[scheduled.Name]
if !ok {
continue
}
configured, ok := set.Configured[placed.Feature]
if !ok || configured.Type != "minecraft:underwater_magma" {
continue
}
config, err := set.UnderwaterMagma(placed.Feature)
if err != nil {
return err
}
magma, ok := nameToStateID("minecraft:magma_block", nil)
if !ok {
continue
}
random.SetFeatureSeed(decorationSeed, scheduled.Index, undergroundOresStage)
context := r.placementContext(func(position worldgen.FeaturePosition) bool {
return r.biomeAllowsFeature(set, scheduled.Name, undergroundOresStage, position)
})
if err := set.ForEachPlacementPosition(scheduled.Name, random, origin, context, func(position worldgen.FeaturePosition) error {
r.placeUnderwaterMagma(random, position, config, magma)
return nil
}); err != nil {
return err
}
}
return nil
}
// placeUnderwaterMagma places one magma feature attempt at origin. The feature
// is replayed by the combined stage-6 pass in region_ores.go, ordered between
// the ore entries and the disk features as the 26.1.2 datapack schedules them;
// this helper holds only the per-position placement.
func (r *decorationRegion) placeUnderwaterMagma(random worldgen.RandomSource, origin worldgen.FeaturePosition, config worldgen.UnderwaterMagmaFeatureConfig, magma uint16) bool {
floorY, ok := r.underwaterFloor(origin.X, origin.Y, origin.Z, config.FloorSearchRange)
if !ok {