Skip to content

Commit 1aaa585

Browse files
committed
feat: aio support
1 parent 0547ea1 commit 1aaa585

File tree

5 files changed

+85
-102
lines changed

5 files changed

+85
-102
lines changed

core/installer.go

Lines changed: 78 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,21 @@ import (
1010
"strings"
1111
)
1212

13-
func RunInstaller(installerPath string, loader string, version string, loaderVersion string, Download string, simpfun bool) error {
13+
func RunInstaller(installerPath string, loader string, version string, loaderVersion string, Download string, simpfun bool, mise bool) error {
1414
var javaPath string
1515
if simpfun {
16-
javaPath = "/usr/bin/jdk/jdk1.8.0_361/bin/java"
16+
if mise {
17+
if version < "1.17" {
18+
exec.Command("mise use -g java@zulu-8.86.0.25")
19+
} else if version >= "1.17" && version <= "1.20.3" {
20+
exec.Command("mise use -g java@zulu-17.58.21")
21+
} else {
22+
exec.Command("mise use -g java@zulu-21.42.19")
23+
}
24+
javaPath = "java"
25+
} else {
26+
javaPath = "/usr/bin/jdk/jdk1.8.0_361/bin/java"
27+
}
1728
} else {
1829
javaPath = "java"
1930
}
@@ -119,12 +130,71 @@ func RunScript(Version string, Loader string, LoaderVersion string, simpfun bool
119130
}
120131
}
121132
var scriptContent string
122-
if Loader == "forge" {
123-
scriptContent = fmt.Sprintf("java @libraries/net/minecraftforge/forge/%s-%s/unix_args.txt \"$@\"", Version, LoaderVersion)
124-
} else if Loader == "neoforge" {
125-
scriptContent = fmt.Sprintf("java @libraries/net/neoforged/neoforge/%s/unix_args.txt \"$@\"", LoaderVersion)
126-
} else if Loader == "fabric" {
127-
scriptContent = "java -jar fabric-server-launch.jar"
133+
var javaPath string
134+
if simpfun {
135+
if mise {
136+
if Version < "1.17" {
137+
exec.Command("mise use -g java@zulu-8.86.0.25")
138+
} else if Version >= "1.17" && Version <= "1.20.3" {
139+
exec.Command("mise use -g java@zulu-17.58.21")
140+
} else {
141+
exec.Command("mise use -g java@zulu-21.42.19")
142+
}
143+
javaPath = "java"
144+
// 感谢aio镜像不支持
145+
if _, err := os.Stat("server.properties"); os.IsNotExist(err) {
146+
file, err := os.Create("server.properties")
147+
if err != nil {
148+
fmt.Println("创建 server.properties 失败:", err)
149+
} else {
150+
defer file.Close()
151+
}
152+
serverPort := os.Getenv("SERVER_PORT")
153+
if serverPort == "" {
154+
serverPort = "25565"
155+
}
156+
content := ""
157+
exists := false
158+
if data, err := os.ReadFile("server.properties"); err == nil {
159+
lines := strings.Split(string(data), "\n")
160+
for _, line := range lines {
161+
if strings.HasPrefix(line, "server-ip=") || strings.HasPrefix(line, "enable-query=") {
162+
exists = true
163+
break
164+
}
165+
}
166+
}
167+
if !exists {
168+
content = fmt.Sprintf("server-ip=0.0.0.0\nenable-query=%s\n", serverPort)
169+
}
170+
if _, err := file.WriteString(content); err != nil {
171+
fmt.Println("写入 server.properties 失败:", err)
172+
}
173+
}
174+
} else {
175+
if Version < "1.17" {
176+
javaPath = "/usr/bin/jdk/jdk1.8.0_361/bin/java"
177+
} else if Version >= "1.17" && Version <= "1.20.3" {
178+
javaPath = "/usr/bin/jdk/jdk-17.0.6/bin/java"
179+
} else {
180+
javaPath = "/usr/bin/jdk/jdk-21.0.2/bin/java"
181+
}
182+
}
183+
if Loader == "forge" {
184+
scriptContent = fmt.Sprintf(javaPath+" @libraries/net/minecraftforge/forge/%s-%s/unix_args.txt \"$@\"", Version, LoaderVersion)
185+
} else if Loader == "neoforge" {
186+
scriptContent = fmt.Sprintf(javaPath+" @libraries/net/neoforged/neoforge/%s/unix_args.txt \"$@\"", LoaderVersion)
187+
} else if Loader == "fabric" {
188+
scriptContent = javaPath + " -jar fabric-server-launch.jar"
189+
}
190+
} else {
191+
if Loader == "forge" {
192+
scriptContent = fmt.Sprintf("java @libraries/net/minecraftforge/forge/%s-%s/unix_args.txt \"$@\"", Version, LoaderVersion)
193+
} else if Loader == "neoforge" {
194+
scriptContent = fmt.Sprintf("java @libraries/net/neoforged/neoforge/%s/unix_args.txt \"$@\"", LoaderVersion)
195+
} else if Loader == "fabric" {
196+
scriptContent = "java -jar fabric-server-launch.jar"
197+
}
128198
}
129199
file, err := os.Create("run.sh")
130200
if err != nil {

pkg/common.go

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package pkg
33
import (
44
"fmt"
55
"log"
6-
"os"
76

87
"github.com/autoinst/AutoInstall/core"
98
)
@@ -38,28 +37,6 @@ func Common(config core.InstConfig) {
3837
return
3938
}
4039
fmt.Println("服务端下载完成")
41-
// 创建 run.sh 文件
42-
runScriptPath := "run.sh"
43-
var javaPath string
44-
if simpfun {
45-
// 根据版本号选择 Java 路径
46-
if config.Version < "1.17" {
47-
javaPath = "/usr/bin/jdk/jdk1.8.0_361/bin/java"
48-
} else if config.Version >= "1.17" && config.Version <= "1.20.3" {
49-
javaPath = "/usr/bin/jdk/jdk-17.0.6/bin/java"
50-
} else {
51-
javaPath = "/usr/bin/jdk/jdk-21.0.2/bin/java"
52-
}
53-
} else {
54-
javaPath = "java"
55-
}
56-
// 拼接运行命令
57-
runCommand := fmt.Sprintf("%s -jar server.jar", javaPath)
58-
// 写入 run.sh 文件
59-
if err := os.WriteFile(runScriptPath, []byte(runCommand), 0777); err != nil {
60-
log.Printf("无法创建 run.sh 文件: %v", err)
61-
} else {
62-
fmt.Println("已创建运行脚本:", runScriptPath)
63-
}
40+
core.RunScript(config.Version, config.Loader, config.LoaderVersion, simpfun, mise)
6441
}
6542
}

pkg/fabric.go

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package pkg
33
import (
44
"fmt"
55
"log"
6-
"os"
76
"path/filepath"
87

98
"github.com/autoinst/AutoInstall/core"
@@ -25,31 +24,9 @@ func FabricB(config core.InstConfig, simpfun bool, mise bool) {
2524
return
2625
}
2726
fmt.Println("服务端下载完成")
28-
if err := core.RunInstaller(installerPath, config.Loader, config.Version, config.LoaderVersion, config.Download, simpfun); err != nil {
27+
if err := core.RunInstaller(installerPath, config.Loader, config.Version, config.LoaderVersion, config.Download, simpfun, mise); err != nil {
2928
log.Println("运行安装器失败:", err)
3029
return
3130
}
32-
// 创建 run.sh 文件
33-
runScriptPath := "run.sh"
34-
var javaPath string
35-
if simpfun {
36-
// 根据版本号选择 Java 路径
37-
if config.Version < "1.17" {
38-
javaPath = "/usr/bin/jdk/jdk1.8.0_361/bin/java"
39-
} else if config.Version >= "1.17" && config.Version <= "1.20.3" {
40-
javaPath = "/usr/bin/jdk/jdk-17.0.6/bin/java"
41-
} else {
42-
javaPath = "/usr/bin/jdk/jdk-21.0.2/bin/java"
43-
}
44-
} else {
45-
javaPath = "java"
46-
}
47-
// 拼接运行命令
48-
runCommand := fmt.Sprintf("%s -jar fabric-server-launch.jar", javaPath)
49-
// 写入 run.sh 文件
50-
if err := os.WriteFile(runScriptPath, []byte(runCommand), 0777); err != nil {
51-
log.Printf("无法创建 run.sh 文件: %v", err)
52-
} else {
53-
fmt.Println("已创建运行脚本:", runScriptPath)
54-
}
31+
core.RunScript(config.Version, config.Loader, config.LoaderVersion, simpfun, mise)
5532
}

pkg/forge.go

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package pkg
33
import (
44
"fmt"
55
"log"
6-
"os"
76
"path/filepath"
87

98
"github.com/autoinst/AutoInstall/core"
@@ -50,28 +49,8 @@ func ForgeB(config core.InstConfig, simpfun bool, mise bool) {
5049
}
5150

5251
fmt.Println("库文件下载完成")
53-
if err := core.RunInstaller(installerPath, config.Loader, config.Version, config.LoaderVersion, config.Download, simpfun); err != nil {
52+
if err := core.RunInstaller(installerPath, config.Loader, config.Version, config.LoaderVersion, config.Download, simpfun, mise); err != nil {
5453
log.Println("运行安装器失败:", err)
55-
} else {
56-
// 检测是否存在 forge-版本-加载器版本-universal.jar
57-
universalJar := fmt.Sprintf("forge-%s-%s-universal.jar", config.Version, config.LoaderVersion)
58-
if _, err := os.Stat(universalJar); err == nil {
59-
// 创建 run.sh 文件
60-
runScriptPath := "run.sh"
61-
var runCommand string
62-
if simpfun {
63-
runCommand = fmt.Sprintf("/usr/bin/jdk/jdk1.8.0_361/bin/java -jar %s", universalJar)
64-
} else {
65-
runCommand = fmt.Sprintf("java -jar %s", universalJar)
66-
}
67-
// 写入 run.sh 文件
68-
if err := os.WriteFile(runScriptPath, []byte(runCommand), 0755); err != nil {
69-
log.Printf("无法创建 run.sh 文件: %v", err)
70-
} else {
71-
fmt.Println("已创建运行脚本:", runScriptPath)
72-
}
73-
} else {
74-
fmt.Printf("未找到文件 %s,跳过创建运行脚本。\n", universalJar)
75-
}
7654
}
55+
core.RunScript(config.Version, config.Loader, config.LoaderVersion, simpfun, mise)
7756
}

pkg/neoforge.go

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package pkg
33
import (
44
"fmt"
55
"log"
6-
"os"
76
"path/filepath"
87

98
"github.com/autoinst/AutoInstall/core"
@@ -51,27 +50,8 @@ func NeoForgeB(config core.InstConfig, simpfun bool, mise bool) {
5150
}
5251

5352
fmt.Println("库文件下载完成")
54-
if err := core.RunInstaller(installerPath, config.Loader, config.Version, config.LoaderVersion, config.Download, simpfun); err != nil {
53+
if err := core.RunInstaller(installerPath, config.Loader, config.Version, config.LoaderVersion, config.Download, simpfun, mise); err != nil {
5554
log.Println("运行安装器失败:", err)
56-
} else {
57-
universalJar := fmt.Sprintf("neoforge-%s-%s-universal.jar", config.Version, config.LoaderVersion)
58-
if _, err := os.Stat(universalJar); err == nil {
59-
// 创建 run.sh 文件
60-
runScriptPath := "run.sh"
61-
var runCommand string
62-
if simpfun {
63-
runCommand = fmt.Sprintf("/usr/bin/jdk/jdk1.8.0_361/bin/java -jar %s", universalJar)
64-
} else {
65-
runCommand = fmt.Sprintf("java -jar %s", universalJar)
66-
}
67-
// 写入 run.sh 文件
68-
if err := os.WriteFile(runScriptPath, []byte(runCommand), 0755); err != nil {
69-
log.Printf("无法创建 run.sh 文件: %v", err)
70-
} else {
71-
fmt.Println("已创建运行脚本:", runScriptPath)
72-
}
73-
} else {
74-
fmt.Printf("未找到文件 %s,跳过创建运行脚本。\n", universalJar)
75-
}
7655
}
56+
core.RunScript(config.Version, config.Loader, config.LoaderVersion, simpfun, mise)
7757
}

0 commit comments

Comments
 (0)