make SeededBuilder use unboxed long

This commit is contained in:
dfsek 2021-07-17 21:50:12 -07:00
parent 3a94c5287c
commit ec28f613d3
38 changed files with 73 additions and 79 deletions

View File

@ -24,6 +24,6 @@ public class ImageProviderTemplate /*extends BiomeProviderTemplate */ {
//@Override //@Override
public BiomeProvider build(long seed) { public BiomeProvider build(long seed) {
return new ImageBiomeProvider(biomes.entries().stream().map(biomeBuilder -> biomeBuilder.apply(seed)).collect(Collectors.toSet()), image, resolution, align); return new ImageBiomeProvider(biomes.entries().stream().map(biomeBuilder -> biomeBuilder.build(seed)).collect(Collectors.toSet()), image, resolution, align);
} }
} }

View File

@ -51,7 +51,7 @@ public class BiomePipelineImpl {
} }
public BiomePipelineImpl build(BiomeSource source, long seed) { public BiomePipelineImpl build(BiomeSource source, long seed) {
List<Stage> stagesBuilt = stages.stream().map(stageBuilder -> stageBuilder.apply(seed)).collect(Collectors.toList()); List<Stage> stagesBuilt = stages.stream().map(stageBuilder -> stageBuilder.build(seed)).collect(Collectors.toList());
for(Stage stage : stagesBuilt) { for(Stage stage : stagesBuilt) {
if(stage.isExpansion()) expand = expand * 2 - 1; if(stage.isExpansion()) expand = expand * 2 - 1;

View File

@ -32,7 +32,7 @@ public class BiomePipelineTemplate extends BiomeProviderTemplate {
public BiomeProvider build(long seed) { public BiomeProvider build(long seed) {
BiomePipelineImpl.BiomePipelineBuilder biomePipelineBuilder = new BiomePipelineImpl.BiomePipelineBuilder(initialSize); BiomePipelineImpl.BiomePipelineBuilder biomePipelineBuilder = new BiomePipelineImpl.BiomePipelineBuilder(initialSize);
stages.forEach(biomePipelineBuilder::addStage); stages.forEach(biomePipelineBuilder::addStage);
BiomePipelineImpl pipeline = biomePipelineBuilder.build(source.apply(seed), seed); BiomePipelineImpl pipeline = biomePipelineBuilder.build(source.build(seed), seed);
return new StandardBiomeProvider(pipeline, main, resolution, blend.apply(seed), blendAmp, (int) seed); return new StandardBiomeProvider(pipeline, main, resolution, blend.build(seed), blendAmp, (int) seed);
} }
} }

View File

@ -15,7 +15,7 @@ public class NoiseSourceTemplate extends SourceTemplate {
private ProbabilityCollection<SeededTerraBiome> biomes; private ProbabilityCollection<SeededTerraBiome> biomes;
@Override @Override
public BiomeSource apply(Long seed) { public BiomeSource build(long seed) {
return new RandomSource(biomes.map((biome) -> biome.apply(seed), false), noise.apply(seed)); return new RandomSource(biomes.map((biome) -> biome.build(seed), false), noise.build(seed));
} }
} }

View File

@ -7,7 +7,7 @@ import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage;
public class ExpanderStageTemplate extends StageTemplate { public class ExpanderStageTemplate extends StageTemplate {
@Override @Override
public Stage apply(Long seed) { public Stage build(long seed) {
return new ExpanderStage(new FractalExpander(noise.apply(seed))); return new ExpanderStage(new FractalExpander(noise.build(seed)));
} }
} }

View File

@ -26,11 +26,11 @@ public class BorderListMutatorTemplate extends MutatorStageTemplate {
@Override @Override
public BiomeMutator build(long seed) { public BiomeMutator getMutator(long seed) {
Map<TerraBiome, ProbabilityCollection<TerraBiome>> replaceMap = new HashMap<>(); Map<TerraBiome, ProbabilityCollection<TerraBiome>> replaceMap = new HashMap<>();
replace.forEach((keyBuilder, replacements) -> replaceMap.put(keyBuilder.apply(seed), replacements.map(replacement -> replacement.apply(seed), true))); replace.forEach((keyBuilder, replacements) -> replaceMap.put(keyBuilder.build(seed), replacements.map(replacement -> replacement.build(seed), true)));
return new BorderListMutator(replaceMap, from, defaultReplace, noise.apply(seed), defaultTo.map(biomeBuilder -> biomeBuilder.apply(seed), true)); return new BorderListMutator(replaceMap, from, defaultReplace, noise.build(seed), defaultTo.map(biomeBuilder -> biomeBuilder.build(seed), true));
} }
} }

View File

@ -18,7 +18,7 @@ public class BorderMutatorTemplate extends MutatorStageTemplate {
private ProbabilityCollection<SeededTerraBiome> to; private ProbabilityCollection<SeededTerraBiome> to;
@Override @Override
public BiomeMutator build(long seed) { public BiomeMutator getMutator(long seed) {
return new BorderMutator(from, replace, noise.apply(seed), to.map(biomeBuilder -> biomeBuilder.apply(seed), true)); return new BorderMutator(from, replace, noise.build(seed), to.map(biomeBuilder -> biomeBuilder.build(seed), true));
} }
} }

