跳到主要内容

nukkit-mot.yml

Nukkit-MOT 服务器高级配置。设置按类别分组排序。

如需标准 Minecraft 服务器设置,请参阅 server.properties。

performance-settings(性能设置)​

async-workers​

数据类型默认值
Stringauto

异步工作线程数

如果设置为 auto,则会尝试自动检测核心数进行调整

virtual-threads​

数据类型默认值
Booleanon

为通过调度器 API 显式申请的异步任务启用虚拟线程

需要 Java 21 或更高版本,旧版本 Java 上该选项不生效

未显式申请虚拟线程的任务仍然运行在 async-workers 线程池中

auto-tick-rate​

数据类型默认值
Booleanon

允许服务器自动调整世界游戏刻以维持每秒 20 个游戏刻

模拟 tick 耗时 = 90 ms
20 ms200 ms

TPS 保持 20 —— 过载的世界改为降低自身 tick 频率(tickRate 上升)。

服务器 TPS20 / 20
世界 tick 速度10/s · tickRate = 2

auto-tick-rate-limit​

数据类型默认值
Integer20

服务器可以临时降低游戏刻速率到多少

base-tick-rate​

数据类型默认值
Integer1

基础游戏刻速率

1 = 每秒 20 个刻度,2 = 每秒 10 个刻度,以此类推。

建议保持默认值(1)。

always-tick-players​

数据类型默认值
Booleanoff

始终对玩家进行游戏刻更新

thread-watchdog​

数据类型默认值
Booleanon

启用线程看门狗

thread-watchdog-tick​

数据类型默认值
Integer60000

如果 Nukkit-MOT 主线程暂停超过 60000 毫秒,会抛出致命错误并终止执行的毫秒数

do-level-gc​

数据类型默认值
Booleanon

在游戏刻之间进行世界垃圾收集

ticks-per-autosave​

数据类型默认值
Integer6000

世界自动保存任务运行的频率

以刻为单位,20刻 = 1秒

level-auto-compaction​

数据类型默认值
Booleanon

启用世界 LevelDB 自动压缩

level-auto-compaction-ticks​

数据类型默认值
Integer36000

LevelDB 自动压缩任务运行的频率

以刻为单位,20刻 = 1秒(默认:36000 = 30 分钟)

leveldb-cache-mb​

数据类型默认值
Integer64

用于限制每个世界硬盘读写操作的区块数据最大缓存大小

如果你拥有大量内存并且仅有几个大型世界,可以调高此缓存大小 相反,如果你拥有内存较少并且有多个世界,可以调低此缓存大小

use-native-leveldb​

数据类型默认值
Booleanoff

使用原生的 LevelDB 实现

enable-spark​

数据类型默认值
Booleanoff

启用 Spark 用于性能分析

详见:https://spark.lucko.me/docs

network-settings(网络设置)​

nethernet​

NetherNet(WebRTC)传输设置,与 RakNet 并行运行

NetherNet 是基岩版用来接替 RakNet 的、基于 WebRTC 的传输协议:1.21.90+ 客户端已可通过它接入(最初用于纯 UDP 被屏蔽的受限网络),自基岩版 1.26.50 起更是客户端的默认传输方式。Nukkit-MOT 同时监听两种传输——旧客户端继续走 RakNet,NetherNet 客户端通过 HTTP 信令 + WebRTC 接入

两种传输对网络的占用如下:

  • 信令走 TCP server-port(UDP 侧仍归 RakNet)——请在防火墙放行该端口的 TCP,否则 NetherNet 玩家完全无法连接
  • 媒体(游戏流量)走 UDP——默认与 RakNet 共用 server-port 的 UDP 侧(19132),由 RakNet socket 进程内中继,无需额外放行端口;可通过 server-udp-ports 钉住独立媒体端口(如 19134)、端口窗口,或设为 0 改回系统自动分配,该条目还说明了媒体 UDP 不通时的处理方法
