From cce1ccc96727caf308a4d1a223bd49c8277b7a7b Mon Sep 17 00:00:00 2001 From: Jeremy Wood Date: Thu, 15 Nov 2012 09:30:19 -0500 Subject: [PATCH] Now caches the world properties before unloading the world in order to prevent NPE on unload then load. Really fixes #947. --- .../java/com/onarandombox/MultiverseCore/MVWorld.java | 11 ----------- .../onarandombox/MultiverseCore/WorldProperties.java | 2 +- .../MultiverseCore/utils/WorldManager.java | 4 +--- 3 files changed, 2 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/onarandombox/MultiverseCore/MVWorld.java b/src/main/java/com/onarandombox/MultiverseCore/MVWorld.java index ab0eb509..6ce18f6a 100644 --- a/src/main/java/com/onarandombox/MultiverseCore/MVWorld.java +++ b/src/main/java/com/onarandombox/MultiverseCore/MVWorld.java @@ -373,17 +373,6 @@ public class MVWorld implements MultiverseWorld { }; } - /** - * This prepares the MVWorld for unloading. - */ - public void tearDown() { - try { - this.props.tearDown(); - } catch (IllegalStateException e) { - // do nothing - } - } - /** * Initializes permissions. */ diff --git a/src/main/java/com/onarandombox/MultiverseCore/WorldProperties.java b/src/main/java/com/onarandombox/MultiverseCore/WorldProperties.java index ec3c96d5..c9e6faf8 100644 --- a/src/main/java/com/onarandombox/MultiverseCore/WorldProperties.java +++ b/src/main/java/com/onarandombox/MultiverseCore/WorldProperties.java @@ -297,7 +297,7 @@ public class WorldProperties extends SerializationConfig { /** * This prepares the MVWorld for unloading. */ - public void tearDown() { + public void cacheVirtualProperties() { try { this.buildVPropChanges(); } catch (IllegalStateException e) { diff --git a/src/main/java/com/onarandombox/MultiverseCore/utils/WorldManager.java b/src/main/java/com/onarandombox/MultiverseCore/utils/WorldManager.java index 9d8cf2d7..4632afda 100644 --- a/src/main/java/com/onarandombox/MultiverseCore/utils/WorldManager.java +++ b/src/main/java/com/onarandombox/MultiverseCore/utils/WorldManager.java @@ -311,12 +311,10 @@ public class WorldManager implements MVWorldManager { @Override public boolean unloadWorld(String name) { if (this.worlds.containsKey(name)) { + this.worldsFromTheConfig.get(name).cacheVirtualProperties(); if (this.unloadWorldFromBukkit(name, true)) { this.worlds.remove(name); Logging.info("World '%s' was unloaded from memory.", name); - - this.worldsFromTheConfig.get(name).tearDown(); - return true; } else { Logging.warning("World '%s' could not be unloaded. Is it a default world?", name);