package minecraftgame type JavaVersion struct { VersionNums `json:"version"` Specifics []struct { Os string `json:"os"` Arch string `json:"arch"` URL string `json:"URL"` Sha1 string `json:"SHA1"` } `json:"specifics"` } type VersionNums struct { Major string `json:"major"` Minor string `json:"minor"` 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 }