@Override public List<WorldGeneratorInfo> get() { // grab all the module names and their dependencies // This grabs modules from `config.getDefaultModSelection()` which is updated in AdvancedGameSetupScreen final Set<Name> enabledModuleNames = new HashSet<>(getAllEnabledModuleNames()); final List<WorldGeneratorInfo> result = Lists.newArrayList(); for (WorldGeneratorInfo option : worldGeneratorManager.getWorldGenerators()) { if (enabledModuleNames.contains(option.getUri().getModuleName())) { result.add(option); } } return result; } });
@Override public WorldGeneratorInfo get() { // get the default generator from the config. This is likely to have a user triggered selection. WorldGeneratorInfo info = worldGeneratorManager.getWorldGeneratorInfo(config.getWorldGeneration().getDefaultGenerator()); if (info != null && getAllEnabledModuleNames().contains(info.getUri().getModuleName())) { return info; } // just use the first available generator for (WorldGeneratorInfo worldGenInfo : worldGeneratorManager.getWorldGenerators()) { if (getAllEnabledModuleNames().contains(worldGenInfo.getUri().getModuleName())) { set(worldGenInfo); return worldGenInfo; } } return null; }
private void setDefaultGeneratorOfGameplayModule(Module module) { // Set the default generator of the selected gameplay module SimpleUri defaultWorldGenerator = StandardModuleExtension.getDefaultWorldGenerator(module); if (defaultWorldGenerator != null) { for (WorldGeneratorInfo worldGenInfo : worldGeneratorManager.getWorldGenerators()) { if (worldGenInfo.getUri().equals(defaultWorldGenerator)) { config.getWorldGeneration().setDefaultGenerator(worldGenInfo.getUri()); } } } config.save(); }
} catch (UnresolvedWorldGeneratorException e) { logger.error("Unable to load world generator {}. Available world generators: {}", worldInfo.getWorldGenerator(), worldGeneratorManager.getWorldGenerators()); context.get(GameEngine.class).changeState(new StateMainMenu("Failed to resolve world generator.")); return true; // We need to return true, otherwise the loading state will just call us again immediately