19132
19133
19134
TCP
NetherNet 信令
—
—
UDP
RakNet + NetherNet 媒体(进程内中继)
IPv6 监听器(默认关闭)
—
默认监听默认未占用

监控:/status 会输出最近 10 分钟的 NetherNet 区块(接受的加入、ICE 连通数、完成的握手);/status full 额外显示媒体流量、掉线计数与共用端口中继统计。NetherNet 禁用时该区块隐藏。

network-settings:
nethernet:
enabled: true
ice-servers: []
identity-file: keys/nethernet-identity.pem
identity-domain: ''

enabled​

数据类型默认值
Booleanon

默认与 RakNet 并行启用

启用期间,信令通过 TCP 复用 server-port,媒体默认与其共用 UDP 侧(由 RakNet socket 进程内中继——如需独立端口可通过 server-udp-ports 钉住,如 19134;设为 0 则改回系统自动分配)

设为 false 则只运行 RakNet——TCP 信令端点与媒体端口随之消失,其他一切不变

ice-servers​

数据类型默认值
List<String>[]

额外的 ICE STUN/TURN 服务器,例如 stun:stun.l.google.com:19302

TURN 凭证直接写在 URL 中:turn:user:pass@host:port?transport=udp

当玩家侧为对称 NAT、无法建立直连媒体路径时,可添加 TURN 中继——完整的媒体不可达排查清单见 server-udp-ports

identity-file​

数据类型默认值
Stringkeys/nethernet-identity.pem

运营者身份 PEM 文件,首次启动时生成,请妥善保留

更换该文件会使所有回归玩家重新确认信任提示

运行多个服务器?在它们之间共享同一身份文件即可呈现为同一运营者

identity-domain​

数据类型默认值
String

客户端信任提示中显示的运营者名称,留空则使用 MOTD

仅用于展示——可以随时修改,无需更换身份密钥

zlib-provider​

数据类型默认值
Integer2

选择 zlib 提供程序

0 = ZlibOriginal,1 = ZlibSingleThreadLowMem,2 = ZlibThreadLocal

默认:2

注意

使用其他提供程序可能会对服务器的性能产生负面影响

每个线程持有自己的 Deflater —— 无重复分配,也无锁竞争。

DeflaterDeflater线程 1线程 2玩家

compression-level​

数据类型默认值
Integer5

发送数据包的 Zlib 压缩级别(0-9)

更高的值 = 更多的 CPU 占用 + 更少的网络占用

chunk-compression-level​

数据类型默认值
Integer7

区块数据的 Zlib 压缩级别(0-9)

更高的值 = 更多的 CPU 占用 + 更小的区块数据包

compression-threshold​

数据类型默认值
Integer256

不要压缩小于此值的批处理数据包(仅限Zlib)

compression-threshold = 256
02564 KB256 KB

小于阈值的数据包会以压缩级别 0 发送,即不压缩。

小数据包~100 Bzlib玩家未压缩批量数据包~4 KBzlib玩家已压缩区块数据包~128 KBzlib玩家已压缩

use-snappy-compression​

数据类型默认值
Booleanoff

使用 Snappy 压缩数据包

rak-packet-limit​

数据类型默认值
Integer2000

每个 IP 可以在一个 RakNet 周期(10ms)内发送的数据包数量

超过此限制的 IP 将被暂时封禁

数据类型默认值
Stringactive

RakNet Cookie 模式,用于连接安全验证。可用值:

