Example #1
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));
        }
Example #2
0
        private void RegisterWorkspaceSetups(IContainerRegistry containerRegistry)
        {
            ObservableCollection <WorkspaceSetup> workspaceSetups = new ObservableCollection <WorkspaceSetup>();
            IEnumerable <Type> workspaces = coreAssembly.ExportedTypes.Where(x => x.Name.EndsWith("Workspace"));

            foreach (Type workspace in workspaces)
            {
                string registryName = workspace.Name.Replace("Workspace", "");
                containerRegistry.Register(typeof(WorkspaceSetup), workspace, registryName);
                WorkspaceSetup setup = containerRegistry.GetContainer().Resolve <WorkspaceSetup>(registryName);
                workspaceSetups.Add(setup);
            }
            containerRegistry.RegisterInstance(workspaceSetups);
        }
        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));
        }