如何在 Minecraft 中创建服务器
拥有自己的服务器可以完全掌控世界和游戏规则。这意味着你可以和朋友一起游玩,而无需支付每月的订阅费,可以安装任意模组,制作小游戏或技术整合包。服务器作为一个独立程序在电脑上运行:它处理游戏逻辑,而玩家的客户端连接到它。创建过程包括选择核心、基础配置文件的设置以及开放网络访问。…
拥有自己的服务器可以完全掌控世界和游戏规则。这意味着你可以和朋友一起游玩,而无需支付每月的订阅费,可以安装任意模组,制作小游戏或技术整合包。服务器作为一个独立程序在电脑上运行:它处理游戏逻辑,而玩家的客户端连接到它。创建过程包括选择核心、基础配置文件的设置以及开放网络访问。
选择服务器核心
核心类型决定了服务器的功能。无法在 Paper 上安装 Forge 模组,也无法在 Vanilla 上安装插件。
核心类型 | 支持 | 适用场景 |
Vanilla | 仅数据包 | 纯生存、速通。优化最差。 |
Paper | 插件(Bukkit/Spigot/Paper) | 公共服务器、与朋友生存、小游戏。优化极佳。 |
Purpur | 插件(Paper)+ 自有配置 | 与 Paper 类似,但可对机制进行精细调整(例如允许骑乘蜜蜂)。 |
Fabric | 模组(Fabric) | 技术服务器(Carpet mod)、原版+整合包、优化(Lithium)。 |
NeoForge / Forge | 模组(Forge/NeoForge) | 含新维度、机械、魔法的重型整合包。 |
对于 90% 没有大型全局模组的私人服务器来说,Paper 是最佳选择。它不需要在玩家的客户端上安装模组(一切都从原版客户端进入),支持领地保护插件,并且运行速度比官方核心更快。
⚠️ 重要:同时支持模组和插件的混合核心(Arclight、Mohist)常常会破坏模组的机制并导致不稳定。请只选择一种:要么插件,要么模组。
系统要求与准备
服务器消耗内存(RAM)和处理器资源。显卡对服务器没有影响——世界生成完全依靠 CPU。
对于 2–5 名玩家(Paper):
RAM:2–3 GB 分配内存。
CPU:任何 4 核及以上的现代处理器。
对于 10+ 名玩家或重型整合包(NeoForge):
RAM:6–8 GB 分配内存。
CPU:单核高性能。
安装 Java
Minecraft 1.21+ 需要 Java 21 (对于 26.1+ 版本需要 Java 26)。服务器不使用客户端内置的 Java,需要在系统上单独安装。
从 Oracle 官方网站下载 JDK 21(或 JDK 26)。
安装时务必在安装程序中勾选“Add to PATH”选项。
在终端中检查:java -version。应显示版本 21.0.x。
基础安装与启动
以 Paper 核心的安装为例:
步骤 1. 下载核心
前往官方网站 papermc.io,选择游戏版本(例如 26.1)并下载文件。为服务器创建一个空文件夹,并将文件移动到那里。为方便起见,将其重命名为 server.jar。
步骤 2. 创建启动文件
服务器无法通过双击启动。需要通过脚本为其分配内存。
在服务器文件夹中创建文本文档 start.txt,
打开它并粘贴代码:
DOS
java -Xmx4G -Xms4G -jar server.jar nogui
pause
参数 -Xmx4G 设置内存上限(4 GB)。-Xms4G – 起始容量。保存文件,并将其扩展名从 .txt 改为 .bat(用于 Windows)。
在 Linux/macOS 上,创建 start.sh 并在第一行添加 #!/bin/bash。
步骤 3. 接受 EULA
运行 start.bat。控制台会打开几秒钟然后关闭。打开新出现的文件 eula.txt。将 eula=false 这一行改为 eula=true。这是对开发者许可协议的正式同意。
步骤 4. 完整启动
再次运行 start.bat。服务器将生成世界和配置文件。控制台中会出现 Done! 消息。停止服务器时务必只使用控制台中的 stop 命令,否则世界可能会损坏。
配置 server.properties
文件 server.properties 包含服务器的主要设置。要打开它,请右键单击(鼠标右键)该文件并选择“打开方式…”,然后选择“记事本”或任何其他文本编辑器。\
以下是包含 server.properties 默认设置及每个参数说明的表格:
参数 | 值 | 说明 |
accepts-transfers | FALSE | 决定此服务器是否接受来自其他服务器的玩家转移(transfer)。 |
allow-flight | FALSE | 允许或禁止在生存模式下于服务器上飞行(如果玩家使用了第三方模组)。设为 false 时,服务器会踢出此类玩家。 |
broadcast-console-to-ops | TRUE | 如果启用,控制台命令的执行结果将发送到所有服务器操作员(管理员)的聊天框中。 |
broadcast-rcon-to-ops | TRUE | 与上一项相同,但针对通过远程访问(RCON)发送的命令。 |
bug-report-link | (空) | 当玩家因错误或故障从服务器断开连接时,屏幕上向其显示的链接。 |
debug | FALSE | 启用调试模式(debug mode)以扩展错误日志记录。 |
difficulty | easy | 服务器上的难度等级(peaceful - 和平,easy - 简单,normal - 普通,hard - 困难)。 |
enable-code-of-conduct | FALSE | 是否要求玩家在连接时同意 Microsoft 的行为准则(Code of Conduct)。 |
enable-jmx-monitoring | FALSE | 允许使用 JMX(Java Management Extensions)来监控服务器性能。 |
enable-query | FALSE | 启用 GameSpy4 协议(Query),它允许第三方监控网站获取服务器信息(在线人数、插件)。 |
enable-rcon | FALSE | 启用对服务器控制台的远程访问(RCON),以便在不直接访问机器终端的情况下进行管理。 |
enable-status | TRUE | 允许服务器在游戏客户端的服务器列表中显示为“在线”。 |
enforce-secure-profile | TRUE | 要求玩家拥有已签名的 Mojang 个人资料公钥(防止聊天消息被伪造)。 |
enforce-whitelist | FALSE | 如果为 true,当白名单(whitelist)被激活时,服务器将强制踢出不在“白名单”中的玩家。 |
entity-broadcast-range-percentage | 100 | 控制服务器向客户端发送实体(生物、其他玩家、物品)数据的距离(以百分比表示)。 |
force-gamemode | FALSE | 在每次连接到服务器时,强制为玩家设置默认游戏模式。 |
function-permission-level | 2 | 通过数据包(datapacks)执行的函数的权限等级(从 1 到 4)。 |
gamemode | survival | 默认游戏模式(survival、creative、adventure、spectator)。 |
generate-structures | TRUE | 决定世界中是否会生成结构(村庄、地牢、神殿等)。 |
generator-settings | {} | 世界生成器的特殊设置(通常用于自定义世界)。 |
hardcore | FALSE | “极限”模式。如果为 true,玩家死亡后将永久切换到旁观者模式。 |
hide-online-players | FALSE | 如果为 true,则在多人游戏菜单中隐藏活跃玩家的昵称列表。 |
initial-disabled-packs | (空) | 创建新世界时将被禁用的数据包列表。 |
initial-enabled-packs | vanilla | 默认启用的数据包列表(基础游戏“vanilla”)。 |
level-name | world | 保存你世界文件的文件夹名称。 |
level-seed | (空) | 用于生成世界的种子(数字种子)。如果为空,将生成随机种子。 |
level-type | minecraft\:normal | 世界生成类型(normal - 普通,flat - 平坦,large_biomes - 大型生物群系,amplified - 放大)。 |
log-ips | TRUE | 决定玩家的 IP 地址是否会记录到服务器的日志文件中。 |
management-server-* | (各种) | 一组用于外部服务器管理工具的参数(端口、密钥、设置)(很少使用)。 |
max-chained-neighbor-updates | 1000000 | 连锁方块更新的上限(例如在 TNT 爆炸或复杂红石电路期间),用于防止服务器卡死。 |
max-players | 20 | 可以同时在服务器上的最大玩家数量。 |
max-tick-time | 60000 | 执行一个“tick”的最长时间(以毫秒为单位)。如果服务器“卡顿”超过此时间,它将自动关闭(防止“假死”卡顿)。 |
max-world-size | 29999984 | 世界边界的最大半径(以方块为单位)。 |
motd | A Minecraft Server | Message Of The Day。玩家在服务器列表中看到的服务器描述/名称。 |
network-compression-threshold | 256 | 数据包的最小大小(以字节为单位),超过此大小后服务器将开始压缩它以节省网络流量。 |
online-mode | TRUE | 非常重要的参数。如果为 true——只允许拥有正版游戏的玩家进入。如果为 false——允许使用“盗版”启动器的玩家进入。 |
op-permission-level | 4 | 操作员的默认权限等级(1-4,其中 4 可访问所有命令,包括 stop)。 |
pause-when-empty-seconds | -1 | 空闲时间(以秒为单位),当没有玩家时,超过此时间后服务器会将世界“暂停”(-1 表示禁用)。 |
player-idle-timeout | 0 | 时间(以分钟为单位),超过此时间后会自动踢出不活跃(AFK)的玩家。0 — 禁用。 |
prevent-proxy-connections | FALSE | 禁止使用 VPN 或代理的玩家连接(与 Mojang 的身份验证系统配合工作)。 |
query.port | 25565 | Query 协议的端口(如果通过 enable-query 参数启用)。 |
rate-limit | 0 | 客户端向服务器发送的最大数据包数量。用于防止数据包刷屏(0 — 禁用)。 |
rcon.password | (空) | 远程访问服务器控制台的密码(如果 enable-rcon=true,则需要填写)。 |
rcon.port | 25575 | RCON 连接的端口。 |
region-file-compression | deflate | 世界文件(区域)的压缩算法。deflate 是标准且最常用的算法。 |
require-resource-pack | FALSE | 如果为 true,玩家在同意下载服务器资源包之前将无法进入服务器。 |
resource-pack | (空) | 将提供给玩家的服务器资源包 .zip 压缩文件的直接链接(URL)。 |
resource-pack-id | (空) | 资源包的唯一标识符(UUID)。 |
resource-pack-prompt | (空) | 玩家在收到下载资源包提示时看到的消息(例如:“请下载资源包以获得更好的游戏体验”)。 |
resource-pack-sha1 | (空) | 资源包压缩文件的 SHA-1 哈希值。需要它以便客户端在资源包未更改时不会重新下载。 |
server-ip | (空) | 用于“绑定”服务器的 IP 地址。通常留空,以便服务器在机器的所有网络接口上工作。 |
server-port | 25565 | 服务器的主端口,玩家将通过它进行连接。 |
simulation-distance | 10 | 玩家周围模拟世界的半径(以区块为单位),在此范围内植物生长、生物活动、机械运作。 |
spawn-protection | 16 | 出生点区域的保护半径(以方块为单位)。在此区域内,普通玩家无法破坏或放置方块。 |
status-heartbeat-interval | 0 | 发送服务器状态扩展数据的间隔(通常不使用)。 |
sync-chunk-writes | TRUE | 使区块保存到磁盘的操作同步进行(对于避免崩溃时丢失世界数据更可靠,但可能会使服务器稍微变慢)。 |
text-filtering-config | (空) | 第三方聊天脏话过滤系统的设置。 |
text-filtering-version | 0 | 文本过滤系统的 API 版本。 |
use-native-transport | TRUE | 允许服务器使用系统优化的网络库(例如 Linux 的 epoll),从而提升网络性能。 |
view-distance | 10 | 服务器发送给客户端的渲染距离(以区块为单位)(玩家的可视距离以此为基础)。 |
white-list | FALSE | 启用“白名单”。如果为 true,只有昵称被添加到此列表中的玩家才能进入服务器(使用命令 /whitelist add <昵称>)。 |
⚠️ 重要:如果你设置 online-mode=false,任何玩家都可以使用管理员的昵称进入。务必安装授权插件(例如 AuthMe Reloaded)以进行保护。
如何安装插件
插件无需为玩家安装模组即可扩展服务器功能。仅在 Paper、Purpur 和 Spigot 上工作。
下载 .jar 格式的插件。
将文件放入服务器内的 plugins 文件夹。
重启服务器(stop -> start.bat)。
plugins 文件夹中会出现一个包含插件配置的文件夹,在那里可以编辑其设置(通常在 config.yml 文件中)。
如何安装模组
要玩带模组的游戏,需要 Fabric 或 NeoForge 核心。所有玩家的客户端中必须拥有完全相同的模组组合。
对于 Fabric:
从 fabricmc.net 下载安装程序。
运行它,选择“Server”选项卡,指定游戏版本和一个空文件夹。点击“Install”。
通过 start.bat 启动下载的 fabric-server-launch.jar。
将模组放入生成的 mods 文件夹。对于 Fabric,务必需要 Fabric API 模组。
对于 NeoForge:
从 neoforged.net 下载安装程序。
运行它,选择“Install server”并指定文件夹。
安装完成后,运行 run.bat 文件(安装程序会自动创建它)。
将服务器模组放入 mods 文件夹。
禁止将客户端模组(小地图、光影、Sodium 之类的渲染优化)安装到服务器上——它们会在启动时导致核心崩溃。
如何让玩家进入服务器
方法 1:端口转发(Port Forwarding)
延迟最低的最佳方法。需要访问路由器。
进入路由器的设置面板(在浏览器中输入 192.168.1.1)。
找到“Port Forwarding”或“NAT”部分。
创建一条规则:端口 25565,协议 TCP/UDP,本地 IP — 你电脑的地址(通过 ipconfig 查询)。
玩家通过你的外部 IP 地址连接(网站 2ip.ua)。
方法 2:隧道(Playit.gg)
如果运营商封锁了端口。
从 playit.gg 下载程序。
将它与服务器一起运行。它会在浏览器中打开一个页面。
注册后,该服务会提供一个公共地址(例如 auto-bridge.playit.gg)。
玩家在游戏中输入此地址。
方法 3:Radmin VPN
在所有电脑上安装 Radmin VPN。
创建一个网络并把名称告诉朋友。
他们加入该网络。
玩家通过 Radmin VPN 中显示的你电脑的 IP 地址进行连接。
技术细节 / 内部工作原理
Minecraft 服务器是一个单线程应用程序。处理生物移动、物理和机械的主游戏循环(tick loop)仅在一个处理器核心上执行。
游戏尝试每秒执行 20 个 tick(TPS - Ticks Per Second)。每个 tick 分配 50 毫秒。如果计算占用更多时间,TPS 就会下降,玩家会感到延迟。正因如此,对服务器而言,单核的时钟频率比核心总数更重要。
在 Paper 这类核心中,多线程仅用于从磁盘异步加载区块和网络处理,但游戏逻辑本身仍保持在一个线程上。
基础管理员命令
在服务器控制台中输入(不带 /)。
操作 | 命令 |
授予操作员权限 | op [昵称] |
收回权限 | deop [昵称] |
启用白名单 | whitelist on |
添加到白名单 | whitelist add [昵称] |
踢出玩家 | kick [昵称] [原因] |
封禁玩家 | ban [昵称] [原因] |
手动保存世界 | save-all |
租用主机作为替代方案
如果家用电脑性能不足,可以租用服务器。
类型 | 代表 | 优点 | 限制 |
免费 | Aternos、FalixNodes | 无需付费 | 启动需排队、负载时卡顿、无玩家时服务器关闭。 |
付费经济型 | PebbleHost、Bloom.host | 每 GB 起价 1 美元,24/7 运行 | 需要每月付费。 |
VDS/VPS | Hetzner、Oracle | 完全掌控机器 | 需要 Linux 管理技能。 |
常见错误及如何避免
错误 1:FAILED TO BIND TO PORT。服务器无法启动,因为端口 25565 已被占用。常发生在启动了两个 start.bat 时。打开任务管理器并关闭所有 Java(TM) Platform SE binary 进程。
错误 2:UnsupportedClassVersionError。Java 版本过旧。1.20.5+ 需要 Java 21,而 1.16.5 — 需要 Java 11。
错误 3:快速飞行时卡顿。服务器来不及生成新区块。安装 Chunky 插件并预先在 5000 方块半径内生成世界。
错误 4:启动时 Fabric/Forge 服务器崩溃。客户端模组(小地图、Sodium)被放入了 mods 文件夹。服务器没有图形界面,尝试加载它们时会崩溃。
错误 5:连接时出现 Invalid session 错误。玩家在 online-mode=true 启用的情况下使用了盗版启动器。请在 server.properties 中将值改为 false。
结论
基于 Paper 的自有服务器是与朋友进行私人生存的最佳选择,因为它能提供出色的性能,并允许在不改动游戏客户端的情况下添加插件。对于带有新机制的大型整合包,则不得不使用 Fabric 或 NeoForge,它们需要在服务器和玩家之间同步模组。搭建家庭服务器的主要挑战在于正确开放端口,但使用 Playit.gg 这类服务可以解决运营商封锁端口的问题。如果家用电脑性能不足,转向廉价的付费主机可保证 24/7 稳定访问。
还没有评论,来抢沙发吧。