From c1755965369c265cdb48fdf06255de2080af69bc Mon Sep 17 00:00:00 2001 From: SoSeDiK Date: Thu, 25 Jun 2020 05:33:02 +0300 Subject: [PATCH] Improve the handling of non-registered worlds --- .../mrCookieSlime/Slimefun/SlimefunPlugin.java | 16 +++++----------- .../mrCookieSlime/Slimefun/api/BlockStorage.java | 4 ++++ 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/main/java/me/mrCookieSlime/Slimefun/SlimefunPlugin.java b/src/main/java/me/mrCookieSlime/Slimefun/SlimefunPlugin.java index f91cf72d5..40c9d5213 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/SlimefunPlugin.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/SlimefunPlugin.java @@ -391,21 +391,15 @@ public final class SlimefunPlugin extends JavaPlugin implements SlimefunAddon { } }); - for (World world : Bukkit.getWorlds()) { + // Save all registered Worlds + getRegistry().getWorlds().forEach((world, storage) -> { try { - BlockStorage storage = BlockStorage.getStorage(world); - - if (storage != null) { - storage.save(true); - } - else { - getLogger().log(Level.SEVERE, "Could not save Slimefun Blocks for World \"{0}\"", world.getName()); - } + storage.save(true); } catch (Exception x) { - getLogger().log(Level.SEVERE, x, () -> "An Error occured while saving Slimefun-Blocks in World '" + world.getName() + "' for Slimefun " + getVersion()); + getLogger().log(Level.SEVERE, x, () -> "An Error occured while saving Slimefun-Blocks in World '" + world + "' for Slimefun " + getVersion()); } - } + }); for (UniversalBlockMenu menu : registry.getUniversalInventories().values()) { menu.save(); diff --git a/src/main/java/me/mrCookieSlime/Slimefun/api/BlockStorage.java b/src/main/java/me/mrCookieSlime/Slimefun/api/BlockStorage.java index 9797a9bc8..58f1224e5 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/api/BlockStorage.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/api/BlockStorage.java @@ -480,6 +480,10 @@ public class BlockStorage { public static void setBlockInfo(Location l, Config cfg, boolean updateTicker) { BlockStorage storage = getStorage(l.getWorld()); + if (storage == null) { + Slimefun.getLogger().warning("Could not set Block info for non-registered World '" + l.getWorld().getName() + "'. Is some plugin trying to store data in a fake world?"); + return; + } storage.storage.put(l, cfg); String id = cfg.getString("id");