Minecraft Server Windows Service – Server Guide #4

Everything is starting to fall into place:

  • Decent Minecraft Server
  • Bedrock – Java Support
  • Sleeping Server Program

But one thing is missing. That, my friend, is full automation.

With the Non Sucking Service Manager (NSSM), we can install Minecraft Sleeping Server Starter as a Windows service, so we can be sure that our server is ready to play whenever our (server) PC is on.

This is simpler than you might think, but I’ll still take you through it.

Set up

Download the NSSM executable for windows from their downloads page. It should be the latest release (2.24).

Extract it to your server folder.

In the “nssm-2.24\win64” or “nssm-2.24\win32” folder (dependent on your system, should be 64 bit) there should be an executable. Cut it and paste it into the root of your server (with the sss.exe and server jar).

You can now delete the nssm-2.24 folder.

Set up is complete.

Installing a Service

Open an admin command prompt and change the directory (cd) to your server folder root.

Type in:

nssm install "(Your Service Name)" 

And it should open up a GUI that looks a little like this:

Non Sucking Service Manager Application tab

Set the “Application Path” to your “sleepingserverstarter.exe” in your server root, and make sure the “Startup directory” is set to your server root folder. You can change these by clicking the ellipses after the text boxes.

Ignore the “Arguments” and move onto the “Log on” tab. Check the Log on as: “This account” checkbox. Here you will have to enter in your username and password to the Windows account log on. I have used an example log on below.

Non Sucking Service Manager Log on tab

And press the “Install Service” button.

Your service should install. Please note that it will only install if the server files are located somewhere only the specified user has access to (like Documents.) If the server files are located in program files for example, you’ll have to tick “Local System account” on the Log on tab and “Allow service to interact with desktop”. However I’m unaware if this’ll run properly without a user logged in.

So open “services.msc” by typing it into Windows search/cortana and locate your service. Select it and start it, either by right-clicking and starting or pressing the start/play button. It should start up the Sleeping Server Starter executable in the background so you won’t be able to see it, but you can connect and join the server as normal from either Minecraft Java or Bedrock!

Services.msc

So I hope you enjoyed this guide to Minecraft Server -ing cross platform and making it fully automatic. I hope you learned something, and if you want more things like this, drop a comment/create a topic, or even something as little as subscribing to my YouTube channel. Gives me a lot of motivation 🙂

After writing this, I tested waking the server from an Xbox One S and some reason after version v1.16.201 the client it thinks over a million players are online. So just wake it from Java/Bedrock PC before joining.

Anyway, thanks for spending your time to read this blog, and if your reading from the future, leave a comment, and like a video of mine (It’s really appreciated!)

And by the way, if you ever have any issues about or with this blog or project, or just want to share your results from it, create a thread in the website Forum. Thanks!

Minecraft Server Setup Guide – Server Guide #1
Minecraft Server Bedrock Support – Server Guide #2
Minecraft Sleeping Server Program – Server Guide #3
Minecraft Sleeping Server Program – Building from repl.it – Server Guide #3.5
Minecraft Server Windows Service – Server Guide #4

Minecraft Sleeping Server Program – Building from replit.com – Server Guide #3.5

If you’ve read my previous page, which you should have (It’s very helpful), and you’re thinking:
I want a binary but I don’t want the source files on my local machine. The developer hasn’t released a build, what can I do?
Fear not, for anyone with this stupid question doesn’t have to question anymore!
You can build the project online in the cloud for free using repl.it!

Can’t be bothered? Here’s my repl, the binaries are in the /home/mcsleepingserverstarter/bin/ folder. For Linux and Windows.

Let’s get into it.

Building from replit.com

It’s quite simple. Log in or create an account with google or github. Create a repl, one of your choice that supports shell, and load it up.

Open the “Shell” tab on the right, and type in the following. (Press Enter every line.)

git clone https://github.com/vincss/mcsleepingserverstarter.git
cd mcsleepingserverstarter
npm i
npm run build:typescript
npm run build:linux/win

