From a21ad8fa9d3c79a7dd28f0bd79980b371dd0e346 Mon Sep 17 00:00:00 2001 From: Lumien Date: Fri, 20 Jun 2014 10:57:37 +0200 Subject: [PATCH] Fixes a server crash caused by a player joining that is in a non existent dimension --- .../ServerConfigurationManager.java.patch | 35 ++++++++++++++----- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/patches/minecraft/net/minecraft/server/management/ServerConfigurationManager.java.patch b/patches/minecraft/net/minecraft/server/management/ServerConfigurationManager.java.patch index 2d171ebdb..5158072b2 100644 --- a/patches/minecraft/net/minecraft/server/management/ServerConfigurationManager.java.patch +++ b/patches/minecraft/net/minecraft/server/management/ServerConfigurationManager.java.patch @@ -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);