Our initial choices shape the end result. We don't always know how of course!
I very much started with a couple of aims in mind.
- To create a rich, fun and creative community: one key aspect of this was to break out the text chat that is offered in the Minecraft world and use speech and video too.
- To make this an all age experience. I was not wanting to set up a youth group, but have a way to engage with all the family, not just Minecraft players (who are mostly young!)
- To start online and develop it more fully offline when the lockdown restrictions are lifted.
- To form a Fresh Expression of church. That is one that exists for people who would normally not engage with any church; and to do adapt church to the culture of Minecraft so that following Christ would not require non-essential cultural change.
I will write about all of these in turn in different posts as this will become swiftly too long.
Rich, Fun and Creative
I chose the Java version of Minecraft mostly because that was what we were familiar with over the near decade we have played it at home. I also knew the rudiments of how to set up a server. What I had overlooked was that the Minecraft games are split over different platforms and there are 2 main types of Minecraft: Java and Bedrock. Bedrock is an adaption often to game systems with less resources than a PC. Java was for PC's and is where it started: however Java is not very efficient but has been very much extended by plugins.
What I didn't know was how this would immediately split the potential audience! The two game types can not share the same server (there is a hack to get around this but I have not as yet got it working). That was quite a surprise to me. Also to my eldest son who decided he would buy the game again and ended up with the Windows 10 version, not knowing it was not compatible with the Windows Java version! (Well, would you?)
Later on I have discovered that the Bedrock version has some distinct advantages in that the game can be played on portable devices. So two people could sit on a cushion side by side and play collaboratively. The Java version requires a mouse and a laptop or desktop computer and is a bit less portable. However, during lockdown this is not a problem but might be later on when we can physically meet. I would have trouble bringing my desktop PC along!
The Bedrock version was made to reduce the burden on servers too. But at the cost of a rich ecosystem of plugins... I wanted a rich environment and there are a number of plugins that would help with that.
Minecraft servers are demanding on resources to run. In my research I discovered that the official Java server can be replaced with compatible servers that offer optimisations and other benefits. There seems to be a hierachy: Bukkit -> Spigot -> Papermc. Papermc is supposed to be really fast and efficient.
I went looking for a server. There are vast numbers of these. I chose scalacubes.net because it had good reviews and offers a lot of features I like. It has a browser-based control panel and access to transfer files (ftp) and also remote logins (ssh and rcon). I am really familiar with running Linux servers so this offered me a mix of powerful low level access and also web based point and click for others who may come after me. They also allow you to run a web server too as part of the same account. This would be great to having a point of contact, sign ups and this blog! They also have Bedrock servers and offer free trial servers which is highly recommended as a place to learn how to run, break and fix a server.
Once I had the server provision and running and logged in I needed to think about how to shape the world. I wanted lots of different zones, or worlds. Minecraft has a survival mode (used to play as a game with a beginning and end) and a creative mode for crafting and building. I had in mind that we would do a lot of different activities and sometimes having those in different places would be helpful.
I knew I needed Multiverse. This plugin helps create those worlds and provides portals to move between all of them in an instant. To manage the game worlds you need to master the command line that the game offers. In the game pressing T normally brings up a line to send chat messages. But special commands are possible, very powerful ones in fact. /tell for example lets you whisper to another player. /give @a bread 5 would give five loaves bread to all players (/give @s fish 2 would give me two fishes!) Multiverse has an extensive command line and works really well. It can create new worlds really fast. I also have used it to import a world that my daughter made at home and uploaded to the server.
I wanted someway to manage users and to give extra power to those more mature players so they could help others. So a form of permissions was needed. I chose LuckPermissions. At the basic level there is a /whitelist command which strongly restricts who can use access the server. LuckPerms adds flexible structures on top of it to build hierarchies of trust for the different commands. Some commands Minecraft offer are really powerful and you don't want them being triggered accidentally. /kill, /ban or /stop spring to mind. LuckPerms adds all players to a default group. You can add differents commands or restrict certain commands to that group. I then have created a masterbuilders group and an admin group. Masterbuilders are allowed to /fill huge regions or /replace lots of blocks, or /execute different functions to manipulate the game world. It is helpful to make some games up where you can say /spreadplayers ~ ~ 0 50 @e[type=chicken,limit=4] which means get four chickens and put spread them randomly around me in a 50 block radius. Honestly! I may also install the WorldEdit extension for masterbuilders as this enables powerful sculpting tools to make massive builds possible.
I have learned from some of the young people too. A recent suggestion was for the /tpa command. Teleport Accept is a polite way to ask another player to bring you to them. The Minecraft world is vast, easy to get lost in and hard to find others in. Each block is equivalent to a 1m cube, so it really can be big and getting quickly to others and places of interest was important.
With all the tools in place (well Multiverse first!) I asked my daughter to create the lobby world where all new players would first enter. I wanted something majestic and a bit unusual. I suggested some floating islands because I like that sort of thing. I think it is the influence of Yes album covers by Roger Dean. From that initial entry we decided players should drop down and splash into a pool, before finding different portals to the different worlds. After I uploaded it and imported it to the server my daughter, the boys and I all started work stretching it out. We made christingle world and scavenger hunt world and then a world called boring world which was not really boring, but just empty. It is anything but boring now!
Scavenger world had normal Minecraft hills and valleys as did Boring world. Because Minecraft procedurally generates all its landscape in a deterministic way depending on an initial "seed". The seed is a string of characters (numbers, letters or symbols) which to the computer simply is seen as a long number. This number is the starting value for landscape generation. Each seed builds a different landscape generating interesting and diverse worlds. The upshot of this is that if you know the seed you can recreate that world on any version of the game. When we wanted a good desert village (for Bethlehem!) we googled for a good Minecraft seed and found one! Multiverse created it and we had fun defending it in a reenactment of the Slaughter of the Innocents (Matthew 2)
The portal creation was a little tricky and occasional players would fall into the Nether (Minecraft Hell!) Not a great experience for a Christian server perhaps (or maybe instructional?)
The server is currently running ten plugins. It not recommended to use too many so I will be being cautious going forward.
- CommandAPI - allows some of the plugin commands to be used in /execute statements rather than just the built in commands. Useful to script some games and activities.
- CourierNew - a simple mail system for players to mail each other. Once the letter is written and posted it is taken by a courier to the player. The courier started off as a villager, but fell to their death in the floating islands of the lobby so I have changed the courier to bees now. B-mail!
- HolographicDisplays - a lovely plugin make floating signs. I use this for prayers and welcome messages. I may script this to display a different message each day as you can load messages from a textfile.
- LuckPerms - permissions system as above. You can get it to 'pop' out to a browser based editor which is good as the extensive commandline is hard to remember. The documentation is good.
- Multiverse-Core, Multiverse-Portals, Multiverse-SignPortals - all work together.
- ProtocolLib - needed by plugins
- SimpleTpa - simple teleport accept command
- TreeGenerator - makes really huge trees!
Server performance is really good in general. To date we have had 17 players maximum (the capacity of recommended to be 40) and it was all fine. If we grow to 30 I will upgrade to the next tier of server. (However managing 30 people all on Zoom is quite a challenge too. More on that in another post) Sometimes too many fireworks grind the server to a halt. Also having too many villagers and other 'entities' can really cause a slow down. So we have to be careful that the players don't spam dozens and dozens of creatures as is their delight! /kill @e[type=chicken] can be useful at such moments.
Running a Minecraft server is not for the faint-hearted. I have found it really hard to get my head around the different options, the command system, the evolution of the game and servers and the never changing versions. The plugin world is highly fragmented and quickly goes out of date. It has been a rather tough challenge at times and one of the harder servers I have had to set up!
However, you need not be as technical or extravagant as this to run a server. Start simple. Find a suitable technical person to support you and learn as much as you can from people who really play the game. I actually am not a player myself