Compare commits

..

2 Commits

Author SHA1 Message Date
6ef821481e Merge remote-tracking branch 'origin/main' 2023-02-12 02:35:07 +03:00
fc4ba246f1 add shared structures 2023-02-12 02:34:22 +03:00

View File

@ -1,7 +1,7 @@
package minecraftgame package minecraftgame
type JavaVersion struct { type JavaVersion struct {
Version `json:"version"` VersionNums `json:"version"`
Specifics []struct { Specifics []struct {
Os string `json:"os"` Os string `json:"os"`
Arch string `json:"arch"` Arch string `json:"arch"`
@ -10,8 +10,96 @@ type JavaVersion struct {
} `json:"specifics"` } `json:"specifics"`
} }
type Version struct { type VersionNums struct {
Major string `json:"major"` Major string `json:"major"`
Minor string `json:"minor"` Minor string `json:"minor"`
Patch string `json:"patch"` Patch string `json:"patch"`
} }
type Version struct {
AssetIndex AssetIndex `json:"assetIndex"`
Downloads struct {
Client Artifact `json:"client"`
Server Artifact `json:"server"`
Mods struct {
Required []ModArtifact `json:"required"`
} `json:"mods"`
} `json:"downloads"`
ID string `json:"id"`
Libraries []Lib `json:"libraries"`
//ClientLog LogCfg
MainClass string `json:"mainClass"`
GameArgs []Argument
JVMArgs []Argument
Type string `json:"type"`
}
type AssetIndex struct {
ID string `json:"id"`
TotalSize uint64 `json:"totalSize"`
Artifact
}
type Argument struct {
Value string `json:"value"`
Rules []Rule `json:"rules"`
}
type Rule struct {
Action RuleAct `json:"action" mapstructure:"action"`
// OS information. All fields are regexes.
OS struct {
Name string `json:"name" mapstructure:"name"`
Version string `json:"version" mapstructure:"version"`
Arch string `json:"arch" mapstructure:"arch"`
} `json:"os" mapstructure:"os"`
Features struct {
IsDemoUser *bool `json:"is_demo_user" mapstructure:"is_demo_user"`
HasCustomResolution *bool `json:"has_custom_resolution" mapstructure:"has_custom_resolution"`
} `json:"features" mapstructure:"features"`
}
type RuleAct string
const (
ActAllow RuleAct = "allow"
ActDisallow RuleAct = "disallow"
)
type LibClassifiers struct {
JavaDoc *Artifact `json:"javadoc"`
NativesLinux *Artifact `json:"natives-linux"`
NativesMacOS *Artifact `json:"natives-osx"`
NativesWin *Artifact `json:"natives-windows"`
Sources *Artifact `json:"sources"`
}
type Lib struct {
Downloads struct {
MainJar *Artifact `json:"artifact"`
LibClassifiers `json:"classifiers"`
} `json:"downloads"`
NativeSuffixes struct {
Linux string `json:"linux"`
MacOS string `json:"osx"`
Windows string `json:"windows"`
} `json:"natives"`
Name string `json:"name"`
Rules []Rule `json:"rules"`
ExtractRules struct {
Exclude []string `json:"exclude"`
} `json:"extract"`
}
type Artifact struct {
SHA1 string `json:"sha1"`
Size uint64 `json:"size"`
URL string `json:"url"`
}
type ModArtifact struct {
Artifact
File string
Name string
Version string
}