Quilt support

This commit is contained in:
comp500 2022-04-20 20:58:49 +01:00
parent 9faf42c0a8
commit f1eb34d444
5 changed files with 30 additions and 19 deletions

View File

@ -85,7 +85,7 @@ var initCmd = &cobra.Command{
modLoaderName := strings.ToLower(viper.GetString("init.modloader")) modLoaderName := strings.ToLower(viper.GetString("init.modloader"))
if len(modLoaderName) == 0 { 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] loader, ok := core.ModLoaders[modLoaderName]

View File

@ -44,6 +44,11 @@ var ModLoaders = map[string]ModLoaderComponent{
FriendlyName: "LiteLoader", FriendlyName: "LiteLoader",
VersionListGetter: FetchMavenVersionPrefixedList("http://repo.mumfrey.com/content/repositories/snapshots/com/mumfrey/liteloader/maven-metadata.xml", "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) { func FetchMavenVersionList(url string) func(mcVersion string) ([]string, string, error) {

View File

@ -222,10 +222,11 @@ func getLoader(pack core.Pack) int {
dependencies := pack.Versions dependencies := pack.Versions
_, hasFabric := dependencies["fabric"] _, hasFabric := dependencies["fabric"]
_, hasQuilt := dependencies["quilt"]
_, hasForge := dependencies["forge"] _, hasForge := dependencies["forge"]
if hasFabric && hasForge { if (hasFabric || hasQuilt) && hasForge {
return modloaderTypeAny return modloaderTypeAny
} else if hasFabric { } else if hasFabric || hasQuilt { // Backwards-compatible; for now (could be configurable later)
return modloaderTypeFabric return modloaderTypeFabric
} else if hasForge { } else if hasForge {
return modloaderTypeForge return modloaderTypeForge

View File

@ -166,7 +166,9 @@ var exportCmd = &cobra.Command{
fmt.Println("Error creating manifest: " + err.Error()) fmt.Println("Error creating manifest: " + err.Error())
os.Exit(1) 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 dependencies["fabric-loader"] = fabricVersion
} else if forgeVersion, ok := pack.Versions["forge"]; ok { } else if forgeVersion, ok := pack.Versions["forge"]; ok {
dependencies["forge"] = forgeVersion dependencies["forge"] = forgeVersion

View File

@ -171,7 +171,10 @@ func getLatestVersion(modID string, pack core.Pack) (Version, error) {
return Version{}, err return Version{}, err
} }
loader := getLoader(pack) loadersEncoded, err := json.Marshal(getLoaders(pack))
if err != nil {
return Version{}, err
}
baseUrl := *modrinthApiUrlParsed baseUrl := *modrinthApiUrlParsed
baseUrl.Path += "mod/" baseUrl.Path += "mod/"
@ -180,9 +183,7 @@ func getLatestVersion(modID string, pack core.Pack) (Version, error) {
params := url.Values{} params := url.Values{}
params.Add("game_versions", string(gameVersionsEncoded)) params.Add("game_versions", string(gameVersionsEncoded))
if loader != "any" { params.Add("loaders", string(loadersEncoded))
params.Add("loaders", "[\""+loader+"\"]")
}
baseUrl.RawQuery = params.Encode() baseUrl.RawQuery = params.Encode()
@ -343,18 +344,20 @@ func (v VersionFile) getBestHash() (string, string) {
return "", "" return "", ""
} }
func getLoader(pack core.Pack) string { func getLoaders(pack core.Pack) []string {
dependencies := pack.Versions dependencies := pack.Versions
_, hasFabric := dependencies["fabric"] var list []string
_, hasForge := dependencies["forge"]
if hasFabric && hasForge { if _, hasQuilt := dependencies["quilt"]; hasQuilt {
return "any" list = append(list, "quilt")
} else if hasFabric { list = append(list, "fabric") // Backwards-compatible; for now (could be configurable later)
return "fabric" } else if _, hasFabric := dependencies["fabric"]; hasFabric {
} else if hasForge { list = append(list, "fabric")
return "forge"
} else {
return "any"
} }
if _, hasForge := dependencies["forge"]; hasForge {
list = append(list, "forge")
}
return list
} }