--- a/net/minecraft/server/SecondaryWorldServer.java
+++ b/net/minecraft/server/SecondaryWorldServer.java
@@ -4,9 +4,12 @@
 
     private WorldServer a;
 
-    public SecondaryWorldServer(MinecraftServer minecraftserver, IDataManager idatamanager, int i, WorldServer worldserver, MethodProfiler methodprofiler) {
-        super(minecraftserver, idatamanager, new SecondaryWorldData(worldserver.getWorldData()), i, methodprofiler);
+    // CraftBukkit start - Add WorldData, Environment and ChunkGenerator arguments
+    public SecondaryWorldServer(MinecraftServer minecraftserver, IDataManager idatamanager, int i, WorldServer worldserver, MethodProfiler methodprofiler, WorldData worldData, org.bukkit.World.Environment env, org.bukkit.generator.ChunkGenerator gen) {
+        super(minecraftserver, idatamanager, worldData, i, methodprofiler, env, gen);
+        // CraftBukkit end
         this.a = worldserver;
+        /* CraftBukkit start
         worldserver.getWorldBorder().a(new IWorldBorderListener() {
             public void a(WorldBorder worldborder, double d0) {
                 SecondaryWorldServer.this.getWorldBorder().setSize(d0);
@@ -36,13 +39,14 @@
                 SecondaryWorldServer.this.getWorldBorder().setDamageBuffer(d0);
             }
         });
+        // CraftBukkit end */
     }
 
-    protected void a() {}
+    // protected void a() {} // CraftBukkit
 
     public World b() {
         this.worldMaps = this.a.T();
-        this.scoreboard = this.a.getScoreboard();
+        // this.scoreboard = this.a.getScoreboard(); // CraftBukkit
         String s = PersistentVillage.a(this.worldProvider);
         PersistentVillage persistentvillage = (PersistentVillage) this.worldMaps.get(PersistentVillage.class, s);
 
@@ -54,6 +58,6 @@
             this.villages.a((World) this);
         }
 
-        return this;
+        return super.b(); // CraftBukkit
     }
 }