![图片[1]-McHMR:基于服务器搭建Minecraft自动更新整合包(使用宝塔面板)](https://ifanspace.top/wp-content/uploads/2025/01/20250124220336366-image-1024x414.png)
这是什么?
如图,McHMR是Minecraft服务器客户端自动更新解决方案。
通俗得说,它解决的是玩同一个服务器的玩家们手中的客户端的自动更新需求。对于公共的原版服或插件服来说可能还好,使用原版客户端或自己简单配置一个优化/生电整合包就能玩;但对于模组服来说,服务器上任何一个模组的改动都可能需要所有客户端做相同改动才能成功加入联机。常规解决方法是由腐竹重新打包一个新的整合包,通过服务器QQ群发送给群成员,每位成员下载并导入自己的启动器,完成安装,有的成员还会迁移一下旧整合包里的存档和config
文件夹。
而McHMR提供了自动更新的解决方案。通过腐竹自建的更新服务器,当腐竹更新一个新的客户端版本时,所有玩家都可以通过更新器检查并下载新版本,而非从头安装一个新的整合包。腐竹可以配置客户端的哪些部分需要更新,比如mods
文件夹总是需要更新,saves
、resourcepacks
就不应当更新,从而简化玩家客户端的更新流程。
代驾,就是需要腐竹不仅有强大的MC知识,还要有强大的……
部署、分发McHMR助力的自更新服务器客户端
本文相对于官方文档与Bilibili上的教学视频外,主要看点在于芒果摸索出了宝塔面板安装McHMR服务器的无痛教程!QAQ!
在阅读以下步骤时,我们假定自己已经拥有一台运行宝塔面板的服务器可供折腾,并且服务器上已有Apache或Nginx、Redis >=5.0、MySQL >=8.0、Java 1.8:)
如果想在自己的电脑上试验的话,看看这个视频吧:BV1rdrAY4EdY
获取公测版
截至打字到此处时,最新的McHMR版本是1.0.5
,现假设我们从零部署,首先从这里下载1.0.5
的公测包。公测包中包含了客户端、管理前端、管理后端三个部分,我们首先搭建管理端。
部署管理前端
前端的本质是静态网页,因此我们在宝塔面板中简单创建一个静态PHP站点即可。
![图片[2]-McHMR:基于服务器搭建Minecraft自动更新整合包(使用宝塔面板)](https://ifanspace.top/wp-content/uploads/2025/01/20250124223916635-image-1024x643.png)
不然会有奇怪的错误(捂脸,不知道是不是只有我有><)
然后将管理端前端解压到新静态网站的根目录下,完成。
![图片[3]-McHMR:基于服务器搭建Minecraft自动更新整合包(使用宝塔面板)](https://ifanspace.top/wp-content/uploads/2025/01/20250124223958887-image-1024x619.png)
官方文档中表明需要Nginx环境,并提供Nginx重定向规则以供使用;芒果的两台服务器都是Apache,莫得办法,只能说也能用吧~……
现在访问我们刚刚创建的静态站点。
![图片[4]-McHMR:基于服务器搭建Minecraft自动更新整合包(使用宝塔面板)](https://ifanspace.top/wp-content/uploads/2025/01/20250124224311164-image-1024x605.png)
可以看到登录页面。管理员账号是admin,并且已经默认填写;初始密码是admin123,但是此时我们还无法登录,因为这只是一个前端网站,我们还需要配套建立后端呢。
部署管理端后端
我们从公测包中得到的后端是核心基于一个jar
文件的网站目录。在建立后端之前,我们还需要Redis和MySQL,官方要求是Redis >=5.0,MySQL >=8.0,若MySQL版本较低(比如我的是5.6)就需要对sql
进行预处理,我懒所以挂了两个小时重装了MySQL8.0……
我们的服务器需要Java 1.8运行环境,如果还没有,可以在Java环境管理中下载一个。
![图片[5]-McHMR:基于服务器搭建Minecraft自动更新整合包(使用宝塔面板)](https://ifanspace.top/wp-content/uploads/2025/01/20250124225253987-image-1024x616.png)
然后我们需要先部署后端的文件……
![图片[6]-McHMR:基于服务器搭建Minecraft自动更新整合包(使用宝塔面板)](https://ifanspace.top/wp-content/uploads/2025/01/20250124230308318-image-1024x683.png)
便于统一管理,我们在网站目录(wwwroot)中新建一个目录,存放这些玩意,然后配套建立一个MySQL数据库,导入1.0.5
版本的SQL文件。数据库的名称建议为minecraft
,原因就在下面。
![图片[7]-McHMR:基于服务器搭建Minecraft自动更新整合包(使用宝塔面板)](https://ifanspace.top/wp-content/uploads/2025/01/20250125003208910-image-1024x621.png)
新建之后点击管理,输入数据库用户名minecraft与随机生成的密码,进入phpMyAdmin,选中minecraft表然后导入1.0.5
的SQL文件,之前版本的fix无需导入。
![图片[8]-McHMR:基于服务器搭建Minecraft自动更新整合包(使用宝塔面板)](https://ifanspace.top/wp-content/uploads/2025/01/20250125003319877-image-1024x525.png)
如果MySQL版本较低,则会在导入过程中报错,这不是不可解的,但是不在我的知识范围内(QAQ!)
打开application.yml
,这是管理后端的配置文件,其中包括了Redis地址与端口、数据库地址与密码等信息。
- 第2行:管理后端的访问端口,配置的同时需要在防火墙放行以允许访问;
- 第27、28行:管理员的账号密码,但是实测更改无效,可能事实上管理员密码还是存储在数据库中的吧;
- 55行对应的值
jdbc:mysql://localhost:3306/minecraft?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
很长,可以看出这是MySQL数据库连接,localhost说明数据库运行在本机上,3306是默认端口(我相信我们不会改这个端口的),minecraft是数据库名称,其他参数无需在意。 - 随后56、57行是数据库的用户名与密码。宝塔面板建立的数据库的数据库名称与用户名往往是一样的,密码则会随机生成。如果你的数据库名不是minecraft,记得同时改55行哦。
- 再往下是Redis设置,一般默认即可。
回到Java项目页面,新建项目,配置如下:
![图片[9]-McHMR:基于服务器搭建Minecraft自动更新整合包(使用宝塔面板)](https://ifanspace.top/wp-content/uploads/2025/01/20250124233651815-image-1024x615.png)
项目端口需要与配置文件中一致,JDK选择1.8,执行命令根据McHMR管理后端自带的脚本文件优化,在下方可供复制(记得改路径~);如果默认的www
用户无法启动项目,可改用root
用户启动。
/www/server/java/jdk1.8.0_371/bin/java -jar -Xmx1024M -Xms256M /www/wwwroot/minecraft_updater_1.0.5/McHMR-Version-Manager-1.0.5.jar --spring.config.location="application.yml"
记得配置域名与SSL证书,比如我给的域名是mchmr-admin.mangofanfan.cn
,一切配置完毕后,确保项目启动,访问域名可以看到如下信息:
![图片[10]-McHMR:基于服务器搭建Minecraft自动更新整合包(使用宝塔面板)](https://ifanspace.top/wp-content/uploads/2025/01/20250124234117240-image-1024x269.png)
连接管理端前后端
现在可以通过前端访问了吗?当然不!我们还需要告诉前端它的另一半(后端)在哪里!回到管理端前端的网站目录下,编辑webconfig.js
文件,把后端的地址告诉它:
![图片[11]-McHMR:基于服务器搭建Minecraft自动更新整合包(使用宝塔面板)](https://ifanspace.top/wp-content/uploads/2025/01/20250124234236553-image-1024x505.png)
现在我们应当能够通过前端登录进入管理端~!
![图片[12]-McHMR:基于服务器搭建Minecraft自动更新整合包(使用宝塔面板)](https://ifanspace.top/wp-content/uploads/2025/01/20250124234339627-image-1024x376.png)
配置客户端
客户端是一个exe
可执行文件,它应当与腐竹分发给玩家的包含启动器的客户端一起打包,以下是我给我懒得更新整合包的朋友分发的包以供参考。
![图片[13]-McHMR:基于服务器搭建Minecraft自动更新整合包(使用宝塔面板)](https://ifanspace.top/wp-content/uploads/2025/01/20250124235203397-image-1024x577.png)
也即,我们把McHMR的客户端称作更新器,更新器与启动器处于.minecraft
文件夹的同一目录下(与之并列),然后双击打开更新器。此时更新器会需要腐竹提供服务器API与启动器地址,分别是管理端首页的那个API和我们在同目录下的启动器。在腐竹完成配置之后,更新器就已经可以使用,其数据文件夹大家都能看得出来就是同目录下的mchmr
~
然后,在.minecraft
中关闭版本隔离!关闭版本隔离!关闭版本隔离!地制作你的服务器专用客户端吧~
分发前的准备
![图片[14]-McHMR:基于服务器搭建Minecraft自动更新整合包(使用宝塔面板)](https://ifanspace.top/wp-content/uploads/2025/01/20250124235856601-image-1024x577.png)
经过一番惊心动魄的调试,我们这关闭版本隔离的客户端大概就初具雏形啦,这便是玩家拿到我们的客户端时它的模样。接下来,我们需要判断,这其中的哪些文件、哪些文件夹是以后需要更新的,哪些又是不应该更新的。
我举几个文件(夹)作为栗子:
- ➕mods – 显然需要更新,模组的版本升级、新增、删除都是体现在这里的。
- ➕kubejs – 显然需要更新,多好的脚本化开发语言呐,startup加载肯定是要双端一起加载的嘛。
- ➖saves – 不好更新吧,你这更新一下版本把玩家的单人存档直接给更新没了,谁家游戏像你这样呐。
- ➖options.txt – 不建议更新哦,人家自己绑定的键位你不方便擅自给人家改掉鸭。
- ❓config – 看情况喽,虽然大部分模组的重要配置都是服务端>客户端,但是我们可能需要更新一些游戏内教程、指南之类的,而有的模组的这些数据是存放在config里的;不过config也包含玩家对模组做的个性化调整,更新的话会把玩家自己的修改覆盖,看实际情况趴。
- ➖assets、libraries、versions – 不需要更新哦,本来就不可能由我们来做什么修改()
好了!接下来,把需要更新的东西全部打成一个压缩包,上传到McHMR管理端的游戏管理中,解压:
![图片[15]-McHMR:基于服务器搭建Minecraft自动更新整合包(使用宝塔面板)](https://ifanspace.top/wp-content/uploads/2025/01/20250125000947508-image-1024x447.png)
不需要更新的列到小本本上,一行一个写到白名单列表里:
![图片[16]-McHMR:基于服务器搭建Minecraft自动更新整合包(使用宝塔面板)](https://ifanspace.top/wp-content/uploads/2025/01/20250125001032551-image-1024x584.png)
给服务器起个好听的名字,比如……砂糖芒果的快乐生活?
进入版本管理,新建你的第一个版本,版本号务必为x.x.x
格式,发布!
![图片[17]-McHMR:基于服务器搭建Minecraft自动更新整合包(使用宝塔面板)](https://ifanspace.top/wp-content/uploads/2025/01/20250125001215100-image-1024x388.png)
发布!
现在你就可以把这个完工的文件夹打成一个压缩包然后分发给玩你的服务器的友友们辣!
![图片[13]-McHMR:基于服务器搭建Minecraft自动更新整合包(使用宝塔面板)](https://ifanspace.top/wp-content/uploads/2025/01/20250124235203397-image-1024x577.png)
![图片[19]-McHMR:基于服务器搭建Minecraft自动更新整合包(使用宝塔面板)](https://ifanspace.top/wp-content/uploads/2025/01/20250125001532450-image-1024x685.png)
分发前理论上还需要从.minecraft
中清理掉一些你调试时留下的隐私信息,比如你的usercache和比如游戏内账号切换模组生成的那个_IAS_ACCOUNTS_DO_NOT_SEND_TO_ANYONE
文件夹。自动更新客户端的另一个好处就是,你无需在每次发布新版本客户端时都手动清理一遍这些隐私信息,你只需要在管理端的游戏管理中进行文件操作即可,比如上传两个新模组,删除一个旧模组,删除kubejs文件夹并重新解压一个新的kubejs等等。记住,你随时都可以在游戏管理中操作客户端的文件,但是只有当你发布一个新版本后,玩家们下一次运行更新器时,这些更改才会被同步给玩家!
告诉朋友们怎么操作,然后准备好一起联机叭QAQ
![图片[20]-McHMR:基于服务器搭建Minecraft自动更新整合包(使用宝塔面板)](https://ifanspace.top/wp-content/uploads/2025/01/20250125002713258-458c315b743d445525a63efa6bdb640a-1024x522.png)
请登录后查看评论内容