View File

@ -6,10 +6,10 @@ import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate;
import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage;
public abstract class MutatorStageTemplate extends StageTemplate { public abstract class MutatorStageTemplate extends StageTemplate {
public abstract BiomeMutator build(long seed); public abstract BiomeMutator getMutator(long seed);
@Override @Override
public Stage apply(Long seed) { public Stage build(long seed) {
return new MutatorStage(build(seed)); return new MutatorStage(getMutator(seed));
} }
} }

View File

@ -22,11 +22,11 @@ public class ReplaceListMutatorTemplate extends MutatorStageTemplate {
private Map<SeededTerraBiome, ProbabilityCollection<SeededTerraBiome>> replace; private Map<SeededTerraBiome, ProbabilityCollection<SeededTerraBiome>> replace;
@Override @Override
public BiomeMutator build(long seed) { public BiomeMutator getMutator(long seed) {
Map<TerraBiome, ProbabilityCollection<TerraBiome>> replaceMap = new HashMap<>(); Map<TerraBiome, ProbabilityCollection<TerraBiome>> replaceMap = new HashMap<>();
replace.forEach((biomeBuilder, biomeBuilders) -> replaceMap.put(biomeBuilder.apply(seed), biomeBuilders.map(builder -> builder.apply(seed), true))); replace.forEach((biomeBuilder, biomeBuilders) -> replaceMap.put(biomeBuilder.build(seed), biomeBuilders.map(builder -> builder.build(seed), true)));
return new ReplaceListMutator(replaceMap, defaultFrom, defaultTo.map(biomeBuilder -> biomeBuilder.apply(seed), true), noise.apply(seed)); return new ReplaceListMutator(replaceMap, defaultFrom, defaultTo.map(biomeBuilder -> biomeBuilder.build(seed), true), noise.build(seed));
} }
} }

View File

@ -15,7 +15,7 @@ public class ReplaceMutatorTemplate extends MutatorStageTemplate {
private ProbabilityCollection<SeededTerraBiome> to; private ProbabilityCollection<SeededTerraBiome> to;
@Override @Override
public BiomeMutator build(long seed) { public BiomeMutator getMutator(long seed) {
return new ReplaceMutator(from, to.map(biomeBuilder -> biomeBuilder.apply(seed), true), noise.apply(seed)); return new ReplaceMutator(from, to.map(biomeBuilder -> biomeBuilder.build(seed), true), noise.build(seed));
} }
} }

View File

@ -5,7 +5,7 @@ import com.dfsek.terra.addons.biome.pipeline.mutator.SmoothMutator;
public class SmoothMutatorTemplate extends MutatorStageTemplate { public class SmoothMutatorTemplate extends MutatorStageTemplate {
@Override @Override
public BiomeMutator build(long seed) { public BiomeMutator getMutator(long seed) {
return new SmoothMutator(noise.apply(seed)); return new SmoothMutator(noise.build(seed));
} }
} }

