nukkit-mot.yml
Advanced Nukkit-MOT server configuration. Settings are grouped and sorted by category.
For standard Minecraft server settings, see server.properties.
Performance Settings
async-workers
| Data Type | Default Value |
|---|---|
| String | auto |
number of async worker threads
if set to auto, it will try to automatically detect the number of cores and use that
auto-tick-rate
| Data Type | Default Value |
|---|---|
| Boolean | on |
allow the server to automatically change level tick rate to maintain 20 ticks per second
auto-tick-rate-limit
| Data Type | Default Value |
|---|---|
| Integer | 20 |
how much the server can temporary drop tick rate
base-tick-rate
| Data Type | Default Value |
|---|---|
| Integer | 1 |
default tick rate
1 = 20 ticks per second, 2 = 10 ticks per second, etc.
recommended to keep it as default (1)
always-tick-players
| Data Type | Default Value |
|---|---|
| Boolean | off |
Always tick players
thread-watchdog
| Data Type | Default Value |
|---|---|
| Boolean | on |
enable a task that checks if the server is frozen and kills it
useful if you have an auto restart script or the server runs on a panel with this feature
thread-watchdog-tick
| Data Type | Default Value |
|---|---|
| Integer | 60000 |
Milliseconds the watchdog waits, if the Nukkit-MOT main thread is suspended for more than 60000 milliseconds, a fatal error is thrown and execution is terminated
do-level-gc
| Data Type | Default Value |
|---|---|
| Boolean | on |
do level garbage collection between ticks
ticks-per-autosave
| Data Type | Default Value |
|---|---|
| Integer | 6000 |
how often world autosave task runs
in ticks, 20 ticks = 1 second
level-auto-compaction
| Data Type | Default Value |
|---|---|
| Boolean | on |
enable automatic LevelDB compaction for worlds
level-auto-compaction-ticks
| Data Type | Default Value |
|---|---|
| Integer | 36000 |
how often the automatic LevelDB compaction task runs
in ticks, 20 ticks = 1 second (default: 36000 = 30 minutes)
leveldb-cache-mb
| Data Type | Default Value |
|---|---|
| Integer | 64 |
Sets the maximum chunk data cache size per world to reduce disk I/O.
Consider increasing this value if you have plenty of RAM and only a few large worlds. Consider decreasing it if you have many worlds and limited RAM.
use-native-leveldb
| Data Type | Default Value |
|---|---|
| Boolean | off |
use native leveldb implementation
enable-spark
| Data Type | Default Value |
|---|---|
| Boolean | off |
Enabling Spark for Performance Analysis
See: https://spark.lucko.me/docs
Network Settings
zlib-provider
| Data Type | Default Value |
|---|---|
| Integer | 2 |
select zlib provider
0 = ZlibOriginal, 1 = ZlibSingleThreadLowMem, 2 = ZlibThreadLocal
default: 2
Using other providers may negatively impact server performance.
compression-level
| Data Type | Default Value |
|---|---|
| Integer | 5 |
Zlib compression level for sent packets (0-9)
higher = more cpu usage but less bandwidth usage
chunk-compression-level
| Data Type | Default Value |
|---|---|
| Integer | 7 |
Zlib compression level for chunk data (0-9)
higher = more cpu usage but smaller chunk packets
compression-threshold
| Data Type | Default Value |
|---|---|
| Integer | 256 |
don't compress batch packets smaller than this (Zlib only)
use-snappy-compression
| Data Type | Default Value |
|---|---|
| Boolean | off |
Use Snappy compression for packets
rak-packet-limit
| Data Type | Default Value |
|---|---|
| Integer | 120 |
A number of datagram packets each address can send within one RakNet tick (10ms)
IPs exceeding this limit will be temporarily banned
enable-rak-send-cookie
| Data Type | Default Value |
|---|---|
| Boolean | on |
When enabled, the server will send a Cookie to the client during the connection process to verify the client's legitimacy.
This enhances connection security and helps prevent potential malicious connections or attacks.
If you cannot join the server (especially when using a proxy), try setting this to false.
timeout-milliseconds
| Data Type | Default Value |
|---|---|
| Integer | 25000 |
how long should the server wait before kicking player if no response from the client
in milliseconds, 1000 milliseconds = 1 second
query-plugins
| Data Type | Default Value |
|---|---|
| Boolean | off |
include list of plugins in query (enable-query=on)
use-waterdog
| Data Type | Default Value |
|---|---|
| Boolean | off |
Attempt to get the real IP of clients provided by WaterdogPE
viaproxy-username-prefix
| Data Type | Default Value |
|---|---|
| String |
Username prefix for ViaProxy connections
enable-proxy-protocol
| Data Type | Default Value |
|---|---|
| Boolean | off |
Enables HAProxy Proxy Protocol v2 parsing for UDP proxies such as FRP.
When a trusted proxy sends a valid PPv2 header, Nukkit-MOT replaces the proxy source address with the real client address. This allows IP-based logs, bans, and plugins to see the player's real IP instead of the proxy IP.
Enable this only when your server is behind a compatible UDP proxy. Whitelisted proxy sources must send a valid PPv2 header.
proxy-protocol-whitelist
| Data Type | Default Value |
|---|---|
List<String> | ["127.0.0.1/32"] |
List of trusted proxy source IPs or CIDR ranges allowed to send Proxy Protocol headers.
Use proxy addresses here, not player addresses.
Examples: 127.0.0.1/32, 10.0.0.0/8, 203.0.113.5/32
This whitelist currently supports IPv4/CIDR entries.
If the list is empty, all source IPs are trusted for Proxy Protocol, which is less secure.
Headerless or invalid packets coming from a whitelisted source will be dropped.
Chunk Settings
sending-per-tick
| Data Type | Default Value |
|---|---|
| Integer | 4 |
how many chunks can be sent per tick
ticking-per-tick
| Data Type | Default Value |
|---|---|
| Integer | 40 |
how many chunks can be ticked per tick
ticking-radius
| Data Type | Default Value |
|---|---|
| Integer | 3 |
radius of chunks around players to get ticked
generation-queue-size
| Data Type | Default Value |
|---|---|
| Integer | 8 |
how many chunks can be waiting for generation
generation-population-queue-size
| Data Type | Default Value |
|---|---|
| Integer | 8 |
how many chunks can be waiting for population
light-updates
| Data Type | Default Value |
|---|---|
| Boolean | on |
Light updates
clear-chunk-tick-list
| Data Type | Default Value |
|---|---|
| Boolean | on |
Allow the server to clear the list chunkTickList that tracks which chunks need logical updates after each game tick is completed.
This can help optimize server performance by preventing unnecessary computations, especially in the case of large servers or when there are many chunks to manage.
spawn-threshold
| Data Type | Default Value |
|---|---|
| Integer | 56 |
how many chunks need to be loaded before player spawns
cache-chunks
| Data Type | Default Value |
|---|---|
| Boolean | off |
save chunks to memory for faster sending
async-chunks
| Data Type | Default Value |
|---|---|
| Boolean | on |
enable asynchronous chunk sending
this can improve the performance a lot when lots of chunks are being sent to players on different versions
it's recommended to keep this enabled
Entity Settings
spawn-eggs
| Data Type | Default Value |
|---|---|
| Boolean | on |
Enable spawn eggs, allowing entity spawning via spawn eggs
mob-ai
| Data Type | Default Value |
|---|---|
| Boolean | on |
Enable creature AI
auto-spawn-task
| Data Type | Default Value |
|---|---|
| Boolean | on |
enable task for auto spawning of mobs and animals
spawning works by the server's difficulty setting
note: spawn-animals, spawn-mobs or both must be enabled if you want anything to be spawned
despawn-task
| Data Type | Default Value |
|---|---|
| Boolean | on |
enable despawning of mobs and animals without a name tag
there are special cases such as the ender dragon, withers and villagers that do not despawn
ticks-per-spawns
| Data Type | Default Value |
|---|---|
| Integer | 200 |
how often entity auto spawn task runs
in ticks, 20 ticks = 1 second
ticks-per-despawns
| Data Type | Default Value |
|---|---|
| Integer | 12000 |
how long entities live
in ticks, 20 ticks = 1 second
World Settings
nether
| Data Type | Default Value |
|---|---|
| Boolean | on |
Generate Nether world
end
| Data Type | Default Value |
|---|---|
| Boolean | on |
Generate End world
vanilla-portals
| Data Type | Default Value |
|---|---|
| Boolean | on |
Vanilla portals
portal-ticks
| Data Type | Default Value |
|---|---|
| Integer | 80 |
Ticks required for the player to trigger the portal
multi-nether-worlds
| Data Type | Default Value |
|---|---|
| List |
if you need multiple nether worlds, list worlds which should have their own nethers here, otherwise using the default nether world
anti-xray-worlds
| Data Type | Default Value |
|---|---|
| List |
list of worlds where the experimental built-in anti xray is enabled
example: [world, survival, factions]
do-not-tick-worlds
| Data Type | Default Value |
|---|---|
| List |
list of worlds where random block ticking is disabled
this disables plants growing, leaves decaying, dirt turning into grass, falling blocks etc.
you may want to add your lobby and minigame worlds here
entity-spawning-disabled-worlds
| Data Type | Default Value |
|---|---|
| List |
list of worlds where entity auto spawning is not allowed
example: [lobby, pvp, creative]
load-all-worlds
| Data Type | Default Value |
|---|---|
| Boolean | on |
Load all worlds
auto-save-disabled-worlds
| Data Type | Default Value |
|---|---|
| List |
Worlds where level auto-save is disabled
worlds
| Data Type | Default Value |
|---|---|
| Map |
Custom world configurations. Each entry defines a world with its own generator, seed and generator settings.
Example:
worlds:
my_world:
generator: normal
seed: 12345
generator-settings: ""
my_flat_world:
generator: flat
seed: 0
generator-settings: ""
Each world entry supports:
generator- World generator type (default:normal)seed- World seed (default:0)generator-settings- Generator specific settings (default: empty)
Player Settings
save-player-data
| Data Type | Default Value |
|---|---|
| Boolean | on |
if enabled, saving player data by their uuid in the format NukkitX uses and automatically converting player data in the old format to the new format
do not disable if new player data exists
save-player-data-by-uuid
| Data Type | Default Value |
|---|---|
| Boolean | on |
if enabled, saving player data by their uuid in the format NukkitX uses and automatically converting player data in the old format to the new format
do not disable if new player data exists
persona-skins
| Data Type | Default Value |
|---|---|
| Boolean | on |
persona skins allowed
default steve skin will show if disabled
enabling do-not-limit-skin-geometry may be required for some persona skins to be usable
skin-change-cooldown
| Data Type | Default Value |
|---|---|
| Integer | 15 |
Skin change cooldown in seconds
do-not-limit-skin-geometry
| Data Type | Default Value |
|---|---|
| Boolean | on |
disables maximum skin geometry size checks
may be required for some persona skins to be usable
do-not-limit-interactions
| Data Type | Default Value |
|---|---|
| Boolean | off |
disables a hack which is used to limit right click interaction spamming by client
space-name-mode
| Data Type | Default Value |
|---|---|
| String | ignore |
Handling player names with spaces
"disabled" - Players with names containing spaces are prohibited from entering the server
"ignore" - Ignore names with spaces (default)
"replacing" - Replace spaces in player names with "_"
xp-bottles-on-creative
| Data Type | Default Value |
|---|---|
| Boolean | on |
allow players to throw experience bottles on creative
stop-in-game
| Data Type | Default Value |
|---|---|
| Boolean | off |
allow op to use /stop command in game
op-in-game
| Data Type | Default Value |
|---|---|
| Boolean | on |
allow op to use /op command to op other players in game
Debug Settings
debug-level
| Data Type | Default Value |
|---|---|
| Integer | 1 |
set a higher value (1-3) if you want more debug logging
ansi-title
| Data Type | Default Value |
|---|---|
| Boolean | off |
Enable to display server occupancy information in Windows CMD title
deprecated-verbose
| Data Type | Default Value |
|---|---|
| Boolean | on |
Verbose API deprecations
call-data-pk-send-event
| Data Type | Default Value |
|---|---|
| Boolean | on |
you can disable DataPacketSendEvent for better performance if none of your plugins uses it
call-batch-pk-send-event
| Data Type | Default Value |
|---|---|
| Boolean | on |
you can disable BatchPacketsEvent for better performance if none of your plugins uses it
call-entity-motion-event
| Data Type | Default Value |
|---|---|
| Boolean | on |
If no plugin uses it, you can disable EntityMotionEvent for better performance
block-listener
| Data Type | Default Value |
|---|---|
| Boolean | on |
enable checks used for snow and iron golems, monster egg stone etc.
automatic-bug-report
| Data Type | Default Value |
|---|---|
| Boolean | on |
enable automatic bug reports
update-notifications
| Data Type | Default Value |
|---|---|
| Boolean | on |
notify operators about new Nukkit MOT releases on join
bstats-metrics
| Data Type | Default Value |
|---|---|
| Boolean | on |
enable bStats metrics
https://bstats.org/plugin/server-implementation/Nukkit/
data collected anonymously: server software (Nukkit MOT), player count, players game versions, xbox auth required, Java version, operating system, cpu arch & core count, host country
hastebin-token
| Data Type | Default Value |
|---|---|
| String |
Hastebin token for generating debug links
See: https://www.toptal.com/developers/hastebin/documentation
Game Feature Settings
achievements
| Data Type | Default Value |
|---|---|
| Boolean | on |
enable player achievements
announce-player-achievements
| Data Type | Default Value |
|---|---|
| Boolean | on |
broadcast achievement earned messages to all players
bed-spawnpoints
| Data Type | Default Value |
|---|---|
| Boolean | on |
allow players to set spawn point using beds and respawn anchors
explosion-break-blocks
| Data Type | Default Value |
|---|---|
| Boolean | on |
enable explosion damage to blocks
affects all explosions such as tnt, creepers and end crystals
drop-spawners
| Data Type | Default Value |
|---|---|
| Boolean | on |
Drop spawners upon destruction
anvils-enabled
| Data Type | Default Value |
|---|---|
| Boolean | on |
enable anvils
vanilla-bossbars
| Data Type | Default Value |
|---|---|
| Boolean | off |
show boss bar for wither and ender dragon (experimental)
use-client-spectator
| Data Type | Default Value |
|---|---|
| Boolean | on |
Use client spectator
enable-experiment-mode
| Data Type | Default Value |
|---|---|
| Boolean | on |
Enable experiment mode
multiversion-min-protocol
| Data Type | Default Value |
|---|---|
| Integer | 0 |
Minimum protocol for multiversion
multiversion-max-protocol
| Data Type | Default Value |
|---|---|
| Integer | -1 |
Maximum protocol for multiversion
enable-raw-ores
| Data Type | Default Value |
|---|---|
| Boolean | on |
Enable raw ores; when enabled, coarse copper, coarse iron, and raw gold drop from higher-version players
As of 1.17.0
enable-new-paintings
| Data Type | Default Value |
|---|---|
| Boolean | on |
Enable the new paintings added in version 1.21
enable-new-chicken-eggs-laying
| Data Type | Default Value |
|---|---|
| Boolean | on |
Enable new chicken eggs laying (Blue Egg & Brown Egg)
forced-safety-enchant
| Data Type | Default Value |
|---|---|
| Boolean | on |
Enable forced safety enchantments (up max lvl)
enable-vibrant-visuals
| Data Type | Default Value |
|---|---|
| Boolean | on |
Enable vibrant visuals effects support
enable-raytracing
| Data Type | Default Value |
|---|---|
| Boolean | on |
Enable raytracing support
temp-ip-ban-failed-xbox-auth
| Data Type | Default Value |
|---|---|
| Boolean | off |
Temporary ban failed Xbox authentication
strong-ip-bans
| Data Type | Default Value |
|---|---|
| Boolean | off |
Strong IP bans
check-op-movement
| Data Type | Default Value |
|---|---|
| Boolean | off |
enable movement checking for operators
NetEase Settings
client-support
| Data Type | Default Value |
|---|---|
| Boolean | off |
Enable NetEase client support will allow NetEase players to enter the server
only-allow-netease-client
| Data Type | Default Value |
|---|---|
| Boolean | off |
Only NetEase players are allowed to enter the server, and after opening, Microsoft version players will be prohibited from entering the server, and only NetEase players will be allowed to join the server