diff --git a/cmd/init.go b/cmd/init.go index 3ae8f17..98d824a 100644 --- a/cmd/init.go +++ b/cmd/init.go @@ -85,7 +85,7 @@ var initCmd = &cobra.Command{ modLoaderName := strings.ToLower(viper.GetString("init.modloader")) if len(modLoaderName) == 0 { - modLoaderName = strings.ToLower(initReadValue("Mod loader [fabric]: ", "fabric")) + modLoaderName = strings.ToLower(initReadValue("Mod loader [quilt]: ", "quilt")) } loader, ok := core.ModLoaders[modLoaderName] diff --git a/core/versionutil.go b/core/versionutil.go index 2919637..1217822 100644 --- a/core/versionutil.go +++ b/core/versionutil.go @@ -44,6 +44,11 @@ var ModLoaders = map[string]ModLoaderComponent{ FriendlyName: "LiteLoader", VersionListGetter: FetchMavenVersionPrefixedList("http://repo.mumfrey.com/content/repositories/snapshots/com/mumfrey/liteloader/maven-metadata.xml", "LiteLoader"), }, + "quilt": { + Name: "quilt", + FriendlyName: "Quilt loader", + VersionListGetter: FetchMavenVersionList("https://maven.quiltmc.org/repository/release/org/quiltmc/quilt-loader/maven-metadata.xml"), + }, } func FetchMavenVersionList(url string) func(mcVersion string) ([]string, string, error) { diff --git a/curseforge/curseforge.go b/curseforge/curseforge.go index 0bf80ac..9900e3a 100644 --- a/curseforge/curseforge.go +++ b/curseforge/curseforge.go @@ -222,10 +222,11 @@ func getLoader(pack core.Pack) int { dependencies := pack.Versions _, hasFabric := dependencies["fabric"] + _, hasQuilt := dependencies["quilt"] _, hasForge := dependencies["forge"] - if hasFabric && hasForge { + if (hasFabric || hasQuilt) && hasForge { return modloaderTypeAny - } else if hasFabric { + } else if hasFabric || hasQuilt { // Backwards-compatible; for now (could be configurable later) return modloaderTypeFabric } else if hasForge { return modloaderTypeForge diff --git a/modrinth/export.go b/modrinth/export.go index a253d62..25c48a9 100644 --- a/modrinth/export.go +++ b/modrinth/export.go @@ -166,7 +166,9 @@ var exportCmd = &cobra.Command{ fmt.Println("Error creating manifest: " + err.Error()) os.Exit(1) } - if fabricVersion, ok := pack.Versions["fabric"]; ok { + if quiltVersion, ok := pack.Versions["quilt"]; ok { + dependencies["quilt-loader"] = quiltVersion + } else if fabricVersion, ok := pack.Versions["fabric"]; ok { dependencies["fabric-loader"] = fabricVersion } else if forgeVersion, ok := pack.Versions["forge"]; ok { dependencies["forge"] = forgeVersion diff --git a/modrinth/modrinth.go b/modrinth/modrinth.go index c384ca7..b431975 100644 --- a/modrinth/modrinth.go +++ b/modrinth/modrinth.go @@ -171,7 +171,10 @@ func getLatestVersion(modID string, pack core.Pack) (Version, error) { return Version{}, err } - loader := getLoader(pack) + loadersEncoded, err := json.Marshal(getLoaders(pack)) + if err != nil { + return Version{}, err + } baseUrl := *modrinthApiUrlParsed baseUrl.Path += "mod/" @@ -180,9 +183,7 @@ func getLatestVersion(modID string, pack core.Pack) (Version, error) { params := url.Values{} params.Add("game_versions", string(gameVersionsEncoded)) - if loader != "any" { - params.Add("loaders", "[\""+loader+"\"]") - } + params.Add("loaders", string(loadersEncoded)) baseUrl.RawQuery = params.Encode() @@ -343,18 +344,20 @@ func (v VersionFile) getBestHash() (string, string) { return "", "" } -func getLoader(pack core.Pack) string { +func getLoaders(pack core.Pack) []string { dependencies := pack.Versions - _, hasFabric := dependencies["fabric"] - _, hasForge := dependencies["forge"] - if hasFabric && hasForge { - return "any" - } else if hasFabric { - return "fabric" - } else if hasForge { - return "forge" - } else { - return "any" + var list []string + + if _, hasQuilt := dependencies["quilt"]; hasQuilt { + list = append(list, "quilt") + list = append(list, "fabric") // Backwards-compatible; for now (could be configurable later) + } else if _, hasFabric := dependencies["fabric"]; hasFabric { + list = append(list, "fabric") } + if _, hasForge := dependencies["forge"]; hasForge { + list = append(list, "forge") + } + + return list }