值说明
active密钥由服务器生成和管理。处理并响应 ID_OPEN_CONNECTION_REQUEST_1,使用无状态 Cookie(默认)
offloaded密钥未知。忽略 ID_OPEN_CONNECTION_REQUEST_1。在 ID_OPEN_CONNECTION_REQUEST_2 时,仅验证时间戳是否为最近的,忽略签名
offloaded_psk密钥已知。忽略 ID_OPEN_CONNECTION_REQUEST_1。在 ID_OPEN_CONNECTION_REQUEST_2 时,验证时间戳是否为最近的并检查 Cookie 签名
off在 ID_OPEN_CONNECTION_REQUEST_2 时接受任何 Cookie
none不发送也不校验 Cookie。此模式下无法恢复 RakNet 协议版本
stateless执行完整的 Cookie 握手并从 Cookie 中恢复 RakNet 协议版本,但不校验签名
备注

如果您无法进入服务器(尤其是使用代理时),可以尝试将此项设置为 offloaded。

为了向后兼容,true 会被视为 active,false 会被视为 off。

timeout-milliseconds​

数据类型默认值
Integer25000

如果客户端没有响应,服务器应该等待多长时间后踢出玩家

单位为毫秒,1000 毫秒 = 1 秒

备注

此超时同时约束 RakNet 与 NetherNet 会话的登录阶段,并约束 NetherNet WebRTC 握手阶段。

设为 0 可禁用登录超时;此时 NetherNet WebRTC 握手仍会回退到 30 秒。

query-plugins​

数据类型默认值
Booleanoff

若启用则 Query 查询可以获取插件列表(enable-query=on)

use-waterdog​

数据类型默认值
Booleanoff

尝试获取 WaterdogPE 提供的客户端真实 IP

详见:https://waterdog.dev/

viaproxy-username-prefix​

数据类型默认值
String

ViaProxy 连接的用户名前缀

enable-proxy-protocol​

数据类型默认值
Booleanoff

为 FRP 等 UDP 代理启用 HAProxy Proxy Protocol v2 解析。

当受信任代理发送合法的 PPv2 头时,Nukkit-MOT 会把代理源地址替换为玩家真实地址。 这样依赖 IP 的日志、封禁和插件都能看到玩家真实 IP,而不是代理 IP。

注意

仅当服务器位于兼容的 UDP 代理之后时才应启用此项。 加入白名单的代理来源必须发送合法的 PPv2 头。

proxy-protocol-whitelist​

数据类型默认值
List<String>["127.0.0.1/32", "::1/128"]

允许发送 Proxy Protocol 头的受信任代理源 IP 或 CIDR 范围列表。

这里填写代理地址,而不是玩家地址。 示例:127.0.0.1/32、10.0.0.0/8、203.0.113.5/32、::1/128

备注

同时支持 IPv4/CIDR 和 IPv6/CIDR 条目。

IPv6 本地地址默认可信。

如果该列表为空,则会信任所有来源 IP 的 Proxy Protocol 头,安全性会降低。

来自白名单来源但不带头或携带非法头的报文会被直接丢弃。

chunk-settings(区块设置)​

sending-per-tick​

数据类型默认值
Integer4

每游戏刻发送的区块数

ticking-per-tick​

数据类型默认值
Integer40

每游戏刻 chunkTickList 存储的区块数

ticking-radius​

数据类型默认值
Integer3

玩家周围需要进行刻算的区块半径

generation-queue-size​

数据类型默认值
Integer8

等待生成的区块数量

generation-population-queue-size​

数据类型默认值
Integer8

等待填充的区块数量

light-updates​

数据类型默认值
Booleanon

光照更新

clear-chunk-tick-list​

数据类型默认值
Booleanon

允许服务器在完成每个游戏刻的逻辑更新后,清空用于追踪哪些区块需要进行逻辑更新的列表 chunkTickList。

这可以帮助优化服务器性能,防止不必要的计算,特别是在大型服务器或有大量区块需要管理的情况下。

spawn-threshold​

数据类型默认值
Integer56

在生成玩家之前需要加载多少个区块

cache-chunks​

数据类型默认值
Booleanoff

将区块保存到内存中以加快发送速度

async-chunks​

数据类型默认值
Booleanon

启用异步区块发送

