搭建Minecraft(我的世界)游戏服务器

在网上看到一篇“用树莓派搭建Minecraft服务器”,又想起年轻时曾经搞传奇服务器的时光。时过境迁,现在全世界流行Minecraft,何不尝试一下,突然就来了兴趣。有一台树莓派2B很久了,如果当服务器用SD卡或U盘存储运行,长期开机那肯定是十分的不稳定,于是选用了平时研究调试的一台Debian服务器。折腾开始,步骤如下:
一、安装Java环境
# 安装Java 17(轻量级)
sudo apt update
sudo apt install openjdk-17-jdk-headless -y
# Java 21
wget https://download.bell-sw.com/java/21.0.7+9/bellsoft-jdk21.0.7+9-linux-amd64-lite.deb
sudo dpkg -i bellsoft-jdk21.0.7+9-linux-amd64-lite.deb
sudo apt --fix-broken install
sudo update-alternatives --config java
# 验证安装
java -version # 应显示 "OpenJDK 64-Bit Server VM"
安装的是第三方Liberica JDK,一款免费、受支持且100%开源的OpenJDK发行版,如果是Windows环境,也可以下载安装,直接安装完成就配置完,不用手动设置环境变量。支持JDK 8 LTS、JDK 11 LTS、JDK 17 LTS、JDK 21 LTS、JDK 25 LTS、JDK 26等版本。
如果下载出现ERROR: cannot verify URL’s certificate, issued …….’: Unable to locally verify the issuer’s authority.,提示网站为不受信任的证书无法下载,可使用以下命令处理。
#更新安装根证书
sudo apt-get install ca-certificates
二、安装PaperMC服务器
创建专用用户(提升安全性)
sudo useradd -m -s /bin/bash minecraft
sudo passwd minecraft
下载Paper服务端
https://papermc.io/downloads/paper
sudo su - minecraft
mkdir ~/server && cd ~/server
wget https://fill-data.papermc.io/v1/objects/bfca155b4a6b45644bfc1766f4e02a83c736e45fcc060e8788c71d6e7b3d56f6/paper-1.21.6-46.jar
首次启动生成配置
java -Xms1G -Xmx2G -jar paper.jar --nogui
# 首次启动后会停止,生成eula.txt,需要编辑用户许可为同意。
echo "eula=true" > eula.txt
安装服务器版本为1.21.6,可以按照需求更换,同时客户端也需要对应的版本。
三、内存优化配置
编辑 ~/server/start.sh:
nano ~/server/start.sh
#!/bin/bash
# 使用Aikar's Flags(如果为树莓派,针对低内存设备优化)
JAVA_ARGS="-Xms256M -Xmx768M -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1"
java $JAVA_ARGS -jar paper-1.21.6-46.jar --nogui
关键参数说明:
- -Xmx768M:最大内存768MB(为系统保留256MB)
- G1GC:低延迟垃圾回收器
- MaxGCPauseMillis=200:控制GC停顿时间
- AlwaysPreTouch:启动时分配内存,减少运行时延迟
由于服务器不那么低配,直接用了以下配置:
#!/bin/bash
java -Xms1G -Xmx2G -jar paper-1.21.6-46.jar --nogui
加上权限(root下)
sudo chmod 755 start.sh
四、创建Systemd服务(持久化+自动重启)
创建服务文件
sudo nano /etc/systemd/system/minecraft.service
[Unit]
Description=Minecraft Paper Server
After=network.target
[Service]
User=minecraft
WorkingDirectory=/home/minecraft/server
ExecStart=/bin/bash start.sh
Restart=always
RestartSec=5
# 内存保护(防止树莓派崩溃MemoryMax=800M,如果运行命令中Xmx没有限制,程序进程会不断被kill)
MemoryMax=2G
MemorySwapMax=0
[Install]
WantedBy=multi-user.target
启用服务
sudo systemctl daemon-reload
sudo systemctl start minecraft
sudo systemctl enable minecraft
管理命令
# 查看服务器状态
sudo systemctl status minecraft
# 重启服务器
sudo systemctl restart minecraft
# 查看实时日志
journalctl -u minecraft -f
五、有关配置文件
如果用户许可未修改成功,可打开/home/minecraft/server/下的eula.txt,使用命令修改:
sudo nano /home/minecraft/server/eula.txt
修改为eula=true后,按Ctrl+O保存,按Ctrl+X退出。
如果仅限局域网离线多人游玩,不需要认证登录,可打开server.properties文件进行以下调整:
sudo nano /home/minecraft/server/server.properties
将online-mode=true改为false(正版认证)。enforce-secure-profile=true改为false(如果设置为true,没有Mojang签名公钥的玩家将无法连接到服务器)。
- 另外,使用pvp=false参数关闭PVP,生成动物spawn-animals=true,生成怪物spawn-monsters=true,生成村民spawn-npcs=true,服务器默认游戏模式可修改gamemode=survival(生存 - survival 或 0、创造 - creative 或 1、冒险 - adventure 或 2、旁观 - spectator 或 3),默认端口server-port=25565根据需求可修改。
如果出现卡位,修改spigot.yml文件下的两个数据为1和50,或者更大。
sudo nano /home/minecraft/server/spigot.yml
moved-wrongly-threshold: 1.0 (移动错误阀值)
moved-too-quickly-multiplier: 50.0(移动过快倍数)- 设置管理员:ops=johndoe,op-permission-level=4,“johndoe”是您的玩家名称,“4”表示管理员权限。您可以使用1到4之间的数字,其中1是最低权限,4是最高权限。或者在命令行输入:/op <您的玩家名称> ,设置管理员。
管理员常用命令:
/ban: 禁止一个玩家在服务器上进入。
/kick: 将一个玩家从服务器踢出。
/whitelist: 添加或删除白名单中的玩家。
/give: 给予自己或其他玩家物品。
/tp: 传送自己或其他玩家到指定位置。
- 死亡不掉落。在 server.properties 文件中添加或修改一行配置:keep-inventory=true,重启服务器后全局生效。游戏中命令行为 /gamerule keepInventory true(I 大写)。
六、客户端安装和设置
开源版本的客户端运行环境也需要JAVA支持,在https://bell-sw.com/pages/downloads/下载JDK21 LTS。
根据服务器版本下载对应客户端,我使用的是Hello Minecraft! Launcher(简称HMCL)启动器,可以多版本供选择下载。按照此服务器运行的版本,必须选择1.21.6版本的客户端,否则会登录不进服务器。
选择离线账号,输入自定义名字,确认后使用离线账号启动游戏,选择多人游戏,添加或直接连接服务器,输入服务器IP(我的是192.168.1.99,如果修改了端口要加端口号),连接游戏服务器成功。
介绍一下HMCL:
HMCL 是一款开源、跨平台的 Minecraft 启动器,支持模组管理、游戏自定义、游戏自动安装(Forge、NeoForge、Cleanroom、Fabric、Legacy Fabric、Quilt、LiteLoader 和 OptiFine)、整合包创建、界面自定义等功能。
HMCL 有着强大的跨平台能力。它不仅支持 Windows、Linux、macOS、FreeBSD 等常见的操作系统,同时也支持x86、ARM、RISC-V、MIPS、LoongArch 等不同的 CPU 架构。你可以使用 HMCL 在不同平台上轻松地游玩 Minecraft。
服务端和客户端JAVA历史版本网站:https://minecraftversions.org/cn/,客户端可使用HMCL/PCL2启动器导入该jar文件启动。