public static void initDimension(int dim) { WorldServer overworld = getWorld(0); if (overworld == null) { throw new RuntimeException("Cannot Hotload Dim: Overworld is not Loaded!"); } try { DimensionManager.getProviderType(dim); } catch (Exception e) { System.err.println("Cannot Hotload Dim: " + e.getMessage()); return; // If a provider hasn't been registered then we can't hotload the dim } MinecraftServer mcServer = overworld.getMinecraftServer(); ISaveHandler savehandler = overworld.getSaveHandler(); WorldSettings worldSettings = new WorldSettings(overworld.getWorldInfo()); WorldServer world = (dim == 0 ? overworld : new WorldServerMulti( mcServer, savehandler, overworld.getWorldInfo().getWorldName(), dim, worldSettings, overworld, mcServer.theProfiler)); world.addWorldAccess(new WorldManager(mcServer, world)); MinecraftForge.EVENT_BUS.post(new WorldEvent.Load(world)); if (!mcServer.isSinglePlayer()) { world.getWorldInfo().setGameType(mcServer.getGameType()); } mcServer.func_147139_a(mcServer.func_147135_j()); }
protected void loadAllWorlds( String par1Str, String par2Str, long par3, WorldType par5WorldType, String par6Str) { this.convertMapIfNeeded(par1Str); this.setUserMessage("menu.loadingLevel"); ISaveHandler isavehandler = this.anvilConverterForAnvilFile.getSaveLoader(par1Str, true); WorldInfo worldinfo = isavehandler.loadWorldInfo(); WorldSettings worldsettings; if (worldinfo == null) { worldsettings = new WorldSettings( par3, this.getGameType(), this.canStructuresSpawn(), this.isHardcore(), par5WorldType); worldsettings.func_82750_a(par6Str); } else { worldsettings = new WorldSettings(worldinfo); } if (this.enableBonusChest) { worldsettings.enableBonusChest(); } WorldServer overWorld = (isDemo() ? new DemoWorldServer(this, isavehandler, par2Str, 0, theProfiler, func_98033_al()) : new WorldServer( this, isavehandler, par2Str, 0, worldsettings, theProfiler, func_98033_al())); for (int dim : DimensionManager.getStaticDimensionIDs()) { WorldServer world = (dim == 0 ? overWorld : new WorldServerMulti( this, isavehandler, par2Str, dim, worldsettings, overWorld, theProfiler, func_98033_al())); world.addWorldAccess(new WorldManager(this, world)); if (!this.isSinglePlayer()) { world.getWorldInfo().setGameType(this.getGameType()); } this.serverConfigManager.setPlayerManager(this.worldServers); MinecraftForge.EVENT_BUS.post(new WorldEvent.Load(world)); } this.serverConfigManager.setPlayerManager(new WorldServer[] {overWorld}); this.setDifficultyForAllWorlds(this.getDifficulty()); this.initialWorldChunkLoad(); }
protected void loadAllWorlds( String par1Str, String par2Str, long par3, WorldType par5WorldType, String par6Str) { this.convertMapIfNeeded(par1Str); ISaveHandler var7 = this.getActiveAnvilConverter().getSaveLoader(par1Str, true); if (Reflector.DimensionManager.exists()) { Object var8 = this.isDemo() ? new DemoWorldServer(this, var7, par2Str, 0, this.theProfiler) : new WorldServerOF(this, var7, par2Str, 0, this.theWorldSettings, this.theProfiler); Integer[] var9 = (Integer[]) ((Integer[]) Reflector.call(Reflector.DimensionManager_getStaticDimensionIDs, new Object[0])); Integer[] arr$ = var9; int len$ = var9.length; for (int i$ = 0; i$ < len$; ++i$) { int dim = arr$[i$].intValue(); Object world = dim == 0 ? var8 : new WorldServerMultiOF( this, var7, par2Str, dim, this.theWorldSettings, (WorldServer) var8, this.theProfiler); ((WorldServer) world).addWorldAccess(new WorldManager(this, (WorldServer) world)); if (!this.isSinglePlayer()) { ((WorldServer) world).getWorldInfo().setGameType(this.getGameType()); } if (Reflector.EventBus.exists()) { Reflector.postForgeBusEvent(Reflector.WorldEvent_Load_Constructor, new Object[] {world}); } } this.getConfigurationManager().setPlayerManager(new WorldServer[] {(WorldServer) var8}); } else { this.worldServers = new WorldServer[3]; this.timeOfLastDimensionTick = new long[this.worldServers.length][100]; for (int var15 = 0; var15 < this.worldServers.length; ++var15) { byte var16 = 0; if (var15 == 1) { var16 = -1; } if (var15 == 2) { var16 = 1; } if (var15 == 0) { if (this.isDemo()) { this.worldServers[var15] = new DemoWorldServer(this, var7, par2Str, var16, this.theProfiler); } else { this.worldServers[var15] = new WorldServerOF( this, var7, par2Str, var16, this.theWorldSettings, this.theProfiler); } } else { this.worldServers[var15] = new WorldServerMultiOF( this, var7, par2Str, var16, this.theWorldSettings, this.worldServers[0], this.theProfiler); } this.worldServers[var15].addWorldAccess(new WorldManager(this, this.worldServers[var15])); this.getConfigurationManager().setPlayerManager(this.worldServers); } } this.func_147139_a(this.func_147135_j()); this.initialWorldChunkLoad(); }
@Override public World createWorld(WorldCreator creator) { if (creator == null) { throw new IllegalArgumentException("Creator may not be null"); } String name = creator.name(); ChunkGenerator generator = creator.generator(); File folder = new File(getWorldContainer().getParentFile(), name); int dimension = DimensionManager.getNextFreeDimId(); World world = getWorld(dimension); WorldType type = WorldType.parseWorldType(creator.type().getName()); boolean generateStructures = creator.generateStructures(); if (world != null) { return world; } if ((folder.exists()) && (!folder.isDirectory())) { throw new IllegalArgumentException("File exists with the name '" + name + "' and isn't a folder"); } if (generator == null) { generator = getGenerator(dimension); } AnvilSaveConverter converter = new AnvilSaveConverter(getWorldContainer()); if (converter.isOldMapFormat(name)) { getLogger().info("Converting world '" + name + "'"); converter.convertMapFormat(name, new ConvertingProgressUpdate(theServer)); } boolean hardcore = false; WorldServer internal = new WorldServer(theServer, new AnvilSaveHandler(getWorldContainer().getParentFile(), name, true), name, dimension, new WorldSettings(creator.seed(), EnumGameType.getByID(getDefaultGameMode().getValue()), generateStructures, hardcore, type), theServer.theProfiler); if (!(worlds.containsKey(dimension))) { return null; } //internal.getWorldInfo().get = console.worldServerForDimension(0).worldMaps; //internal. = new EntityTracker(internal); // CraftBukkit internal.addWorldAccess((IWorldAccess) new WorldManager(theServer, internal)); internal.difficultySetting = 1; //internal.(true, true); //theServer.worldServers[theServer.worldServers.length] = internal; DimensionManager.setWorld(dimension, internal); this.worlds.put(dimension, new BukkitWorld(internal, creator.generator(), creator.environment())); if (generator != null) { (worlds.get(dimension)).getPopulators().addAll(generator.getDefaultPopulators(worlds.get(dimension))); } pluginManager.callEvent(new WorldInitEvent((worlds.get(dimension)))); System.out.print("Preparing start region for level " + (theServer.worldServers.length - 1) + " (Seed: " + internal.getSeed() + ")"); if (DimensionManager.shouldLoadSpawn(dimension)) { short short1 = 196; long i = System.currentTimeMillis(); for (int j = -short1; j <= short1; j += 16) { for (int k = -short1; k <= short1; k += 16) { long l = System.currentTimeMillis(); if (l < i) { i = l; } if (l > i + 1000L) { int i1 = (short1 * 2 + 1) * (short1 * 2 + 1); int j1 = (j + short1) * (short1 * 2 + 1) + k + 1; System.out.println("Preparing spawn area for " + name + ", " + (j1 * 100 / i1) + "%"); i = l; } ChunkCoordinates chunkcoordinates = internal.getSpawnPoint(); internal.theChunkProviderServer.provideChunk(chunkcoordinates.posX + j >> 4, chunkcoordinates.posZ + k >> 4); //while (internal.updateLights()) { // ; }// } } pluginManager.callEvent( new WorldLoadEvent(worlds.get(dimension))); return worlds.get(dimension); }
@Override public World createWorld(WorldCreator creator) { if (creator == null) { throw new IllegalArgumentException("Creator may not be null"); } String name = creator.name(); World world = getWorld(name); // WorldType type = WorldType.parseWorldType(creator.type().getName()); if (world != null) { // Existing forge world return world; } if (firstBukkitWorld) { DimensionManager.registerProviderType( CraftWorldProvider.ProviderID, CraftWorldProvider.class, false); firstBukkitWorld = false; } int dimension = -1000; if (CraftWorldProvider.hasDimensionIdForName(name)) { dimension = CraftWorldProvider.getDimensionIdForName(name); } else { dimension = DimensionManager.getNextFreeDimId(); CraftWorldProvider.setDimensionIdForName(name, dimension); } DimensionManager.registerDimension(dimension, CraftWorldProvider.ProviderID); CraftWorldProvider wp = (CraftWorldProvider) DimensionManager.createProviderFor(dimension); wp.setName(creator.name()); File folder = new File(getWorldContainer(), wp.getDimName()); if ((folder.exists()) && (!folder.isDirectory())) { throw new IllegalArgumentException( "File exists with the name '" + name + "' and isn't a folder"); } ChunkGenerator generator = creator.generator(); boolean generateStructures = creator.generateStructures(); AnvilSaveConverter converter = new AnvilSaveConverter(folder); if (converter.isOldMapFormat(wp.getDimensionName())) { getLogger().info("Converting world '" + name + "'"); converter.convertMapFormat(name, new ConvertingProgressUpdate(theServer)); } WorldType type = WorldType.parseWorldType(creator.type().getName()); // WorldServer internal = new WorldServer(theServer, new // AnvilSaveHandler(getWorldContainer().getParentFile(), name, true), name, dimension, new // WorldSettings(creator.seed(), EnumGameType.getByID(getDefaultGameMode().getValue()), // generateStructures, false, type), theServer.theProfiler); // WorldServerMulti internal = new WorldServerMulti(theServer, new // AnvilSaveHandler(getWorldContainer() , name, true), name, dimension, new // WorldSettings(creator.seed(), EnumGameType.getByID(getDefaultGameMode().getValue()), // generateStructures, false, type), theServer.theProfiler, creator.environment(), // generator); WorldServer internal = new WorldServerMulti( theServer, new AnvilSaveHandler(getWorldContainer(), wp.getDimName(), true), name, dimension, new WorldSettings( creator.seed(), EnumGameType.getByID(getDefaultGameMode().getValue()), generateStructures, false, type), worlds.get(0).getHandle(), theServer.theProfiler); internal.addWorldAccess((IWorldAccess) new WorldManager(theServer, internal)); internal.difficultySetting = 1; internal.provider = wp; wp.registerWorld(internal); // DimensionManager.setWorld(dimension, internal); not necessary, done in constructor of // WorldServer worlds.cacheIfNotPresent(dimension); if (generator != null) { (worlds.get(dimension)) .getPopulators() .addAll(generator.getDefaultPopulators(worlds.get(dimension))); } pluginManager.callEvent(new WorldInitEvent((worlds.get(dimension)))); System.out.print( "Preparing start region for level " + (theServer.worldServers.length - 1) + " (Seed: " + internal.getSeed() + ")"); if (DimensionManager.shouldLoadSpawn(dimension)) { short short1 = 196; long i = System.currentTimeMillis(); for (int j = -short1; j <= short1; j += 16) { for (int k = -short1; k <= short1; k += 16) { long l = System.currentTimeMillis(); if (l < i) { i = l; } if (l > i + 1000L) { int i1 = (short1 * 2 + 1) * (short1 * 2 + 1); int j1 = (j + short1) * (short1 * 2 + 1) + k + 1; System.out.println("Preparing spawn area for " + name + ", " + (j1 * 100 / i1) + "%"); i = l; } ChunkCoordinates chunkcoordinates = internal.getSpawnPoint(); internal.theChunkProviderServer.provideChunk( chunkcoordinates.posX + j >> 4, chunkcoordinates.posZ + k >> 4); } // } } MinecraftForge.EVENT_BUS.post(new WorldEvent.Load(internal)); pluginManager.callEvent(new WorldLoadEvent(worlds.get(dimension))); return worlds.get(dimension); }