当向不同版本的玩家发送大量区块时,这可以极大地提高性能

建议保持此选项开启

区块存储主线程负载异步区块线程序列化 / 编码异步 IO 线程读取 / 解码 / 保存玩家

max-pending-chunk-writes​

数据类型默认值
Integer128

每个世界在暂停区块卸载前允许的最大待写入区块数量(背压机制)

max-pending-chunk-writes = 128
3264128256
写入压力 = 10/s
4/s40/s

当队列达到上限时,区块卸载会暂停,直到磁盘写入赶上(背压)。把写入压力拉高到磁盘消化速度(12/s)以上即可看到效果。

区块卸载待写队列0 / 128LevelDB

entity-settings(实体设置)​

spawn-eggs​

数据类型默认值
Booleanon

启用刷怪蛋,允许通过刷怪蛋生成实体

mob-ai​

数据类型默认值
Booleanon

启用生物 AI

auto-spawn-task​

数据类型默认值
Booleanon

启用自动生成怪物和动物的任务

生成功能依据服务器的游戏难度来工作

注意:如果您希望生成任何生物,必须启用spawn-animals、spawn-mobs其一,或者两者都启用。

despawn-task​

数据类型默认值
Booleanon

若启用,则没有使用命名牌命名的生物会自动消失

备注

末影龙、凋灵和村民不会消失

ticks-per-spawns​

数据类型默认值
Integer200

实体自动生成任务运行的频率

以刻为单位,20刻 = 1秒

ticks-per-despawns​

数据类型默认值
Integer12000

实体存活的时间

以刻为单位,20刻 = 1秒

world-settings(世界设置)​

nether​

数据类型默认值
Booleanon

生成地狱世界

end​

数据类型默认值
Booleanon

生成末地世界

vanilla-portals​

数据类型默认值
Booleanon

原版传送门

portal-ticks​

数据类型默认值
Integer80

玩家触发传送门所需 Tick

multi-nether-worlds​

数据类型默认值
List

如果你需要多个地狱世界,在这里列出应该有自己地狱的世界,否则使用默认的地狱世界

anti-xray-worlds​

数据类型默认值
List

启用内置反矿透的世界列表

示例:[world, survival, factions]

do-not-tick-worlds​

数据类型默认值
List

禁用随机方块刻度的世界列表

这将禁用植物生长、树叶腐烂、草方块蔓延、方块掉落等。

你可能想在这里添加你的大堂和迷你游戏世界

entity-spawning-disabled-worlds​

数据类型默认值
List

不允许实体自动生成的世界列表

示例:[lobby, pvp, creative]

load-all-worlds​

数据类型默认值
Booleanon

加载所有世界

auto-save-disabled-worlds​

数据类型默认值
List

禁用自动保存的世界

worlds​

数据类型默认值
Map

自定义世界配置。每个条目定义一个世界及其生成器、种子和生成器设置。

示例:

worlds:
my_world:
generator: normal
seed: 12345
generator-settings: ""
my_flat_world:
generator: flat
seed: 0
generator-settings: ""

每个世界条目支持:

  • generator - 世界生成器类型(默认:normal)
  • seed - 世界种子(默认:0)
  • generator-settings - 生成器特定设置(默认:空)

player-settings(玩家设置)​

save-player-data​

数据类型默认值
Booleanon

如果启用,则以其 UUID 保存玩家数据的格式,并自动将旧格式的玩家数据转换为新格式

如果存在新的玩家数据,请勿禁用

save-player-data-by-uuid​

数据类型默认值
Booleanon

如果启用,则以 NukkitX 使用的格式保存玩家数据,并自动将旧格式的玩家数据转换为新格式

如果存在新的玩家数据,请勿禁用

persona-skins​

数据类型默认值
Booleanon

允许玩家自己的皮肤

备注

如果禁用,将显示默认的史蒂夫皮肤

某些玩家的皮肤可能需要启用 do-not-limit-skin-geometry 才能使用

