diff --git a/platforms/allay/src/main/java/com/dfsek/terra/allay/TerraAllayPlugin.java b/platforms/allay/src/main/java/com/dfsek/terra/allay/TerraAllayPlugin.java index cf0997e1b..615b168be 100644 --- a/platforms/allay/src/main/java/com/dfsek/terra/allay/TerraAllayPlugin.java +++ b/platforms/allay/src/main/java/com/dfsek/terra/allay/TerraAllayPlugin.java @@ -31,7 +31,7 @@ public class TerraAllayPlugin extends Plugin { // TODO: adapt command manager pluginLogger.info("Registering generator..."); - Registries.WORLD_GENERATOR_FACTORIES.register("TERRA", preset -> new AllayGeneratorWrapper(preset).getAllayWorldGenerator()); + Registries.WORLD_GENERATOR_FACTORIES.register("TERRA", AllayGeneratorWrapper::createWorldGenerator); pluginLogger.info("Terra started"); } diff --git a/platforms/allay/src/main/java/com/dfsek/terra/allay/generator/AllayGeneratorWrapper.java b/platforms/allay/src/main/java/com/dfsek/terra/allay/generator/AllayGeneratorWrapper.java index e1f71ba88..127c904b6 100644 --- a/platforms/allay/src/main/java/com/dfsek/terra/allay/generator/AllayGeneratorWrapper.java +++ b/platforms/allay/src/main/java/com/dfsek/terra/allay/generator/AllayGeneratorWrapper.java @@ -2,6 +2,7 @@ package com.dfsek.terra.allay.generator; import com.dfsek.terra.api.world.chunk.generation.stage.GenerationStage; +import org.allaymc.api.registry.Registries; import org.allaymc.api.utils.AllayStringUtils; import org.allaymc.api.world.biome.BiomeType; import org.allaymc.api.world.chunk.UnsafeChunk; @@ -31,7 +32,6 @@ import com.dfsek.terra.api.world.info.WorldProperties; */ public class AllayGeneratorWrapper implements GeneratorWrapper { - protected static final String DEFAULT_PACK_NAME = "overworld"; protected static final String OPTION_PACK_NAME = "pack"; protected static final String OPTION_SEED = "seed"; @@ -43,9 +43,23 @@ public class AllayGeneratorWrapper implements GeneratorWrapper { protected WorldProperties worldProperties; protected AllayServerWorld allayServerWorld; - public AllayGeneratorWrapper(String preset) { + public static WorldGenerator createWorldGenerator(String preset) { + try { + AllayGeneratorWrapper wrapper = new AllayGeneratorWrapper(preset); + return wrapper.getAllayWorldGenerator(); + } catch (IllegalArgumentException e) { + TerraAllayPlugin.INSTANCE.getPluginLogger().error("Fail to create world generator with preset: {}", preset); + TerraAllayPlugin.INSTANCE.getPluginLogger().error("Reason: {}", e.getMessage()); + return Registries.WORLD_GENERATOR_FACTORIES.get("FLAT").apply(""); + } + } + + protected AllayGeneratorWrapper(String preset) { Map options = AllayStringUtils.parseOptions(preset); - String packName = options.getOrDefault(OPTION_PACK_NAME, DEFAULT_PACK_NAME); + String packName = options.get(OPTION_PACK_NAME); + if(packName == null) { + throw new IllegalArgumentException("Missing config pack name"); + } this.seed = Long.parseLong(options.getOrDefault(OPTION_SEED, "0")); this.configPack = createConfigPack(packName); this.chunkGenerator = createGenerator(this.configPack);