--- ../src_base/minecraft_server/net/minecraft/src/ServerConfigurationManager.java 0000-00-00 00:00:00.000000000 -0000 +++ ../src_work/minecraft_server/net/minecraft/src/ServerConfigurationManager.java 0000-00-00 00:00:00.000000000 -0000 @@ -14,6 +14,7 @@ import cpw.mods.fml.server.FMLServerHandler; import net.minecraft.server.MinecraftServer; +import net.minecraft.src.forge.DimensionManager; public class ServerConfigurationManager { @@ -27,7 +28,7 @@ private MinecraftServer mcServer; /** Reference to the PlayerManager object. */ - private PlayerManager[] playerManagerObj = new PlayerManager[3]; + //private PlayerManager[] playerManagerObj = new PlayerManager[3]; /** the maximum amount of players that can be connected */ private int maxPlayers; @@ -73,9 +74,11 @@ this.opFile = par1MinecraftServer.getFile("ops.txt"); this.whitelistPlayersFile = par1MinecraftServer.getFile("white-list.txt"); int var2 = par1MinecraftServer.propertyManagerObj.getIntProperty("view-distance", 10); + /* this.playerManagerObj[0] = new PlayerManager(par1MinecraftServer, 0, var2); this.playerManagerObj[1] = new PlayerManager(par1MinecraftServer, -1, var2); this.playerManagerObj[2] = new PlayerManager(par1MinecraftServer, 1, var2); + */ this.maxPlayers = par1MinecraftServer.propertyManagerObj.getIntProperty("max-players", 20); this.whiteListEnforced = par1MinecraftServer.propertyManagerObj.getBooleanProperty("white-list", false); this.readBannedPlayers(); @@ -102,9 +105,10 @@ */ public void joinNewPlayerManager(EntityPlayerMP par1EntityPlayerMP) { - this.playerManagerObj[0].removePlayer(par1EntityPlayerMP); - this.playerManagerObj[1].removePlayer(par1EntityPlayerMP); - this.playerManagerObj[2].removePlayer(par1EntityPlayerMP); + for (World world : DimensionManager.getWorlds()) + { + ((WorldServer)world).playerManager.removePlayer(par1EntityPlayerMP); + } this.getPlayerManager(par1EntityPlayerMP.dimension).addPlayer(par1EntityPlayerMP); WorldServer var2 = this.mcServer.getWorldManager(par1EntityPlayerMP.dimension); var2.chunkProviderServer.loadChunk((int)par1EntityPlayerMP.posX >> 4, (int)par1EntityPlayerMP.posZ >> 4); @@ -112,7 +116,7 @@ public int getMaxTrackingDistance() { - return this.playerManagerObj[0].getMaxTrackingDistance(); + return getPlayerManager(0).getMaxTrackingDistance(); } /** @@ -120,7 +124,8 @@ */ private PlayerManager getPlayerManager(int par1) { - return par1 == -1 ? this.playerManagerObj[1] : (par1 == 0 ? this.playerManagerObj[0] : (par1 == 1 ? this.playerManagerObj[2] : null)); + WorldServer world = (WorldServer)DimensionManager.getWorld(par1); + return (world == null ? null : world.playerManager); } /** @@ -289,6 +294,10 @@ */ public void sendPlayerToOtherDimension(EntityPlayerMP par1EntityPlayerMP, int par2) { + sendPlayerToOtherDimension(par1EntityPlayerMP, par2, new Teleporter()); + } + public void sendPlayerToOtherDimension(EntityPlayerMP par1EntityPlayerMP, int par2, Teleporter teleporter) + { int var3 = par1EntityPlayerMP.dimension; WorldServer var4 = this.mcServer.getWorldManager(par1EntityPlayerMP.dimension); par1EntityPlayerMP.dimension = par2; @@ -296,33 +305,14 @@ par1EntityPlayerMP.playerNetServerHandler.sendPacket(new Packet9Respawn(par1EntityPlayerMP.dimension, (byte)par1EntityPlayerMP.worldObj.difficultySetting, var5.getWorldInfo().getTerrainType(), var5.getHeight(), par1EntityPlayerMP.itemInWorldManager.getGameType())); var4.removePlayer(par1EntityPlayerMP); par1EntityPlayerMP.isDead = false; - double var6 = par1EntityPlayerMP.posX; - double var8 = par1EntityPlayerMP.posZ; - double var10 = 8.0D; - - if (par1EntityPlayerMP.dimension == -1) - { - var6 /= var10; - var8 /= var10; - par1EntityPlayerMP.setLocationAndAngles(var6, par1EntityPlayerMP.posY, var8, par1EntityPlayerMP.rotationYaw, par1EntityPlayerMP.rotationPitch); - if (par1EntityPlayerMP.isEntityAlive()) - { - var4.updateEntityWithOptionalForce(par1EntityPlayerMP, false); - } - } - else if (par1EntityPlayerMP.dimension == 0) - { - var6 *= var10; - var8 *= var10; - par1EntityPlayerMP.setLocationAndAngles(var6, par1EntityPlayerMP.posY, var8, par1EntityPlayerMP.rotationYaw, par1EntityPlayerMP.rotationPitch); + WorldProvider pOld = DimensionManager.getProvider(var3); + WorldProvider pNew = DimensionManager.getProvider(par2); + double moveFactor = pOld.getMovementFactor() / pNew.getMovementFactor(); + double var6 = par1EntityPlayerMP.posX * moveFactor; + double var8 = par1EntityPlayerMP.posZ * moveFactor; - if (par1EntityPlayerMP.isEntityAlive()) - { - var4.updateEntityWithOptionalForce(par1EntityPlayerMP, false); - } - } - else + if (par1EntityPlayerMP.dimension == 1) { ChunkCoordinates var12 = var5.getEntrancePortalLocation(); var6 = (double)var12.posX; @@ -342,7 +332,7 @@ par1EntityPlayerMP.setLocationAndAngles(var6, par1EntityPlayerMP.posY, var8, par1EntityPlayerMP.rotationYaw, par1EntityPlayerMP.rotationPitch); var5.updateEntityWithOptionalForce(par1EntityPlayerMP, false); var5.chunkProviderServer.chunkLoadOverride = true; - (new Teleporter()).placeInPortal(var5, par1EntityPlayerMP); + teleporter.placeInPortal(var5, par1EntityPlayerMP); var5.chunkProviderServer.chunkLoadOverride = false; } @@ -372,9 +362,9 @@ this.sendPacketToAllPlayers(new Packet201PlayerInfo(var1.username, true, var1.ping)); } - for (int var2 = 0; var2 < this.playerManagerObj.length; ++var2) + for (World world : DimensionManager.getWorlds()) { - this.playerManagerObj[var2].updatePlayerInstances(); + ((WorldServer)world).playerManager.updatePlayerInstances(); } } @@ -907,7 +897,7 @@ public String[] func_52019_t() { - return this.mcServer.worldMngr[0].getSaveHandler().getPlayerNBTManager().func_52007_g(); + return DimensionManager.getWorld(0).getSaveHandler().getPlayerNBTManager().func_52007_g(); } private void func_52018_u()