Dynamic Daemon Node for instancing of Minecraft Servers.

Overview

DashDynamicDaemon

DashDynamicDaemon: A Sharded Minecraft Server hosting system.


Purpose

This system was originally created to host automatically scalable Minigame and Lobby servers for the Enlighten Minecraft Network. It relies on certain proprietary Network Control systems and a plugin that connects to the daemon's socket, so if you want to actually use this you will need to recreate those yourself.

I'm putting a modified version of this on GitHub as an example of my recent work, but you are completely free to use this yourself as well.

How it Works

Pretend you have 4 dedicated servers.

Server 1 is running Network Control, and the other 3 are running Dynamic Daemon nodes.

Server 1 is responsible for telling the nodes what to do, and when, and the nodes are responsible for creating and keeping track of the game servers themselves.

Running nodes and their game servers are all stored in MongoDB, which is queried by Network Control for matchmaking and load balancing.

How Server Types are stored

Network Control has a directory containing server binaries, as well as Game Types containing plugins and pre-set server configurations.

Every minute Network Control generates binaries using that data, and stores them in-memory, to be easily distributed to the daemon nodes (this program).

The daemon stores the archives in a cache folder. Every minute the daemon will make a request to Network Control asking for hashes of its archives. If it contains mismatched hashes, we download/update/delete our cached archives as necessary.

Join Ticketing

DashDynamicDaemon contains a W.I.P. Join Ticketing system. The structure is as follows:

Network Control finds the server it wants to send someone to, and asks the Node the server is running on for a join ticket. The Join Ticket Request contains the player ID, and any other data that may go along with it, like a world name. This data is then passed on to the game server itself, which validates the request's data (like a world name), and checks if the player should be able to join (so that we don't try to send a player to a full server, or an already-started game).

Logging

For Logging, we're using Log4j2, with almost the same setup that Minecraft servers use. A logs folder is created, with the latest log file and archives of past logs.

Closing

Feel free to have a look around the code, and pull requests are always welcome.

Common Code Acronyms:
NCP - Network Control Program

You might also like...

Lightweight reflection based tab library supporting 1.7 - 1.17 servers and clients.

Lightweight reflection based tab library supporting 1.7 - 1.17 servers and clients.

Aug 23, 2022

A 1.12.2 forge injection based hacked client for anarchy servers

nebula another failed abortion of inferno and the aftermath of gavin at coding also is an anarchy utility client, i think thats important to point out

Dec 24, 2022

Lynx client is a utility mod for 1.12.2 anarchy servers.

Lynx-Client Lynx client is a utility mod for 1.12.2 anarchy servers. Usage Download and install forge 1.12.2 from the official forge website Put the j

Dec 21, 2022

A mixin based ghost client for Minecraft 1.8.9 built on Minecraft Forge.

A mixin based ghost client for Minecraft 1.8.9 built on Minecraft Forge.

A mixin based ghost client for Minecraft 1.8.9 built on Minecraft Forge. Originally designed as a MCP Client (called Tephra), it is now being ported t

Jan 1, 2023

An efficient map viewer for Minecraft seed in a nice GUI with utilities without ever needing to install Minecraft.

An efficient map viewer for  Minecraft seed in a nice GUI with utilities without ever needing to install Minecraft.

To download it head to the Releases section. To run it: either double click it on it if you have the Java Runtime (JRE) or use the command line (shift

Dec 24, 2022

A free mixin-based injection hacked-client for Minecraft using Minecraft Forge.

Custom LiquidBounce 1.8.9 build that aims to improve original visuals and bypasses, along with built-in ViaVersion to help you change from 1.8 to 1.17.1 without creating any other version branch.

Jan 2, 2023

Small mod for Minecraft Forge 1.16.5 that sends messages of in-game events to a channel in your Discord server. This mod also enables cross-chatting between Minecraft and Discord.

DiscordSync Small mod for Minecraft Forge 1.16.5 that sends messages of in-game events to a channel in your Discord server. This mod also enables cros

Dec 20, 2022

Minecraft Utility Mod for the latest release of Minecraft developed by Cypphi.

Minecraft Utility Mod for the latest release of Minecraft developed by Cypphi.

Minecraft Utility Mod for the latest release of Minecraft developed by Cypphi.

Jan 1, 2023

Play snake, in minecraft. This is a crude, horibly made snake in minecraft game. Requires PaperMC 1.18.2.

MinecraftSnake Play snake, in minecraft. This is a crude, horibly made snake in minecraft game. Requires PaperMC 1.18.2. Installation: Create a paperm

Sep 30, 2022
Owner
BattleDash
Programming programmer who programs programs. I make a block game do things.
BattleDash
Staff-Mode plugin for Minecraft servers.

DONUTSTAFF A Simple Staff Mode plugin for you Minecraft Server. This plugin goals to lightweight and fast. At the moment, is on a BETA phase, so pleas

null 10 Jan 28, 2022
A client-side Fabric mod for Minecraft Beta 1.7.3 that allows you to connect to servers running almost any patch from Alpha v1.1.2_01 to Beta 1.7.3.

multiversion-fabric A client-side Fabric mod for Minecraft Beta 1.7.3 that allows you to connect to servers running almost any patch from Alpha v1.1.2

0n1 2 Mar 13, 2022
Minecraft mod to block NameMC indexing on servers.

Fuck NameMC A mod to block server status ping from NameMC. ?? What's this mod? Let's say it outright, NameMC doesn't have any decency. It indexes ever

LambdAurora 72 Dec 28, 2022
Squaremap is a minimalistic and lightweight world map viewer for Minecraft servers, using the vanilla map rendering style

squaremap squaremap (formerly known as Pl3xMap) is a minimalistic and lightweight live world map viewer for Minecraft servers. What is squaremap If, l

Jason 204 Jan 3, 2023
A market plugin to prevent mounting inflation in minecraft servers

A market plugin to prevent mounting inflation in minecraft servers. The optimized power index function and the inverse function are used to converge the selling price. It could solve the problem of server economic imbalance caused by the high production capacity of certain items in industrial type servers. In Summary, The richer the player is, the less profit the player receive.

null 14 Dec 25, 2022
Brings marriage to Minecraft servers using commands.

MarriageLab MarriageLab is a plugin that brings marriage to Minecraft servers using commands. It has been tested on Spigot and Paper. Requeriments Thi

Lably Team [Disintegrated] 5 Oct 8, 2021
Plugin aimed at unifying inventory menus for Java Edition with Bedrock Edition forms, on servers running Geyser.

CrossplatForms A plugin aimed at providing fast, easy, and dynamic creation of Bedrock Edition forms through configurations. Also allows for creation

ProjectG 43 Jan 4, 2023
Forge mod for anarchy servers.

Solaros Forge mod for anarchy servers. (1.12.2) Q: What is this? A: This a forge mod I worked on a while back, I was interested in anarchy mod develop

null 8 Dec 2, 2022
An addon to Meteor Client that adds various modules designed to lag and crash servers

Meteor Crash Addon An addon to Meteor Client that adds various modules designed to lag and crash servers. Usage Either build it yourself, or download

Anti Cope 44 Dec 27, 2022
Polydex - a mod allowing you to see player-friendly information about blocks and items on servers

Polydex is a mod allowing you to see player-friendly information about blocks and items on servers. It designed for survival-like, vanilla client compatible servers using Polymer mods or PolyMC, through it can be used in modded or vanilla-content setting!

null 5 Dec 20, 2022