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"))
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]

View File

@ -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) {

View File

@ -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

View File

@ -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

View File

@ -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
}