Builds should be in the /home/mcsleepingserverstarter/bin/ folder.

Anyway, thanks for spending your time to read this blog, and if your reading from the future, leave a comment, and like a video of mine (It’s really appreciated!)

And by the way, if you ever have any issues about or with this blog or project, or just want to share your results from it, create a thread in the website Forum. Thanks!

Minecraft Server Setup Guide – Server Guide #1
Minecraft Server Bedrock Support – Server Guide #2
Minecraft Sleeping Server Program – Server Guide #3
Minecraft Sleeping Server Program – Building from repl.it – Server Guide #3.5
Minecraft Server Windows Service – Server Guide #4

Minecraft Sleeping Server Program – Server Guide #3

We have a functioning server that can accept outbound players and players from the Bedrock Editions of Minecraft. But having a server on all day can really wear out a system, not to mention the immense electricity and compute it takes! So this page will take you through installing the SleepingServerStarter Minecraft Server plugin by Vincss and EmerickH.

Sleeping Server Starter runs in the same directory as your server and listens for incoming connections from Minecraft Java and Bedrock (1.16.5 revision, thanks to Vincss and Octoshrimpy!). Once it hears a connection from a client, it will reconnect the player and start up the server. Pretty neat if I do say so myself!
We’ll also use the EmptyServerStopper Spigot plugin to safely stop the server after all players have left. It does this after a specified amount of time.

This guide page will take you through installing the program and plugin as well as re-building /compiling it if you want to change the sleeping-state icon for the Server. I’ll be covering how to compile for windows 10. (It was easier than I thought!)

The Pre-compiled Binary

The pre-compiled binary for 1.16.5 is very easy to use, just download, extract and run in the same directory as your server. In previous versions, it was required to recompile the Binary to change the server icon, however this is no longer needed! Woohoo! But I’ll still be covering how to re-compile to support setting up for older server versions. Once it generates a

sleepingSettings.yml

you can edit it with notepad and should look similar to the following. It may look different dependent on the version of the Program your using. This version is 1.16.5, the Bedrock support update.

# settings for SleepingServerStarter

serverName: SleepingServer, waiting for his prince...

serverPort: 25565
bedrockPort: 19132
loginMessage: ...Waking server up, come back in a minute...
serverOnlineMode: true

webPort: 0	 					# 0 to disable web hosting, 8123default dynmap
webDir: plugins/dynmap/web 	# dir of dynmap web

startMinecraft: 1 				# 0 to disable	
minecraftCommand: java -jar spigot.jar nogui

# version: 1.15.2 # Force to a specific minecraft version

# Use a custom icon 64x64 png converted using https://www.base64-image.de/
# favIcon: (removed because it was too long)

Remember to set:

minecraftCommand: java -Xmx6144M -Xms6144M -jar paper-1.16.5-483.jar nogui

To your Minecraft server’s java command. Earlier in this guide we created and added a launch batch file. I’ve re-noted this above, for our sanity.

You could also set:

serverName: (Your Server Name)

to your server’s name. Plus, (new feature in the 1.16.5 release) you can change your server’s icon in the sleepingsettings.yml without recompiling. Just upload your .png to https://www.base64-image.de/ and copy the <image> code into the

favIcon: (Your base 64 converted PNG icon - really long jibberish)

entry. Make sure to remove the “#” before the entry, so that it’s not commented out.

The only downside to the Binary is that you have to manually start it every time it crashes, stops or the OS reboots. But we can circumvent this! So next guide page I’ll show you how to install it as a Windows Service, so that your Minecraft server is up and running if the computer server is powered on, and even if no users are signed into the PC. Neat, isn’t it?

Once SSS (Sleeping Server Starter) is setup, we’ll also want to install the ESS (Empty Server Stopper) plugin from here. Download, place into your plugins folder and restart. It’ll generate an Empty Server Stopper folder in /plugins/ and a config.yml inside. The only parameter defaults to 60 and is measured in minutes. Change this if you like. It’ll stop the server (Defined) minute(s) after the last player leaves.

