[Minecraft Java] 为便捷切换游戏 / 加载器版本设计的参数式 Minecraft 服务器启动脚本

本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容: 我的帖子已经打上 开源推广 标签: 是 我的开源项目完整开源,无未开源部分: 是 我的开源项目已链接认可 LINUX DO 社区: 是 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是 以上选择我承诺是永久有效的,接受社...
[Minecraft Java] 为便捷切换游戏 / 加载器版本设计的参数式 Minecraft 服务器启动脚本
[Minecraft Java] 为便捷切换游戏 / 加载器版本设计的参数式 Minecraft 服务器启动脚本
本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容:
  • 我的帖子已经打上 开源推广 标签:
  • 我的开源项目完整开源,无未开源部分:
  • 我的开源项目已链接认可 LINUX DO 社区:
  • 我帖子内的项目介绍,AI生成、润色内容部分已截图发出:
  • 以上选择我承诺是永久有效的,接受社区和佬友监督:

以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出


RecRivenVI/PowerShell-MinecraftServerLauncher

(新人第一次分享自己设计的小工具,有点粗糙请见谅)

个人认为在面板中为服务器切换 Minecraft 版本和加载器/加载器版本相对麻烦,因此我设计了这样一组 PowerShell 脚本,目标是可以通过配置命令行参数,自由切换 Minecraft 版本,Forge(1.17+)/ NeoForge / Fabric 版本,以及Java 版本,同时支持在终端内输入 TRUE 以快速同意 EULA 协议

切换 Java 的部分设计的相对粗糙,如果您没有使用 Liberica JDK,或者没有将 Liberica JDK 安装在默认路径,在使用前是一定需要修改脚本中的 Java 路径部分的,这点我会在未来尝试优化

示例调用:
启动一个 Minecraft 26.1.2 服务器,使用 NeoForge 26.1.2.22-beta 和 Java 25,并在服务器关闭后自动结束进程:

pwsh .\Start-ForgeServer.ps1 -Version 26.1.2 -Loader NeoForge -LoaderVersion 26.1.2.22-beta -JavaVersion 25 -ImmediatelyExit

当前,对于 Forge 和 NeoForge,通过检测 win_args.txt 是否存在指定的路径,来判断当前参数指定版本的安装情况,在启动前还会检查是否存在 user_jvm_args.txt,如果不存在将拒绝启动。这个检测逻辑目前是适用于 1.17+,对于更低的版本,我需要设计新的检测逻辑,这点我也会在未来尝试优化

对于 Fabric 端,通过解析 server.jar 中的 version.json 内容,来判断当前参数指定版本的安装情况,在启动前还会检查是否存在 fabric-server-launcher.jar 与 server.jar,如果不存在将拒绝启动

从 26.1-snapshot-1 开始,Fabric 端默认直接使用未混淆版本,原先检测 intermediary-xxx.jar 文件名的方式失效了,因此改用解析 server.jar 的方式来判断当前参数指定版本的安装情况

希望我的脚本能为有需求的服主提供一点帮助!

1 个帖子 - 1 位参与者

阅读完整话题

来源: LinuxDo 最新话题查看原文