Skip to content

In-file

File configurations are the primary way to configure Void. However, many options can be overridden at runtime using the API in plugins.

settings.toml
# Defines the network interface to bind on
Address = "0.0.0.0"
# Defines the port
Port = 25565
# Packet size threshold before compression
CompressionThreshold = 256
# General per player timeout for many operations (in milliseconds)
KickTimeout = 10000
# Allow players to connect without Mojang authentication
Offline = false
# Logging level (valid values are Trace, Debug, Information, Warning, Error, Critical)
LogLevel = "Information"
# Predefined list of servers.
# Players will be connected to the first one, if not specified otherwise from plugins or not selected by overridden hostname.
[[Servers]]
Name = "lobby"
Host = "127.0.0.1"
Port = 25566
Override = "lobby.example.org"
[[Servers]]
Name = "minigames"
Host = "127.0.0.1"
Port = 25567
[[Servers]]
Name = "limbo"
Host = "127.0.0.1"
Port = 25568

The Override property allows you to redirect players to specific servers based on the hostname they use to connect to the proxy. This enables you to route players to different backend servers depending on the domain or subdomain they use.

When a player connects using a hostname that matches a server’s Override value, they will be automatically redirected to that server instead of the default first server in the list.

Example with Overrides
# Default server for players connecting via any non-matching hostname
[[Servers]]
Name = "lobby"
Host = "127.0.0.1"
Port = 25566
# Players connecting via minigames.example.org will be sent to the minigames server
[[Servers]]
Name = "minigames"
Host = "127.0.0.1"
Port = 25567
Override = "minigames.example.org"
# Players connecting via limbo.example.org will be sent to the limbo server
[[Servers]]
Name = "limbo"
Host = "127.0.0.1"
Port = 25568
Override = "limbo.example.org"

Watchdog is a built-in HTTP server that allows you to check status or control the proxy.

configs/Watchdog/Settings.toml
# Enables the watchdog
Enabled = false
# Defines the network interface to bind on
Address = "*"
# Defines the port
Port = 80

Forwarding helps to forward player data (IP, UUID, Skin, etc.) to the backend server.

Read more in Modern (Velocity) forwarding.

configs/Velocity/Settings.toml
# Enables Velocity forwarding
Enabled = true
# The secret key (should be the same as on the backend server)
Secret = "YourSecretKeyHere"

Plugins are compiled with the .dll extension in any .NET compatible language. See the Plugin Development Kit section for more details.

  • Directory plugins is the default location to install plugins.
  • Environment variable VOID_PLUGINS might be used to add URLs or local paths to run plugins, separated by comma or semicolon.
  • Program argument --plugin (alias -p) might be used to add URL or local path to a plugin.
Program Argument Example
$ ./void-linux-x64 --plugin "/home/YourPlugin1.dll" --plugin "https://example.org/download/YourPlugin2.dll"
Environment Variable Example
$ VOID_PLUGINS="https://example.org/download/YourPlugin1.dll;/home/YourPlugin2.dll" ./void-linux-x64

Plugin Configurations (configs/<Plugin>/*.toml)

Section titled “Plugin Configurations (configs/<Plugin>/*.toml)”

Each plugin may define one or a subset of keyed configuration files in its own directory. Plugins are not required to save or load configurations manually.

All changes on the disk are automatically loaded into an existing instance in memory. Vice versa, all changes in the memory are automatically saved to the disk. This automatic saving can be disabled via program argument.

Currently, only TOML format is supported.