搭建 Minecraft(我的世界)专用服务器能提供高度可控的联机环境,无论是纯净生存、插件社群还是大型科技魔法模组包,都需要准确的基础运行环境与合理的端核选型。本文以 Paper 1.21 为部署示例,介绍服务端选型、Java 环境与常用调优参数。
一、运行环境与核心架构选型
1. Java 运行时环境(JRE)硬性要求
| Paper 版本范围 | Java 运行时 | 启动前检查 |
|---|---|---|
| 26.1 | Java 25 | 核对所选具体构建的要求 |
| 1.20 ~ 1.21.11 | 推荐 Java 21 | 本文 Paper 1.21 示例使用 Java 21 |
| 更早版本或整合包 | 按对应版本与整合包要求 | 不把同一个 Java 版本套用于所有服务端 |
2. 主流服务端核心(端核)选型矩阵
| 服务端核心 | 定位与特性 | 兼容性 | 适用场景 |
|---|---|---|---|
| Vanilla (官方原版) | Mojang 官方提供,原汁原味 | 无插件/模组支持,单线程压力大 | 2~5人纯净体验、快照测试 |
| Paper | 行业级高性能端,异步光照与多线程优化 | 兼容许多 Bukkit/Spigot 插件,仍需核对版本 | 朋友服、经济社群服、公网小游戏服首选 |
| Purpur | Paper 的下游分支,拥有极其丰富的自定义特性 | 沿用 Paper 插件生态,逐项验证兼容性 | 高自由度、需深度微调生物特性的服务器 |
| Fabric | 轻量级现代 MOD 端核,版本跟进极快,资源占用低 | 仅支持 Fabric 模组,不支持传统插件 | 客户端服务端通用轻量模组服、红石机器优化服 |
| NeoForge / Forge | 传统大型 MOD 容器,成熟稳定 | 兼容庞大的科技、魔法、维度类 MOD | 整合包联机、大型工业魔法冒险世界 |
二、部署标准流程(以 Paper 1.21 为例)
1. 下载核心文件与首次初始化
从 PaperMC 官方下载与小队客户端匹配的 Paper 1.21 构建;将下方占位文件名替换为实际 JAR 文件名后,在独立文件夹首次启动:
java -Xms2G -Xmx4G -jar paper-1.21.x.jar --nogui
2. 同意 EULA 协议
服务端首次运行后会生成 eula.txt 并退出。阅读并同意其中指向的 EULA 后,再将值改为 true:
eula=true
3. JVM 内存与启动参数
先使用简单的内存参数启动,保留操作系统及其他进程所需内存。遇到卡顿后再结合 profiler 和 GC 日志调整,不把一长串垃圾回收参数当作通用性能修复:
java -Xms2G -Xmx6G -jar paper-1.21.x.jar --nogui
三、网络通信与 server.properties 核心项
1. 端口配置
- Java 版默认端口:
TCP 25565(玩家直连必须开放)。 - 基岩版(Bedrock)默认端口:
UDP 19132。 - 若通过 Geyser 插件实现基岩版与 Java 版互通,需同时放行上述两个端口。
2. 关键配置表
在服务端根目录的 server.properties 中:
# 服务器显示在列表的描述文本
motd=A LanGame Minecraft Server
# 默认端口
server-port=25565
# 最大玩家数
max-players=20
# 账号验证默认保持开启;局域网或虚拟组网不替代身份验证
online-mode=true
# 视距(单位:区块),推荐 8~10,过高严重挤占 CPU 与网络上行
view-distance=10
# 模拟距离(单位:区块),建议 6~8,降低后台实体计算压力
simulation-distance=6
# 允许飞行(安装滑翔机、飞行模组时必须开启,防止误踢)
allow-flight=true
四、用 LGSM 管理日常维护
Minecraft 的端核、Java 版本和世界数据要成套管理。LGSM 可以准备实例所需的运行环境,并集中管理原生配置、控制台和备份;插件或模组仍需与实际端核匹配。
- 启动前检查并补齐所需 Java;按实例实际版本确认运行时,不把所有版本固定到 Java 21。
- 维护 server.properties、白名单和管理员名单,保持账号验证开启。
- 升级版本或改用模组端前备份世界与配置,在独立测试实例验证兼容性后再迁移小队进度。
五、高频故障与调优避坑
1. 玩家加入报错:io.netty.channel.AbstractChannel$AnnotatedConnectException
- 服务端未真正绑定到监听端口,或系统防火墙拦截了
TCP 25565; - 确认当前局域网没有开启双层路由导致端口转发未到达服务端宿主机。
2. Can't keep up! Is the server overloaded?
- 表示服务端未能按期处理 tick;持续 MSPT(单 tick 毫秒数)超过 50ms 是需要调查的信号;
- 调低
server.properties中的view-distance和simulation-distance; - 借助 Spark 插件(
/spark profiler)抓取具体造成 CPU 占用的实体或红石电路。