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:
parent
cca7b1d3f1
commit
1f097de233
2 changed files with 8 additions and 88 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue