selery ~async

Server for Minecraft (Bedrock Engine) and Minecraft: Java Edition

To use this package, run the following command in your project's root directory:

Manual usage
Put the following dependency into your project's dependences section:


Selery is a server for ~~Minecraft (Bedrock Engine) 1.2~~ and Minecraft: Java Edition 1.10-1.12 written in D.



From a pre-built package

GitHub release

Pre-built packages are compiled with the latest version of LDC in release mode and can be found in the releases page, just unzip the onefor your operative system and run the preferred executable.

The following bash script can be used to download and run the installer.

curl -Ls | bash

From source

To build Selery from source you'll need a D compiler (DMD for faster compilation, suitable for testing, or LDC for faster and better code, better for production) and DUB, D's package manager, which is usually included in both DMD and LDC's packages.

Packages and installers are available for several operating systems and architectures at's download page.

  • Clone the repository using git clone git:// or download the zipped repository from the latest release.
  • If you want to use the latest release run git checkout $(git describe --tags --abbrev=0) in the repository's location.
  • Build by running build.bat on Windows or on Linux/OS X.
  • Run the generated executable file.

All in one:

git clone git://
cd selery

The build scripts supports some useful options that can be viewed by launching it with --help.

:warning: Due to issue 17508, Windows x86 must be linked using Microsoft's compiler (-a x86_mscoff) instead of DMD's. This action is performed automatically by the build script.

Build Status

OSArchDMD (debug)LDC (debug)LDC (release)
OS Xx86-64


Selery is based on a hub-node model where a hub asynchronously handles the network part of the software and the node the gameplay one. The hub and the node are internally connected throught a protocol called hncom, the hub-node communication protocol.


The hub is the interface with the clients, it handles new connections and when they are successfull it forwards them to one of the connected nodes.

A hub with no nodes connected will accept new connections but will kick the players with an End of Stream message.


The node manages the gameplay part of the server, like the worlds and its entities. A node cannot work without a hub and must always be connected to one; the life of a node starts when a connection with a hub it's established and ends when the connection is interruped.

Nodes are identified by a unique id (given by the hub when the connection is established) and a name, choosen by the node, that must be unique in the hub (if not, the hub will reject the connection). Nodes can also be divided in main nodes and normal nodes. Main nodes will receive players before the other nodes if not specified otherwise by a hub's plugin.

Setting up

Selery's configuration file is created when the server is started in the same path as the executable. It is named selery.toml for the default configuration, selery.hub.toml for the hub and selery.node.toml for the node.

Every option can also be overriden by a command-line option without altering the configuration file.

selery --display-name="My Minecraft Server"
selery --java-enabled=false
selery --language=it
selery --bedrock-accepted-protocols=160
selery --java-addresses=,

More useful command-line options:

  • --about or -a to print the software's build informations in JSON format. The --min option can be used to print a minified JSON instead of a pretty-printed one.
  • --init or -i to initialize the configuration file.
  • --update-config or -uc to rewrite the configuration file, maintaining the current configuration. It should be used after updating the software to a newer version that changes the configuration format.
  • --reset to reset the whole configuration file to its default values.
  • sel-project
terminal, soupply, resusage, memutils, sel-util:format, sel-server, roman, string-transform-d, sel-nbt, imageformats, sel-data, sel-util:terminal, xpacket, my-ip, xbuffer, lighttp, sel-utils
0.3.0 2018-Sep-21
0.2.0 2018-Jun-04
0.1.1 2018-Feb-09
0.1.0 2018-Feb-08
~master 2019-Jan-01
Show all 6 versions
Download Stats:
  • 0 downloads today

  • 0 downloads this week

  • 0 downloads this month

  • 11 downloads total

Short URL: