mirror of
https://github.com/packwiz/packwiz.git
synced 2025-04-19 21:16:30 +02:00
Improved file selection - check both latest and game version latest
This commit is contained in:
parent
8325f07f18
commit
2ca4ad91f9
@ -288,6 +288,7 @@ func (u cfUpdater) CheckUpdate(mods []core.Mod, mcVersion string) ([]core.Update
|
|||||||
updateAvailable = true
|
updateAvailable = true
|
||||||
fileID = file.ID
|
fileID = file.ID
|
||||||
fileName = file.Name
|
fileName = file.Name
|
||||||
|
fileInfoObtained = false // Make sure we get the file info again
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -339,39 +339,33 @@ func getLatestFile(modInfoData modInfo, mcVersion string, fileID int) (modFileIn
|
|||||||
// For snapshots, curseforge doesn't put them in GameVersionLatestFiles
|
// For snapshots, curseforge doesn't put them in GameVersionLatestFiles
|
||||||
if fileID == 0 {
|
if fileID == 0 {
|
||||||
var fileInfoData modFileInfo
|
var fileInfoData modFileInfo
|
||||||
|
fileInfoObtained := false
|
||||||
|
|
||||||
for _, v := range modInfoData.LatestFiles {
|
for _, v := range modInfoData.LatestFiles {
|
||||||
// Choose "newest" version by largest ID
|
// Choose "newest" version by largest ID
|
||||||
if sliceContainsString(v.GameVersions, getCurseforgeVersion(mcVersion)) && v.ID > fileID {
|
if sliceContainsString(v.GameVersions, getCurseforgeVersion(mcVersion)) && v.ID > fileID {
|
||||||
fileID = v.ID
|
fileID = v.ID
|
||||||
fileInfoData = v
|
fileInfoData = v
|
||||||
|
fileInfoObtained = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if fileID != 0 {
|
|
||||||
return fileInfoData, nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if fileID == 0 {
|
|
||||||
// TODO: change to timestamp-based comparison??
|
// TODO: change to timestamp-based comparison??
|
||||||
for _, v := range modInfoData.GameVersionLatestFiles {
|
for _, v := range modInfoData.GameVersionLatestFiles {
|
||||||
// Choose "newest" version by largest ID
|
// Choose "newest" version by largest ID
|
||||||
if v.GameVersion == getCurseforgeVersion(mcVersion) && v.ID > fileID {
|
if v.GameVersion == getCurseforgeVersion(mcVersion) && v.ID > fileID {
|
||||||
fileID = v.ID
|
fileID = v.ID
|
||||||
|
fileInfoObtained = false // Make sure we get the file info
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if fileInfoObtained {
|
||||||
|
return fileInfoData, nil
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if fileID == 0 {
|
if fileID == 0 {
|
||||||
return modFileInfo{}, errors.New("mod not available for this minecraft version")
|
return modFileInfo{}, errors.New("mod not available for this minecraft version")
|
||||||
}
|
}
|
||||||
|
|
||||||
// The API also provides some files inline, because that's efficient!
|
|
||||||
for _, v := range modInfoData.LatestFiles {
|
|
||||||
if v.ID == fileID {
|
|
||||||
return v, nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fileInfoData, err := getFileInfo(modInfoData.ID, fileID)
|
fileInfoData, err := getFileInfo(modInfoData.ID, fileID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return modFileInfo{}, err
|
return modFileInfo{}, err
|
||||||
|
Loading…
x
Reference in New Issue
Block a user