summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNathan Adams <dinnerbone@dinnerbone.com>2012-01-19 16:09:24 +0000
committerNathan Adams <dinnerbone@dinnerbone.com>2012-01-19 16:10:52 +0000
commit28fcbec3b1662f42a6a457869bdb43e9b246e615 (patch)
treed647752c5445fb1b454811c890da50eb21446612
parentb0f29b1755d5fcc97be5b508ed5c467a0f4f845b (diff)
downloadcraftbukkit-28fcbec3b1662f42a6a457869bdb43e9b246e615.tar
craftbukkit-28fcbec3b1662f42a6a457869bdb43e9b246e615.tar.gz
craftbukkit-28fcbec3b1662f42a6a457869bdb43e9b246e615.tar.lz
craftbukkit-28fcbec3b1662f42a6a457869bdb43e9b246e615.tar.xz
craftbukkit-28fcbec3b1662f42a6a457869bdb43e9b246e615.zip
Prevent re-use of internal world dimension IDs. This fixes BUKKIT-448. Thanks to snowleo for the PR.
-rw-r--r--src/main/java/org/bukkit/craftbukkit/CraftServer.java10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index c4846097..f3ed843b 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -540,6 +540,16 @@ public final class CraftServer implements Server {
}
int dimension = 10 + console.worlds.size();
+ boolean used = false;
+ do {
+ for (WorldServer server : console.worlds) {
+ used = server.dimension == dimension;
+ if (used) {
+ dimension++;
+ break;
+ }
+ }
+ } while(used);
boolean hardcore = false;
WorldServer internal = new WorldServer(console, new ServerNBTManager(getWorldContainer(), name, true), name, dimension, new WorldSettings(creator.seed(), getDefaultGameMode().getValue(), true, hardcore, type), creator.environment(), generator);