View File

@ -12,7 +12,7 @@ public class SingleBiomeProviderTemplate implements ObjectTemplate<BiomeProvider
@Override @Override
public BiomeProvider build(long seed) { public BiomeProvider build(long seed) {
return new SingleBiomeProvider(biome.apply(seed)); return new SingleBiomeProvider(biome.build(seed));
} }
@Override @Override

View File

@ -219,19 +219,19 @@ public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTempl
//pack.getTemplate().getNoiseBuilderMap().forEach((id, builder) -> tester.registerFunction(id, new BlankFunction(builder.getDimensions()))); // Register dummy functions //pack.getTemplate().getNoiseBuilderMap().forEach((id, builder) -> tester.registerFunction(id, new BlankFunction(builder.getDimensions()))); // Register dummy functions
try { try {
noiseEquation.apply(0L); noiseEquation.build(0L);
} catch(Exception e) { } catch(Exception e) {
throw new ValidationException("Invalid noise sampler: ", e); throw new ValidationException("Invalid noise sampler: ", e);
} }
try { try {
carvingEquation.apply(0L); carvingEquation.build(0L);
} catch(Exception e) { } catch(Exception e) {
throw new ValidationException("Invalid carving sampler: ", e); throw new ValidationException("Invalid carving sampler: ", e);
} }
try { try {
elevationEquation.apply(0L); elevationEquation.build(0L);
} catch(Exception e) { } catch(Exception e) {
throw new ValidationException("Invalid elevation sampler: ", e); throw new ValidationException("Invalid elevation sampler: ", e);
} }

View File

