diff --git a/TShockAPI/Net/WorldInfoMsg.cs b/TShockAPI/Net/WorldInfoMsg.cs index 772cb314..9730b88a 100644 --- a/TShockAPI/Net/WorldInfoMsg.cs +++ b/TShockAPI/Net/WorldInfoMsg.cs @@ -33,7 +33,8 @@ namespace TShockAPI.Net DownedBoss3 = 8, HardMode = 16, DownedClown = 32, - ServerSideCharacter = 64 + ServerSideCharacter = 64, + DownedPlantBoss = 128 } [Flags] @@ -46,7 +47,8 @@ namespace TShockAPI.Net DownedMechBossAny = 8, CloudBg = 16, Crimson = 32, - Pumpkin = 64 + PumpkinMoon = 64, + SnowMoon = 128 } public class WorldInfoMsg : BaseMsg diff --git a/TShockAPI/TSPlayer.cs b/TShockAPI/TSPlayer.cs index d9216f5b..87091889 100755 --- a/TShockAPI/TSPlayer.cs +++ b/TShockAPI/TSPlayer.cs @@ -520,65 +520,67 @@ namespace TShockAPI 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 = tilex, - SpawnY = tiley, - WorldSurface = (int) Main.worldSurface, - RockLayer = (int) Main.rockLayer, - //Sending a fake world id causes the client to not be able to find a stored spawnx/y. - //This fixes the bed spawn point bug. With a fake world id it wont be able to find the bed spawn. - WorldID = !fakeid ? Main.worldID : -1, - MoonType = (byte)Main.moonType, - TreeX0 = Main.treeX[0], - TreeX1 = Main.treeX[1], - TreeX2 = Main.treeX[2], - TreeStyle0 = (byte)Main.treeStyle[0], - TreeStyle1 = (byte)Main.treeStyle[1], - TreeStyle2 = (byte)Main.treeStyle[2], - TreeStyle3 = (byte)Main.treeStyle[3], - CaveBackX0 = Main.caveBackX[0], - CaveBackX1 = Main.caveBackX[1], - CaveBackX2 = Main.caveBackX[2], - CaveBackStyle0 = (byte)Main.caveBackStyle[0], - CaveBackStyle1 = (byte)Main.caveBackStyle[1], - CaveBackStyle2 = (byte)Main.caveBackStyle[2], - CaveBackStyle3 = (byte)Main.caveBackStyle[3], - SetBG0 = (byte)WorldGen.treeBG, - SetBG1 = (byte)WorldGen.corruptBG, - SetBG2 = (byte)WorldGen.jungleBG, - SetBG3 = (byte)WorldGen.snowBG, - SetBG4 = (byte)WorldGen.hallowBG, - SetBG5 = (byte)WorldGen.crimsonBG, - SetBG6 = (byte)WorldGen.desertBG, - SetBG7 = (byte)WorldGen.oceanBG, - IceBackStyle = (byte)Main.iceBackStyle, - JungleBackStyle = (byte)Main.jungleBackStyle, - HellBackStyle = (byte)Main.hellBackStyle, - WindSpeed = Main.windSpeed, - NumberOfClouds = (byte)Main.numClouds, - BossFlags = (WorldGen.shadowOrbSmashed ? BossFlags.OrbSmashed : BossFlags.None) | - (NPC.downedBoss1 ? BossFlags.DownedBoss1 : BossFlags.None) | - (NPC.downedBoss2 ? BossFlags.DownedBoss2 : BossFlags.None) | - (NPC.downedBoss3 ? BossFlags.DownedBoss3 : BossFlags.None) | - (Main.hardMode ? BossFlags.HardMode : BossFlags.None) | - (NPC.downedClown ? BossFlags.DownedClown : BossFlags.None) | - (Main.ServerSideCharacter ? BossFlags.ServerSideCharacter : BossFlags.None), - BossFlags2 = (NPC.downedMechBoss1 ? BossFlags2.DownedMechBoss1 : BossFlags2.None) | - (NPC.downedMechBoss2 ? BossFlags2.DownedMechBoss2 : BossFlags2.None) | - (NPC.downedMechBoss3 ? BossFlags2.DownedMechBoss3 : BossFlags2.None) | - (NPC.downedMechBossAny ? BossFlags2.DownedMechBossAny : BossFlags2.None) | - (Main.cloudBGActive == 1f ? BossFlags2.CloudBg : BossFlags2.None) | - (WorldGen.crimson ? BossFlags2.Crimson : BossFlags2.None) | - (Main.pumpkinMoon ? BossFlags2.Pumpkin : BossFlags2.None), - Rain = Main.maxRaining, - WorldName = TShock.Config.UseServerName ? TShock.Config.ServerName : Main.worldName - }; + { + 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, + //Sending a fake world id causes the client to not be able to find a stored spawnx/y. + //This fixes the bed spawn point bug. With a fake world id it wont be able to find the bed spawn. + WorldID = Main.worldID, + MoonType = (byte)Main.moonType, + TreeX0 = Main.treeX[0], + TreeX1 = Main.treeX[1], + TreeX2 = Main.treeX[2], + TreeStyle0 = (byte)Main.treeStyle[0], + TreeStyle1 = (byte)Main.treeStyle[1], + TreeStyle2 = (byte)Main.treeStyle[2], + TreeStyle3 = (byte)Main.treeStyle[3], + CaveBackX0 = Main.caveBackX[0], + CaveBackX1 = Main.caveBackX[1], + CaveBackX2 = Main.caveBackX[2], + CaveBackStyle0 = (byte)Main.caveBackStyle[0], + CaveBackStyle1 = (byte)Main.caveBackStyle[1], + CaveBackStyle2 = (byte)Main.caveBackStyle[2], + CaveBackStyle3 = (byte)Main.caveBackStyle[3], + SetBG0 = (byte)WorldGen.treeBG, + SetBG1 = (byte)WorldGen.corruptBG, + SetBG2 = (byte)WorldGen.jungleBG, + SetBG3 = (byte)WorldGen.snowBG, + SetBG4 = (byte)WorldGen.hallowBG, + SetBG5 = (byte)WorldGen.crimsonBG, + SetBG6 = (byte)WorldGen.desertBG, + SetBG7 = (byte)WorldGen.oceanBG, + IceBackStyle = (byte)Main.iceBackStyle, + JungleBackStyle = (byte)Main.jungleBackStyle, + HellBackStyle = (byte)Main.hellBackStyle, + WindSpeed = Main.windSpeed, + NumberOfClouds = (byte)Main.numClouds, + BossFlags = (WorldGen.shadowOrbSmashed ? BossFlags.OrbSmashed : BossFlags.None) | + (NPC.downedBoss1 ? BossFlags.DownedBoss1 : BossFlags.None) | + (NPC.downedBoss2 ? BossFlags.DownedBoss2 : BossFlags.None) | + (NPC.downedBoss3 ? BossFlags.DownedBoss3 : BossFlags.None) | + (Main.hardMode ? BossFlags.HardMode : BossFlags.None) | + (NPC.downedClown ? BossFlags.DownedClown : BossFlags.None) | + (Main.ServerSideCharacter ? BossFlags.ServerSideCharacter : BossFlags.None) | + (NPC.downedPlantBoss ? BossFlags.DownedPlantBoss : BossFlags.None), + BossFlags2 = (NPC.downedMechBoss1 ? BossFlags2.DownedMechBoss1 : BossFlags2.None) | + (NPC.downedMechBoss2 ? BossFlags2.DownedMechBoss2 : BossFlags2.None) | + (NPC.downedMechBoss3 ? BossFlags2.DownedMechBoss3 : BossFlags2.None) | + (NPC.downedMechBossAny ? BossFlags2.DownedMechBossAny : BossFlags2.None) | + (Main.cloudBGActive == 1f ? BossFlags2.CloudBg : BossFlags2.None) | + (WorldGen.crimson ? BossFlags2.Crimson : BossFlags2.None) | + (Main.pumpkinMoon ? BossFlags2.PumpkinMoon : BossFlags2.None) | + (Main.snowMoon ? BossFlags2.SnowMoon : BossFlags2.None), + Rain = Main.maxRaining, + WorldName = TShock.Config.UseServerName ? TShock.Config.ServerName : Main.worldName + }; msg.PackFull(ms); SendRawData(ms.ToArray()); } diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 0914a7db..990a92f9 100755 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -1359,76 +1359,75 @@ namespace TShockAPI if (e.remoteClient == -1) return; var player = Players[e.remoteClient]; if (player == null) return; - if (Config.UseServerName) + using (var ms = new MemoryStream()) { - using (var ms = new MemoryStream()) + var msg = new WorldInfoMsg { - 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, - //Sending a fake world id causes the client to not be able to find a stored spawnx/y. - //This fixes the bed spawn point bug. With a fake world id it wont be able to find the bed spawn. - WorldID = Main.worldID, - MoonType = (byte)Main.moonType, - TreeX0 = Main.treeX[0], - TreeX1 = Main.treeX[1], - TreeX2 = Main.treeX[2], - TreeStyle0 = (byte)Main.treeStyle[0], - TreeStyle1 = (byte)Main.treeStyle[1], - TreeStyle2 = (byte)Main.treeStyle[2], - TreeStyle3 = (byte)Main.treeStyle[3], - CaveBackX0 = Main.caveBackX[0], - CaveBackX1 = Main.caveBackX[1], - CaveBackX2 = Main.caveBackX[2], - CaveBackStyle0 = (byte)Main.caveBackStyle[0], - CaveBackStyle1 = (byte)Main.caveBackStyle[1], - CaveBackStyle2 = (byte)Main.caveBackStyle[2], - CaveBackStyle3 = (byte)Main.caveBackStyle[3], - SetBG0 = (byte)WorldGen.treeBG, - SetBG1 = (byte)WorldGen.corruptBG, - SetBG2 = (byte)WorldGen.jungleBG, - SetBG3 = (byte)WorldGen.snowBG, - SetBG4 = (byte)WorldGen.hallowBG, - SetBG5 = (byte)WorldGen.crimsonBG, - SetBG6 = (byte)WorldGen.desertBG, - SetBG7 = (byte)WorldGen.oceanBG, - IceBackStyle = (byte)Main.iceBackStyle, - JungleBackStyle = (byte)Main.jungleBackStyle, - HellBackStyle = (byte)Main.hellBackStyle, - WindSpeed = Main.windSpeed, - NumberOfClouds = (byte)Main.numClouds, - BossFlags = (WorldGen.shadowOrbSmashed ? BossFlags.OrbSmashed : BossFlags.None) | - (NPC.downedBoss1 ? BossFlags.DownedBoss1 : BossFlags.None) | - (NPC.downedBoss2 ? BossFlags.DownedBoss2 : BossFlags.None) | - (NPC.downedBoss3 ? BossFlags.DownedBoss3 : BossFlags.None) | - (Main.hardMode ? BossFlags.HardMode : BossFlags.None) | - (NPC.downedClown ? BossFlags.DownedClown : BossFlags.None) | - (Main.ServerSideCharacter ? BossFlags.ServerSideCharacter : BossFlags.None), - BossFlags2 = (NPC.downedMechBoss1 ? BossFlags2.DownedMechBoss1 : BossFlags2.None) | - (NPC.downedMechBoss2 ? BossFlags2.DownedMechBoss2 : BossFlags2.None) | - (NPC.downedMechBoss3 ? BossFlags2.DownedMechBoss3 : BossFlags2.None) | - (NPC.downedMechBossAny ? BossFlags2.DownedMechBossAny : BossFlags2.None) | - (Main.cloudBGActive == 1f ? BossFlags2.CloudBg : BossFlags2.None) | - (WorldGen.crimson ? BossFlags2.Crimson : BossFlags2.None) | - (Main.pumpkinMoon ? BossFlags2.Pumpkin : BossFlags2.None), - Rain = Main.maxRaining, - WorldName = TShock.Config.UseServerName ? TShock.Config.ServerName : Main.worldName - }; - msg.PackFull(ms); - player.SendRawData(ms.ToArray()); - } - e.Handled = true; - return; + 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, + //Sending a fake world id causes the client to not be able to find a stored spawnx/y. + //This fixes the bed spawn point bug. With a fake world id it wont be able to find the bed spawn. + WorldID = Main.worldID, + MoonType = (byte)Main.moonType, + TreeX0 = Main.treeX[0], + TreeX1 = Main.treeX[1], + TreeX2 = Main.treeX[2], + TreeStyle0 = (byte)Main.treeStyle[0], + TreeStyle1 = (byte)Main.treeStyle[1], + TreeStyle2 = (byte)Main.treeStyle[2], + TreeStyle3 = (byte)Main.treeStyle[3], + CaveBackX0 = Main.caveBackX[0], + CaveBackX1 = Main.caveBackX[1], + CaveBackX2 = Main.caveBackX[2], + CaveBackStyle0 = (byte)Main.caveBackStyle[0], + CaveBackStyle1 = (byte)Main.caveBackStyle[1], + CaveBackStyle2 = (byte)Main.caveBackStyle[2], + CaveBackStyle3 = (byte)Main.caveBackStyle[3], + SetBG0 = (byte)WorldGen.treeBG, + SetBG1 = (byte)WorldGen.corruptBG, + SetBG2 = (byte)WorldGen.jungleBG, + SetBG3 = (byte)WorldGen.snowBG, + SetBG4 = (byte)WorldGen.hallowBG, + SetBG5 = (byte)WorldGen.crimsonBG, + SetBG6 = (byte)WorldGen.desertBG, + SetBG7 = (byte)WorldGen.oceanBG, + IceBackStyle = (byte)Main.iceBackStyle, + JungleBackStyle = (byte)Main.jungleBackStyle, + HellBackStyle = (byte)Main.hellBackStyle, + WindSpeed = Main.windSpeed, + NumberOfClouds = (byte)Main.numClouds, + BossFlags = (WorldGen.shadowOrbSmashed ? BossFlags.OrbSmashed : BossFlags.None) | + (NPC.downedBoss1 ? BossFlags.DownedBoss1 : BossFlags.None) | + (NPC.downedBoss2 ? BossFlags.DownedBoss2 : BossFlags.None) | + (NPC.downedBoss3 ? BossFlags.DownedBoss3 : BossFlags.None) | + (Main.hardMode ? BossFlags.HardMode : BossFlags.None) | + (NPC.downedClown ? BossFlags.DownedClown : BossFlags.None) | + (Main.ServerSideCharacter ? BossFlags.ServerSideCharacter : BossFlags.None) | + (NPC.downedPlantBoss ? BossFlags.DownedPlantBoss : BossFlags.None), + BossFlags2 = (NPC.downedMechBoss1 ? BossFlags2.DownedMechBoss1 : BossFlags2.None) | + (NPC.downedMechBoss2 ? BossFlags2.DownedMechBoss2 : BossFlags2.None) | + (NPC.downedMechBoss3 ? BossFlags2.DownedMechBoss3 : BossFlags2.None) | + (NPC.downedMechBossAny ? BossFlags2.DownedMechBossAny : BossFlags2.None) | + (Main.cloudBGActive == 1f ? BossFlags2.CloudBg : BossFlags2.None) | + (WorldGen.crimson ? BossFlags2.Crimson : BossFlags2.None) | + (Main.pumpkinMoon ? BossFlags2.PumpkinMoon : BossFlags2.None) | + (Main.snowMoon ? BossFlags2.SnowMoon : BossFlags2.None) , + Rain = Main.maxRaining, + WorldName = TShock.Config.UseServerName ? TShock.Config.ServerName : Main.worldName + }; + msg.PackFull(ms); + player.SendRawData(ms.ToArray()); } + e.Handled = true; + return; } else if (e.MsgId == PacketTypes.PlayerHp) {