Skip to main content

server.properties

Modify the running configuration of the server to customize some basic functionalities.

These are the standard Minecraft server settings defined in server.properties. For advanced Nukkit-MOT settings, see nukkit-mot.yml.

motd​

Data TypeDefault Value
StringMinecraft Server

server name / text which shows on the server list

note

can't be empty

sub-motd​

Data TypeDefault Value
StringPowered by Nukkit-MOT

second line for motd

note

shows only for players in local network when viewing the server on the friends list in game

can't be empty since 1.16.210

server-port​

Data TypeDefault Value
Integer19132

server's port

note

there can't be two servers running in the same port

you will need to port forward in order to have your server publicly accessible

bedrock edition uses UDP

when NetherNet is enabled, the same port also serves the WebRTC signaling over TCP, so open the port for TCP as well

server-ip​

Data TypeDefault Value
String0.0.0.0

server's IP address

note

there can't be two servers running in the same port

you will need to port forward in order to have your server publicly accessible

bedrock edition uses UDP

this address binds both the RakNet UDP listener and the NetherNet TCP signaling

server-udp-ports​

Data TypeDefault Value
Integer / String19132

UDP port for NetherNet (WebRTC) media, using the same syntax as Bedrock Dedicated Server:

ValueDescription
19132Media shares server-port's UDP side with RakNet, relayed in-process from the RakNet socket (default — nothing extra to open or forward)
0Media ports are system-assigned per connection
NPin a standalone media port, e.g. 19134 (one ICE mux port serves all peers)
A-BPin a window of media ports
[ip:]external[-external]:internal[-internal]Also publish an external port mapping, e.g. behind NAT. Both ranges must have the same length

Entries may carry an IP prefix ([2001:db8::1]:... for IPv6) and multiple comma-separated entries accumulate advertised IPs while the window and offset must agree.

Sharing works when a single port is pinned exactly on server-port or the IPv6 listener port, or mapped onto one of them as a single-port mapping — 19132:50000 publishes the media on 19132 while relaying from the internal port 50000. The media then arrives on the RakNet socket and is relayed in-process to a loopback port.

warning

Port windows must not cover server-port (its UDP side belongs to RakNet) or the IPv6 listener port — only a single pinned port or a single-port mapping may share them. Invalid values abort startup instead of falling back to automatic ports.

Media UDP unreachable — players hang on join​

When NetherNet players hang on "Connecting" or drop right after joining, the media UDP path is blocked. The server reports this on its own — the log warns:

NetherNet media may be unreachable: 6 ICE attempts, 0 connected in the last 5 minutes.
Check the firewall/port forwarding for the media UDP window udp/... (server-udp-ports)

and /status shows joins accepted while ICE connected stays 0.

Fix it like this:

  1. Allow the media UDP port inbound — host firewall, cloud security group and router port forwarding alike. With the default the media shares server-port's UDP side (19132), which RakNet already needs open — nothing extra to allow; a standalone pinned port (e.g. server-udp-ports=19134) must be opened/forwarded explicitly, and only with server-udp-ports=0 are the ports system-assigned and unpredictable — pin a window first (e.g. server-udp-ports=50000-50010) and forward that
  2. Public ports differ from the internal ones (NAT mapping)? Publish the external side instead: server-udp-ports=60000-60010:50000-50010
  3. Still failing for players behind symmetric NAT? Relay the media through a TURN server configured in network-settings.nethernet.ice-servers:
network-settings:
nethernet:
ice-servers:
- stun:stun.l.google.com:19302
- 'turn:user:pass@turn.example.com:3478?transport=udp'
Diagnosing by the /status numbers
  • Joins accepted rising while ICE connected stays 0 — media UDP is blocked; apply the steps above
  • ICE connected rising but few handshakes completed — the DTLS handshake fails, usually a middlebox interfering with UDP
  • Many drops after connect — NAT timeouts or connection jitter

server-ipv6-port​

Data TypeDefault Value
Integer-1

port for the optional IPv6 listener

note

the IPv6 listener is disabled when this is 0 or lower (default -1)

to enable it, set a valid port that differs from server-port

server-ipv6​

Data TypeDefault Value
String::

IPv6 address the optional IPv6 listener binds to

must be a valid IPv6 address; leave blank to disable the IPv6 listener

view-distance​

Data TypeDefault Value
Integer8

