registered chunk generators in impl

This commit is contained in:
dfsek
2021-07-07 11:22:47 -07:00
parent 43395fef08
commit 2f55206cf0
5 changed files with 16 additions and 37 deletions

View File

@@ -27,6 +27,7 @@ import com.dfsek.terra.api.registry.meta.RegistryFactory;
import com.dfsek.terra.api.util.generic.pair.ImmutablePair;
import com.dfsek.terra.api.world.TerraWorld;
import com.dfsek.terra.api.util.seeded.BiomeProviderBuilder;
import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider;
import com.dfsek.terra.config.dummy.DummyWorld;
import com.dfsek.terra.config.fileloaders.FolderLoader;
import com.dfsek.terra.config.fileloaders.ZIPLoader;
@@ -362,4 +363,9 @@ public class ConfigPackImpl implements ConfigPack {
public RegistryFactory getRegistryFactory() {
return registryFactory;
}
@Override
public ChunkGeneratorProvider getGeneratorProvider() {
return template.getGeneratorProvider();
}
}

View File

@@ -5,6 +5,7 @@ import com.dfsek.tectonic.annotations.Value;
import com.dfsek.tectonic.config.ConfigTemplate;
import com.dfsek.terra.api.addon.TerraAddon;
import com.dfsek.terra.api.util.seeded.NoiseSeeded;
import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider;
import java.util.HashMap;
import java.util.HashSet;
@@ -84,6 +85,13 @@ public class ConfigPackTemplate implements ConfigTemplate {
@Default
private boolean disableFlora = false;
@Value("generator")
private ChunkGeneratorProvider generatorProvider;
public ChunkGeneratorProvider getGeneratorProvider() {
return generatorProvider;
}
public boolean disableCarvers() {
return disableCarvers;
}

View File

@@ -11,7 +11,7 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.generator.SamplerCache;
import com.dfsek.terra.registry.LockedRegistryImpl;
import com.dfsek.terra.registry.OpenRegistryImpl;
import com.dfsek.terra.world.generation.math.SamplerCacheImpl;
import com.dfsek.terra.world.SamplerCacheImpl;
import java.util.HashMap;
import java.util.Map;

View File

@@ -1,4 +1,4 @@
package com.dfsek.terra.addons.chunkgenerator.generation.math;
package com.dfsek.terra.world;
import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.util.MathUtil;

View File

@@ -1,35 +0,0 @@
package com.dfsek.terra.world.carving;
import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.block.state.BlockState;
import com.dfsek.terra.api.util.Range;
import com.dfsek.terra.api.world.ChunkAccess;
import com.dfsek.terra.api.world.World;
import com.dfsek.terra.api.world.Carver;
import com.dfsek.terra.api.world.generator.ChunkInterpolator;
import com.dfsek.terra.world.generation.math.interpolation.ChunkInterpolator3D;
public class NoiseCarver implements Carver {
private final Range range;
private final BlockState data;
private final TerraPlugin main;
public NoiseCarver(Range range, BlockState data, TerraPlugin main) {
this.range = range;
this.data = data;
this.main = main;
}
@Override
public void carve(World world, int chunkX, int chunkZ, ChunkAccess chunk) {
ChunkInterpolator interpolator = new ChunkInterpolator3D(world, chunkX, chunkZ, main.getWorld(world).getBiomeProvider(), (gen, coord) -> gen.getCarver().getNoise(coord.setY(coord.getY())));
for(int y : range) {
for(int x = 0; x < 16; x++) {
for(int z = 0; z < 16; z++) {
double n = interpolator.getNoise(x, y, z);
if(n > 0) chunk.setBlock(x, y, z, data);
}
}
}
}
}