我们一起来搭建 Minecraft 服务器吧(Minecraft1.18 + Spigot + Geyser + Floodgate)
去年我尝试搭建了一个Minecraft服务器,但最终没有被很多人使用(笑),基本上只有我偶尔登录进去玩的程度。
由于Minecraft 1.18发布了,所以我尝试进行更新,但是Java和Floodgate的版本有些变化,所以我重新编辑了去年的文章。
环境
-
- CPU: 4コア, メモリ: 8GB, HDD: 50GB
-
- Oracle Linux 8.5
-
- Spigot
-
- Geyser
- Floodgate
Linux的准备工作
由于操作系统的安装方法在网络上有很多,所以省略不提。
-
- SSHは鍵認証のみに
-
- システム最新化
-
- アップデートの自動化
-
- ファイアウォールの設定
25565/tcp
19132/udp
19133/udp
我们先四处看看吧。
安装JDK
# dnf -y install java-17-openjdk-headless
$ java --version
openjdk 17.0.1 2021-10-19
OpenJDK Runtime Environment 21.9 (build 17.0.1+12)
OpenJDK 64-Bit Server VM 21.9 (build 17.0.1+12, mixed mode, sharing)
Spigot的安装
因为之后会需要,所以先创建一个服务器执行用户吧。
# mkdir /opt/minecraft
# groupadd minecraft
# useradd --system --shell /bin/bash --home /opt/minecraft -g minecraft minecraft
# chown minecraft:minecraft /opt/minecraft
根据Spigot的Wikipedia进行构建。
我会安装构建所需的应用程序。
# dnf -y install git wget
构建Spigot
若要构建1.18版本,由于Spigot的稳定版本似乎是1.17,您可以在 –rev 参数中指定版本。
# su - minecraft
$ mkdir survival
$ cd survival
$ wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar
$ java -jar BuildTools.jar --rev 1.18
我同意使用许可协议。
$ java -jar spigot-1.18.jar
$ vi eula.txt
将 eula=false 更改为 eula=true。
:
eula=true
将内存使用量调整为服务器规格的适当数值。
# vi /opt/minecraft/survival/server.conf
MCMINMEM=512M
MCMAXMEM=7168M
现在至少已经启动到最低限度的状态了。
接下来,我们将参考《教程/服务器启动脚本》创建启动脚本。
为了在虚拟终端中运行Spigot,我们需要安装screen。
# dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
# dnf -y install screen
下载systemd脚本
# wget -O /etc/systemd/system/minecraft@.service https://raw.githubusercontent.com/agowa338/MinecraftSystemdUnit/master/minecraft%40.service
据说需要更改RHEL8系列的/run/screen目录的权限,因此我会修改下载的脚本。
# vi /etc/systemd/system/minecraft@.service
:
# Uncomment this to fix screen on RHEL 8
ExecStartPre=+/bin/sh -c 'chmod 777 /run/screen'
:
启用自动执行。
# systemctl enable minecraft@survival
先试运行一下,确认到这一步为止的操作。
# systemctl enable minecraft@survival
# systemctl stop minecraft@survival
让我们检查/opt/minecraft/survival/logs/latest.log文件,确认是否存在错误。
Geysers and floodgates的安装
选择GeyserMC网站上的下载按钮,然后在链接页面的“最新成功构建的成果物”中下载“Geyser-Spigot.jar”。
# su - minecraft
$ cd /opt/minecraft/survival/plugins/
$ wget https://ci.opencollab.dev//job/GeyserMC/job/Geyser/job/master/lastSuccessfulBuild/artifact/bootstrap/spigot/target/Geyser-Spigot.jar
选择Floodgate的Github Wiki中的「下载链接可从这里获取」,从链接所指页面的「最新成功构建成果物」中下载「floodgate-spigot.jar」。
# su - minecraft
$ cd /opt/minecraft/survival/plugins/
$ wget https://ci.opencollab.dev/job/GeyserMC/job/Floodgate/job/master/lastSuccessfulBuild/artifact/spigot/target/floodgate-spigot.jar
一旦启动服务器,生成插件的默认设置文件。
# systemctl start minecraft@survival
设置Bedrock用户只能使用Xbox Live账户进行连接。
# vi /opt/minecraft/survival/plugins/Geyser-Spigot/config.yml
:
auth-type: floodgate
:
重新启动Spigot,准备完毕。
# systemctl restart minecraft@survival
让我们试着连接Java版和基岩版来看看是否可以。
自從Floodgate升級到版本2以後,Bedrock Edition的用戶皮膚似乎可以顯示,但根據我輕微的測試,並沒有顯示出來。這可能是設定問題,而且也有提到上傳皮膚可能需要花費一些時間,所以我可能需要觀望一下。