Add the generatorMode to IDhApiWorldGenerator.generate()

This commit is contained in:
James Seibel
2022-12-10 22:08:16 -06:00
parent 0ab0aeeec6
commit c3c170d07a
4 changed files with 13 additions and 10 deletions
@@ -1,6 +1,7 @@
package com.seibel.lod.api.interfaces.override.worldGenerator;
import com.seibel.lod.api.enums.EDhApiDetailLevel;
import com.seibel.lod.api.enums.worldGeneration.EDhApiDistantGeneratorMode;
import com.seibel.lod.api.enums.worldGeneration.EDhApiWorldGenThreadMode;
import com.seibel.lod.api.interfaces.override.IDhApiOverrideable;
@@ -10,7 +11,7 @@ import java.util.function.Consumer;
/**
* @author James Seibel
* @version 2022-12-6
* @version 2022-12-10
*/
public interface IDhApiWorldGenerator extends Closeable, IDhApiOverrideable
{
@@ -20,7 +21,7 @@ public interface IDhApiWorldGenerator extends Closeable, IDhApiOverrideable
/**
* Returns which thread chunk generation requests will be run on. <br>
* TODO: only {@link EDhApiWorldGenThreadMode#MULTI_THREADED} is supported currently
* TODO: only {@link EDhApiWorldGenThreadMode#SINGLE_THREADED} is currently supported
*/
EDhApiWorldGenThreadMode getThreadingMode();
@@ -95,7 +96,7 @@ public interface IDhApiWorldGenerator extends Closeable, IDhApiOverrideable
* @throws ClassCastException if incompatible objects are passed into the resultConsumer.
*/
CompletableFuture<Void> generateChunks(int chunkPosMinX, int chunkPosMinZ,
byte granularity, byte targetDataDetail,
byte granularity, byte targetDataDetail, EDhApiDistantGeneratorMode generatorMode,
Consumer<Object[]> resultConsumer) throws ClassCastException;
@@ -24,7 +24,7 @@ import com.seibel.lod.api.interfaces.override.worldGenerator.IDhApiWorldGenerato
import com.seibel.lod.core.interfaces.dependencyInjection.IOverrideInjector;
import com.seibel.lod.core.level.IDhLevel;
import com.seibel.lod.core.config.Config;
import com.seibel.lod.api.enums.config.EDistanceGenerationMode;
import com.seibel.lod.api.enums.worldGeneration.EDhApiDistantGeneratorMode;
import com.seibel.lod.core.dependencyInjection.SingletonInjector;
import com.seibel.lod.core.logging.DhLoggerBuilder;
import com.seibel.lod.core.util.BitShiftUtil;
@@ -96,13 +96,12 @@ public class BatchGenerator implements IDhApiWorldGenerator
//===================//
@Override
public CompletableFuture<Void> generateChunks(int chunkPosMinX, int chunkPosMinZ, byte granularity, byte targetDataDetail, Consumer<Object[]> resultConsumer)
public CompletableFuture<Void> generateChunks(int chunkPosMinX, int chunkPosMinZ, byte granularity, byte targetDataDetail, EDhApiDistantGeneratorMode generatorMode, Consumer<Object[]> resultConsumer)
{
EDistanceGenerationMode mode = Config.Client.WorldGenerator.distanceGenerationMode.get();
Steps targetStep = null;
switch (mode)
switch (generatorMode)
{
case NONE:
case PRE_EXISTING_ONLY:
targetStep = Steps.Empty; // NOTE: Only load in existing chunks. No new chunk generation
break;
case BIOME_ONLY:
@@ -1,5 +1,6 @@
package com.seibel.lod.core.generation;
import com.seibel.lod.api.enums.worldGeneration.EDhApiDistantGeneratorMode;
import com.seibel.lod.api.interfaces.override.worldGenerator.IDhApiWorldGenerator;
import com.seibel.lod.core.config.Config;
import com.seibel.lod.core.datatype.full.ChunkSizedData;
@@ -527,7 +528,8 @@ public class WorldGenerationQueue implements Closeable
byte granularity, byte targetDataDetail,
Consumer<ChunkSizedData> resultConsumer)
{
return worldGenerator.generateChunks(chunkPosMin.x, chunkPosMin.z, granularity, targetDataDetail, (objectArray) ->
EDhApiDistantGeneratorMode generatorMode = Config.Client.WorldGenerator.distantGeneratorMode.get();
return worldGenerator.generateChunks(chunkPosMin.x, chunkPosMin.z, granularity, targetDataDetail, generatorMode, (objectArray) ->
{
try
{
@@ -1,5 +1,6 @@
package testItems.worldGeneratorInjection.objects;
import com.seibel.lod.api.enums.worldGeneration.EDhApiDistantGeneratorMode;
import com.seibel.lod.api.enums.worldGeneration.EDhApiWorldGenThreadMode;
import com.seibel.lod.api.interfaces.override.worldGenerator.IDhApiWorldGenerator;
import com.seibel.lod.core.DependencyInjection.OverrideInjector;
@@ -60,7 +61,7 @@ public class TestWorldGenerator implements IDhApiWorldGenerator
public boolean isBusy() { return false; }
@Override
public CompletableFuture<Void> generateChunks(int chunkPosMinX, int chunkPosMinZ, byte granularity, byte targetDataDetail, Consumer<Object[]> resultConsumer) { return null; }
public CompletableFuture<Void> generateChunks(int chunkPosMinX, int chunkPosMinZ, byte granularity, byte targetDataDetail, EDhApiDistantGeneratorMode maxGenerationStep, Consumer<Object[]> resultConsumer) { return null; }
@Override
public void preGeneratorTaskStart() { }