From 05d332863f6fdc85664e41fa3313d9188f35421e Mon Sep 17 00:00:00 2001 From: Frank Date: Sat, 8 Oct 2022 11:14:31 +0200 Subject: [PATCH] Catch on dimension loading code and return default. (#44) --- .../worldPreset/TogetherWorldPreset.java | 39 +++++++++++-------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/src/main/java/org/betterx/worlds/together/worldPreset/TogetherWorldPreset.java b/src/main/java/org/betterx/worlds/together/worldPreset/TogetherWorldPreset.java index 4810188b..378be2b9 100644 --- a/src/main/java/org/betterx/worlds/together/worldPreset/TogetherWorldPreset.java +++ b/src/main/java/org/betterx/worlds/together/worldPreset/TogetherWorldPreset.java @@ -105,26 +105,31 @@ public class TogetherWorldPreset extends WorldPreset { private static DimensionsWrapper DEFAULT_DIMENSIONS_WRAPPER = null; public static @NotNull Map, ChunkGenerator> loadWorldDimensions() { - final RegistryAccess registryAccess = WorldBootstrap.getLastRegistryAccessOrElseBuiltin(); - if (registryAccess == BuiltinRegistries.ACCESS && Configs.MAIN_CONFIG.verboseLogging()) { - BCLib.LOGGER.info("Loading from builtin Registry"); - } - final RegistryOps registryOps = RegistryOps.create(NbtOps.INSTANCE, registryAccess); - if (DEFAULT_DIMENSIONS_WRAPPER == null) { - DEFAULT_DIMENSIONS_WRAPPER = new DimensionsWrapper(TogetherWorldPreset.getDimensionsMap(WorldPresets.getDEFAULT())); - } + try { + final RegistryAccess registryAccess = WorldBootstrap.getLastRegistryAccessOrElseBuiltin(); + if (registryAccess == BuiltinRegistries.ACCESS && Configs.MAIN_CONFIG.verboseLogging()) { + BCLib.LOGGER.info("Loading from builtin Registry"); + } + final RegistryOps registryOps = RegistryOps.create(NbtOps.INSTANCE, registryAccess); + if (DEFAULT_DIMENSIONS_WRAPPER == null) { + DEFAULT_DIMENSIONS_WRAPPER = new DimensionsWrapper(TogetherWorldPreset.getDimensionsMap(WorldPresets.getDEFAULT())); + } - CompoundTag presetNBT = WorldGenUtil.getPresetsNbt(); - if (!presetNBT.contains("dimensions")) { + CompoundTag presetNBT = WorldGenUtil.getPresetsNbt(); + if (!presetNBT.contains("dimensions")) { + return DEFAULT_DIMENSIONS_WRAPPER.dimensions; + } + + Optional oLevelStem = DimensionsWrapper.CODEC + .parse(new Dynamic<>(registryOps, presetNBT)) + .resultOrPartial(WorldsTogether.LOGGER::error); + + + return oLevelStem.orElse(DEFAULT_DIMENSIONS_WRAPPER).dimensions; + } catch (Exception e) { + BCLib.LOGGER.error("Failed to load Dimensions", e); return DEFAULT_DIMENSIONS_WRAPPER.dimensions; } - - Optional oLevelStem = DimensionsWrapper.CODEC - .parse(new Dynamic<>(registryOps, presetNBT)) - .resultOrPartial(WorldsTogether.LOGGER::error); - - - return oLevelStem.orElse(DEFAULT_DIMENSIONS_WRAPPER).dimensions; } public static Registry getDimensions(ResourceKey key) {