BlockPopulator -> GenerationStage

This commit is contained in:
dfsek
2021-07-08 09:56:19 -07:00
parent 719ea83bcd
commit 8dcd50d3fb
18 changed files with 33 additions and 33 deletions

View File

@@ -12,14 +12,14 @@ import com.dfsek.terra.api.world.Chunk;
import com.dfsek.terra.api.world.TerraWorld;
import com.dfsek.terra.api.world.World;
import com.dfsek.terra.api.world.generator.Chunkified;
import com.dfsek.terra.api.world.generator.TerraBlockPopulator;
import com.dfsek.terra.api.world.generator.TerraGenerationStage;
import org.jetbrains.annotations.NotNull;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
public class CavePopulator implements TerraBlockPopulator, Chunkified {
public class CavePopulator implements TerraGenerationStage, Chunkified {
private static final Map<BlockType, BlockState> shiftStorage = new HashMap<>(); // Persist BlockData created for shifts, to avoid re-calculating each time.
private final TerraPlugin main;

View File

@@ -17,7 +17,7 @@ import com.dfsek.terra.api.world.biome.TerraBiome;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.generator.ChunkData;
import com.dfsek.terra.api.world.generator.Sampler;
import com.dfsek.terra.api.world.generator.TerraBlockPopulator;
import com.dfsek.terra.api.world.generator.TerraGenerationStage;
import com.dfsek.terra.api.world.generator.TerraChunkGenerator;
import org.jetbrains.annotations.NotNull;
@@ -28,7 +28,7 @@ import java.util.Random;
public class NoiseChunkGenerator3D implements TerraChunkGenerator {
private final ConfigPack configPack;
private final TerraPlugin main;
private final List<TerraBlockPopulator> blockPopulators = new ArrayList<>();
private final List<TerraGenerationStage> blockPopulators = new ArrayList<>();
public NoiseChunkGenerator3D(ConfigPack c, TerraPlugin main) {
this.configPack = c;
@@ -145,7 +145,7 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator {
}
@Override
public List<TerraBlockPopulator> getPopulators() {
public List<TerraGenerationStage> getGenerationStages() {
return blockPopulators;
}
}

View File

@@ -9,7 +9,7 @@ import com.dfsek.terra.api.event.EventListener;
import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent;
import com.dfsek.terra.api.injection.annotations.Inject;
import com.dfsek.terra.api.registry.exception.DuplicateEntryException;
import com.dfsek.terra.api.world.generator.BlockPopulatorProvider;
import com.dfsek.terra.api.world.generator.GenerationStageProvider;
@Addon("core-flora-config")
@Author("Terra")
@@ -25,6 +25,6 @@ public class FloraAddon extends TerraAddon implements EventListener {
public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException {
event.getPack().registerConfigType(new FloraConfigType(event.getPack()), "FLORA", 2);
event.getPack().getOrCreateRegistry(BlockPopulatorProvider.class).register("FLORA", pack -> new FloraPopulator(main));
event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("FLORA", pack -> new FloraPopulator(main));
}
}

View File

@@ -5,13 +5,13 @@ import com.dfsek.terra.api.profiler.ProfileFrame;
import com.dfsek.terra.api.world.Chunk;
import com.dfsek.terra.api.world.TerraWorld;
import com.dfsek.terra.api.world.World;
import com.dfsek.terra.api.world.generator.TerraBlockPopulator;
import com.dfsek.terra.api.world.generator.TerraGenerationStage;
import org.jetbrains.annotations.NotNull;
/**
* Populates Flora
*/
public class FloraPopulator implements TerraBlockPopulator {
public class FloraPopulator implements TerraGenerationStage {
private final TerraPlugin main;
public FloraPopulator(TerraPlugin main) {

View File

@@ -9,7 +9,7 @@ import com.dfsek.terra.api.event.EventListener;
import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent;
import com.dfsek.terra.api.injection.annotations.Inject;
import com.dfsek.terra.api.registry.exception.DuplicateEntryException;
import com.dfsek.terra.api.world.generator.BlockPopulatorProvider;
import com.dfsek.terra.api.world.generator.GenerationStageProvider;
@Addon("core-ore-config")
@@ -26,6 +26,6 @@ public class OreAddon extends TerraAddon implements EventListener {
public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException {
event.getPack().registerConfigType(new OreConfigType(event.getPack()), "ORE", 1);
event.getPack().getOrCreateRegistry(BlockPopulatorProvider.class).register("ORE", pack -> new OrePopulator(main));
event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("ORE", pack -> new OrePopulator(main));
}
}

View File

@@ -7,12 +7,12 @@ import com.dfsek.terra.api.world.Chunk;
import com.dfsek.terra.api.world.TerraWorld;
import com.dfsek.terra.api.world.World;
import com.dfsek.terra.api.world.biome.TerraBiome;
import com.dfsek.terra.api.world.generator.TerraBlockPopulator;
import com.dfsek.terra.api.world.generator.TerraGenerationStage;
import org.jetbrains.annotations.NotNull;
import java.util.Random;
public class OrePopulator implements TerraBlockPopulator {
public class OrePopulator implements TerraGenerationStage {
private final TerraPlugin main;
public OrePopulator(TerraPlugin main) {

View File

@@ -12,13 +12,13 @@ import com.dfsek.terra.api.world.TerraWorld;
import com.dfsek.terra.api.world.World;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.generator.Chunkified;
import com.dfsek.terra.api.world.generator.TerraBlockPopulator;
import com.dfsek.terra.api.world.generator.TerraGenerationStage;
import net.jafama.FastMath;
import org.jetbrains.annotations.NotNull;
import java.util.Random;
public class StructurePopulator implements TerraBlockPopulator, Chunkified {
public class StructurePopulator implements TerraGenerationStage, Chunkified {
private final TerraPlugin main;
public StructurePopulator(TerraPlugin main) {

View File

@@ -9,7 +9,7 @@ import com.dfsek.terra.api.event.EventListener;
import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent;
import com.dfsek.terra.api.injection.annotations.Inject;
import com.dfsek.terra.api.registry.exception.DuplicateEntryException;
import com.dfsek.terra.api.world.generator.BlockPopulatorProvider;
import com.dfsek.terra.api.world.generator.GenerationStageProvider;
@Addon("core-tree-config")
@Author("Terra")
@@ -25,6 +25,6 @@ public class TreeAddon extends TerraAddon implements EventListener {
public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException {
event.getPack().registerConfigType(new TreeConfigType(event.getPack()), "TREE", 2);
event.getPack().getOrCreateRegistry(BlockPopulatorProvider.class).register("TREE", pack -> new TreePopulator(main));
event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("TREE", pack -> new TreePopulator(main));
}
}

View File

@@ -7,14 +7,14 @@ import com.dfsek.terra.api.world.Chunk;
import com.dfsek.terra.api.world.TerraWorld;
import com.dfsek.terra.api.world.World;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.generator.TerraBlockPopulator;
import com.dfsek.terra.api.world.generator.TerraGenerationStage;
import net.jafama.FastMath;
import org.jetbrains.annotations.NotNull;
import java.util.Random;
public class TreePopulator implements TerraBlockPopulator {
public class TreePopulator implements TerraGenerationStage {
private final TerraPlugin main;
public TreePopulator(TerraPlugin main) {

View File

@@ -1,7 +0,0 @@
package com.dfsek.terra.api.world.generator;
import com.dfsek.terra.api.config.ConfigPack;
public interface BlockPopulatorProvider {
TerraBlockPopulator newInstance(ConfigPack pack);
}

View File

@@ -6,6 +6,6 @@ import com.dfsek.terra.api.world.World;
import java.util.Random;
public interface BlockPopulator extends Handle {
public interface GenerationStage extends Handle {
void populate(World world, Random random, Chunk chunk);
}

View File

@@ -0,0 +1,7 @@
package com.dfsek.terra.api.world.generator;
import com.dfsek.terra.api.config.ConfigPack;
public interface GenerationStageProvider {
TerraGenerationStage newInstance(ConfigPack pack);
}

View File

@@ -21,5 +21,5 @@ public interface TerraChunkGenerator {
Sampler createSampler(int chunkX, int chunkZ, BiomeProvider provider, World world, int elevationSmooth);
List<TerraBlockPopulator> getPopulators();
List<TerraGenerationStage> getGenerationStages();
}

View File

@@ -3,6 +3,6 @@ package com.dfsek.terra.api.world.generator;
import com.dfsek.terra.api.world.Chunk;
import com.dfsek.terra.api.world.World;
public interface TerraBlockPopulator {
public interface TerraGenerationStage {
void populate(World world, Chunk chunk);
}

View File

@@ -19,7 +19,7 @@ public class BukkitPopulatorWrapper extends BlockPopulator {
@Override
public void populate(@NotNull World world, @NotNull Random random, @NotNull Chunk source) {
delegate.getPopulators().forEach(populator -> {
delegate.getGenerationStages().forEach(populator -> {
if(populator instanceof Chunkified) {
populator.populate(BukkitAdapter.adapt(world), BukkitAdapter.adapt(source));
}

View File

@@ -64,7 +64,7 @@ public class PopulationManager extends BlockPopulator {
long zRand = (random.nextLong() / 2L << 1L) + 1L;
random.setSeed((long) x * xRand + (long) z * zRand ^ w.getSeed());
Chunk currentChunk = w.getChunkAt(x, z);
generator.getPopulators().forEach(populator -> {
generator.getGenerationStages().forEach(populator -> {
if(!(populator instanceof Chunkified)) {
populator.populate(w, currentChunk);
}

View File

@@ -146,7 +146,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener
return CompletableFuture.supplyAsync(() -> {
World world = (World) ((StructureAccessorAccessor) accessor).getWorld();
delegate.generateChunkData(world, new FastRandom(), chunk.getPos().x, chunk.getPos().z, (ChunkData) chunk);
delegate.getPopulators().forEach(populator -> {
delegate.getGenerationStages().forEach(populator -> {
if(populator instanceof Chunkified) {
populator.populate(world, (com.dfsek.terra.api.world.Chunk) world);
}

View File

@@ -24,7 +24,7 @@ public class PopulatorFeature extends Feature<DefaultFeatureConfig> {
if(!(chunkGenerator instanceof FabricChunkGeneratorWrapper)) return true;
StructureWorldAccess world = context.getWorld();
FabricChunkGeneratorWrapper gen = (FabricChunkGeneratorWrapper) chunkGenerator;
gen.getHandle().getPopulators().forEach(populator -> {
gen.getHandle().getGenerationStages().forEach(populator -> {
if(!(populator instanceof Chunkified)) {
populator.populate((World) world, (Chunk) world);
}