20260727102309916.jpg
在网上看到一篇“用树莓派搭建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

五、有关配置文件

  1. 如果用户许可未修改成功,可打开/home/minecraft/server/下的eula.txt,使用命令修改:

    sudo nano /home/minecraft/server/eula.txt

修改为eula=true后,按Ctrl+O保存,按Ctrl+X退出。

  1. 如果仅限局域网离线多人游玩,不需要认证登录,可打开server.properties文件进行以下调整:

    sudo nano /home/minecraft/server/server.properties

将online-mode=true改为false(正版认证)。enforce-secure-profile=true改为false(如果设置为true,没有Mojang签名公钥的玩家将无法连接到服务器)。

  1. 另外,使用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根据需求可修改。
  2. 如果出现卡位,修改spigot.yml文件下的两个数据为1和50,或者更大。

    sudo nano /home/minecraft/server/spigot.yml

    moved-wrongly-threshold: 1.0 (移动错误阀值)
    moved-too-quickly-multiplier: 50.0(移动过快倍数)

  3. 设置管理员:ops=johndoe,op-permission-level=4,“johndoe”是您的玩家名称,“4”表示管理员权限。您可以使用1到4之间的数字,其中1是最低权限,4是最高权限。或者在命令行输入:/op <您的玩家名称> ,设置管理员。

管理员常用命令:

/ban: 禁止一个玩家在服务器上进入。
/kick: 将一个玩家从服务器踢出。
/whitelist: 添加或删除白名单中的玩家。
/give: 给予自己或其他玩家物品。
/tp: 传送自己或其他玩家到指定位置。
  1. 死亡不掉落。在 server.properties 文件中添加或修改一行配置:keep-inventory=true,重启服务器后全局生效。游戏中命令行为 /gamerule keepInventory true(I 大写)。

配置文件详解:https://www.minebbs.com/threads/java-server-properties.27473/?u_atoken=6a66bbca-4e1f-23db-3c9f-a95e66a3060e&u_asig=6f7b2a2817851176425193139e

六、客户端安装和设置

开源版本的客户端运行环境也需要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文件启动。

标签: Minecraft

添加新评论