diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java index 716f3a73b4..23ef042b9e 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -293,6 +293,8 @@ public class MinecraftServer implements ICommandListener, Runnable { entityplayer.a.b((Packet) (new Packet4UpdateTime(entityplayer.world.e))); } } + + ((CraftScheduler) server.getScheduler()).mainThreadHeartbeat(this.h); for (WorldServer world : worlds) { world.f(); @@ -300,12 +302,7 @@ public class MinecraftServer implements ICommandListener, Runnable { while (world.d()) { ; } - - ; - ((CraftScheduler) server.getScheduler()).mainThreadHeartbeat(this.h); - - while (this.e.d()) { - ; + world.c(); } // Craftbukkit end diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java index c84c5da0f1..4c4ee29f4f 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -11,6 +11,7 @@ import net.minecraft.server.EntityPlayer; import net.minecraft.server.MinecraftServer; import net.minecraft.server.PropertyManager; import net.minecraft.server.ServerConfigurationManager; +import net.minecraft.server.WorldManager; import net.minecraft.server.WorldServer; import org.bukkit.*; import org.bukkit.plugin.Plugin; @@ -153,8 +154,16 @@ public final class CraftServer implements Server { return scheduler; } - public World[] getWorlds() { - return console.worlds.toArray(new World[0]); + public List getWorlds() { + List worlds = new ArrayList(); + + synchronized (console.worlds) { + for (WorldServer world : console.worlds) { + worlds.add(world.getWorld()); + } + } + + return worlds; } public ServerConfigurationManager getHandle() {