From f0d03d4538d951dbe0aa7d5c0eb45274606175ea Mon Sep 17 00:00:00 2001 From: daoge_cmd <3523206925@qq.com> Date: Mon, 14 Oct 2024 21:34:23 +0800 Subject: [PATCH] feat: fallback to FLAT generator if config pack name is missing --- .../dfsek/terra/allay/TerraAllayPlugin.java | 2 +- .../generator/AllayGeneratorWrapper.java | 20 ++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) 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);