Fixed an old packet handler causing WorldInfo packet data to be sent incorrectly
This commit is contained in:
parent
0794b89407
commit
4ff861634c
1 changed files with 6 additions and 130 deletions
|
|
@ -668,6 +668,11 @@ namespace TShockAPI
|
||||||
ComputeMaxStyles();
|
ComputeMaxStyles();
|
||||||
FixChestStacks();
|
FixChestStacks();
|
||||||
|
|
||||||
|
if (Config.UseServerName)
|
||||||
|
{
|
||||||
|
Main.worldName = Config.ServerName;
|
||||||
|
}
|
||||||
|
|
||||||
UpdateManager = new UpdateManager();
|
UpdateManager = new UpdateManager();
|
||||||
StatTracker.Initialize();
|
StatTracker.Initialize();
|
||||||
}
|
}
|
||||||
|
|
@ -1377,136 +1382,7 @@ namespace TShockAPI
|
||||||
/// <param name="e">e - The SendDataEventArgs object.</param>
|
/// <param name="e">e - The SendDataEventArgs object.</param>
|
||||||
private void NetHooks_SendData(SendDataEventArgs e)
|
private void NetHooks_SendData(SendDataEventArgs e)
|
||||||
{
|
{
|
||||||
/*if (e.MsgId == PacketTypes.Disconnect)
|
if (e.MsgId == PacketTypes.PlayerHp)
|
||||||
{
|
|
||||||
Action<RemoteClient, string> disconnect = (client, str) =>
|
|
||||||
{
|
|
||||||
if (client == null || !client.IsActive || client.Socket.IsConnected())
|
|
||||||
return;
|
|
||||||
using (var ms = new MemoryStream())
|
|
||||||
{
|
|
||||||
var msg = new DisconnectMsg() { Reason = str };
|
|
||||||
msg.PackFull(ms);
|
|
||||||
client.Socket.AsyncSend(ms.ToArray(), 0, (int)ms.Length, client.ServerWriteCallBack);
|
|
||||||
client.Socket.Close();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
if (e.remoteClient != -1)
|
|
||||||
{
|
|
||||||
disconnect(Netplay.Clients[e.remoteClient], e.text);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (int i = 0; i < Netplay.Clients.Length; i++)
|
|
||||||
{
|
|
||||||
if (e.ignoreClient != -1 && e.ignoreClient == i)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
disconnect(Netplay.Clients[i], e.text);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
e.Handled = true;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else */if (e.MsgId == PacketTypes.WorldInfo)
|
|
||||||
{
|
|
||||||
using (var ms = new MemoryStream())
|
|
||||||
{
|
|
||||||
var msg = new WorldInfoMsg
|
|
||||||
{
|
|
||||||
Time = (int)Main.time,
|
|
||||||
DayTime = Main.dayTime,
|
|
||||||
MoonPhase = (byte)Main.moonPhase,
|
|
||||||
BloodMoon = Main.bloodMoon,
|
|
||||||
Eclipse = Main.eclipse,
|
|
||||||
MaxTilesX = (short)Main.maxTilesX,
|
|
||||||
MaxTilesY = (short)Main.maxTilesY,
|
|
||||||
SpawnX = (short)Main.spawnTileX,
|
|
||||||
SpawnY = (short)Main.spawnTileY,
|
|
||||||
WorldSurface = (short)Main.worldSurface,
|
|
||||||
RockLayer = (short)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),
|
|
||||||
BossFlags3 = (Main.expertMode ? BossFlags3.ExpertMode : BossFlags3.None) |
|
|
||||||
(Main.fastForwardTime ? BossFlags3.FastForwardTime : BossFlags3.None) |
|
|
||||||
(Main.slimeRain ? BossFlags3.SlimeRain : BossFlags3.None) |
|
|
||||||
(NPC.downedSlimeKing ? BossFlags3.DownedKingSlime : BossFlags3.None) |
|
|
||||||
(NPC.downedQueenBee ? BossFlags3.DownedQueenBee : BossFlags3.None) |
|
|
||||||
(NPC.downedFishron ? BossFlags3.DownedFishron : BossFlags3.None) |
|
|
||||||
(NPC.downedMartians ? BossFlags3.DownedMartians : BossFlags3.None) |
|
|
||||||
(NPC.downedAncientCultist ? BossFlags3.DownedAncientCultist : BossFlags3.None),
|
|
||||||
BossFlags4 = (NPC.downedMoonlord ? BossFlags4.DownedMoonLord : BossFlags4.None) |
|
|
||||||
(NPC.downedHalloweenKing ? BossFlags4.DownedHalloweenKing : BossFlags4.None) |
|
|
||||||
(NPC.downedHalloweenTree ? BossFlags4.DownedHalloweenTree : BossFlags4.None) |
|
|
||||||
(NPC.downedChristmasIceQueen ? BossFlags4.DownedChristmasIceQueen : BossFlags4.None) |
|
|
||||||
(NPC.downedChristmasSantank ? BossFlags4.DownedChristmasSantank : BossFlags4.None) |
|
|
||||||
(NPC.downedChristmasTree ? BossFlags4.DownedChristmasTree : BossFlags4.None),
|
|
||||||
|
|
||||||
Rain = Main.maxRaining,
|
|
||||||
WorldName = TShock.Config.UseServerName ? TShock.Config.ServerName : Main.worldName
|
|
||||||
};
|
|
||||||
msg.PackFull(ms);
|
|
||||||
if (e.remoteClient == -1)
|
|
||||||
{
|
|
||||||
TSPlayer.All.SendRawData(ms.ToArray());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var player = Players[e.remoteClient];
|
|
||||||
if (player == null) return;
|
|
||||||
player.SendRawData(ms.ToArray());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
e.Handled = true;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else if (e.MsgId == PacketTypes.PlayerHp)
|
|
||||||
{
|
{
|
||||||
if (Main.player[(byte)e.number].statLife <= 0)
|
if (Main.player[(byte)e.number].statLife <= 0)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue