diff --git a/Maple2.File.Ingest/Maple2.File.Ingest.csproj b/Maple2.File.Ingest/Maple2.File.Ingest.csproj
index 3a55fa4cb..43539a042 100644
--- a/Maple2.File.Ingest/Maple2.File.Ingest.csproj
+++ b/Maple2.File.Ingest/Maple2.File.Ingest.csproj
@@ -20,7 +20,7 @@
-
+
diff --git a/Maple2.Model/Game/FieldInstance.cs b/Maple2.Model/Game/FieldInstance.cs
index 8c16c3536..183779b6a 100644
--- a/Maple2.Model/Game/FieldInstance.cs
+++ b/Maple2.Model/Game/FieldInstance.cs
@@ -1,10 +1,13 @@
using System.Runtime.InteropServices;
using Maple2.Model.Enum;
+using Maple2.PacketLib.Tools;
+using Maple2.Tools;
namespace Maple2.Model.Game;
-[StructLayout(LayoutKind.Sequential, Size = 6)]
-public readonly struct FieldInstance {
+public sealed class FieldInstance : IByteSerializable {
+ public static FieldInstance Default = new(false, InstanceType.none, 0);
+
public readonly bool BlockChangeChannel;
public readonly InstanceType InstanceType;
public readonly int InstanceId;
@@ -14,4 +17,10 @@ public FieldInstance(bool blockChangeChannel, InstanceType instanceType, int ins
InstanceType = instanceType;
InstanceId = instanceId;
}
+
+ public void WriteTo(IByteWriter writer) {
+ writer.WriteBool(BlockChangeChannel);
+ writer.Write(InstanceType);
+ writer.WriteInt(InstanceId);
+ }
}
diff --git a/Maple2.Server.Game/Manager/Field/FieldManager.cs b/Maple2.Server.Game/Manager/Field/FieldManager.cs
index d31158f64..17451dc3a 100644
--- a/Maple2.Server.Game/Manager/Field/FieldManager.cs
+++ b/Maple2.Server.Game/Manager/Field/FieldManager.cs
@@ -67,7 +67,7 @@ public sealed partial class FieldManager : IDisposable {
public int MapId => Metadata.Id;
public readonly long OwnerId;
public readonly int InstanceId;
- public FieldInstance FieldInstance = default;
+ public FieldInstance FieldInstance = FieldInstance.Default;
public readonly AiManager Ai;
public IFieldRenderer? DebugRenderer { get; private set; }
diff --git a/Maple2.Server.Game/Packets/FieldEnterPacket.cs b/Maple2.Server.Game/Packets/FieldEnterPacket.cs
index 9e6b19d95..b3fb22c9e 100644
--- a/Maple2.Server.Game/Packets/FieldEnterPacket.cs
+++ b/Maple2.Server.Game/Packets/FieldEnterPacket.cs
@@ -7,6 +7,7 @@
using Maple2.Server.Core.Packets;
using Maple2.Server.Game.Model;
using Maple2.Server.Game.Session;
+using Maple2.Tools.Extensions;
namespace Maple2.Server.Game.Packets;
@@ -15,7 +16,7 @@ public static ByteWriter Request(IActor player) {
var pWriter = Packet.Of(SendOp.RequestFieldEnter);
pWriter.Write(MigrationError.ok);
pWriter.WriteInt(player.Value.Character.MapId);
- pWriter.Write(player.Field.FieldInstance);
+ pWriter.WriteClass(player.Field.FieldInstance);
pWriter.WriteInt();
pWriter.Write(player.Position);
pWriter.Write(player.Rotation);