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
This commit is contained in:
comp500 2023-07-30 15:09:18 +01:00
parent 234f927be9
commit 4c23e264b0
7 changed files with 29 additions and 23 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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