/// <summary> /// Use a JSON Object to build the corresponding string /// </summary> /// <param name="data">JSON object to convert</param> /// <param name="colorcode">Allow parent color code to affect child elements (set to "" for function init)</param> /// <returns>returns the Minecraft-formatted string</returns> private static string JSONData2String(Json.JSONData data, string colorcode) { string extra_result = ""; switch (data.Type) { case Json.JSONData.DataType.Object: if (data.Properties.ContainsKey("color")) { colorcode = color2tag(JSONData2String(data.Properties["color"], "")); } if (data.Properties.ContainsKey("extra")) { Json.JSONData[] extras = data.Properties["extra"].DataArray.ToArray(); foreach (Json.JSONData item in extras) extra_result = extra_result + JSONData2String(item, colorcode) + "§r"; } if (data.Properties.ContainsKey("text")) { return colorcode + JSONData2String(data.Properties["text"], colorcode) + extra_result; } else if (data.Properties.ContainsKey("translate")) { List<string> using_data = new List<string>(); if (data.Properties.ContainsKey("using") && !data.Properties.ContainsKey("with")) data.Properties["with"] = data.Properties["using"]; if (data.Properties.ContainsKey("with")) { Json.JSONData[] array = data.Properties["with"].DataArray.ToArray(); for (int i = 0; i < array.Length; i++) { using_data.Add(JSONData2String(array[i], colorcode)); } } return colorcode + TranslateString(JSONData2String(data.Properties["translate"], ""), using_data) + extra_result; } else return extra_result; case Json.JSONData.DataType.Array: string result = ""; foreach (Json.JSONData item in data.DataArray) { result += JSONData2String(item, colorcode); } return result; case Json.JSONData.DataType.String: return colorcode + data.StringValue; } return ""; }