Table of Contents

Class ServerConfig

Namespace
McServerLauncher.Models
Assembly
McServerLauncher.dll

Persisted data of a Minecraft server registered in the application. Stored in %APPDATA%\McServerLauncher\servers.json.

public class ServerConfig
Inheritance
ServerConfig
Inherited Members

Properties

BackupRetention

How many backups to keep; older ones are deleted after each new one.

public int BackupRetention { get; set; }

Property Value

int

BackupsEnabled

Whether a zip backup of the world is made before starting and after an explicit stop.

public bool BackupsEnabled { get; set; }

Property Value

bool

BedrockModContentEnabled

Whether Hydraulic is installed, so Bedrock players see what the mods add.

public bool BedrockModContentEnabled { get; set; }

Property Value

bool

Remarks

Separate from CrossplayEnabled because it answers a different question. Geyser gets Bedrock players in; without this they arrive to a world whose modded blocks and items they cannot see. Fabric only — see HydraulicService.

BedrockPort

The local UDP port Geyser listens on. 0 until crossplay is set up.

public int BedrockPort { get; set; }

Property Value

int

Remarks

UDP, and a different namespace from the Java port: this one can be 19132 while some other program holds TCP 19132, and vice versa.

CrossplayEnabled

Whether Bedrock players (phone, console, Windows 10/11) can join this server too.

public bool CrossplayEnabled { get; set; }

Property Value

bool

Remarks

Remembered rather than set up once and forgotten, because it is not a one-off action: it needs a second tunnel to keep existing, and Geyser has to keep advertising that tunnel's public port. Both can drift, and only something that knows the server is meant to be crossplay can put them back.

ExtraJvmArgs

Extra JVM arguments (optional, e.g. GC flags).

public string ExtraJvmArgs { get; set; }

Property Value

string

FolderPath

Server root folder (where the .jar and server.properties live).

public string FolderPath { get; set; }

Property Value

string

ForgeArgs

Modern Forge (1.17+) and every NeoForge build have no runnable jar; they are launched via an args file under libraries/<loader-root>/<id>/{win,unix}_args.txt. When this holds that id — "1.20.1-47.2.0" for Forge, "21.1.248" for NeoForge — the launcher uses the args file instead of "-jar". Empty means the classic "-jar JarFile" launch (Vanilla, Fabric, old Forge ≤1.16.5).

The name stays ForgeArgs even though it now covers both: it is the key in every existing servers.json, and renaming it would leave installed Forge servers unable to start.

public string ForgeArgs { get; set; }

Property Value

string

GameVersion

Minecraft game version (e.g. 1.20.1).

public string GameVersion { get; set; }

Property Value

string

Id

Stable identifier (so we don't depend on the name, which may change).

public string Id { get; set; }

Property Value

string

IdleShutdownMinutes

Minutes with nobody connected before the server stops itself. 0 means never.

public int IdleShutdownMinutes { get; set; }

Property Value

int

Remarks

Zero is the default so no existing server changes behaviour on update: a server that used to stay up forever keeps doing exactly that until its owner asks for something else.

JarFile

Server .jar file name (relative to the folder). Defaults to server.jar.

public string JarFile { get; set; }

Property Value

string

JarFullPath

Full path to the .jar combining folder + jar name.

[JsonIgnore]
public string JarFullPath { get; }

Property Value

string

JavaPath

Path to the Java executable. "java" uses the one on the PATH.

public string JavaPath { get; set; }

Property Value

string

MaxRamGb

Maximum memory in GB (-Xmx). Same default the create dialog suggests.

public int MaxRamGb { get; set; }

Property Value

int

MinRamGb

Minimum memory in GB (-Xms). Same default the create dialog suggests.

public int MinRamGb { get; set; }

Property Value

int

ModLoaderVersion

Version of the mod loader (e.g. 0.16.2 for Fabric).

public string ModLoaderVersion { get; set; }

Property Value

string

MultiVersionEnabled

Whether ViaVersion and ViaBackwards are installed, for joining from other versions.

public bool MultiVersionEnabled { get; set; }

Property Value

bool

Remarks

Separate from CrossplayEnabled on purpose. Geyser does not need these to work, and a Java-only server benefits from them just as much: they are about which Minecraft versions may connect, not which edition.

Name

Display name of the server (e.g. "Survival", "Modded").

public string Name { get; set; }

Property Value

string

Notifications

Per-server notification override, used only when UseCustomNotifications.

public NotificationSettings? Notifications { get; set; }

Property Value

NotificationSettings

PlayitEnabled

Whether the Playit.gg integration is enabled for this server.

public bool PlayitEnabled { get; set; }

Property Value

bool

PropertiesPath

Path to server.properties inside the server folder.

[JsonIgnore]
public string PropertiesPath { get; }

Property Value

string

TunnelAddress

Public tunnel address for this server. It is detected automatically when running playit, but it can also be typed/pasted by hand and is kept saved.

public string? TunnelAddress { get; set; }

Property Value

string

Type

Type of the server (Vanilla, Fabric, Forge, Paper, NeoForge).

public ServerType Type { get; set; }

Property Value

ServerType

UseCustomNotifications

When true, this server uses its own Notifications instead of the global notification settings. When false (default), the global settings apply.

public bool UseCustomNotifications { get; set; }

Property Value

bool

WakeOnDemand

While stopped, answer on the server's port so that someone trying to join starts it.

public bool WakeOnDemand { get; set; }

Property Value

bool

Remarks

Off by default: it opens a listening socket, and nobody should end up with one without having asked. Pairs with IdleShutdownMinutes — sleep when empty, wake on demand — but each half works on its own.