From ad5ec1c2520015329f403fb4264befd38b590a00 Mon Sep 17 00:00:00 2001 From: MarioE Date: Mon, 4 May 2015 22:28:41 -0400 Subject: [PATCH] Fix NetItem serialization/deserialization --- TShockAPI/DB/CharacterManager.cs | 4 ++-- TShockAPI/NetItem.cs | 11 ++++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/TShockAPI/DB/CharacterManager.cs b/TShockAPI/DB/CharacterManager.cs index 5a799f5b..3118ddc3 100755 --- a/TShockAPI/DB/CharacterManager.cs +++ b/TShockAPI/DB/CharacterManager.cs @@ -77,7 +77,7 @@ namespace TShockAPI.DB playerData.maxHealth = reader.Get("MaxHealth"); playerData.mana = reader.Get("Mana"); playerData.maxMana = reader.Get("MaxMana"); - playerData.inventory = reader.Get("Inventory").Split('~').Select(NetItem.Parse).ToArray(); + playerData.inventory = reader.Get("Inventory").Split('~').Select(NetItem.Parse).ToArray(); playerData.spawnX = reader.Get("spawnX"); playerData.spawnY = reader.Get("spawnY"); playerData.hair = reader.Get("hair"); @@ -107,7 +107,7 @@ namespace TShockAPI.DB { var inventory = new StringBuilder(); - var items = TShock.ServerSideCharacterConfig.StartingInventory; + var items = new List(TShock.ServerSideCharacterConfig.StartingInventory); if (items.Count < NetItem.MaxInventory) items.AddRange(new NetItem[NetItem.MaxInventory - items.Count]); diff --git a/TShockAPI/NetItem.cs b/TShockAPI/NetItem.cs index b7e7ca5e..2460f42c 100644 --- a/TShockAPI/NetItem.cs +++ b/TShockAPI/NetItem.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using Newtonsoft.Json; using Terraria; namespace TShockAPI @@ -9,6 +10,7 @@ namespace TShockAPI /// /// Represents an item. /// + [JsonObject(MemberSerialization.OptIn)] public struct NetItem { /// @@ -26,9 +28,12 @@ namespace TShockAPI /// public static readonly int MaxInventory = 83; - private readonly int _netId; - private readonly byte _prefixId; - private readonly int _stack; + [JsonProperty("netID")] + private int _netId; + [JsonProperty("prefix")] + private byte _prefixId; + [JsonProperty("stack")] + private int _stack; /// /// Gets the net ID.