--- ../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 @@ -12,6 +12,7 @@ import java.util.Set; import java.util.logging.Logger; import net.minecraft.server.MinecraftServer; +import net.minecraft.src.forge.DimensionManager; public class ServerConfigurationManager { @@ -25,7 +26,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; @@ -71,9 +72,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(); @@ -100,9 +103,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); @@ -110,7 +114,7 @@ public int getMaxTrackingDistance() { - return this.playerManagerObj[0].getMaxTrackingDistance(); + return getPlayerManager(0).getMaxTrackingDistance(); } /** @@ -118,7 +122,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); } /** @@ -285,6 +290,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; @@ -292,33 +301,14 @@ par1EntityPlayerMP.playerNetServerHandler.sendPacket(new Packet9Respawn(par1EntityPlayerMP.dimension, (byte)par1EntityPlayerMP.worldObj.difficultySetting, var5.getWorldInfo().getTerrainType(), var5.getWorldHeight(), 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; @@ -338,7 +328,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; } @@ -366,9 +356,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(); } }