mirror of
https://github.com/packwiz/packwiz.git
synced 2025-05-01 10:16:30 +02:00
Fix support for all snapshot versions
This commit is contained in:
parent
bcae40e531
commit
c967575cd3
@ -4,6 +4,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/comp500/packwiz/cmd"
|
"github.com/comp500/packwiz/cmd"
|
||||||
"github.com/comp500/packwiz/core"
|
"github.com/comp500/packwiz/core"
|
||||||
@ -28,10 +29,81 @@ var fileIDRegexes = [...]*regexp.Regexp{
|
|||||||
regexp.MustCompile("^https?://(?:www\\.)?curseforge\\.com/minecraft/mc-mods/(.+)/download/(\\d+)"),
|
regexp.MustCompile("^https?://(?:www\\.)?curseforge\\.com/minecraft/mc-mods/(.+)/download/(\\d+)"),
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: fix this later
|
var snapshotVersionRegex = regexp.MustCompile("(?:Snapshot )?(\\d+)w0?(0|[1-9]\\d*)([a-z])")
|
||||||
func fixThisLater(mcVersion string) string {
|
|
||||||
if mcVersion == "20w15a" {
|
func getCurseforgeVersion(mcVersion string) string {
|
||||||
|
if strings.HasSuffix(mcVersion, "-pre") {
|
||||||
|
return strings.TrimSuffix(mcVersion, "-pre") + "-Snapshot"
|
||||||
|
}
|
||||||
|
// Mojang why must it be this way
|
||||||
|
index := strings.Index(mcVersion, " Pre-Release ")
|
||||||
|
if index > -1 {
|
||||||
|
return mcVersion[:index] + "-Snapshot"
|
||||||
|
}
|
||||||
|
index = strings.Index(mcVersion, " Pre-release ")
|
||||||
|
if index > -1 {
|
||||||
|
return mcVersion[:index] + "-Snapshot"
|
||||||
|
}
|
||||||
|
|
||||||
|
matches := snapshotVersionRegex.FindStringSubmatch(mcVersion)
|
||||||
|
if matches == nil {
|
||||||
|
return mcVersion
|
||||||
|
}
|
||||||
|
year, err := strconv.Atoi(matches[1])
|
||||||
|
if err != nil {
|
||||||
|
return mcVersion
|
||||||
|
}
|
||||||
|
week, err := strconv.Atoi(matches[2])
|
||||||
|
if err != nil {
|
||||||
|
return mcVersion
|
||||||
|
}
|
||||||
|
|
||||||
|
if year == 20 && week >= 6 {
|
||||||
return "1.16-Snapshot"
|
return "1.16-Snapshot"
|
||||||
|
} else if year == 19 && week >= 34 {
|
||||||
|
return "1.15-Snapshot"
|
||||||
|
} else if year == 18 && week >= 43 || year == 19 && week <= 14 {
|
||||||
|
return "1.14-Snapshot"
|
||||||
|
} else if year == 18 && week >= 30 && week <= 33 {
|
||||||
|
return "1.13.1-Snapshot"
|
||||||
|
} else if year == 17 && week >= 43 || year == 18 && week <= 22 {
|
||||||
|
return "1.13-Snapshot"
|
||||||
|
} else if year == 17 && week == 31 {
|
||||||
|
return "1.12.1-Snapshot"
|
||||||
|
} else if year == 17 && week >= 6 && week <= 18 {
|
||||||
|
return "1.12-Snapshot"
|
||||||
|
} else if year == 16 && week == 50 {
|
||||||
|
return "1.11.1-Snapshot"
|
||||||
|
} else if year == 16 && week >= 32 && week <= 44 {
|
||||||
|
return "1.11-Snapshot"
|
||||||
|
} else if year == 16 && week >= 20 && week <= 21 {
|
||||||
|
return "1.10-Snapshot"
|
||||||
|
} else if year == 16 && week >= 14 && week <= 15 {
|
||||||
|
return "1.9.3-Snapshot"
|
||||||
|
} else if year == 15 && week >= 31 || year == 16 && week <= 7 {
|
||||||
|
return "1.9-Snapshot"
|
||||||
|
} else if year == 14 && week >= 2 && week <= 34 {
|
||||||
|
return "1.8-Snapshot"
|
||||||
|
} else if year == 13 && week >= 47 && week <= 49 {
|
||||||
|
return "1.7.4-Snapshot"
|
||||||
|
} else if year == 13 && week >= 36 && week <= 43 {
|
||||||
|
return "1.7.2-Snapshot"
|
||||||
|
} else if year == 13 && week >= 16 && week <= 26 {
|
||||||
|
return "1.6-Snapshot"
|
||||||
|
} else if year == 13 && week >= 11 && week <= 12 {
|
||||||
|
return "1.5.1-Snapshot"
|
||||||
|
} else if year == 13 && week >= 1 && week <= 10 {
|
||||||
|
return "1.5-Snapshot"
|
||||||
|
} else if year == 12 && week >= 49 && week <= 50 {
|
||||||
|
return "1.4.6-Snapshot"
|
||||||
|
} else if year == 12 && week >= 32 && week <= 42 {
|
||||||
|
return "1.4.2-Snapshot"
|
||||||
|
} else if year == 12 && week >= 15 && week <= 30 {
|
||||||
|
return "1.3.1-Snapshot"
|
||||||
|
} else if year == 12 && week >= 3 && week <= 8 {
|
||||||
|
return "1.2.1-Snapshot"
|
||||||
|
} else if year == 11 && week >= 47 || year == 12 && week <= 1 {
|
||||||
|
return "1.1-Snapshot"
|
||||||
}
|
}
|
||||||
return mcVersion
|
return mcVersion
|
||||||
}
|
}
|
||||||
@ -204,7 +276,7 @@ func (u cfUpdater) CheckUpdate(mods []core.Mod, mcVersion string) ([]core.Update
|
|||||||
// TODO: change to timestamp-based comparison??
|
// TODO: change to timestamp-based comparison??
|
||||||
// TODO: manage alpha/beta/release correctly, check update channel?
|
// TODO: manage alpha/beta/release correctly, check update channel?
|
||||||
// Choose "newest" version by largest ID
|
// Choose "newest" version by largest ID
|
||||||
if file.GameVersion == fixThisLater(mcVersion) && file.ID > fileID {
|
if file.GameVersion == getCurseforgeVersion(mcVersion) && file.ID > fileID {
|
||||||
updateAvailable = true
|
updateAvailable = true
|
||||||
fileID = file.ID
|
fileID = file.ID
|
||||||
fileName = file.Name
|
fileName = file.Name
|
||||||
|
@ -268,7 +268,7 @@ func (r modResultsList) Len() int {
|
|||||||
func searchCurseforgeInternal(args []string, mcVersion string) (bool, modInfo) {
|
func searchCurseforgeInternal(args []string, mcVersion string) (bool, modInfo) {
|
||||||
fmt.Println("Searching CurseForge...")
|
fmt.Println("Searching CurseForge...")
|
||||||
searchTerm := strings.Join(args, " ")
|
searchTerm := strings.Join(args, " ")
|
||||||
results, err := getSearch(searchTerm, fixThisLater(mcVersion))
|
results, err := getSearch(searchTerm, getCurseforgeVersion(mcVersion))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
@ -341,7 +341,7 @@ func getLatestFile(modInfoData modInfo, mcVersion string, fileID int) (modFileIn
|
|||||||
var fileInfoData modFileInfo
|
var fileInfoData modFileInfo
|
||||||
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, fixThisLater(mcVersion)) && v.ID > fileID {
|
if sliceContainsString(v.GameVersions, getCurseforgeVersion(mcVersion)) && v.ID > fileID {
|
||||||
fileID = v.ID
|
fileID = v.ID
|
||||||
fileInfoData = v
|
fileInfoData = v
|
||||||
}
|
}
|
||||||
@ -355,7 +355,7 @@ func getLatestFile(modInfoData modInfo, mcVersion string, fileID int) (modFileIn
|
|||||||
// 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 == fixThisLater(mcVersion) && v.ID > fileID {
|
if v.GameVersion == getCurseforgeVersion(mcVersion) && v.ID > fileID {
|
||||||
fileID = v.ID
|
fileID = v.ID
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user