Catch on dimension loading code and return default. (#44)

This commit is contained in:
Frank 2022-10-08 11:14:31 +02:00
parent bfb050fe0c
commit 05d332863f

View file

@ -105,26 +105,31 @@ public class TogetherWorldPreset extends WorldPreset {
private static DimensionsWrapper DEFAULT_DIMENSIONS_WRAPPER = null; private static DimensionsWrapper DEFAULT_DIMENSIONS_WRAPPER = null;
public static @NotNull Map<ResourceKey<LevelStem>, ChunkGenerator> loadWorldDimensions() { public static @NotNull Map<ResourceKey<LevelStem>, ChunkGenerator> loadWorldDimensions() {
final RegistryAccess registryAccess = WorldBootstrap.getLastRegistryAccessOrElseBuiltin(); try {
if (registryAccess == BuiltinRegistries.ACCESS && Configs.MAIN_CONFIG.verboseLogging()) { final RegistryAccess registryAccess = WorldBootstrap.getLastRegistryAccessOrElseBuiltin();
BCLib.LOGGER.info("Loading from builtin Registry"); if (registryAccess == BuiltinRegistries.ACCESS && Configs.MAIN_CONFIG.verboseLogging()) {
} BCLib.LOGGER.info("Loading from builtin Registry");
final RegistryOps<Tag> registryOps = RegistryOps.create(NbtOps.INSTANCE, registryAccess); }
if (DEFAULT_DIMENSIONS_WRAPPER == null) { final RegistryOps<Tag> registryOps = RegistryOps.create(NbtOps.INSTANCE, registryAccess);
DEFAULT_DIMENSIONS_WRAPPER = new DimensionsWrapper(TogetherWorldPreset.getDimensionsMap(WorldPresets.getDEFAULT())); if (DEFAULT_DIMENSIONS_WRAPPER == null) {
} DEFAULT_DIMENSIONS_WRAPPER = new DimensionsWrapper(TogetherWorldPreset.getDimensionsMap(WorldPresets.getDEFAULT()));
}
CompoundTag presetNBT = WorldGenUtil.getPresetsNbt(); CompoundTag presetNBT = WorldGenUtil.getPresetsNbt();
if (!presetNBT.contains("dimensions")) { if (!presetNBT.contains("dimensions")) {
return DEFAULT_DIMENSIONS_WRAPPER.dimensions;
}
Optional<DimensionsWrapper> 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; return DEFAULT_DIMENSIONS_WRAPPER.dimensions;
} }
Optional<DimensionsWrapper> oLevelStem = DimensionsWrapper.CODEC
.parse(new Dynamic<>(registryOps, presetNBT))
.resultOrPartial(WorldsTogether.LOGGER::error);
return oLevelStem.orElse(DEFAULT_DIMENSIONS_WRAPPER).dimensions;
} }
public static Registry<LevelStem> getDimensions(ResourceKey<WorldPreset> key) { public static Registry<LevelStem> getDimensions(ResourceKey<WorldPreset> key) {