maximum view distance in chunks

bigger value = more chunks loaded = more ram & cpu usage

max-players​

Data TypeDefault Value
Integer50

Maximum number of players allowed on the server

language​

Data TypeDefault Value
Stringeng

default language that Nukkit uses

force-language​

Data TypeDefault Value
Booleanoff

force server side translations to be used

enable only if you have a plugin to implement those

shutdown-message​

Data TypeDefault Value
String§cServer closed

message that shows for players when you stop the server

use § for colors and §n for new line

gamemode​

Data TypeDefault Value
Integer0

server's default gamemode

0 = survival, 1 = creative, 2 = adventure, 3 = spectator

force-gamemode​

Data TypeDefault Value
Booleanon

set player gamemode to default gamemode on every join

difficulty​

Data TypeDefault Value
Integer2

server's default difficulty (0-3)

hardcore​

Data TypeDefault Value
Booleanoff

players will be banned when they die

pvp​

Data TypeDefault Value
Booleanon

Whether to enable player versus player combat

level-name​

Data TypeDefault Value
Stringworld

Name of the default world

level-seed​

Data TypeDefault Value
String

Seed for the default level

level-type​

Data TypeDefault Value
Stringdefault

generator used to create the default level if it doesn't exist

supported by default: default, normal, flat, nether, the_end or void

generator-settings​

Data TypeDefault Value
String

Special world generator settings for the default level

spawn-protection​

Data TypeDefault Value
Integer10

size of the spawn area in blocks where non op players can't build or break blocks

white-list​

Data TypeDefault Value
Booleanoff

allow only players on the whitelist to join the server

use /whitelist command or modify white-list.txt to add players to whitelist

whitelist-reason​

Data TypeDefault Value
String§cServer is white-listed

Reason for enabling the whitelist, displayed to players when they are denied access

xbox-auth​

Data TypeDefault Value
Booleanon

require Xbox account to join

note

does not bypass client side requirements

if you disable this (not recommended), install a login plugin to protect player account security

keep-existing-session-on-duplicate-login​

Data TypeDefault Value
Booleanoff

keep the session that is already playing when a duplicate login arrives

by default a new login with the same name or identity kicks the player that is already online; enable this to refuse the newcomer instead, so a player who is carrying loot cannot be evicted by someone reusing the nickname

a stale session still times out by itself

encryption​

Data TypeDefault Value
Booleanon

enable network encryption for RakNet sessions

it's recommended to enable this if you don't use a proxy software

note

NetherNet sessions are always DTLS-secured, regardless of this option.

force-resources​

Data TypeDefault Value
Booleanoff

force players to download server's resource pack if they want to join

force-resources-allow-client-packs​

Data TypeDefault Value
Booleanoff

don't disable client's own packs when force-resources is enabled

spawn-animals​

Data TypeDefault Value
Booleanon

enable animal spawning

spawn-mobs​

Data TypeDefault Value
Booleanon

enable monster spawning

allow-flight​

Data TypeDefault Value
Booleanoff

enable / disable allowing players to fly

note

if players are often kicked for flying, try setting this to on

auto-save​

Data TypeDefault Value
Booleanon

automatically save the world and player data

note

if disabled, changes to worlds are not saved automatically even on unload, use plugin to save manually if needed

enable-rcon​

Data TypeDefault Value
Booleanoff

enable remote console access

note

rcon isn't very secure way to remote control the server

rcon uses the same port (but TCP) as the server

See: https://developer.valvesoftware.com/wiki/Source_RCON_Protocol

rcon.password​

Data TypeDefault Value
StringRandom 10 characters

Password for RCON connections

rcon.port​

Data TypeDefault Value
Integer25575

Port for RCON connections

enable-query​

Data TypeDefault Value
Booleanon

enable extended query

server-authoritative-movement​

Data TypeDefault Value
Stringserver-auth

Server authoritative movement

Optional: client-auth / server-auth-with-rewind / server-auth

server-authoritative-block-breaking​

Data TypeDefault Value
Booleanon

Server authoritative block breaking

server-authoritative-inventory​

Data TypeDefault Value
Booleanon

Server authoritative inventory transactions (ItemStackRequest)

only takes effect for clients on protocol 1.16.100 and above

note

this is the inventory equivalent of server authoritative movement — the server validates item moves instead of trusting the client