diff --git a/Subsurface/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs b/Subsurface/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs index 8d78081b3..367d05aa7 100644 --- a/Subsurface/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs +++ b/Subsurface/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs @@ -119,6 +119,14 @@ namespace Barotrauma.Networking { UInt16 thisEventID = (UInt16)(firstEventID + (UInt16)i); UInt16 entityID = msg.ReadUInt16(); + + if (entityID == 0) + { + msg.ReadPadBits(); + lastReceivedID++; + continue; + } + byte msgLength = msg.ReadByte(); IServerSerializable entity = Entity.FindEntityByID(entityID) as IServerSerializable; diff --git a/Subsurface/Source/Networking/NetEntityEvent/NetEntityEventManager.cs b/Subsurface/Source/Networking/NetEntityEvent/NetEntityEventManager.cs index b304b8cc1..b2a7187b6 100644 --- a/Subsurface/Source/Networking/NetEntityEvent/NetEntityEventManager.cs +++ b/Subsurface/Source/Networking/NetEntityEvent/NetEntityEventManager.cs @@ -45,18 +45,19 @@ namespace Barotrauma.Networking tempBuffer.LengthBytes < 128, "Maximum EntityEvent size exceeded when serializing \""+e.Entity+"\"!"); -#if DEBUG if (Entity.FindEntityByID(e.Entity.ID) != e.Entity) { - DebugConsole.ThrowError("Error in NetEntityEventManager.Write (FindEntityByID(e.Entity.ID) != e.Entity)"); + //DebugConsole.ThrowError("Error in NetEntityEventManager.Write (FindEntityByID(e.Entity.ID) != e.Entity)"); + msg.Write((UInt16)0); + msg.WritePadBits(); + } + else + { + msg.Write((UInt16)e.Entity.ID); + msg.Write((byte)tempBuffer.LengthBytes); + msg.Write(tempBuffer); + msg.WritePadBits(); } -#endif - - - msg.Write((UInt16)e.Entity.ID); - msg.Write((byte)tempBuffer.LengthBytes); - msg.Write(tempBuffer); - msg.WritePadBits(); } } diff --git a/Subsurface/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs b/Subsurface/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs index f07a0a1b3..e923b7b4b 100644 --- a/Subsurface/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs +++ b/Subsurface/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs @@ -291,6 +291,14 @@ namespace Barotrauma.Networking { UInt16 thisEventID = (UInt16)(firstEventID + (UInt16)i); UInt16 entityID = msg.ReadUInt16(); + + if (entityID == 0) + { + msg.ReadPadBits(); + sender.lastSentEntityEventID++; + continue; + } + byte msgLength = msg.ReadByte(); IClientSerializable entity = Entity.FindEntityByID(entityID) as IClientSerializable;