diff options
author | Nathan Adams <dinnerbone@dinnerbone.com> | 2012-01-19 16:09:24 +0000 |
---|---|---|
committer | Nathan Adams <dinnerbone@dinnerbone.com> | 2012-01-19 16:10:52 +0000 |
commit | 28fcbec3b1662f42a6a457869bdb43e9b246e615 (patch) | |
tree | d647752c5445fb1b454811c890da50eb21446612 /src/main/java/org | |
parent | b0f29b1755d5fcc97be5b508ed5c467a0f4f845b (diff) | |
download | craftbukkit-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.
Diffstat (limited to 'src/main/java/org')
-rw-r--r-- | src/main/java/org/bukkit/craftbukkit/CraftServer.java | 10 |
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); |