Hello folks! Back again with a huge update to my prior Bedrock-as-a-service wrapper. Just extract and run the service, wait for the service to grab the latest server, deploy and start. Next, Run the client and modify the existing server, add new ones, insert worlds and addons, automated backups and more! Official readme can be found on the github page soon.
*** If you downloaded a version prior to 2.5.5, Please update! Many important fixes! ***
For support, questions, or suggestions, please post below, or join my discord server: Crowbar's Server
----- README -----
# Minecraft Bedrock management service
## An application suite for running and controlling multiple bedrock dedicated servers
## Project information
BedrockService started as a fork from Ravetroll's BedrockService, using TopShelf for multiple servers and a hidden server instance. This worked okay, but still required manual updates, lacked a way to monitor server instances, and using a WPF Console to merely monitor and send server commands was not enough for my wishes. It still would require you to interact with the server files directly, and if your server is remote, this can become a pain. My main goals for this project are as follows:
* A multiple server service run in the background. [Implemented, needs testing]
* Add/remove/modify/monitor servers from the GUI remotely. [Implemented]
* Both Service and individual server persistence over failure (AKA WatchDog). [implemented; needs further testing]
* Zero interaction with actual Minecraft server files and configs; all handled with service configuration. [Mostly implemented]
* Automatic server updates and deployment, all while leaving the configuration and added packs/worlds intact. [implemented]
* Automatic backup system, with the ability to manage backups and rollback via GUI. [implemented; needs further testing]
* Complete control of players, track known players, manage player permission and whitelist statuses and more. [Partially implemented, needs further testing]
* Pack manager to add/remove packs and worlds from servers via GUI. [Partially implemented, needs further testing]
* Implement a way to modify level information. Not sure if I want to use an existing lib yet, or just add a couple static methods to change a few values (Ex. enabling experimental gameplay).
* Block more bad behavior in the GUI.
* Plans to add more information to the player manager. Implement sending commands to the running server to coincide with updated player settings (Ex. /op, /whitelist), currently servers require a restart before updated players can be recognized.
* Pack manager still needs a way to determine installed MCWorld packs, most likely adding a service-specific configuration file to come.
* Implement a way to ignore updates to enable old version persistence, as well as possibly allowing initial deployment of various versions.
* Client needs debug information written to file.
* Pull server props from new updates and apply. Currently using hard-coded copy and shouldn't be an issue as long as entries are not added to config in the future.
* Testing of all systems. There is still plenty of bugs to work out still, GUI hangs and plenty of bad behavior is possible. Please feel free to open an issue on GitHub with info of the issue from the logs.
## Quick-start guide
Download the latest release and extract to any directory. Run BedrockService.Service.exe, this will automatically download the latest copy of BDS (Bedrock Dedicated Server) from minecraft.net, extract to the default directory of C:\MCBedrockService, deploy stock settings and start the server. Once the new server is running, you can either close it and modify the configs with a text editor (see below for more details) or modify/add servers from the GUI Client.
## Service configuration files and directory layout
Default configurations are not shipped with the application. Please follow the quick-start guide to generate new config files. Once Generated, you will find that the paths Server and Service were created.
* Server folder contains:
* bedrock_ver.ini - keeps track of last downloaded version.
* stock_packs.json - created after first use of pack manager, lists factory R/B packs on vanilla server.
* Configs folder:
* KnownPlayers folder:
* This folder contains files with a name format of "ServerName.playerdb". See below for example file.
* RegisteredPlayers folder:
* This folder contains files with a name format of "ServerName.preg". See below for example file and usage.
* Backups folder for configuration files.
* Individual server configuration files.
* MCSFiles folder:
* stock_filelist.ini - contains a list of all files in vanilla build. Part of mod/world persist.
* Update_x.xx.xx.xx.zip - Archive files downloaded from minecraft.net, x.xx.xx.xx is version of server.
* Logs folder - Contains logs of only server outputs.
* Service folder contains:
* Globals.conf - Global service configuration file.
* Logs folder - Logs of service-specific outputs.
* Batch Folder - Contains a few batch files useful for installing/stating/stopping and removing the service from Windows Services. To use these please copy/move to BedrockService.Service.exe directory!
* BedrockService.Service.exe - core service executable.
All configuration files use a key=value layout. (Ex. ServersPath=C:\MCBedrockService). The parser will ignore any lines beginning with a "#" sign and empty lines for comments.
ServersPath=C:\MCBedrockService // This is the path you wish to house your actual dedicated server files. Servers will deploy in a folder named after the chosen server’s name.
AcceptedMojangLic=false // Currently disabled! Will replace with disclaimer here in readme and remove this soon.
ClientPort=19134 // This is the port that will be used to listen for clients.
BackupEnabled=false // Enable automatic backup system. Can still do manual one-click backups from GUI when disabled.
BackupPath=Default // Specify a path you wish to store server backups in. Leaving as Default will send your backups to "PathToService"\Servers\Backups\ServerName
BackupCron=0 1 * * * // Backup time interval. This is a Cron string, search "Cron time format" in your favorite search engine to find more details.
MaxBackupCount=25 // This number determines the maximum number of backups to maintain. Does not affect manual backups via GUI.
EntireBackups=false // Enabling this option will backup the entire server directory. Default "false" will backup only the "worlds" folder.
CheckUpdates=true // Enabling this option turns on automatic updates.
UpdateCron=38 19 * * * // Update time interval. This is a Cron string, search "Cron time format" in your favorite search engine to find more details.
LogServersToFile=false // Enabling this option will cause the service to write server logs to file.
LogServiceToFile=false // Enabling this option will cause the service to write the service log to file.
Server config file (Filename layout - if your server's name is “DefaultServer”, your config should be “DefaultServer.conf”)
server-name=Default // These 24 entries are pulled directly from “server.properties”. Modify values to your liking, but do not modify anything left of the equals sign!
Distracted=help 1 // Any of these optional fields will send following command to server on startup.
Registered player databases:
# Registered player list
# Register player entries: xuid,username,permission,isWhitelisted,ignoreMaxPlayers
# Example: 1234111222333444,TestUser,visitor,false,false
These files contain any players that are anything but default players. A default player is non-whitelisted with a player level equal to that set in the server’s configuration file. The comments included pretty much says what goes on here. You can add entries here manually after first start, or create the file and start from scratch. Players can also be added or modified in the GUI with the Player Manager.
The service keeps track of player connection events and stores that information in these files. Currently only keeping track of connect and disconnect times. Current Layout: XUID,UserName,FirstConnectedTime,LastConnectedTime,DisconnectedTime. Times are in ticks.
This file is generated automatically, and while you can add entries to it, there is much reason to edit this file.
## Client configuration and directory layout
As with the service, The Client will generate a config on first run. Simply start and close the application, no connection is necessary.
* Client\Configs folder - Contains one file, Config.conf. Only used to configure hosts to connect to.
* BedrockService.Client.exe - core client executable.
## Configuring hosts
This file has one section defined by [Hosts]. Entry format: HostName=IPAddress:Port. You can change the name and address to whatever/wherever you wish. You Can also add more than one host for easy multiple host management.
The GUI Still has plenty of forms work to do, it’s a bit lower on the list. Constant progress will continue. With most everything I had initially hoped for currently working, I will be spending plenty of time weeding out bugs.
Update Bump! Version 2.2 out and includes a simple, fast way to edit a servers active level.dat! Simply point the client to the latest copy of NBT Studio found here https://github.com/tryashtar/nbt-studio. Once in the client and connected to the service, click the "Edit world via NBTStudio" button, and it will open right up! Once your done with any edits, save and close. This will push the edited file back the the server and restart it. All done!
Major refactoring took place on the service layer, resulting in a major boost in startup speed! Client now has a form to edit hosts and preset NBT Studio path, Many fixes to smooth out UI function, and many other fixes! Due to new bugs that were present during refactoring, this release is marked beta. Most everything is verified working again, however, a few bugs may exist I simply haven't encountered. Please, if you use this program, leave your thoughts! Next up on the list: Public key authentication and encryption! Stay Tuned!
Update bump! Tons of bugfixes! The quick-start guide is still fairly accurate, however the bulk of the readme is out-of-date. If you have questions or need help, please leave a discussion or issue on the GitHub page, or join my discord server: Crowbar's Server. Have fun!
Really keen to get your Minecraft service installed - but seem to be falling down early on with the service not wanting to start - not sure what I am doing wrong?
Have downloaded the BMS_2.6.8056.6392.zip file and extracted the 2 files to C:\BedrockService.
Ran Windows Command Prompt as Administrator and executed BedrockService.Service.exe install - this gave the result below in screenshot pic 1 (attached).
Basically the Service appears to install - but won't start.
When I try to start the service via the Services GUI (services.msc) - I get "Windows could not start the BedrockService service on Local Computer" Error 1067: The process terminated unexpectedly.
The service appears to be installed and looking to use the "Local Service" account. I have tried using the Local System account instead, and even using a local account on the PC - but neither works. Any ideas why this may be occuring?
Any assistance would be much appreciated!
Also went to try to connect to your discord - but it said invite expired also...
EDIT: I think I may have worked out what was wrong - after the service was installed - I needed to run the service from the command prompt to accept the Mojang terms. This appeared to then fix the issue with the service not starting!
Hello and glad to see it looks like you got things working! Thank you for including that the Discord link had indeed expired. I did not realize that they expire by default, as they spell that out in fine print at the bottom of the link window lol. I have updated the link, should you require any further assistance! Thank you for your interest and support!