总算和朋友们搭建好了Minecraft的服务器!
其实在过生日那天晚上我就搭好了,但是迟迟现在才发布。
玩了之后却发现自己晕MC的3D了,晕
版本的选择
域主是从1.7.10就开始玩MC的(其实还有更早的远古版本),当时年龄尚小,只会用那些一键开服的BOX,后来才翻墙去了解服务端,记得最经典的还是用KCauldron开的Forge模组+Spigot插件服(俗称水龙头),甚至仍有一些高版本的模组不如1.7.10的丰富,堪称MC的XP系统。
不过1.7.10也很老了,肯定不能一直守旧,那么该选哪个版本玩呢,后面发现Minecraft社区也存在着一种类似LTS(长期维护更新)的版本,比如1.12.2、1.16.5、1.18.2等等,还有比较新的1.19.3的版本(怎么一股Ubuntu味)
而模组除了Forge外还有Fabric的选择,虽然很早就知道互不兼容,但很多mod作者会同时制作两种API的版本,不过我就没仔细去研究别的方案了,脍炙人口的Forge模组依然是主流,后续再考虑Fabric也并不迟。
关于服务端的选择,域主最先开始采用的是CatServer,这是一个同时支持Forge API模组和Spigot核心的服务端,但是存在不能在告示牌输入文字的bug(书与笔是可以的),也没有什么详细的文档……
后来我找到了Magma作为服务端核心(官网屏蔽了中国IP直连访问,是主动用CDN屏蔽的,并不是被墙,可能是防DDoS和剽窃者),不过相比CatServer要稳定了很多,也没有什么bug出现
搭建实践
在本地的Proxmox VE开了个Ubuntu Server的虚拟机专门运行MC的服务端,使用了MCSManager面板管理服务端。其实面板不是必需品,只用Shell也能跑jar,但显然有面板还是会方便很多。
装起来很简单,一行命令搞定,不过也要记得安装OpenJDK运行环境。
MCSManager:
wget -qO- https://gitee.com/mcsmanager/script/raw/master/setup_cn.sh | bash
OpenJDK,直接装Headless的版本就可以了,因为并不需要用到Desktop GUI:
sudo apt install openjdk-17-jdk-headless
然后在MCSManager根据向导一步步配置服务端,就搭建完成了。
记得在服务端去安装authlib injector,使用皮肤站的Yggdrasil API地址在运行选项配置前置登录,启动命令应该如下:
java -jar -javaagent:authlib-injector.jar=[Yggdrasil API] Magma-1.18.2-40.2.1-ed7136e5-server.jar
还可以访问控制台输入指令,也可以在仿真终端用Tab键自动补全命令。Spigot给op管理权的命令也可以用,不过我对Spigot的插件了解甚少,并不太清楚应该加什么插件……
要让朋友们一起联机就在路由器设置一下端口转发就可以了,当然需要公网IP,不过我也早已经配置好了DDNS域名。直接填在启动器上就可以了
自动更新
用HMCL启动器可以制作OTA自动更新的整合包,类似CS社区服的体验,只要搭建一个静态资源站,填写整合包下载链接前缀就可以实现了。(甚至有人白嫖Git仓库实现静态文件的托管,不过想想也挺合理)
HMCL也可以通过CurseForge下载和管理模组,便利了很多,不得不感叹现在开源社区的强大,在此为那些默默无闻的贡献者表示感谢
具体参见:
简单来说还是用Nginx配置一个文件目录的web服务器,上传server-manifest.json文件,客户端再去读取服务器上的json文件,自动更新整合包的配置。不过每次增加mod也需要更新服务器上的json文件
Nginx的配置示例如下(来自18870)
server { listen 80; server_name localhost; location / { root mc; } }
最后一切妥当后,将整合包发给朋友们(比如搭建个黑群晖,顺便可以和朋友们共享整活视频),就可以和朋友们一起玩了!
不知道为何域主发现自己反而晕MC的3D画面了,甚至这一天也玩不了其他的3D游戏,比如CSGO,可能是屏幕尺寸和视距的关系,也许MC更适合在小屏幕上游玩。
后续再考虑用Rsync或者快照自动备份存档或者整个系统……
域主早就失去以前的创造毅力了,现在连简单的挖矿都不能胜任,想当年我也是做过材质包和模型的小作者……啊哈哈,佐佑理不知道啦