diff --git a/src/main/java/net/minecraft/server/management/ServerConfigurationManager.java b/src/main/java/net/minecraft/server/management/ServerConfigurationManager.java index 22bab3d..dd3db56 100644 --- a/src/main/java/net/minecraft/server/management/ServerConfigurationManager.java +++ b/src/main/java/net/minecraft/server/management/ServerConfigurationManager.java @@ -205,7 +205,7 @@ } worldserver1.getPlayerManager().addPlayer(par1EntityPlayerMP); - worldserver1.theChunkProviderServer.loadChunk((int)par1EntityPlayerMP.posX >> 4, (int)par1EntityPlayerMP.posZ >> 4); + //worldserver1.theChunkProviderServer.loadChunk((int)par1EntityPlayerMP.posX >> 4, (int)par1EntityPlayerMP.posZ >> 4); } public int getEntityViewDistance() @@ -245,13 +245,32 @@ } } - public void playerLoggedIn(EntityPlayerMP par1EntityPlayerMP) + public void playerLoggedIn(final EntityPlayerMP par1EntityPlayerMP) { this.sendPacketToAllPlayers(new S38PacketPlayerListItem(par1EntityPlayerMP.getCommandSenderName(), true, 1000)); this.playerEntityList.add(par1EntityPlayerMP); - WorldServer worldserver = this.mcServer.worldServerForDimension(par1EntityPlayerMP.dimension); - worldserver.spawnEntityInWorld(par1EntityPlayerMP); - this.func_72375_a(par1EntityPlayerMP, (WorldServer)null); + final WorldServer worldserver = this.mcServer.worldServerForDimension(par1EntityPlayerMP.dimension); + + + int cx = MathHelper.floor_double(par1EntityPlayerMP.posX) >> 4; + int cz = MathHelper.floor_double(par1EntityPlayerMP.posX) >> 4; + if(worldserver.chunkExists(cx, cz)) + { + worldserver.spawnEntityInWorld(par1EntityPlayerMP); + this.func_72375_a(par1EntityPlayerMP, (WorldServer)null); + } + else + { + worldserver.theChunkProviderServer.loadAsync(cx, cz, new Runnable() + { + @Override + public void run() + { + worldserver.spawnEntityInWorld(par1EntityPlayerMP); + func_72375_a(par1EntityPlayerMP, (WorldServer)null); + } + }); + } for (int i = 0; i < this.playerEntityList.size(); ++i) { diff --git a/src/main/java/net/minecraft/world/World.java b/src/main/java/net/minecraft/world/World.java index 73a53ec..367caae 100644 --- a/src/main/java/net/minecraft/world/World.java +++ b/src/main/java/net/minecraft/world/World.java @@ -408,7 +408,7 @@ } } - protected boolean chunkExists(int par1, int par2) + public boolean chunkExists(int par1, int par2) { return this.chunkProvider.chunkExists(par1, par2); }