From 2b0549f04ce1d21010fc143dfd610273db87ff68 Mon Sep 17 00:00:00 2001 From: Deathmax Date: Sun, 27 May 2012 21:01:11 +0800 Subject: [PATCH] Fixes fix #439 Client saves world name prior to OnJoin being called. --- TShockAPI/TShock.cs | 42 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 9816bc15..464e5823 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -708,7 +708,7 @@ namespace TShockAPI } } } - Players[ply] = player; + Players[ply] = player; } private void OnJoin(int ply, HandledEventArgs handler) @@ -738,8 +738,7 @@ namespace TShockAPI Utils.ForceKick(player, string.Format("You are banned: {0}", ban.Reason), true, false); handler.Handled = true; return; - } - player.SendWorldInfo(Main.spawnTileX, Main.spawnTileY, false); + } } private void OnLeave(int ply) @@ -1070,6 +1069,43 @@ namespace TShockAPI } e.Handled = true; } + if (e.MsgID == PacketTypes.WorldInfo) + { + if (e.remoteClient == -1) return; + var player = Players[e.remoteClient]; + if (player == null) return; + if (Config.UseServerName) + { + using (var ms = new MemoryStream()) + { + var msg = new WorldInfoMsg + { + Time = (int)Main.time, + DayTime = Main.dayTime, + MoonPhase = (byte)Main.moonPhase, + BloodMoon = Main.bloodMoon, + MaxTilesX = Main.maxTilesX, + MaxTilesY = Main.maxTilesY, + SpawnX = Main.spawnTileX, + SpawnY = Main.spawnTileY, + WorldSurface = (int)Main.worldSurface, + RockLayer = (int)Main.rockLayer, + WorldID = Main.worldID, + WorldFlags = + (WorldGen.shadowOrbSmashed ? WorldInfoFlag.OrbSmashed : WorldInfoFlag.None) | + (NPC.downedBoss1 ? WorldInfoFlag.DownedBoss1 : WorldInfoFlag.None) | + (NPC.downedBoss2 ? WorldInfoFlag.DownedBoss2 : WorldInfoFlag.None) | + (NPC.downedBoss3 ? WorldInfoFlag.DownedBoss3 : WorldInfoFlag.None) | + (Main.hardMode ? WorldInfoFlag.HardMode : WorldInfoFlag.None) | + (NPC.downedClown ? WorldInfoFlag.DownedClown : WorldInfoFlag.None), + WorldName = Config.ServerName + }; + msg.PackFull(ms); + player.SendRawData(ms.ToArray()); + } + e.Handled = true; + } + } } private void OnStartHardMode(HandledEventArgs e)