@@ -174,12 +174,12 @@ private void loadNewWorldConfigs(Collection<WorldConfig> newWorldConfigs) {
174174
175175 private void removeWorldsNotInConfigs (Collection <String > removedWorlds ) {
176176 removedWorlds .forEach (worldName -> getWorld (worldName )
177- .fold (
178- ( ) -> Attempt . failure ( FailureReason . GENERIC , Message . of ( "world already removed" )),
179- world -> removeWorld ( RemoveWorldOptions . world ( world ))
180- )
181- .onFailure ( failure -> Logging . severe ( "Failed to unload world %s: %s" , worldName , failure ))
182- . onSuccess ( success -> Logging .fine ("Unloaded world %s as it was removed from config" , worldName )));
177+ .map ( world -> removeWorld ( RemoveWorldOptions . world ( world )))
178+ . getOrElse (( ) -> worldActionResult ( RemoveFailureReason . WORLD_NON_EXISTENT , worldName ))
179+ . onFailure ( failure ->
180+ Logging . severe ( "Failed to unload world %s: %s" , worldName , failure ) )
181+ .onSuccess ( success ->
182+ Logging .fine ("Unloaded world %s as it was removed from config" , worldName )));
183183 }
184184
185185 /**
@@ -208,30 +208,29 @@ private void importExistingWorlds() {
208208 }
209209
210210 private void importExistingBukkitWorld (World bukkitWorld ) {
211- if ( bukkitWorld == null || isWorld ( bukkitWorld . getName ())) {
212- return ;
213- }
214- importWorld ( ImportWorldOptions .worldName (bukkitWorld .getName ())
215- .environment (bukkitWorld .getEnvironment ())
216- .generator (generatorProvider .getDefaultGeneratorForWorld (bukkitWorld .getName ())))
217- .onFailure (failure ->
218- Logging .severe ("Failed to import world %s: %s" , bukkitWorld .getName (), failure ))
219- .onSuccess (success ->
220- Logging .fine ("Imported existing world %s" , bukkitWorld .getName ()));
211+ Option . of ( bukkitWorld )
212+ . filter ( world -> ! isWorld ( world . getName ()))
213+ . map ( world -> importWorld (
214+ ImportWorldOptions .worldName (world .getName ())
215+ .environment (world .getEnvironment ())
216+ .generator (generatorProvider .getDefaultGeneratorForWorld (world .getName ())))
217+ .onFailure (failure ->
218+ Logging .severe ("Failed to import world %s: %s" , world .getName (), failure ))
219+ .onSuccess (newMVWorld ->
220+ Logging .fine ("Imported existing world %s" , newMVWorld .getName () )));
221221 }
222222
223223 /**
224224 * Loads all worlds that are set to autoload.
225225 */
226226 private void autoLoadWorlds () {
227- getWorlds ().forEach (world -> {
228- if (isLoadedWorld (world ) || !world .isAutoLoad ()) {
229- return ;
230- }
231- loadWorld (LoadWorldOptions .world (world ))
232- .onFailure (failure ->
233- Logging .severe ("Failed to load world %s: %s" , world .getName (), failure ));
234- });
227+ getWorlds ().stream ()
228+ .filter (world -> !isLoadedWorld (world ) && world .isAutoLoad ())
229+ .forEach (world -> loadWorld (LoadWorldOptions .world (world ))
230+ .onFailure (failure ->
231+ Logging .severe ("Failed to autoload world %s: %s" , world .getName (), failure ))
232+ .onSuccess (newMVWorld ->
233+ Logging .fine ("Autoloaded world %s" , newMVWorld .getName ())));
235234 }
236235
237236 /**
@@ -272,15 +271,12 @@ private Attempt<LoadedMultiverseWorld, CreateFailureReason> doCreateWorld(
272271 .mapAttempt (creator -> addGeneratorToCreator (creator , generatorString ))
273272 .mapAttempt (this ::createBukkitWorld )
274273 .transform (CreateFailureReason .WORLD_CREATOR_FAILED )
275- .map (bukkitWorld -> {
276- LoadedMultiverseWorld loadedWorld = newLoadedMultiverseWorld (
274+ .map (bukkitWorld -> newLoadedMultiverseWorld (
277275 bukkitWorld ,
278276 generatorString ,
279277 options .biome (),
280- options .useSpawnAdjust ());
281- pluginManager .callEvent (new MVWorldCreatedEvent (loadedWorld ));
282- return loadedWorld ;
283- });
278+ options .useSpawnAdjust ()))
279+ .peek (loadedWorld -> pluginManager .callEvent (new MVWorldCreatedEvent (loadedWorld )));
284280 }
285281
286282 /**
@@ -296,14 +292,9 @@ public Attempt<LoadedMultiverseWorld, ImportFailureReason> importWorld(ImportWor
296292 } else if (isWorld (worldName )) {
297293 return worldActionResult (ImportFailureReason .WORLD_EXIST_UNLOADED , worldName );
298294 }
299-
300- World bukkitWorld = Bukkit .getWorld (worldName );
301- if (bukkitWorld != null ) {
302- // World is already loaded, maybe by another plugin
303- return doImportBukkitWorld (options , bukkitWorld );
304- }
305-
306- return validateImportWorldOptions (options ).mapAttempt (this ::doImportWorld );
295+ return Option .of (Bukkit .getWorld (worldName ))
296+ .map (bukkitWorld -> doImportBukkitWorld (options , bukkitWorld ))
297+ .getOrElse (() -> validateImportWorldOptions (options ).mapAttempt (this ::doImportWorld ));
307298 }
308299
309300 private Attempt <ImportWorldOptions , ImportFailureReason > validateImportWorldOptions (ImportWorldOptions options ) {
@@ -326,15 +317,12 @@ private Attempt<LoadedMultiverseWorld, ImportFailureReason> doImportWorld(
326317 .mapAttempt (creator -> addGeneratorToCreator (creator , generatorString ))
327318 .mapAttempt (this ::createBukkitWorld )
328319 .transform (ImportFailureReason .WORLD_CREATOR_FAILED )
329- .map (bukkitWorld -> {
330- LoadedMultiverseWorld loadedWorld = newLoadedMultiverseWorld (
331- bukkitWorld ,
332- generatorString ,
333- options .biome (),
334- options .useSpawnAdjust ());
335- pluginManager .callEvent (new MVWorldImportedEvent (loadedWorld ));
336- return loadedWorld ;
337- });
320+ .map (bukkitWorld -> newLoadedMultiverseWorld (
321+ bukkitWorld ,
322+ generatorString ,
323+ options .biome (),
324+ options .useSpawnAdjust ()))
325+ .peek (loadedWorld -> pluginManager .callEvent (new MVWorldImportedEvent (loadedWorld )));
338326 }
339327
340328 private Attempt <LoadedMultiverseWorld , ImportFailureReason > doImportBukkitWorld (ImportWorldOptions options , World bukkitWorld ) {
@@ -701,12 +689,13 @@ private Attempt<String, DeleteFailureReason> doDeleteWorld(@NotNull LoadedMultiv
701689
702690 private Attempt <File , DeleteFailureReason > validateWorldToDelete (
703691 @ NotNull LoadedMultiverseWorld world ) {
704- File worldFolder = world .getBukkitWorld ().map (World ::getWorldFolder ).getOrNull ();
705- if (worldFolder == null || !worldNameChecker .isValidWorldFolder (worldFolder )) {
706- Logging .severe ("Failed to get world folder for world: " + world .getName ());
707- return worldActionResult (DeleteFailureReason .WORLD_FOLDER_NOT_FOUND , world .getName ());
708- }
709- return worldActionResult (worldFolder );
692+ return world .getBukkitWorld ().map (World ::getWorldFolder )
693+ .filter (worldNameChecker ::isValidWorldFolder )
694+ .map (this ::<File , DeleteFailureReason >worldActionResult )
695+ .getOrElse (() -> {
696+ Logging .severe ("World folder does not exist for world: " + world .getName ());
697+ return worldActionResult (DeleteFailureReason .WORLD_FOLDER_NOT_FOUND , world .getName ());
698+ });
710699 }
711700
712701 /**
0 commit comments