示例#1
0
        public void ImportMcModInfo()
        {
            string    json    = "[{\"modid\":\"" + IntegratedUnitTests.TestModModid + "\",\"name\":\"" + IntegratedUnitTests.TestModName + "\",\"description\":\"Some description\",\"version\":\"1.0\",\"mcversion\":\"12.2\",\"url\":\"some url\",\"updateUrl\":\"some updateurl\",\"credits\":\"me\",\"logoFile\":\"some/logofile\",\"authorList\":[\"I'm Author\"],\"screenshots\":[\"some/screenshot\"],\"dependencies\":[\"OtherMod\"]}]";
            McModInfo modInfo = JsonConvert.DeserializeObject <McModInfo>(json, new McModInfoJsonConverter());

            Assert.AreEqual(IntegratedUnitTests.TestModName, modInfo.Name);
            Assert.AreEqual(IntegratedUnitTests.TestModModid, modInfo.Modid);
            Assert.AreEqual("Some description", modInfo.Description);
            Assert.AreEqual("1.0", modInfo.Version);
            Assert.AreEqual("12.2", modInfo.McVersion);
            Assert.AreEqual("some url", modInfo.Url);
            Assert.AreEqual("some updateurl", modInfo.UpdateUrl);
            Assert.AreEqual("me", modInfo.Credits);
            Assert.AreEqual("some/logofile", modInfo.LogoFile);
            Assert.IsNotNull(modInfo.AuthorList);
            Assert.IsNotNull(modInfo.Screenshots);
            Assert.IsNotNull(modInfo.Dependencies);
            Assert.AreEqual(1, modInfo.AuthorList.Count);
            Assert.AreEqual(1, modInfo.Screenshots.Count);
            Assert.AreEqual(1, modInfo.Dependencies.Count);
            Assert.AreEqual("I'm Author", modInfo.AuthorList[0]);
            Assert.AreEqual("some/screenshot", modInfo.Screenshots[0]);
            Assert.AreEqual("OtherMod", modInfo.Dependencies[0]);

            modInfo = JsonConvert.DeserializeObject <McModInfo>("{}", new McModInfoJsonConverter());
            Assert.IsNull(modInfo);
        }
示例#2
0
        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));
        }
示例#3
0
        public static void ExportMcInfo(McModInfo modInfo)
        {
            string modInfoPath       = ModPaths.McModInfoFile(modInfo.Name);
            string serializedModInfo = JsonConvert.SerializeObject(modInfo, Formatting.Indented, new McModInfoJsonConverter());

            using (StreamWriter writer = new StreamWriter(modInfoPath))
            {
                writer.Write(serializedModInfo);
            }
        }
示例#4
0
        public void ExportMcModInfo()
        {
            McModInfo modInfo = new McModInfo()
            {
                Name        = IntegratedUnitTests.TestModName,
                Modid       = IntegratedUnitTests.TestModModid,
                Description = "Some description",
                Version     = "1.0",
                McVersion   = "12.2",
                Url         = "smth",
                UpdateUrl   = "smth",
                Credits     = "me",
                LogoFile    = "there",
                AuthorList  = new ObservableCollection <string>()
                {
                    "I'm Author"
                },
                Screenshots = new ObservableCollection <string>()
                {
                    "Some/screenshot"
                },
                Dependencies = new ObservableCollection <string>()
                {
                    "OtherMod"
                },
            };
            string json = JsonConvert.SerializeObject(modInfo, Formatting.Indented, new McModInfoJsonConverter());

            Assert.IsTrue(json.Contains("[\n"), json);
            Assert.IsTrue(json.Contains("\n]"), json);
            Assert.IsTrue(json.Contains($"\"modid\": \"{IntegratedUnitTests.TestModModid}\""), json);
            Assert.IsTrue(json.Contains($"\"name\": \"{IntegratedUnitTests.TestModName}\""), json);
            Assert.IsTrue(json.Contains("\"description\": \"Some description\""), json);
            Assert.IsTrue(json.Contains("\"version\": \"1.0\""), json);
            Assert.IsTrue(json.Contains("\"mcVersion\": \"12.2\""), json);
            Assert.IsTrue(json.Contains("\"url\": \"smth\""), json);
            Assert.IsTrue(json.Contains("\"updateUrl\": \"smth\""), json);
            Assert.IsTrue(json.Contains("\"credits\": \"me\""), json);
            Assert.IsTrue(json.Contains("\"logoFile\": \"there\""), json);
            Assert.IsTrue(json.Contains("\"authorList\":"), json);
            Assert.IsTrue(json.Contains("\"I'm Author\""), json);
            Assert.IsTrue(json.Contains("\"screenshots\":"), json);
            Assert.IsTrue(json.Contains("\"Some/screenshot\""), json);
            Assert.IsTrue(json.Contains("\"dependencies\":"), json);
            Assert.IsTrue(json.Contains("\"OtherMod\""), json);

            modInfo.AuthorList   = null;
            modInfo.Screenshots  = null;
            modInfo.Dependencies = null;
            json = JsonConvert.SerializeObject(modInfo, Formatting.Indented, new McModInfoJsonConverter());

            Assert.IsTrue(json.Contains("\"authorList\": []"), json);
            Assert.IsTrue(json.Contains("\"screenshots\": []"), json);
            Assert.IsTrue(json.Contains("\"dependencies\": []"), json);
        }
        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));
        }
示例#6
0
 public static void ExportMcInfo(ISerializer <McModInfo> serializer, McModInfo modInfo) => File.WriteAllText(ModPaths.McModInfoFile(modInfo.Name), serializer.Serialize(modInfo));