diff --git a/MHServerEmu.sln b/MHServerEmu.sln
index a6cec2f8..1fe03ead 100644
--- a/MHServerEmu.sln
+++ b/MHServerEmu.sln
@@ -7,6 +7,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MHServerEmu", "src\MHServer
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Gazillion", "src\Gazillion\Gazillion.csproj", "{7D085437-F307-49D6-AF7A-C3B3DF4E4189}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MHServerEmu.Core", "src\MHServerEmu.Core\MHServerEmu.Core.csproj", "{667BA21C-0E76-450A-9854-93D0C4C3D79E}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
@@ -21,6 +23,10 @@ Global
{7D085437-F307-49D6-AF7A-C3B3DF4E4189}.Debug|x64.Build.0 = Debug|x64
{7D085437-F307-49D6-AF7A-C3B3DF4E4189}.Release|x64.ActiveCfg = Release|x64
{7D085437-F307-49D6-AF7A-C3B3DF4E4189}.Release|x64.Build.0 = Release|x64
+ {667BA21C-0E76-450A-9854-93D0C4C3D79E}.Debug|x64.ActiveCfg = Debug|x64
+ {667BA21C-0E76-450A-9854-93D0C4C3D79E}.Debug|x64.Build.0 = Debug|x64
+ {667BA21C-0E76-450A-9854-93D0C4C3D79E}.Release|x64.ActiveCfg = Release|x64
+ {667BA21C-0E76-450A-9854-93D0C4C3D79E}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/src/MHServerEmu/Core/BitFieldEnums.cs b/src/MHServerEmu.Core/BitFieldEnums.cs
similarity index 100%
rename from src/MHServerEmu/Core/BitFieldEnums.cs
rename to src/MHServerEmu.Core/BitFieldEnums.cs
diff --git a/src/MHServerEmu/Core/Collisions/Aabb.cs b/src/MHServerEmu.Core/Collisions/Aabb.cs
similarity index 100%
rename from src/MHServerEmu/Core/Collisions/Aabb.cs
rename to src/MHServerEmu.Core/Collisions/Aabb.cs
diff --git a/src/MHServerEmu/Core/Collisions/Aabb2.cs b/src/MHServerEmu.Core/Collisions/Aabb2.cs
similarity index 100%
rename from src/MHServerEmu/Core/Collisions/Aabb2.cs
rename to src/MHServerEmu.Core/Collisions/Aabb2.cs
diff --git a/src/MHServerEmu/Core/Collisions/Capsule.cs b/src/MHServerEmu.Core/Collisions/Capsule.cs
similarity index 100%
rename from src/MHServerEmu/Core/Collisions/Capsule.cs
rename to src/MHServerEmu.Core/Collisions/Capsule.cs
diff --git a/src/MHServerEmu/Core/Collisions/IBounds.cs b/src/MHServerEmu.Core/Collisions/IBounds.cs
similarity index 100%
rename from src/MHServerEmu/Core/Collisions/IBounds.cs
rename to src/MHServerEmu.Core/Collisions/IBounds.cs
diff --git a/src/MHServerEmu/Core/Collisions/Obb.cs b/src/MHServerEmu.Core/Collisions/Obb.cs
similarity index 100%
rename from src/MHServerEmu/Core/Collisions/Obb.cs
rename to src/MHServerEmu.Core/Collisions/Obb.cs
diff --git a/src/MHServerEmu/Core/Collisions/Plane.cs b/src/MHServerEmu.Core/Collisions/Plane.cs
similarity index 100%
rename from src/MHServerEmu/Core/Collisions/Plane.cs
rename to src/MHServerEmu.Core/Collisions/Plane.cs
diff --git a/src/MHServerEmu/Core/Collisions/Segment.cs b/src/MHServerEmu.Core/Collisions/Segment.cs
similarity index 100%
rename from src/MHServerEmu/Core/Collisions/Segment.cs
rename to src/MHServerEmu.Core/Collisions/Segment.cs
diff --git a/src/MHServerEmu/Core/Collisions/Sphere.cs b/src/MHServerEmu.Core/Collisions/Sphere.cs
similarity index 100%
rename from src/MHServerEmu/Core/Collisions/Sphere.cs
rename to src/MHServerEmu.Core/Collisions/Sphere.cs
diff --git a/src/MHServerEmu/Core/Collisions/Square.cs b/src/MHServerEmu.Core/Collisions/Square.cs
similarity index 100%
rename from src/MHServerEmu/Core/Collisions/Square.cs
rename to src/MHServerEmu.Core/Collisions/Square.cs
diff --git a/src/MHServerEmu/Core/Collisions/Triangle.cs b/src/MHServerEmu.Core/Collisions/Triangle.cs
similarity index 100%
rename from src/MHServerEmu/Core/Collisions/Triangle.cs
rename to src/MHServerEmu.Core/Collisions/Triangle.cs
diff --git a/src/MHServerEmu/Core/Config/ConfigContainer.cs b/src/MHServerEmu.Core/Config/ConfigContainer.cs
similarity index 100%
rename from src/MHServerEmu/Core/Config/ConfigContainer.cs
rename to src/MHServerEmu.Core/Config/ConfigContainer.cs
diff --git a/src/MHServerEmu/Core/Config/ConfigIgnoreAttribute.cs b/src/MHServerEmu.Core/Config/ConfigIgnoreAttribute.cs
similarity index 100%
rename from src/MHServerEmu/Core/Config/ConfigIgnoreAttribute.cs
rename to src/MHServerEmu.Core/Config/ConfigIgnoreAttribute.cs
diff --git a/src/MHServerEmu/Core/Config/ConfigManager.cs b/src/MHServerEmu.Core/Config/ConfigManager.cs
similarity index 100%
rename from src/MHServerEmu/Core/Config/ConfigManager.cs
rename to src/MHServerEmu.Core/Config/ConfigManager.cs
diff --git a/src/MHServerEmu/Core/Config/Containers/AuthConfig.cs b/src/MHServerEmu.Core/Config/Containers/AuthConfig.cs
similarity index 100%
rename from src/MHServerEmu/Core/Config/Containers/AuthConfig.cs
rename to src/MHServerEmu.Core/Config/Containers/AuthConfig.cs
diff --git a/src/MHServerEmu/Core/Config/Containers/BillingConfig.cs b/src/MHServerEmu.Core/Config/Containers/BillingConfig.cs
similarity index 100%
rename from src/MHServerEmu/Core/Config/Containers/BillingConfig.cs
rename to src/MHServerEmu.Core/Config/Containers/BillingConfig.cs
diff --git a/src/MHServerEmu/Core/Config/Containers/DefaultPlayerDataConfig.cs b/src/MHServerEmu.Core/Config/Containers/DefaultPlayerDataConfig.cs
similarity index 100%
rename from src/MHServerEmu/Core/Config/Containers/DefaultPlayerDataConfig.cs
rename to src/MHServerEmu.Core/Config/Containers/DefaultPlayerDataConfig.cs
diff --git a/src/MHServerEmu/Core/Config/Containers/FrontendConfig.cs b/src/MHServerEmu.Core/Config/Containers/FrontendConfig.cs
similarity index 100%
rename from src/MHServerEmu/Core/Config/Containers/FrontendConfig.cs
rename to src/MHServerEmu.Core/Config/Containers/FrontendConfig.cs
diff --git a/src/MHServerEmu/Core/Config/Containers/GameDataConfig.cs b/src/MHServerEmu.Core/Config/Containers/GameDataConfig.cs
similarity index 100%
rename from src/MHServerEmu/Core/Config/Containers/GameDataConfig.cs
rename to src/MHServerEmu.Core/Config/Containers/GameDataConfig.cs
diff --git a/src/MHServerEmu/Core/Config/Containers/GameOptionsConfig.cs b/src/MHServerEmu.Core/Config/Containers/GameOptionsConfig.cs
similarity index 100%
rename from src/MHServerEmu/Core/Config/Containers/GameOptionsConfig.cs
rename to src/MHServerEmu.Core/Config/Containers/GameOptionsConfig.cs
diff --git a/src/MHServerEmu/Core/Config/Containers/GroupingManagerConfig.cs b/src/MHServerEmu.Core/Config/Containers/GroupingManagerConfig.cs
similarity index 100%
rename from src/MHServerEmu/Core/Config/Containers/GroupingManagerConfig.cs
rename to src/MHServerEmu.Core/Config/Containers/GroupingManagerConfig.cs
diff --git a/src/MHServerEmu/Core/Config/Containers/LoggingConfig.cs b/src/MHServerEmu.Core/Config/Containers/LoggingConfig.cs
similarity index 100%
rename from src/MHServerEmu/Core/Config/Containers/LoggingConfig.cs
rename to src/MHServerEmu.Core/Config/Containers/LoggingConfig.cs
diff --git a/src/MHServerEmu/Core/Config/Containers/PlayerManagerConfig.cs b/src/MHServerEmu.Core/Config/Containers/PlayerManagerConfig.cs
similarity index 100%
rename from src/MHServerEmu/Core/Config/Containers/PlayerManagerConfig.cs
rename to src/MHServerEmu.Core/Config/Containers/PlayerManagerConfig.cs
diff --git a/src/MHServerEmu/Core/Config/IniFile.cs b/src/MHServerEmu.Core/Config/IniFile.cs
similarity index 100%
rename from src/MHServerEmu/Core/Config/IniFile.cs
rename to src/MHServerEmu.Core/Config/IniFile.cs
diff --git a/src/MHServerEmu/Core/Extensions/ArrayExtensions.cs b/src/MHServerEmu.Core/Extensions/ArrayExtensions.cs
similarity index 100%
rename from src/MHServerEmu/Core/Extensions/ArrayExtensions.cs
rename to src/MHServerEmu.Core/Extensions/ArrayExtensions.cs
diff --git a/src/MHServerEmu/Core/Extensions/BinaryReaderExtensions.cs b/src/MHServerEmu.Core/Extensions/BinaryReaderExtensions.cs
similarity index 100%
rename from src/MHServerEmu/Core/Extensions/BinaryReaderExtensions.cs
rename to src/MHServerEmu.Core/Extensions/BinaryReaderExtensions.cs
diff --git a/src/MHServerEmu/Core/Extensions/BinaryWriterExtensions.cs b/src/MHServerEmu.Core/Extensions/BinaryWriterExtensions.cs
similarity index 100%
rename from src/MHServerEmu/Core/Extensions/BinaryWriterExtensions.cs
rename to src/MHServerEmu.Core/Extensions/BinaryWriterExtensions.cs
diff --git a/src/MHServerEmu/Core/Extensions/MiscExtensions.cs b/src/MHServerEmu.Core/Extensions/MiscExtensions.cs
similarity index 100%
rename from src/MHServerEmu/Core/Extensions/MiscExtensions.cs
rename to src/MHServerEmu.Core/Extensions/MiscExtensions.cs
diff --git a/src/MHServerEmu/Core/Extensions/NumberExtensions.cs b/src/MHServerEmu.Core/Extensions/NumberExtensions.cs
similarity index 100%
rename from src/MHServerEmu/Core/Extensions/NumberExtensions.cs
rename to src/MHServerEmu.Core/Extensions/NumberExtensions.cs
diff --git a/src/MHServerEmu/Core/Extensions/ProtobufExtensions.cs b/src/MHServerEmu.Core/Extensions/ProtobufExtensions.cs
similarity index 100%
rename from src/MHServerEmu/Core/Extensions/ProtobufExtensions.cs
rename to src/MHServerEmu.Core/Extensions/ProtobufExtensions.cs
diff --git a/src/MHServerEmu/Core/Helpers/AssemblyHelper.cs b/src/MHServerEmu.Core/Helpers/AssemblyHelper.cs
similarity index 100%
rename from src/MHServerEmu/Core/Helpers/AssemblyHelper.cs
rename to src/MHServerEmu.Core/Helpers/AssemblyHelper.cs
diff --git a/src/MHServerEmu.Core/Helpers/CompressionHelper.cs b/src/MHServerEmu.Core/Helpers/CompressionHelper.cs
new file mode 100644
index 00000000..520c5b69
--- /dev/null
+++ b/src/MHServerEmu.Core/Helpers/CompressionHelper.cs
@@ -0,0 +1,34 @@
+using Free.Ports.zLib;
+using K4os.Compression.LZ4;
+
+namespace MHServerEmu.Core.Helpers
+{
+ public static class CompressionHelper
+ {
+ ///
+ /// Decompresses the provided LZ4 buffer.
+ ///
+ public static void LZ4Decode(byte[] source, byte[] target)
+ {
+ LZ4Codec.Decode(source, target);
+ }
+
+ ///
+ /// Compresses the provided buffer using zlib.
+ ///
+ public static byte[] ZLibDeflate(byte[] buffer)
+ {
+ // This is used for compressing the achievement database dump before sending it to clients.
+ // We need to compress specifically with a port of zlib rather than various alternatives like SharpZipLib
+ // to produce the same result as the original. zlib.compress() in Python also produces the result we need.
+
+ using (MemoryStream ms = new())
+ using (ZStreamWriter writer = new(ms))
+ {
+ writer.Write(buffer);
+ writer.Close();
+ return ms.ToArray();
+ }
+ }
+ }
+}
diff --git a/src/MHServerEmu/Core/Helpers/CryptographyHelper.cs b/src/MHServerEmu.Core/Helpers/CryptographyHelper.cs
similarity index 100%
rename from src/MHServerEmu/Core/Helpers/CryptographyHelper.cs
rename to src/MHServerEmu.Core/Helpers/CryptographyHelper.cs
diff --git a/src/MHServerEmu/Core/Helpers/FileHelper.cs b/src/MHServerEmu.Core/Helpers/FileHelper.cs
similarity index 100%
rename from src/MHServerEmu/Core/Helpers/FileHelper.cs
rename to src/MHServerEmu.Core/Helpers/FileHelper.cs
diff --git a/src/MHServerEmu/Core/Helpers/HashHelper.cs b/src/MHServerEmu.Core/Helpers/HashHelper.cs
similarity index 100%
rename from src/MHServerEmu/Core/Helpers/HashHelper.cs
rename to src/MHServerEmu.Core/Helpers/HashHelper.cs
diff --git a/src/MHServerEmu/Core/Helpers/MathHelper.cs b/src/MHServerEmu.Core/Helpers/MathHelper.cs
similarity index 100%
rename from src/MHServerEmu/Core/Helpers/MathHelper.cs
rename to src/MHServerEmu.Core/Helpers/MathHelper.cs
diff --git a/src/MHServerEmu/Core/Logging/LogManager.cs b/src/MHServerEmu.Core/Logging/LogManager.cs
similarity index 100%
rename from src/MHServerEmu/Core/Logging/LogManager.cs
rename to src/MHServerEmu.Core/Logging/LogManager.cs
diff --git a/src/MHServerEmu/Core/Logging/LogMessage.cs b/src/MHServerEmu.Core/Logging/LogMessage.cs
similarity index 100%
rename from src/MHServerEmu/Core/Logging/LogMessage.cs
rename to src/MHServerEmu.Core/Logging/LogMessage.cs
diff --git a/src/MHServerEmu/Core/Logging/LogRouter.cs b/src/MHServerEmu.Core/Logging/LogRouter.cs
similarity index 100%
rename from src/MHServerEmu/Core/Logging/LogRouter.cs
rename to src/MHServerEmu.Core/Logging/LogRouter.cs
diff --git a/src/MHServerEmu/Core/Logging/LogTarget.cs b/src/MHServerEmu.Core/Logging/LogTarget.cs
similarity index 100%
rename from src/MHServerEmu/Core/Logging/LogTarget.cs
rename to src/MHServerEmu.Core/Logging/LogTarget.cs
diff --git a/src/MHServerEmu/Core/Logging/Logger.cs b/src/MHServerEmu.Core/Logging/Logger.cs
similarity index 100%
rename from src/MHServerEmu/Core/Logging/Logger.cs
rename to src/MHServerEmu.Core/Logging/Logger.cs
diff --git a/src/MHServerEmu/Core/Logging/Targets/ConsoleTarget.cs b/src/MHServerEmu.Core/Logging/Targets/ConsoleTarget.cs
similarity index 100%
rename from src/MHServerEmu/Core/Logging/Targets/ConsoleTarget.cs
rename to src/MHServerEmu.Core/Logging/Targets/ConsoleTarget.cs
diff --git a/src/MHServerEmu/Core/Logging/Targets/FileTarget.cs b/src/MHServerEmu.Core/Logging/Targets/FileTarget.cs
similarity index 100%
rename from src/MHServerEmu/Core/Logging/Targets/FileTarget.cs
rename to src/MHServerEmu.Core/Logging/Targets/FileTarget.cs
diff --git a/src/MHServerEmu.Core/MHServerEmu.Core.csproj b/src/MHServerEmu.Core/MHServerEmu.Core.csproj
new file mode 100644
index 00000000..d1e9af8b
--- /dev/null
+++ b/src/MHServerEmu.Core/MHServerEmu.Core.csproj
@@ -0,0 +1,29 @@
+
+
+
+ net6.0
+ enable
+ disable
+ x64
+
+
+
+
+
+
+
+
+ ..\..\dep\Free.Ports.zLib\Free.Ports.zLib.dll
+
+
+ ..\..\dep\protobuf-csharp\Google.ProtocolBuffers.dll
+
+
+ ..\..\dep\ini-parser\INIFileParser.dll
+
+
+ ..\..\dep\K4os.Compression.LZ4\K4os.Compression.LZ4.dll
+
+
+
+
diff --git a/src/MHServerEmu/Core/Network/GameMessage.cs b/src/MHServerEmu.Core/Network/GameMessage.cs
similarity index 100%
rename from src/MHServerEmu/Core/Network/GameMessage.cs
rename to src/MHServerEmu.Core/Network/GameMessage.cs
diff --git a/src/MHServerEmu/Core/Network/IGameService.cs b/src/MHServerEmu.Core/Network/IGameService.cs
similarity index 100%
rename from src/MHServerEmu/Core/Network/IGameService.cs
rename to src/MHServerEmu.Core/Network/IGameService.cs
diff --git a/src/MHServerEmu/Core/Network/PacketIn.cs b/src/MHServerEmu.Core/Network/PacketIn.cs
similarity index 100%
rename from src/MHServerEmu/Core/Network/PacketIn.cs
rename to src/MHServerEmu.Core/Network/PacketIn.cs
diff --git a/src/MHServerEmu/Core/Network/PacketOut.cs b/src/MHServerEmu.Core/Network/PacketOut.cs
similarity index 100%
rename from src/MHServerEmu/Core/Network/PacketOut.cs
rename to src/MHServerEmu.Core/Network/PacketOut.cs
diff --git a/src/MHServerEmu/Core/Network/ProtocolDispatchTable.cs b/src/MHServerEmu.Core/Network/ProtocolDispatchTable.cs
similarity index 100%
rename from src/MHServerEmu/Core/Network/ProtocolDispatchTable.cs
rename to src/MHServerEmu.Core/Network/ProtocolDispatchTable.cs
diff --git a/src/MHServerEmu/Core/Network/ServerManager.cs b/src/MHServerEmu.Core/Network/ServerManager.cs
similarity index 100%
rename from src/MHServerEmu/Core/Network/ServerManager.cs
rename to src/MHServerEmu.Core/Network/ServerManager.cs
diff --git a/src/MHServerEmu/Core/Network/Tcp/IPacket.cs b/src/MHServerEmu.Core/Network/Tcp/IPacket.cs
similarity index 100%
rename from src/MHServerEmu/Core/Network/Tcp/IPacket.cs
rename to src/MHServerEmu.Core/Network/Tcp/IPacket.cs
diff --git a/src/MHServerEmu/Core/Network/Tcp/ITcpClient.cs b/src/MHServerEmu.Core/Network/Tcp/ITcpClient.cs
similarity index 100%
rename from src/MHServerEmu/Core/Network/Tcp/ITcpClient.cs
rename to src/MHServerEmu.Core/Network/Tcp/ITcpClient.cs
diff --git a/src/MHServerEmu/Core/Network/Tcp/TcpClientConnection.cs b/src/MHServerEmu.Core/Network/Tcp/TcpClientConnection.cs
similarity index 100%
rename from src/MHServerEmu/Core/Network/Tcp/TcpClientConnection.cs
rename to src/MHServerEmu.Core/Network/Tcp/TcpClientConnection.cs
diff --git a/src/MHServerEmu/Core/Network/Tcp/TcpServer.cs b/src/MHServerEmu.Core/Network/Tcp/TcpServer.cs
similarity index 100%
rename from src/MHServerEmu/Core/Network/Tcp/TcpServer.cs
rename to src/MHServerEmu.Core/Network/Tcp/TcpServer.cs
diff --git a/src/MHServerEmu/Core/Serialization/BoolDecoder.cs b/src/MHServerEmu.Core/Serialization/BoolDecoder.cs
similarity index 100%
rename from src/MHServerEmu/Core/Serialization/BoolDecoder.cs
rename to src/MHServerEmu.Core/Serialization/BoolDecoder.cs
diff --git a/src/MHServerEmu/Core/Serialization/BoolEncoder.cs b/src/MHServerEmu.Core/Serialization/BoolEncoder.cs
similarity index 100%
rename from src/MHServerEmu/Core/Serialization/BoolEncoder.cs
rename to src/MHServerEmu.Core/Serialization/BoolEncoder.cs
diff --git a/src/MHServerEmu/Core/Serialization/TimeSpanJsonConverter.cs b/src/MHServerEmu.Core/Serialization/TimeSpanJsonConverter.cs
similarity index 100%
rename from src/MHServerEmu/Core/Serialization/TimeSpanJsonConverter.cs
rename to src/MHServerEmu.Core/Serialization/TimeSpanJsonConverter.cs
diff --git a/src/MHServerEmu/Core/System/Clock.cs b/src/MHServerEmu.Core/System/Clock.cs
similarity index 100%
rename from src/MHServerEmu/Core/System/Clock.cs
rename to src/MHServerEmu.Core/System/Clock.cs
diff --git a/src/MHServerEmu/Core/System/IdGenerator.cs b/src/MHServerEmu.Core/System/IdGenerator.cs
similarity index 100%
rename from src/MHServerEmu/Core/System/IdGenerator.cs
rename to src/MHServerEmu.Core/System/IdGenerator.cs
diff --git a/src/MHServerEmu/Core/System/Random/GRandom.cs b/src/MHServerEmu.Core/System/Random/GRandom.cs
similarity index 100%
rename from src/MHServerEmu/Core/System/Random/GRandom.cs
rename to src/MHServerEmu.Core/System/Random/GRandom.cs
diff --git a/src/MHServerEmu/Core/System/Random/Rand.cs b/src/MHServerEmu.Core/System/Random/Rand.cs
similarity index 100%
rename from src/MHServerEmu/Core/System/Random/Rand.cs
rename to src/MHServerEmu.Core/System/Random/Rand.cs
diff --git a/src/MHServerEmu/Core/System/Random/RandMwc.cs b/src/MHServerEmu.Core/System/Random/RandMwc.cs
similarity index 100%
rename from src/MHServerEmu/Core/System/Random/RandMwc.cs
rename to src/MHServerEmu.Core/System/Random/RandMwc.cs
diff --git a/src/MHServerEmu/Core/VectorMath/Matrix3.cs b/src/MHServerEmu.Core/VectorMath/Matrix3.cs
similarity index 100%
rename from src/MHServerEmu/Core/VectorMath/Matrix3.cs
rename to src/MHServerEmu.Core/VectorMath/Matrix3.cs
diff --git a/src/MHServerEmu/Core/VectorMath/Orientation.cs b/src/MHServerEmu.Core/VectorMath/Orientation.cs
similarity index 100%
rename from src/MHServerEmu/Core/VectorMath/Orientation.cs
rename to src/MHServerEmu.Core/VectorMath/Orientation.cs
diff --git a/src/MHServerEmu/Core/VectorMath/Point2.cs b/src/MHServerEmu.Core/VectorMath/Point2.cs
similarity index 100%
rename from src/MHServerEmu/Core/VectorMath/Point2.cs
rename to src/MHServerEmu.Core/VectorMath/Point2.cs
diff --git a/src/MHServerEmu/Core/VectorMath/Point3.cs b/src/MHServerEmu.Core/VectorMath/Point3.cs
similarity index 100%
rename from src/MHServerEmu/Core/VectorMath/Point3.cs
rename to src/MHServerEmu.Core/VectorMath/Point3.cs
diff --git a/src/MHServerEmu/Core/VectorMath/Transform3.cs b/src/MHServerEmu.Core/VectorMath/Transform3.cs
similarity index 100%
rename from src/MHServerEmu/Core/VectorMath/Transform3.cs
rename to src/MHServerEmu.Core/VectorMath/Transform3.cs
diff --git a/src/MHServerEmu/Core/VectorMath/Vector2.cs b/src/MHServerEmu.Core/VectorMath/Vector2.cs
similarity index 100%
rename from src/MHServerEmu/Core/VectorMath/Vector2.cs
rename to src/MHServerEmu.Core/VectorMath/Vector2.cs
diff --git a/src/MHServerEmu/Core/VectorMath/Vector3.cs b/src/MHServerEmu.Core/VectorMath/Vector3.cs
similarity index 100%
rename from src/MHServerEmu/Core/VectorMath/Vector3.cs
rename to src/MHServerEmu.Core/VectorMath/Vector3.cs
diff --git a/src/MHServerEmu/Games/Achievements/AchievementDatabase.cs b/src/MHServerEmu/Games/Achievements/AchievementDatabase.cs
index b944fcc7..4825776a 100644
--- a/src/MHServerEmu/Games/Achievements/AchievementDatabase.cs
+++ b/src/MHServerEmu/Games/Achievements/AchievementDatabase.cs
@@ -1,6 +1,5 @@
using System.Diagnostics;
using System.Text.Json;
-using Free.Ports.zLib;
using Google.ProtocolBuffers;
using Gazillion;
using MHServerEmu.Core.Helpers;
@@ -186,19 +185,13 @@ namespace MHServerEmu.Games.Achievements
.SetAchievementNewThresholdUS((ulong)AchievementNewThresholdUS.TotalSeconds)
.Build().ToByteArray();
- // We need to compress specifically with a port of zlib rather than various alternatives like SharpZipLib
- // to produce the same result. zlib.compress() in Python also produces the result we need.
+ // NOTE: If you don't use the right library to compress this it's going to cause client-side errors.
+ // See CompressionHelper.ZLibDeflate() for more details.
+ byte[] compressedBuffer = CompressionHelper.ZLibDeflate(dumpBuffer);
- using (MemoryStream ms = new())
- using (ZStreamWriter writer = new(ms))
- {
- writer.Write(dumpBuffer);
- writer.Close();
-
- _cachedDump = NetMessageAchievementDatabaseDump.CreateBuilder()
- .SetCompressedAchievementDatabaseDump(ByteString.CopyFrom(ms.ToArray()))
- .Build();
- }
+ _cachedDump = NetMessageAchievementDatabaseDump.CreateBuilder()
+ .SetCompressedAchievementDatabaseDump(ByteString.CopyFrom(compressedBuffer))
+ .Build();
}
}
}
diff --git a/src/MHServerEmu/Games/GameData/PakFile.cs b/src/MHServerEmu/Games/GameData/PakFile.cs
index bcba73ad..76766534 100644
--- a/src/MHServerEmu/Games/GameData/PakFile.cs
+++ b/src/MHServerEmu/Games/GameData/PakFile.cs
@@ -1,5 +1,5 @@
-using K4os.Compression.LZ4;
-using MHServerEmu.Core.Extensions;
+using MHServerEmu.Core.Extensions;
+using MHServerEmu.Core.Helpers;
using MHServerEmu.Core.Logging;
namespace MHServerEmu.Games.GameData
@@ -76,7 +76,7 @@ namespace MHServerEmu.Games.GameData
}
byte[] uncompressedData = new byte[entry.UncompressedSize];
- LZ4Codec.Decode(entry.CompressedData, uncompressedData);
+ CompressionHelper.LZ4Decode(entry.CompressedData, uncompressedData);
return new(uncompressedData);
}
diff --git a/src/MHServerEmu/MHServerEmu.csproj b/src/MHServerEmu/MHServerEmu.csproj
index f9f99052..abf5cde3 100644
--- a/src/MHServerEmu/MHServerEmu.csproj
+++ b/src/MHServerEmu/MHServerEmu.csproj
@@ -22,24 +22,16 @@
+
..\..\dep\Dapper\Dapper.dll
-
- ..\..\dep\Free.Ports.zLib\Free.Ports.zLib.dll
-
..\..\dep\protobuf-csharp\Google.ProtocolBuffers.dll
-
- ..\..\dep\ini-parser\INIFileParser.dll
-
-
- ..\..\dep\K4os.Compression.LZ4\K4os.Compression.LZ4.dll
-
..\..\dep\System.Data.SQLite\System.Data.SQLite.dll