So now that all that is nice and setup, check if it works as you like. If you’ve followed my previous guide pages, you should be able to connect and start the server from Java 1.16.5 (Your server IP – inside network local IPv4, outside network public IPv4) port 25565,
and Bedrock v1.16.100 and v1.16.200 (Your server IP) port 19132, if you have followed my previous guides and left most settings default. GeyserMC must be installed.

If you have any problems, drop a comment or create a topic in the forum.
To find my previous guide pages, head to the Projects section in the Menu (up top) and find the page.

I’ll show you now how to recompile for Windows and Linux on Windows, just in case you want to change the Sleeping state Icon on older versions. Please note that waking the Server from Bedrock on SSS older than 1.16.5 will not work. Bedrock waking support was added in the 1.16.5 update.

Re-Compiling latest release

You’ll need to have:

Ok, here is step-by-step recompiling the SSS 1.16.5 Bedrock update/latest release.

  • Open Admin cmd
cd (Project folder)
git clone https://github.com/vincss/mcsleepingserverstarter.git
cd (Project folder/mcsleepingserverstarter)

If you don’t want to install Git, just download the Source Code (zip) from the releases page and extract it to your (Project folder).

npm i

You might get an error if you are not using stable releases of Node.js. I had to uninstall a dev release and reinstall a stable release. Then re-run “npm i”.

npm start

Allow Node.js through your firewall.
Once you can confirm it works, close the cmd.

  • Re open an Admin cmd.
cd (Project folder/mcsleepingserverstarter)
npm run build:typescript
npm run build:win/linux

Binaries should be in the (Project folder)/mcsleepingserverstarter/bin/
folder. You’re free to modify the source code as you like, and then re-compile the binary. Make sure to credit the project though.

Re-Compiling previous releases

Download the source code you want from the releases page.

Extract the zip to your (Project folder)
Convert your png to an ico using https://cloudconvert.com/png-to-ico

Replace the sss.ico with yours, and edit anything else you want
More info below (per version):

FOR 1.15.1

  • Download the Source Code (zip)
  • Extract to (Project folder)
  • Edit files (sss.ico)
  • Open Admin cmd
cd (Project folder/mcsleepingserverstarter-1.15.1)
npm i
npm audit fix (if needed)
npm install -g nexe (if not previously installed)
npm run build:win/linux

FOR 1.15.2

  • Download the Source Code (zip)
  • Extract to (Project folder)
  • Edit files (sss.ico)
  • Open Admin cmd
cd (Project folder/mcsleepingserverstarter-1.15.2_release)
npm i
npm audit fix (if needed)
npm install -g nexe (if not previously installed)
npm run build:win/linux

FOR 1.16.1

  • Download the Source Code (zip)
  • Extract to (Project folder)
  • Edit files (sss.ico)
  • Open Admin cmd
cd (Project folder/mcsleepingserverstarter-1.16.1)
npm i
npm audit fix (if needed)
npm install -g nexe (if not previously installed)
npm run build:win/linux

FOR 1.16.4

  • Download the Source Code (zip)
  • Extract to (Project folder)
  • Edit files (sss.ico)
  • Open Admin cmd
cd (Project folder/mcsleepingserverstarter-1.16.4)
npm i
npm audit fix (if needed)
npm install -g nexe (if not previously installed)
npm run build:win/linux

FOR 1.16.5

  • Download the Source Code (zip)
  • Extract to (Project folder)
  • Edit files (sss.ico)
  • Open Admin cmd
cd (Project folder/mcsleepingserverstarter-1.16.5)
npm i
npm run build:typecript
npm run build:win/linux

And that should be short instructions for re-compiling binaries for SleepingServerStarter. I did overexplain 1.16.5 a bit to start with, but I thought I might as well have as it is the update most people will use. It has been converted to typescript, so will require being built using

npm run build:typecript

which will build it in javascript (Project folder/mcsleepingserverstarter/build/). Then run

npm run build:win/linux

to compile a binary. DO NOT change directories to do this. Please. <:)

