@@ -2,8 +2,11 @@ package main
22
33import (
44 "encoding/json"
5+ "fmt"
56 "io"
67 "net/http"
8+ "os"
9+ "os/user"
710 "sort"
811)
912
@@ -13,48 +16,73 @@ type ServerPlotPoint struct {
1316}
1417
1518type Server struct {
16- Number int `json:"number"`
17- Name string `json:"name"`
18- IP string `json:"ip"`
19- Port int `json:"port"`
20- Online int `json:"online"`
21- MaxPlayers int `json:"maxplayers"`
22- Password bool `json:"password"`
23- VK string `json:"vk"`
24- TG string `json:"tg"`
25- Inst string `json:"inst"`
26- Icon string `json:"icon"`
27- AdditionalIps []string `json:"additionalIps"`
28- DonateMultiplier int `json:"donateMultiplier"`
29- ExperienceMultiplier int `json:"experienceMultiplier"`
30- PlotPoints []ServerPlotPoint `json:"plotPoints"`
19+ Number int `json:"number"`
20+ Name string `json:"name"`
21+ IP string `json:"ip"`
22+ Port int `json:"port"`
23+ Online int `json:"online"`
24+ MaxPlayers int `json:"maxplayers"`
25+ // Password bool `json:"password"`
26+ // VK string `json:"vk"`
27+ // TG string `json:"tg"`
28+ // Inst string `json:"inst"`
29+ Icon string `json:"icon"`
30+ // AdditionalIps []string `json:"additionalIps"`
31+ // DonateMultiplier int `json:"donateMultiplier"`
32+ // ExperienceMultiplier int `json:"experienceMultiplier"`
33+ // PlotPoints []ServerPlotPoint `json:"plotPoints"`
3134}
3235
3336type ArizonaServerInfo struct {
34- Arizona []Server `json:"arizona"`
35- ArizonaMobile []Server `json:"arizonaMobile"`
36- ArizonaStaging []Server `json:"arizona_staging"`
37- Rodina []Server `json:"rodina"`
38- Village []Server `json:"village"`
39- Arizonav []Server `json:"arizonav"`
37+ Arizona []Server `json:"arizona"`
38+ ArizonaMobile []Server `json:"arizonaMobile"`
39+ // ArizonaStaging []Server `json:"arizona_staging"`
40+ // Rodina []Server `json:"rodina"`
41+ // Village []Server `json:"village"`
42+ // Arizonav []Server `json:"arizonav"`
4043}
4144
42- const ArizonaServersList string = "https://api.arizona-five.com/launcher/servers"
45+ const (
46+ ArizonaServersListURL string = "https://api.arizona-five.com/launcher/servers"
47+ )
4348
4449func LoadServers () (ArizonaServerInfo , error ) {
4550 var servers ArizonaServerInfo
4651 var err error
47- response , err := http .Get (ArizonaServersList )
52+ var jsonBytes []byte
53+ var listFileReaded = false
54+ winUser , err := user .Current ()
4855 if err == nil {
49- bytes , err := io .ReadAll (response .Body )
50- if err == nil {
51- err = json .Unmarshal (bytes , & servers )
56+ listPath := winUser .HomeDir + "\\ Documents\\ alt-launcher-servers.json"
57+ fmt .Println ("Custom servers list path=" , listPath )
58+ if _ , err := os .Stat (listPath ); err == nil {
59+ jsonBytes , err = os .ReadFile (listPath )
60+ fmt .Println ("List file:" , string (jsonBytes ), err )
5261 if err == nil {
53- sort .Slice (servers .Arizona , func (a , b int ) bool {
54- return servers .Arizona [a ].Number < servers .Arizona [b ].Number
55- })
62+ listFileReaded = true
63+ fmt .Println ("Reading servers list from file" )
5664 }
5765 }
5866 }
67+ if ! listFileReaded {
68+ response , err := http .Get (ArizonaServersListURL )
69+ if err != nil {
70+ return servers , err
71+ }
72+ jsonBytes , err = io .ReadAll (response .Body )
73+ if err != nil {
74+ return servers , err
75+ }
76+ }
77+ // fmt.Println(string(jsonBytes))
78+ if err == nil {
79+ err = json .Unmarshal (jsonBytes , & servers )
80+ if err == nil {
81+ sort .Slice (servers .Arizona , func (a , b int ) bool {
82+ return servers .Arizona [a ].Number < servers .Arizona [b ].Number
83+ })
84+ }
85+ }
86+
5987 return servers , err
6088}
0 commit comments