skin-change-cooldown​

数据类型默认值
Integer15

玩家皮肤更换冷却时间(秒)

do-not-limit-skin-geometry​

数据类型默认值
Booleanon

禁用最大皮肤几何大小检查

可能对某些玩家皮肤的可用性是必需的

do-not-limit-interactions​

数据类型默认值
Booleanoff

禁用用于限制客户端右键交互垃圾数据包的黑客技术

space-name-mode​

数据类型默认值
Stringignore

玩家名称中带有空格的处理方式

deny - 禁止带有空格名称的玩家进入服务器

ignore - 忽略名称中的空格(默认)

replace - 用"_"替换玩家名称中的空格

备注

为了向后兼容,仍接受别名 disabled(= deny)和 replacing(= replace)。

xp-bottles-on-creative​

数据类型默认值
Booleanon

允许创造模式下玩家扔经验瓶

stop-in-game​

数据类型默认值
Booleanoff

允许 OP 在游戏中使用 /stop 命令

op-in-game​

数据类型默认值
Booleanon

允许 OP 在游戏中使用 /op 命令对其他玩家进行操作

debug-settings(调试设置)​

debug-level​

数据类型默认值
Integer1

如果您想要更多的调试日志记录,请设置较高的值(1-3)

ansi-title​

数据类型默认值
Booleanoff

启用在 Windows CMD 标题中显示服务器占用信息

deprecated-verbose​

数据类型默认值
Booleanon

当插件使用不推荐 API 时在控制台显示警告。

call-data-pk-send-event​

数据类型默认值
Booleanon

如果没有插件使用它,可以禁用 DataPacketSendEvent 以获得更好的性能

call-batch-pk-send-event​

数据类型默认值
Booleanon

如果没有插件使用它,可以禁用 BatchPacketsEvent 以获得更好的性能

call-entity-motion-event​

数据类型默认值
Booleanon

如果没有插件使用它,可以禁用 EntityMotionEvent 以获得更好的性能

block-listener​

数据类型默认值
Booleanon

启用用于雪块、铁傀儡、怪物蛋石等的检查

automatic-bug-report​

数据类型默认值
Booleanon

启用自动报告错误

update-notifications​

数据类型默认值
Booleanon

有新的 Nukkit-MOT 版本发布时通知刚加入游戏的管理员(OP)

bstats-metrics​

数据类型默认值
Booleanon

启用 bStats 统计

https://bstats.org/plugin/server-implementation/Nukkit/

匿名收集数据:Nukkit 版本(Nukkit-MOT)、玩家数量、玩家游戏版本、是否开启 Xbox 身份验证、Java 版本、操作系统、CPU 架构及数量、服务器地理位置(粗略)

hastebin-token​

数据类型默认值
String

Hastebin 令牌,方便生成 debug 链接

详见:https://www.toptal.com/developers/hastebin/documentation

game-feature-settings(游戏功能设置)​

achievements​

数据类型默认值
Booleanon

启用玩家成就

announce-player-achievements​

数据类型默认值
Booleanon

向所有玩家广播获得成就的消息

bed-spawnpoints​

数据类型默认值
Booleanon

允许玩家使用床和重生锚设置重生点

explosion-break-blocks​

数据类型默认值
Booleanon

启用爆炸对方块造成的破坏

影响所有爆炸,如 TNT、苦力怕和末影水晶

piston-push-limit​

数据类型默认值
Integer12

单个活塞可推动的最大方块数(1-64)

超出 1-64 范围的值会回退为 12;基岩版原版为 12

drop-spawners​

数据类型默认值
Booleanon

刷怪笼被挖掘后掉落

anvils-enabled​

数据类型默认值
Booleanon

启用铁砧

vanilla-bossbars​

数据类型默认值
Booleanoff

显示凋零和末影龙的Boss血条(实验性)

use-client-spectator​