Next guide page I’ll be taking you through installing the binary as a Windows service, so you only have to worry about your server being powered on!!

Anyway, thanks for spending your time to read this blog, and if your reading from the future, leave a comment, and like a video of mine (It’s really appreciated!)

And by the way, if you ever have any issues about or with this blog or project, or just want to share your results from it, create a thread in the website Forum. Thanks!

Minecraft Server Setup Guide – Server Guide #1
Minecraft Server Bedrock Support – Server Guide #2
Minecraft Sleeping Server Program – Server Guide #3
Minecraft Sleeping Server Program – Building from repl.it – Server Guide #3.5
Minecraft Server Windows Service – Server Guide #4

Minecraft Server Bedrock Support – Server Guide #2

It’s quite annoying when major billion dollar corporations don’t want consumers to mix and match their video game products. Specifically Minecraft: Bedrock and Java Edition.

BUT,

The GeyserMC Minecraft server plugin will fix that!
GeyserMC is a proxy server that will accept Minecraft Bedrock connections, translate them and send them over to the Java server. It basically emulates the Bedrock player on the Java server with the use of floodgate. Geyser will only create the bridge, but floodgate will grant you access. Because the Java server uses different methods of verification than Bedrock, floodgate will verify the Bedrock user and also allow that Bedrock user to connect to the server.
Best of all, it’s all as easy as installing a plugin!

Before you continue, make sure you have followed my previous guide page, or have a working spigot/paperMC server running fluidly.
If you want to set this up publicly (to play with friends), make sure you have port forwarded the correct ports and protocols on your router, as explained in my previous guide page under the “Port Forwarding” section.

Installing

With that out of the way, download the GeyserMC spigot plugin from jenkins, and the floodgate-bukkit (for spigot, paperMC, they are bukkit forks) plugin, from jenkins too.
Put these in your plugins folder of your server.
Restart the server, config files will be generated, and you should be pretty much ready to go.
When you join the server from Bedrock, your Gamer tag will have a asterisk (*) prefix, which defines you as a Bedrock user. This can be turned off by changing the

username-prefix: "*"

to nothing in the “config.yml” of floodgate-bukkit in the

plugins/floodgate-bukkit/config.yml

directory. Geyser also has lots of config options, but I wouldn’t recommend changing these as they come pre-optimised and mostly for advanced use.

I will soon be writing up my next page of the guide, which will be integrating the Sleeping Server Starter plugin, which will wake up the server when someone attempts to establish a connection. Stay tuned!

Anyway, thanks for spending your time to read this blog, and if your reading from the future, leave a comment, and like a video of mine (It’s really appreciated!)

And by the way, if you ever have any issues about or with this blog or project, or just want to share your results from it, create a thread in the website Forum. Thanks!

Minecraft Server Setup Guide – Server Guide #1
Minecraft Server Bedrock Support – Server Guide #2
Minecraft Sleeping Server Program – Server Guide #3
Minecraft Sleeping Server Program – Building from repl.it – Server Guide #3.5
Minecraft Server Windows Service – Server Guide #4

Minecraft Server Setup Guide – Server Guide #1

Minecraft Servers can be hard and confusing and can completely change depending on what your using it for.
That’s why I’m making this guide to explain and take you through creating a PaperMC Minecraft Server designed for 1- 20 players.

Downloads are in requirements section!

Paper, Spigot, Bukkit, BungeeCord and Vanilla

Each of the server types above (and below) were, at some point, open-source (except for Vanilla – that comes from Mojang).

Bukkit
Bukkit is an API (Application Programming Interface) which provides third party developers with the ability to add their own code to Minecraft through the use of plugins. This has completely changed how Minecraft servers are managed and has exponentially expanded their capabilities. However, Bukkit is no longer open-source.

Spigot
While a fork of Bukkit, Spigot is an open-source Java project that lets users run their own Minecraft server and add plugins to extend the possibilities of their server. There are over 100,000 Spigot servers in existence today. This makes Spigot one of the most stable and diverse Minecraft servers available.

