From 4c23e264b09b999a468c2b3b217e4118d1fb6d6a Mon Sep 17 00:00:00 2001 From: comp500 Date: Sun, 30 Jul 2023 15:09:18 +0100 Subject: [PATCH] Clean up code, filter version numbers for NeoForge as well as Forge NeoForge doesn't seem to have an update checker JSON yet, so we can't determine the recommended version --- cmd/init.go | 2 +- core/pack.go | 18 +++++++++++++++++- curseforge/curseforge.go | 2 +- curseforge/install.go | 6 +++--- migrate/loader.go | 16 +++------------- modrinth/install.go | 4 ++-- modrinth/modrinth.go | 4 ++-- 7 files changed, 29 insertions(+), 23 deletions(-) diff --git a/cmd/init.go b/cmd/init.go index 226586b..9516093 100644 --- a/cmd/init.go +++ b/cmd/init.go @@ -102,7 +102,7 @@ var initCmd = &cobra.Command{ } } v := componentVersion - if loader.Name == "forge" { + if loader.Name == "forge" || loader.Name == "neoforge" { v = cmdshared.GetRawForgeVersion(componentVersion) } if !slices.Contains(versions, v) { diff --git a/core/pack.go b/core/pack.go index 2fb4d27..f4c25f5 100644 --- a/core/pack.go +++ b/core/pack.go @@ -191,7 +191,7 @@ func (pack Pack) GetPackName() string { } } -func (pack Pack) GetLoaders() (loaders []string) { +func (pack Pack) GetCompatibleLoaders() (loaders []string) { if _, hasQuilt := pack.Versions["quilt"]; hasQuilt { loaders = append(loaders, "quilt") loaders = append(loaders, "fabric") // Backwards-compatible; for now (could be configurable later) @@ -206,3 +206,19 @@ func (pack Pack) GetLoaders() (loaders []string) { } return } + +func (pack Pack) GetLoaders() (loaders []string) { + if _, hasQuilt := pack.Versions["quilt"]; hasQuilt { + loaders = append(loaders, "quilt") + } + if _, hasFabric := pack.Versions["fabric"]; hasFabric { + loaders = append(loaders, "fabric") + } + if _, hasNeoForge := pack.Versions["neoforge"]; hasNeoForge { + loaders = append(loaders, "neoforge") + } + if _, hasForge := pack.Versions["forge"]; hasForge { + loaders = append(loaders, "forge") + } + return +} diff --git a/curseforge/curseforge.go b/curseforge/curseforge.go index 209d68b..e614421 100644 --- a/curseforge/curseforge.go +++ b/curseforge/curseforge.go @@ -414,7 +414,7 @@ func (u cfUpdater) CheckUpdate(mods []*core.Mod, pack core.Pack) ([]core.UpdateC } } - packLoaders := pack.GetLoaders() + packLoaders := pack.GetCompatibleLoaders() for i, v := range mods { projectRaw, ok := v.GetParsedUpdateData("curseforge") diff --git a/curseforge/install.go b/curseforge/install.go index 020afca..2a3a7cd 100644 --- a/curseforge/install.go +++ b/curseforge/install.go @@ -120,14 +120,14 @@ var installCmd = &cobra.Command{ } var fileInfoData modFileInfo - fileInfoData, err = getLatestFile(modInfoData, mcVersions, fileID, pack.GetLoaders()) + fileInfoData, err = getLatestFile(modInfoData, mcVersions, fileID, pack.GetCompatibleLoaders()) if err != nil { fmt.Printf("Failed to get file for project: %v\n", err) os.Exit(1) } if len(fileInfoData.Dependencies) > 0 { - isQuilt := slices.Contains(pack.GetLoaders(), "quilt") + isQuilt := slices.Contains(pack.GetCompatibleLoaders(), "quilt") var depsInstallable []installableDep var depIDPendingQueue []uint32 @@ -191,7 +191,7 @@ var installCmd = &cobra.Command{ depIDPendingQueue = depIDPendingQueue[:0] for _, currData := range depInfoData { - depFileInfo, err := getLatestFile(currData, mcVersions, 0, pack.GetLoaders()) + depFileInfo, err := getLatestFile(currData, mcVersions, 0, pack.GetCompatibleLoaders()) if err != nil { fmt.Printf("Error retrieving dependency data: %s\n", err.Error()) continue diff --git a/migrate/loader.go b/migrate/loader.go index 31d0405..7c914e2 100644 --- a/migrate/loader.go +++ b/migrate/loader.go @@ -24,17 +24,7 @@ var loaderCommand = &cobra.Command{ fmt.Printf("Error loading pack: %s\n", err) os.Exit(1) } - // Get our current loader, would use the modpack.GetLoaders function - // but, it supplements Quilt with Fabric, which isn't needed for this - var currentLoaders []string - // Add all the keys from modpack.Versions - for key := range modpack.Versions { - // If it ain't in core.ModLoaders, we don't want it - if _, ok := core.ModLoaders[key]; !ok { - continue - } - currentLoaders = append(currentLoaders, key) - } + var currentLoaders = modpack.GetLoaders() // Do some sanity checks on the current loader slice if len(currentLoaders) == 0 { fmt.Println("No loader is currently set in your pack.toml!") @@ -90,8 +80,8 @@ var loaderCommand = &cobra.Command{ fmt.Println("Updating to explicit loader version") // This one is easy :D versions, _, loader := getVersionsForLoader(currentLoaders[0], mcVersion) - // Check if the loader happens to be Forge, since there's two version formats - if loader.Name == "forge" { + // Check if the loader happens to be Forge/NeoForge, since there's two version formats + if loader.Name == "forge" || loader.Name == "neoforge" { wantedVersion := cmdshared.GetRawForgeVersion(args[0]) validateVersion(versions, wantedVersion, loader) _ = updatePackToVersion(wantedVersion, modpack, loader) diff --git a/modrinth/install.go b/modrinth/install.go index 064411f..d1854e9 100644 --- a/modrinth/install.go +++ b/modrinth/install.go @@ -227,7 +227,7 @@ func installVersion(project *modrinthApi.Project, version *modrinthApi.Version, if len(version.Dependencies) > 0 { // TODO: could get installed version IDs, and compare to install the newest - i.e. preferring pinned versions over getting absolute latest? installedProjects := getInstalledProjectIDs(index) - isQuilt := slices.Contains(pack.GetLoaders(), "quilt") + isQuilt := slices.Contains(pack.GetCompatibleLoaders(), "quilt") mcVersion, err := pack.GetMCVersion() if err != nil { return err @@ -432,7 +432,7 @@ func createFileMeta(project *modrinthApi.Project, version *modrinthApi.Version, var path string folder := viper.GetString("meta-folder") if folder == "" { - folder, err = getProjectTypeFolder(*project.ProjectType, version.Loaders, pack.GetLoaders()) + folder, err = getProjectTypeFolder(*project.ProjectType, version.Loaders, pack.GetCompatibleLoaders()) if err != nil { return err } diff --git a/modrinth/modrinth.go b/modrinth/modrinth.go index 3bdc8f7..2e920bd 100644 --- a/modrinth/modrinth.go +++ b/modrinth/modrinth.go @@ -313,9 +313,9 @@ func getLatestVersion(projectID string, name string, pack core.Pack) (*modrinthA } var loaders []string if viper.GetString("datapack-folder") != "" { - loaders = append(pack.GetLoaders(), withDatapackPathMRLoaders...) + loaders = append(pack.GetCompatibleLoaders(), withDatapackPathMRLoaders...) } else { - loaders = append(pack.GetLoaders(), defaultMRLoaders...) + loaders = append(pack.GetCompatibleLoaders(), defaultMRLoaders...) } result, err := mrDefaultClient.Versions.ListVersions(projectID, modrinthApi.ListVersionsOptions{