Minecraft Server
Skynet can host many game servers, however one of the most popular (going back through teh years) is Minecraft.
Base Templates
The base templates for the servers are called eggs.
These are basically scripts to setup and run the servers in question.
These are created by laying other eggs on top of each otehr to create a single config.
Bit of a PITA to make.
mcsleepingserverstarter-Packwiz-Purpur-Geyser-Floodgate
This is the core Minecraft egg and can be found here.
It comprises of several components bodged together
Sleeping Server Starter
This is a core component of being able to host multiple servers for multiple Clubs/Socs as it allows us to reduce the footprint of the server when nto so many folks are using it.
It listens on Java and Bedrock ports as a low power process and when someone tries to connect it spins up the full server.
Coupled with a plugin which shuts down teh server after the last person leaves it is pretty good for keeping resourse useage low.
Packwiz
Packwiz is a package/plugin/mod manager for minecraft which is compatible with source control.
The main repo for the plugins can be found here, with branches for each server configured with it
It allows us to have several plugins as a base that can be used by all servers.
Geyser and Floodgate
These pair together to allow bedrock players to connect and play with a Java server.
Quite useful as this encompasses console players.
ViaVersion
This and its partner plugins allow people who dont have the exact right version to match the server to connect.
Not perfect but it works pretty well.
Purpur
Purpur is a minecraft server which supports plugins.
It is a descendant of Paper and Bukkit and can use plugins built for those.
Server - New
Create user account
On the admin page create an account for the Club/Soc which is getting the server.
Use their UL Wolves email for the email, username can be whatever as long as its descriptive of the Club/Soc.
Their role should be Server Admin
.
For password use a random string (I use 42 characters) and then email it to their Wolves address.
We are able to reset it in the future if required.
Server setup
Config
- On the config repo fork off of main and name it after the Club/Soc and push.
- Then on the web version of teh repo find that branch and teh
pack.toml
and click into it. - In the top right hand corner of the file you will see a button called
raw
, select that.
- Copy the link of the page, will be used shortly.
Pelican Setup
On Pelican, on the servers page create a new server.
Information
Name
Enter teh Club/Soc who is getting it.
Owner
Select teh account you created earlier.
Primary Allocation
You will need to select the +
.
For IP Address
select teh 193.1.99.xyz
address.
For Ports
enter the minecraft port you have chosen, you can see the existing ports on NixOS
Java ports take the form of 255XY
while Bedrock takes 244XY
, with teh XY
being teh same for both (makes it easier to keep track).
Once ye have that chosen click on teh Next Step
.
Egg Configuration
Egg
Select the mcsleepingserverstarter-Packwiz-Purpur-Geyser-Floodgate
egg.
Packwiz URL
Then enter teh URL you copied previously into the input.
Once ye have that chosen click on teh Next Step
.
Environment Configuration
Memory
Set this to be Limited
and between 8000
and 12000
Once ye have that chosen click on teh Create Server
.
NixOS
In NixOS you have to create DNS entries so folks can easily connect to teh server.
Location is in minecraft.nix
, copy the existing format.
This will allow players to connect to minecraft.$CLUBSOC.games.skynet.ie
, although bedrock players will still need to use the port.
Server Configuration
Discord
TODO: https://essentialsx.net/wiki/Discord-Tutorial.html
plugins/voicechat/voicechat-server.properties
(TODO: add more about teh voice port)
Set teh port for use in teh voice chat.
port=24424
server.properties
This is to allow bedrock users to text chat
enforce-secure-profile: false
plugins/Geyser-Spigot/config.yml
Set the bedrock port
bedrock:
port: 24423
Also set the authtype to be floodgate
remote:
auth-type: floodgate
sleepingSettings.yml
Bedrock port needs to be added to this file:
bedrockPort: 24423
Server - Update
Plugins Modification
DevShell
In the config repo run this command to enter teh devshell which gives you access to packwiz
:
nix develop
Add
Once in the devshell use the add command to add a plugin.
packwiz modrinth add $LinkToModrinthPlugin
Commit and push.
Update
To update all plugins you can use this command
packwiz update --all
Commit and push.
Remove
To remove a plugin just delete the *.pw.toml
.
Then run the refresh command to update teh pack
packwiz refresh
Commit and push.
Server Update
Now that teh pack has been updated you need to restart teh server to pull it in.
Stop
the server- This stops the java server, does not start teh
sleepingserverstarter
server.
- This stops the java server, does not start teh
Kill
the server- This stops the
sleepingserverstarter
server.
- This stops the
Start
the server- This restarts everything and pulls in teh updates.