PaperMC
Paper is the current standard for most servers and is a fork of both Bukkit and Spigot. Paper is a high performance fork of the Spigot Minecraft Server that aims to fix gameplay and mechanics inconsistencies as well as to improve performance. Paper contains numerous features, bug fixes, exploit preventions and major performance improvements not found in Spigot.

Vanilla
Vanilla is the plain Minecraft Server provided by Mojang. While it has features and bug fixes of its own, it isn’t performance optimised or capable of plugins (you, won’t want to use this).

Bungee Cord
Bungee Cord is a proxy server designed to house multiple servers running in conjunction. Like many servers like Hypixel and Mineplex, Bungee allows the load of thousands of players to spread across multiple servers and machines. Sometimes called the Bungee Cord network, Bungee Cord is a unique server type used by thousands of Minecraft server owners. It allows users to easily connect other servers that are running on Spigot or Paper together, creating a network for players to use.

Requirements

Minecraft Servers, especially Java ones, can be very Memory and Compute hungry. My recommended Minimum is listed below and what I use too. You could use an old PC you found in your garage or loft etc, it doesn’t have to meet these requirements! These are mine, and who am I to tell you that you can’t run a server on Windows ME?

  • Intel or AMD CPU clocked at Minimum of 3 GHz.
    i5-4590 is the model I use.
  • 3Gb spare RAM. This doesn’t include how much Windows 10 uses. Allow 1Gb at least for Windows 10 to run.
    I use around 7Gb RAM.
  • 40Gb Disk Space – SSD or HDD will make a difference when booting.
    I use a 128Gb Western Digital SSD.
  • WAN Wired-Ethernet connection with a Minimum of 5Mbit/s upload, 3Mbit/s download. Go to SpeedTest.
    Mines a bit overkill, right now a 70Mbit/s Download, 18Mbit/s upload
  • Preferably a 21st century OS; Ubuntu or server optimised linux (preferable for advanced users), Windows 10 (Server preferable for majority of users), MacOS (Terrible for this Job. Don’t bother. No support at all. I’m sorry 16.54% Mac OSX users!)
  • Get Java Here!
  • Get PaperMC Here!

You could use an old PC you found in your garage or loft etc, it doesn’t have to meet these requirements. There’s nothing stopping you from running it on an Intel 486, as long as you can run Java! Do take it with a pinch of salt though, because I can’t guarantee the best “lag less experience” (I’m not Bill Gates, you know!).

Server Jar Setup

For the purpose of this server, we are going to use a High Performance PaperMC Minecraft server. Paper usually likes servers to stay updated to the latest versions, and older paper builds are harder to find on their site. Alas, at the time of writing, the latest version is 1.16.5 build #497 dated on the 24 / 02 / 2021 – Here. The versions within the same release should be OK to use, for example right now, 1.16 plugins work fine with 1.16.5. However its always recommended to update everything if you can.

Download the Jar, and put it into your working directory. When you first run it, you won’t see anything much, because it generates an EULA.txt in the folder, and you have to open it and set:

eula=true

Then save. When you launch it again, it’ll open a GUI and do some stuff. Let it boot and generate the world. It might crash though, this is because it only allocates 500Mb RAM to itself. Minecraft Servers need at least 2Gb RAM to run playable, and if you don’t have at least 2 spare in your system, you’ll need some. We can fix this with a

launch.bat

file. Launch batch files specify how to launch the Jar file and with how much memory. To create a .bat, first right click folder explorer or desktop, hover over New, Text Document. Rename it to “launch.bat”. Right click it, and click Edit. My launch bat contains this line of code:

java -Xmx6144M -Xms6144M -jar paper-1.16.5-483.jar nogui

This code will launch Java with 6144 Megabytes of RAM without a GUI.
You can use this, but make sure to change the 6144 on -Xmx to the maximum RAM you want to launch with, and -Xms to the minimum (if java crashes trying to launch, try setting them to the same amount). Multiply how much in Gigabytes you want to use by 1024 and you should get the exact Megabyte equivalent.
IE: I want to launch with 4Gb RAM, so I multiply 4 by 1024:
4 * 1024 = 4096