@ -19,11 +19,11 @@ public class UserDefinedSeededTerraBiome implements SeededTerraBiome {
} }
@Override @Override
public UserDefinedBiome apply(Long seed) { public UserDefinedBiome build(long seed) {
synchronized(biomeMap) { synchronized(biomeMap) {
return biomeMap.computeIfAbsent(seed, return biomeMap.computeIfAbsent(seed,
s -> { s -> {
UserDefinedGenerator generator = new UserDefinedGenerator(template.getNoiseEquation().apply(seed), template.getElevationEquation().apply(seed), template.getCarvingEquation().apply(seed), template.getBiomeNoise().apply(seed), template.getElevationWeight(), UserDefinedGenerator generator = new UserDefinedGenerator(template.getNoiseEquation().build(seed), template.getElevationEquation().build(seed), template.getCarvingEquation().build(seed), template.getBiomeNoise().build(seed), template.getElevationWeight(),
template.getBlendDistance(), template.getBlendStep(), template.getBlendWeight()); template.getBlendDistance(), template.getBlendStep(), template.getBlendWeight());
return new UserDefinedBiome(template.getVanilla(), generator, template, context); return new UserDefinedBiome(template.getVanilla(), generator, template, context);
} }

View File

@ -8,6 +8,6 @@ import com.dfsek.terra.api.world.Flora;
public class FloraFactory implements ConfigFactory<FloraTemplate, Flora> { public class FloraFactory implements ConfigFactory<FloraTemplate, Flora> {
@Override @Override
public TerraFlora build(FloraTemplate config, TerraPlugin main) { public TerraFlora build(FloraTemplate config, TerraPlugin main) {
return new TerraFlora(config.getLayers(), config.doPhysics(), config.isCeiling(), config.getIrrigable(), config.getSpawnable(), config.getReplaceable(), config.getRotatable(), config.getMaxPlacements(), config.getSearch(), config.isSpawnBlacklist(), config.getIrrigableOffset(), main, config.getNoiseDistribution().apply(2403L)); return new TerraFlora(config.getLayers(), config.doPhysics(), config.isCeiling(), config.getIrrigable(), config.getSpawnable(), config.getReplaceable(), config.getRotatable(), config.getMaxPlacements(), config.getSearch(), config.isSpawnBlacklist(), config.getIrrigableOffset(), main, config.getNoiseDistribution().build(2403));
} }
} }

View File

@ -23,7 +23,7 @@ public class DomainWarpTemplate extends SamplerTemplate<DomainWarpedSampler> {
private double amplitude = 1; private double amplitude = 1;
@Override @Override
public NoiseSampler apply(Long seed) { public NoiseSampler build(long seed) {
return new DomainWarpedSampler(function.apply(seed), warp.apply(seed), (int) (seed + salt), amplitude); return new DomainWarpedSampler(function.build(seed), warp.build(seed), (int) (seed + salt), amplitude);
} }
} }

View File

@ -19,7 +19,7 @@ public class ImageSamplerTemplate extends SamplerTemplate<ImageSampler> {
private ImageSampler.Channel channel; private ImageSampler.Channel channel;
@Override @Override
public NoiseSampler apply(Long seed) { public NoiseSampler build(long seed) {
return new ImageSampler(image, channel, frequency); return new ImageSampler(image, channel, frequency);
} }
} }

View File

@ -28,7 +28,7 @@ public class KernelTemplate extends SamplerTemplate<KernelSampler> implements Va
private double frequency = 1; private double frequency = 1;
@Override @Override
public NoiseSampler apply(Long seed) { public NoiseSampler build(long seed) {
double[][] k = new double[kernel.size()][kernel.get(0).size()]; double[][] k = new double[kernel.size()][kernel.get(0).size()];
for(int x = 0; x < kernel.size(); x++) { for(int x = 0; x < kernel.size(); x++) {
@ -37,7 +37,7 @@ public class KernelTemplate extends SamplerTemplate<KernelSampler> implements Va
} }
} }
KernelSampler sampler = new KernelSampler(k, function.apply(seed)); KernelSampler sampler = new KernelSampler(k, function.build(seed));
sampler.setFrequency(frequency); sampler.setFrequency(frequency);
return sampler; return sampler;
} }

View File

@ -26,9 +26,8 @@ public class CellularNoiseTemplate extends NoiseTemplate<CellularSampler> {
@Default @Default
private SeededNoiseSampler lookup = new SeededNoiseSampler() { private SeededNoiseSampler lookup = new SeededNoiseSampler() {
@Override @Override
public NoiseSampler apply(Long seed) { public NoiseSampler build(long seed) {
return new OpenSimplex2Sampler((int) seed);
return new OpenSimplex2Sampler((int) (long) seed);
} }
@Override @Override
@ -38,9 +37,9 @@ public class CellularNoiseTemplate extends NoiseTemplate<CellularSampler> {
}; };
@Override @Override
public NoiseSampler apply(Long seed) { public NoiseSampler build(long seed) {
CellularSampler sampler = new CellularSampler((int) (long) seed + salt); CellularSampler sampler = new CellularSampler((int) seed + salt);
sampler.setNoiseLookup(lookup.apply(seed)); sampler.setNoiseLookup(lookup.build(seed));
sampler.setFrequency(frequency); sampler.setFrequency(frequency);
sampler.setJitterModifier(cellularJitter); sampler.setJitterModifier(cellularJitter);
sampler.setReturnType(cellularReturnType); sampler.setReturnType(cellularReturnType);

View File

@ -13,7 +13,7 @@ public class ConstantNoiseTemplate extends SamplerTemplate<ConstantSampler> {
private double value = 0d; private double value = 0d;
@Override @Override
public NoiseSampler apply(Long seed) { public NoiseSampler build(long seed) {
return new ConstantSampler(value); return new ConstantSampler(value);
} }
} }

View File

@ -42,7 +42,7 @@ public class ExpressionFunctionTemplate extends SamplerTemplate<ExpressionFuncti
} }
@Override @Override
public NoiseSampler apply(Long seed) { public NoiseSampler build(long seed) {
try { try {
Map<String, Function> noiseFunctionMap = generateFunctions(seed); Map<String, Function> noiseFunctionMap = generateFunctions(seed);
return new ExpressionFunction(noiseFunctionMap, equation, vars); return new ExpressionFunction(noiseFunctionMap, equation, vars);
@ -71,14 +71,14 @@ public class ExpressionFunctionTemplate extends SamplerTemplate<ExpressionFuncti
otherFunctions.forEach((id, function) -> { otherFunctions.forEach((id, function) -> {
if(function.getDimensions() == 2) { if(function.getDimensions() == 2) {
noiseFunctionMap.put(id, new NoiseFunction2(function.apply(seed))); noiseFunctionMap.put(id, new NoiseFunction2(function.build(seed)));
} else noiseFunctionMap.put(id, new NoiseFunction3(function.apply(seed))); } else noiseFunctionMap.put(id, new NoiseFunction3(function.build(seed)));
}); });
functions.forEach((id, function) -> { functions.forEach((id, function) -> {
if(function.getDimensions() == 2) { if(function.getDimensions() == 2) {
noiseFunctionMap.put(id, new NoiseFunction2(function.apply(seed))); noiseFunctionMap.put(id, new NoiseFunction2(function.build(seed)));
} else noiseFunctionMap.put(id, new NoiseFunction3(function.apply(seed))); } else noiseFunctionMap.put(id, new NoiseFunction3(function.build(seed)));
}); });
return noiseFunctionMap; return noiseFunctionMap;

View File

@ -27,8 +27,8 @@ public class GaborNoiseTemplate extends NoiseTemplate<GaborNoiseSampler> {
private double f0 = 0.625; private double f0 = 0.625;
@Override @Override
public NoiseSampler apply(Long seed) { public NoiseSampler build(long seed) {
GaborNoiseSampler gaborNoiseSampler = new GaborNoiseSampler((int) (long) seed + salt); GaborNoiseSampler gaborNoiseSampler = new GaborNoiseSampler((int) seed + salt);
gaborNoiseSampler.setFrequency(frequency); gaborNoiseSampler.setFrequency(frequency);
gaborNoiseSampler.setRotation(rotation); gaborNoiseSampler.setRotation(rotation);
gaborNoiseSampler.setIsotropic(isotropic); gaborNoiseSampler.setIsotropic(isotropic);

View File

@ -13,8 +13,8 @@ public class SimpleNoiseTemplate extends NoiseTemplate<NoiseFunction> {
} }
@Override @Override
public NoiseSampler apply(Long seed) { public NoiseSampler build(long seed) {
NoiseFunction sampler = samplerSupplier.apply((int) (long) seed + salt); NoiseFunction sampler = samplerSupplier.apply((int) seed + salt);
sampler.setFrequency(frequency); sampler.setFrequency(frequency);
return sampler; return sampler;
} }

View File

@ -5,8 +5,8 @@ import com.dfsek.terra.api.noise.NoiseSampler;
public class BrownianMotionTemplate extends FractalTemplate<BrownianMotionSampler> { public class BrownianMotionTemplate extends FractalTemplate<BrownianMotionSampler> {
@Override @Override
public NoiseSampler apply(Long seed) { public NoiseSampler build(long seed) {
BrownianMotionSampler sampler = new BrownianMotionSampler((int) (long) seed, function.apply(seed)); BrownianMotionSampler sampler = new BrownianMotionSampler((int) seed, function.build(seed));
sampler.setGain(fractalGain); sampler.setGain(fractalGain);
sampler.setLacunarity(fractalLacunarity); sampler.setLacunarity(fractalLacunarity);
sampler.setOctaves(octaves); sampler.setOctaves(octaves);

View File

@ -12,8 +12,8 @@ public class PingPongTemplate extends FractalTemplate<PingPongSampler> {
private double pingPong = 2.0D; private double pingPong = 2.0D;
@Override @Override
public NoiseSampler apply(Long seed) { public NoiseSampler build(long seed) {
PingPongSampler sampler = new PingPongSampler((int) (long) seed, function.apply(seed)); PingPongSampler sampler = new PingPongSampler((int) seed, function.build(seed));
sampler.setGain(fractalGain); sampler.setGain(fractalGain);
sampler.setLacunarity(fractalLacunarity); sampler.setLacunarity(fractalLacunarity);
sampler.setOctaves(octaves); sampler.setOctaves(octaves);

View File

@ -5,8 +5,8 @@ import com.dfsek.terra.api.noise.NoiseSampler;
public class RidgedFractalTemplate extends FractalTemplate<RidgedFractalSampler> { public class RidgedFractalTemplate extends FractalTemplate<RidgedFractalSampler> {
@Override @Override
public NoiseSampler apply(Long seed) { public NoiseSampler build(long seed) {
RidgedFractalSampler sampler = new RidgedFractalSampler((int) (long) seed, function.apply(seed)); RidgedFractalSampler sampler = new RidgedFractalSampler((int) seed, function.build(seed));
sampler.setGain(fractalGain); sampler.setGain(fractalGain);
sampler.setLacunarity(fractalLacunarity); sampler.setLacunarity(fractalLacunarity);
sampler.setOctaves(octaves); sampler.setOctaves(octaves);

View File

@ -13,7 +13,7 @@ public class ClampNormalizerTemplate extends NormalizerTemplate<ClampNormalizer>
private double min; private double min;
@Override @Override
public NoiseSampler apply(Long seed) { public NoiseSampler build(long seed) {
return new ClampNormalizer(function.apply(seed), min, max); return new ClampNormalizer(function.build(seed), min, max);
} }
} }

View File

@ -13,7 +13,7 @@ public class LinearNormalizerTemplate extends NormalizerTemplate<LinearNormalize
private double min; private double min;
@Override @Override
public NoiseSampler apply(Long seed) { public NoiseSampler build(long seed) {
return new LinearNormalizer(function.apply(seed), min, max); return new LinearNormalizer(function.build(seed), min, max);
} }
} }

View File

@ -18,7 +18,7 @@ public class NormalNormalizerTemplate extends NormalizerTemplate<NormalNormalize
private int groups = 16384; private int groups = 16384;
@Override @Override
public NoiseSampler apply(Long seed) { public NoiseSampler build(long seed) {
return new NormalNormalizer(function.apply(seed), groups, mean, stdDev); return new NormalNormalizer(function.build(seed), groups, mean, stdDev);
} }
} }

View File

@ -30,10 +30,10 @@ public class ExpressionSampler implements NoiseSampler {
functions.forEach((id, noise) -> { functions.forEach((id, noise) -> {
switch(noise.getDimensions()) { switch(noise.getDimensions()) {
case 2: case 2:
parser.registerFunction(id, new NoiseFunction2(noise.apply(seed))); parser.registerFunction(id, new NoiseFunction2(noise.build(seed)));
break; break;
case 3: case 3:
parser.registerFunction(id, new NoiseFunction3(noise.apply(seed))); parser.registerFunction(id, new NoiseFunction3(noise.build(seed)));
break; break;
} }
}); });

View File

@ -9,7 +9,7 @@ import com.dfsek.terra.api.world.generator.Palette;
public class PaletteFactory implements ConfigFactory<PaletteTemplate, Palette> { public class PaletteFactory implements ConfigFactory<PaletteTemplate, Palette> {
@Override @Override
public Palette build(PaletteTemplate config, TerraPlugin main) { public Palette build(PaletteTemplate config, TerraPlugin main) {
NoisePalette palette = new NoisePalette(config.getNoise().apply(2403L), config.getNoise().getDimensions() == 2); NoisePalette palette = new NoisePalette(config.getNoise().build(2403L), config.getNoise().getDimensions() == 2);
for(PaletteLayerHolder layer : config.getPalette()) { for(PaletteLayerHolder layer : config.getPalette()) {
palette.add(layer.getLayer(), layer.getSize(), layer.getSampler()); palette.add(layer.getLayer(), layer.getSize(), layer.getSampler());
} }

View File

@ -33,7 +33,7 @@ public class PaletteLayerLoader implements TypeLoader<PaletteLayerHolder> {
NoiseSampler sampler = null; NoiseSampler sampler = null;
if(map.containsKey("noise")) { if(map.containsKey("noise")) {
sampler = configLoader.loadType(SeededNoiseSampler.class, map.get("noise")).apply(2403L); sampler = configLoader.loadType(SeededNoiseSampler.class, map.get("noise")).build(2403L);
} }
if(collection == null) throw new LoadException("Collection is null: " + map.get("materials")); if(collection == null) throw new LoadException("Collection is null: " + map.get("materials"));

View File

@ -23,6 +23,6 @@ public class FloraLayerLoader implements ObjectTemplate<FloraLayer> {
@Override @Override
public FloraLayer get() { public FloraLayer get() {
return new FloraLayer(density, y, items, distribution.apply(2403L)); return new FloraLayer(density, y, items, distribution.build(2403L));
} }
} }

View File

@ -22,6 +22,6 @@ public class TreeLayerTemplate implements ObjectTemplate<TreeLayer> {
@Override @Override
public TreeLayer get() { public TreeLayer get() {
return new TreeLayer(density, y, items, distribution.apply(2403L)); return new TreeLayer(density, y, items, distribution.build(2403L));
} }
} }

View File

@ -2,6 +2,6 @@ package com.dfsek.terra.api.util.seeded;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
public interface BiomeProviderBuilder { public interface BiomeProviderBuilder extends SeededBuilder<BiomeProvider> {
BiomeProvider build(long seed); BiomeProvider build(long seed);
} }

View File

@ -1,8 +1,6 @@
package com.dfsek.terra.api.util.seeded; package com.dfsek.terra.api.util.seeded;
import java.util.function.Function;
@FunctionalInterface @FunctionalInterface
public interface SeededBuilder<T> extends Function<Long, T> { public interface SeededBuilder<T> {
T build(long seed);
} }

View File

@ -6,7 +6,7 @@ public interface SeededNoiseSampler extends SeededBuilder<NoiseSampler> {
static SeededNoiseSampler zero(int dimensions) { static SeededNoiseSampler zero(int dimensions) {
return new SeededNoiseSampler() { return new SeededNoiseSampler() {
@Override @Override
public NoiseSampler apply(Long seed) { public NoiseSampler build(long seed) {
return NoiseSampler.zero(); return NoiseSampler.zero();
} }
@ -17,8 +17,5 @@ public interface SeededNoiseSampler extends SeededBuilder<NoiseSampler> {
}; };
} }
@Override
NoiseSampler apply(Long seed);
int getDimensions(); int getDimensions();
} }

View File

@ -34,7 +34,7 @@ public class WorldConfigImpl implements WorldConfig {
pack.getRegistryMap().forEach((clazz, pair) -> registryMap.put(clazz, new LockedRegistryImpl<>(pair.getLeft()))); pack.getRegistryMap().forEach((clazz, pair) -> registryMap.put(clazz, new LockedRegistryImpl<>(pair.getLeft())));
OpenRegistry<TerraBiome> biomeOpenRegistry = new OpenRegistryImpl<>(); OpenRegistry<TerraBiome> biomeOpenRegistry = new OpenRegistryImpl<>();
pack.getCheckedRegistry(SeededTerraBiome.class).forEach((id, biome) -> biomeOpenRegistry.register(id, biome.apply(world.getWorld().getSeed()))); pack.getCheckedRegistry(SeededTerraBiome.class).forEach((id, biome) -> biomeOpenRegistry.register(id, biome.build(world.getWorld().getSeed())));
registryMap.put(TerraBiome.class, new LockedRegistryImpl<>(biomeOpenRegistry)); registryMap.put(TerraBiome.class, new LockedRegistryImpl<>(biomeOpenRegistry));
this.provider = pack.getBiomeProviderBuilder().build(world.getWorld().getSeed()); this.provider = pack.getBiomeProviderBuilder().build(world.getWorld().getSeed());