Merge pull request #1164 from lumien231/Fix-DimensionCrash

Fixes a server crash caused by a player joining that is in a non existen...
This commit is contained in:
LexManos 2014-06-20 17:31:45 -07:00
commit 755dd9b954
1 changed files with 27 additions and 8 deletions

View File

@ -32,7 +32,26 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -244,6 +250,7 @@
@@ -93,7 +99,17 @@
public void func_72355_a(NetworkManager p_72355_1_, EntityPlayerMP p_72355_2_, NetHandlerPlayServer nethandlerplayserver)
{
NBTTagCompound nbttagcompound = this.func_72380_a(p_72355_2_);
- p_72355_2_.func_70029_a(this.field_72400_f.func_71218_a(p_72355_2_.field_71093_bK));
+
+ World playerWorld = this.field_72400_f.func_71218_a(p_72355_2_.field_71093_bK);
+ if (playerWorld==null)
+ {
+ p_72355_2_.field_71093_bK=0;
+ playerWorld=this.field_72400_f.func_71218_a(0);
+ ChunkCoordinates spawnPoint = playerWorld.field_73011_w.getRandomizedSpawnPoint();
+ p_72355_2_.func_70107_b(spawnPoint.field_71574_a, spawnPoint.field_71572_b, spawnPoint.field_71573_c);
+ }
+
+ p_72355_2_.func_70029_a(playerWorld);
p_72355_2_.field_71134_c.func_73080_a((WorldServer)p_72355_2_.field_70170_p);
String s = "local";
@@ -244,6 +260,7 @@
this.func_148540_a(new S38PacketPlayerListItem(p_72377_1_.func_70005_c_(), true, 1000));
this.field_72404_b.add(p_72377_1_);
WorldServer worldserver = this.field_72400_f.func_71218_a(p_72377_1_.field_71093_bK);
@ -40,7 +59,7 @@
worldserver.func_72838_d(p_72377_1_);
this.func_72375_a(p_72377_1_, (WorldServer)null);
@@ -276,6 +283,7 @@
@@ -276,6 +293,7 @@
worldserver.func_73040_p().func_72695_c(p_72367_1_);
this.field_72404_b.remove(p_72367_1_);
this.field_148547_k.remove(p_72367_1_.func_70005_c_());
@ -48,7 +67,7 @@
this.func_148540_a(new S38PacketPlayerListItem(p_72367_1_.func_70005_c_(), false, 9999));
}
@@ -361,13 +369,23 @@
@@ -361,13 +379,23 @@
public EntityPlayerMP func_72368_a(EntityPlayerMP p_72368_1_, int p_72368_2_, boolean p_72368_3_)
{
@ -74,7 +93,7 @@
p_72368_1_.field_71093_bK = p_72368_2_;
Object object;
@@ -383,6 +401,7 @@
@@ -383,6 +411,7 @@
EntityPlayerMP entityplayermp1 = new EntityPlayerMP(this.field_72400_f, this.field_72400_f.func_71218_a(p_72368_1_.field_71093_bK), p_72368_1_.func_146103_bH(), (ItemInWorldManager)object);
entityplayermp1.field_71135_a = p_72368_1_.field_71135_a;
entityplayermp1.func_71049_a(p_72368_1_, p_72368_3_);
@ -82,7 +101,7 @@
entityplayermp1.func_145769_d(p_72368_1_.func_145782_y());
WorldServer worldserver = this.field_72400_f.func_71218_a(p_72368_1_.field_71093_bK);
this.func_72381_a(entityplayermp1, p_72368_1_, worldserver);
@@ -427,6 +446,11 @@
@@ -427,6 +456,11 @@
public void func_72356_a(EntityPlayerMP p_72356_1_, int p_72356_2_)
{
@ -94,7 +113,7 @@
int j = p_72356_1_.field_71093_bK;
WorldServer worldserver = this.field_72400_f.func_71218_a(p_72356_1_.field_71093_bK);
p_72356_1_.field_71093_bK = p_72356_2_;
@@ -434,7 +458,7 @@
@@ -434,7 +468,7 @@
p_72356_1_.field_71135_a.func_147359_a(new S07PacketRespawn(p_72356_1_.field_71093_bK, p_72356_1_.field_70170_p.field_73013_u, p_72356_1_.field_70170_p.func_72912_H().func_76067_t(), p_72356_1_.field_71134_c.func_73081_b()));
worldserver.func_72973_f(p_72356_1_);
p_72356_1_.field_70128_L = false;
@ -103,7 +122,7 @@
this.func_72375_a(p_72356_1_, worldserver);
p_72356_1_.field_71135_a.func_147364_a(p_72356_1_.field_70165_t, p_72356_1_.field_70163_u, p_72356_1_.field_70161_v, p_72356_1_.field_70177_z, p_72356_1_.field_70125_A);
p_72356_1_.field_71134_c.func_73080_a(worldserver1);
@@ -452,38 +476,47 @@
@@ -452,38 +486,47 @@
public void func_82448_a(Entity p_82448_1_, int p_82448_2_, WorldServer p_82448_3_, WorldServer p_82448_4_)
{
@ -163,7 +182,7 @@
{
ChunkCoordinates chunkcoordinates;
@@ -518,7 +551,7 @@
@@ -518,7 +561,7 @@
if (p_82448_1_.func_70089_S())
{
p_82448_1_.func_70012_b(d0, p_82448_1_.field_70163_u, d1, p_82448_1_.field_70177_z, p_82448_1_.field_70125_A);