数据类型默认值
Booleanon

使用客户端侧的旁观者模式

enable-experiment-mode​

数据类型默认值
Booleanon

启用实验模式

multiversion-min-protocol​

数据类型默认值
Integer0

多版本的最低协议

multiversion-max-protocol​

数据类型默认值
Integer-1

多版本的最高协议

enable-raw-ores​

数据类型默认值
Booleanon

启用粗矿石;若启用则对高版本玩家掉落粗铜、粗铁、粗金

版本自 BE 1.17.0 起

enable-new-paintings​

数据类型默认值
Booleanon

启用在1.21版本新加入的画

enable-new-chicken-eggs-laying​

数据类型默认值
Booleanon

启用鸡产出新类型鸡蛋 (蓝色鸡蛋&棕色鸡蛋)

forced-safety-enchant​

数据类型默认值
Booleanon

启用强制安全附魔(限制附魔最大等级)

enable-vibrant-visuals​

数据类型默认值
Booleanon

启用灵动视效效果支持

enable-raytracing​

数据类型默认值
Booleanon

启用光线追踪支持

temp-ip-ban-failed-xbox-auth​

数据类型默认值
Booleanoff

临时封禁 Xbox 身份验证失败的玩家

strong-ip-bans​

数据类型默认值
Booleanoff

强制 IP 封禁

check-op-movement​

数据类型默认值
Booleanoff

为管理员(OP)启用移动检查

vanilla-armor-reduction​

数据类型默认值
Booleanon

使用原版盔甲伤害减免公式。

开启时,伤害减免遵循原版基岩版公式:基于护甲值与韧性的非线性曲线,计入「破甲」附魔效果,且保护附魔因子(EPF)为确定性数值(上限 20,无随机系数)。伤害修饰符按原版顺序生效:ARMOR → ARMOR_ENCHANTMENTS → RESISTANCE → ABSORPTION。

关闭时,改用旧的线性公式:护甲减免为 伤害 × 护甲值 × 4%,EPF 乘以 50%–100% 的随机系数,且忽略韧性与破甲。

备注

除非需要向前兼容 1.21 之前的战斗行为,否则建议保持开启。

vanilla-knockback-resistance​

数据类型默认值
Booleanon

使用原版盔甲击退抗性公式。

开启时,每件穿戴的下界合金盔甲抵挡 10% 的击退(全套共抵挡 40%),与原版基岩版行为一致。总抗性值还会作为属性同步至客户端,使客户端预测与服务端一致。

关闭时,盔甲不再提供击退抗性,玩家会受到完整强度的击退(旧行为)。来自其他来源的击退抗性(例如插件设置的实体属性)不受影响。

netease-settings(网易设置)​

client-support​

数据类型默认值
Booleanoff

启用网易客户端支持,启用后将允许网易玩家进入服务器

only-allow-netease-client​

数据类型默认值
Booleanoff

仅允许网易玩家进入服务器,开启后将禁止微软版玩家进入服务器,仅允许网易玩家加入服务器

custom-block-settings(自定义方块设置)​

auto-download-vanilla-palette​

数据类型默认值
Booleanon

当原版方块调色板(vanilla_palette_*.nbt)缺失时,自动从官方镜像下载。

跨多个客户端协议版本支持自定义方块时需要此选项。文件会缓存在 bin/ 目录下,并通过 SHA256 校验。

若禁用,需手动将调色板文件准备到 bin/ 目录中。

use-hashed-block-network-ids​

数据类型默认值
Booleanon

向 1.19.80 及以上版本的客户端(包括网易版客户端)发送哈希方块网络 ID(blockNetworkIdsHashed),而不是旧的运行时 ID。

即使没有注册自定义方块也默认启用;哈希 ID 在不同版本间保持持久一致。

备注

对低于 1.19.80 的协议版本无影响。

当注册了自定义方块时,此选项始终强制启用。