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"
|
import "regionio/internal/worldgen"
|
||||||
|
|
||||||
// placeScheduledDisks replays the vanilla disk features from one source
|
// placeDisk places one disk feature at position. Disks are replayed by the
|
||||||
// center into the mutable decoration region. Disks are in the underground-ore
|
// combined stage-6 pass in region_ores.go, ordered between underwater magma
|
||||||
// feature stage (6), after the ore entries in the 26.1.2 overworld datapack.
|
// and the biome's remaining entries exactly as the 26.1.2 datapack schedules
|
||||||
func (r *decorationRegion) placeScheduledDisks(seed int64) error {
|
// them; this helper holds only the per-position placement.
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *decorationRegion) placeDisk(set *worldgen.FeatureSet, random worldgen.RandomSource, position worldgen.FeaturePosition, config worldgen.DiskFeatureConfig) error {
|
func (r *decorationRegion) placeDisk(set *worldgen.FeatureSet, random worldgen.RandomSource, position worldgen.FeaturePosition, config worldgen.DiskFeatureConfig) error {
|
||||||
radius := config.RadiusMin
|
radius := config.RadiusMin
|
||||||
if config.RadiusMax > config.RadiusMin {
|
if config.RadiusMax > config.RadiusMin {
|
||||||
|
|
|
||||||
|
|
@ -2,51 +2,10 @@ package world
|
||||||
|
|
||||||
import "regionio/internal/worldgen"
|
import "regionio/internal/worldgen"
|
||||||
|
|
||||||
func (r *decorationRegion) placeScheduledUnderwaterMagma(seed int64) error {
|
// placeUnderwaterMagma places one magma feature attempt at origin. The feature
|
||||||
set, err := worldgen.LoadFeatureSet()
|
// is replayed by the combined stage-6 pass in region_ores.go, ordered between
|
||||||
if err != nil {
|
// the ore entries and the disk features as the 26.1.2 datapack schedules them;
|
||||||
return err
|
// this helper holds only the per-position placement.
|
||||||
}
|
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *decorationRegion) placeUnderwaterMagma(random worldgen.RandomSource, origin worldgen.FeaturePosition, config worldgen.UnderwaterMagmaFeatureConfig, magma uint16) bool {
|
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)
|
floorY, ok := r.underwaterFloor(origin.X, origin.Y, origin.Z, config.FloorSearchRange)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue