public override Mod ReadJson(JsonReader reader, Type objectType, Mod existingValue, bool hasExistingValue, JsonSerializer serializer) { JObject item = JObject.Load(reader); if (!item.HasValues) { return(null); } string organization = item.GetValue(nameof(Mod.Organization), StringComparison.OrdinalIgnoreCase).ToObject <string>(); McModInfo modInfo = item.GetValue(nameof(Mod.ModInfo), StringComparison.OrdinalIgnoreCase).ToObject <McModInfo>(serializer); ForgeVersion forgeVersion = item.GetValue(nameof(Mod.ForgeVersion), StringComparison.OrdinalIgnoreCase).ToObject <ForgeVersion>(serializer); ModSide side = ModSide.ClientServer; if (item.TryGetValue(nameof(Mod.Side), StringComparison.OrdinalIgnoreCase, out JToken sideValue)) { side = sideValue.ToObject <ModSide>(); } LaunchSetup launchSetup = null; if (item.TryGetValue(nameof(Mod.LaunchSetup), StringComparison.OrdinalIgnoreCase, out JToken launchValue)) { launchSetup = launchValue.ToObject <LaunchSetup>(); } WorkspaceSetup workspaceSetup = null; if (item.TryGetValue(nameof(Mod.WorkspaceSetup), StringComparison.OrdinalIgnoreCase, out JToken workspaceValue)) { workspaceSetup = workspaceValue.ToObject <WorkspaceSetup>(serializer); } return(new Mod(modInfo, organization, forgeVersion, side, launchSetup, workspaceSetup)); }
public override McMod ReadJson(JsonReader reader, Type objectType, McMod existingValue, bool hasExistingValue, JsonSerializer serializer) { JObject item = JObject.Load(reader); if (!item.HasValues) { return(null); } string organization = item.GetValue(nameof(McMod.Organization), StringComparison.OrdinalIgnoreCase).ToObject <string>(); string modname = item.GetValue(nameof(McMod.Name), StringComparison.OrdinalIgnoreCase).ToObject <string>(); string modInfoPath = ModPaths.McModInfoFile(modname); string modInfoContent = File.ReadAllText(modInfoPath); McModInfo modInfo = JsonConvert.DeserializeObject <McModInfo>(modInfoContent, new JsonSerializerSettings { Converters = serializer.Converters }); ForgeVersion forgeVersion = item.GetValue(nameof(McMod.ForgeVersion), StringComparison.OrdinalIgnoreCase).ToObject <ForgeVersion>(serializer); ModSide side = ModSide.ClientServer; if (item.TryGetValue(nameof(McMod.Side), StringComparison.OrdinalIgnoreCase, out JToken sideValue)) { side = sideValue.ToObject <ModSide>(); } LaunchSetup launchSetup = LaunchSetup.Client; if (item.TryGetValue(nameof(McMod.LaunchSetup), StringComparison.OrdinalIgnoreCase, out JToken launchValue)) { launchSetup = launchValue.ToObject <LaunchSetup>(); } WorkspaceSetup workspaceSetup = null; if (item.TryGetValue(nameof(McMod.WorkspaceSetup), StringComparison.OrdinalIgnoreCase, out JToken workspaceValue)) { workspaceSetup = workspaceValue.ToObject <WorkspaceSetup>(serializer); } return(new McMod(modInfo, organization, forgeVersion, side, launchSetup, workspaceSetup)); }