ForgePatch/forge/patches/minecraft_server/net/minecraft/src/ServerConfigurationManager.java.patch

145 lines
6.5 KiB
Diff

--- ../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()