java -Xmx4096M -Xms4096M -jar paper-1.16.5-483.jar nogui

Also, don’t forget to change “paper-1.16.5-483.jar” to the name of your Server Jar, and make sure the launch.bat is in the same folder as the jar.
Once set, double click the launch.bat, and a command prompt should pop up and start the server. If you want a GUI (keep 200Mb spare it takes up a spare amount) delete the “nogui” off of the end.

Connecting to the Server

You can open a new command prompt and type in
“ipconfig” without the quotes and find your iPv4 address. This is your local address of your machine within your local network. Log onto your gaming machine and Direct connect to your local iPv4 of your server. If you’re on the same machine, just type in “localhost” or “127.0.0.1” without the quotes.

Once you connect, if you have a decent setup you should have a playable local Minecraft server. If you don’t like how it looks or works, don’t worry! This is merely the tip of the mountain (yes a mountain!). Everything and more you can think of has a setting, and can be tweaked. Everything and anything from Bedrock support, to mods, and even where sheep spawn, can be modified.
Ok, so getting it perfect might take some time, but what if you want to play with friends? Now here comes the fiddly bit.

Port Forwarding

Every router is different. They’re just like OSes, what should be the same place looks completely different. Or sometimes they’re just rubbish. It’s similar with routers. Every router will look different, and this is the place where most people get stuck. If you’re in the UK, it’s most likely you use BT broadband, TalkTalk or Virgin. Even if you don’t, your router will still probably be made by Huawei.
Open a browser and go to your local IP root.
For me, this is 192.168.1.1
It will open up your router’s GUI. If you can, you’ll want to first reserve your server’s IP address, which I can do from the devices section on my router. For privacy I’ve blurred out the personal stuff. Even if it is only local.


Back at the home page, there’ll either be an advanced section, or a port forwarding section, something of the similar, but we want to port forward from outside our network, on port 25565, to inside your network and your server’s reserved IP. You can see that I’ve pointed this out in the image above.
If you can’t reserve an IP, just make sure you do the next bit, and if your server’s IP changes, you’ll have to change the rule.
Then, add a rule to forward the external 25565 to the internal 25565, with the internal host as your servers IPv4. The External Host is the connecting player, so leave this blank.

Add an name for your Service, Leave the “Service” type blank or as “Other” as shown above. Make sure the protocol is TCP-UDP. This is important.
Keep in mind I’ve filled this out for the Java edition.
If you want to use the Bedrock-Java GeyserMC proxy, create another rule with the same content but replace both ports with 19132, and change the protocol to UDP only, as this is the Bedrock port and protocol. Save your changes, and make sure they are applied.
Below is an image of each of my rules. I have 3. One for Java, one for Bedrock-Geyser, and one for Dynmap, a dynamic live map plugin hosted on the server. I might get into plugins a bit later in another post, but for now I’ll keep it relatively simple.

Once that is done, on your server search “my ip” in search engine of your choice, and if your server is running, your friends should be able to join with that public IPv4 address.

I hope my first Minecraft Server post was helpful, and in the future I will definitely be posting about how I managed to run my server as a Windows service, and how I got the server to “sleep” while it was not being used. I’ll also create a post purely about some of the plugins I’ve used and how to use them. So stay tuned for that!

Anyway, thanks for spending your time to read this blog, and if your reading from the future, leave a comment, and like a video of mine (It’s really appreciated!)

And by the way, if you ever have any issues about or with this blog or project, or just want to share your results from it, create a thread in the website Forum. Thanks!

Minecraft Server Setup Guide – Server Guide #1
Minecraft Server Bedrock Support – Server Guide #2
Minecraft Sleeping Server Program – Server Guide #3
Minecraft Sleeping Server Program – Building from repl.it – Server Guide #3.5
Minecraft Server Windows Service – Server Guide #4