======Creating a Minecraft Server - BedRock====== This version of Minecraft is for Bedrock clients (Windows and Mac) and will not work with tablets. Instructions on [[digital_literacy:technology_resources:minecraft:create_server_tablet|creating a server for Tablet clients is available here]]. This tutorial is for creating a Minecraft server using the CraftBukkit Mod on Ubuntu 18. When choosing your server, be sure that it has at a minimum of 1GB of RAM. The more players you want to host, the more RAM you will require. As a guide, 1GB is a good amount for 10 players.\\ We are assuming you have access to and logged in as root user for this tutorial. ====Make a new user for Minecraft==== Before we get started, lets make a new user just the run the server - this is good security practice in case we want to run our server public. sudo adduser mcuser You'll be prompted to add a password. Lets add the user to sudo group (superuser) usermod -aG sudo mcuser And switch to the user su - mcuser =====Install the Requirements===== It is best to first check that the server is up-to-date by running the command: sudo apt-get update Now we need to make sure that Java is installed on your server. You can check this by typing the command: java -version If Java is not installed, you will get a message saying "Command 'java' not found". You can then download java through apt-get (don't use the command it suggests) sudo apt-get install default-jdk You will also need to install Screen which will keep the Minecraft server software running if your connection is dropped: sudo apt-get install screen =====Install the Minecraft Server===== Start by creating a directory to store the Minecraft server and switch into it: mkdir minecraft cd minecraft Inside that folder, download the CraftBukkit Minecraft server. You can get the URL from the website [[https://getbukkit.org/download/craftbukkit]], click on the version you want to run and then copy the URL to the download. In this example, we are using 1.14. wget -O craftbukkit-1.14.4-R0.1-SNAPSHOT.jar https://cdn.getbukkit.org/craftbukkit/craftbukkit-1.14.4-R0.1-SNAPSHOT.jar Since we are using screen, you can start the server by running: screen -S "Minecraft Server" java -Xmx1024M -Xms1024M -jar craftbukkit-1.14.4-R0.1-SNAPSHOT.jar nogui The launching text should look something like this: Loading libraries, please wait... [09:30.16 INFO]: Starting minecraft server version 1.14.4-R0.1-SNAPSHOT [09:30.16 INFO]: Loading properties [09:30.16 WARN]: server.properties does not exist [09:30.16 INFO]: Generating new properties file [09:30.16 WARN]: Failed to load eula.txt [09:30.16 INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info. [09:30.16 INFO]: Stopping server Now you need to agree to the EULA. You can do this by running: nano eula.txt which will show you the contents of the eula.txt file. Using the cursor keys, change the line eula=false to eula=true then press cntl-o to write the file, press enter to overwrite the eula.txt file, then press cntl.x to exit nano. Now run the java command again: java -Xmx1024M -Xms1024M -jar craftbukkit-1.14.4-R0.1-SNAPSHOT.jar nogui and you should see the following output: Loading libraries, please wait... [09:43.41 INFO]: Starting minecraft server version 1.14.4-R0.1-SNAPSHOT [09:43.41 INFO]: Loading properties [09:43.41 INFO]: Default game type: SURVIVAL [09:43.41 INFO]: Generating keypair [09:43.42 INFO]: Starting Minecraft server on *:25565 [09:43.42 INFO]: Using epoll channel type [09:43.43 INFO]: This server is running CraftBukkit version get-Bukkit-e60fc34 (MC: 1.14.4-R0.1-SNAPSHOT) (Implementing API version 1.14.4-R0.1-SNAPSHOT) [09:43.43 INFO]: Preparing level "world" [09:43.45 INFO]: Preparing start region for level 0 (Seed: -1369994844442303813) [09:43.46 INFO]: Preparing spawn area: 3% [09:43.47 INFO]: Preparing spawn area: 31% [09:43.48 INFO]: Preparing spawn area: 64% [09:43.49 INFO]: Preparing spawn area: 92% [09:43.50 INFO]: Preparing start region for level 1 (Seed: -1369994844442303813) [09:43.51 INFO]: Preparing spawn area: 5% [09:43.52 INFO]: Preparing spawn area: 29% [09:43.53 INFO]: Preparing spawn area: 57% [09:43.54 INFO]: Preparing spawn area: 83% [09:43.55 INFO]: Preparing start region for level 2 (Seed: -1369994844442303813) [09:43.56 INFO]: Preparing spawn area: 7% [09:43.57 INFO]: Preparing spawn area: 49% [09:43.58 INFO]: Preparing spawn area: 79% [09:43.59 INFO]: Done (12.606s)! For help, type "help" or "?" > You should now be able to connect a Minecraft client to the server on port 25565. =====Commands===== While the Minecraft server is running, you can issue commands within the server console. The main commands you can use are: **stop** - This stops the server and saves the worlds to disk\\ **gamemode creative ** - Changes the specified player to CREATIVE\\ **time set 6000** - Sets the worlds time back to midday\\ To suspend the Screen instance press cntl-a d. This will return you to the main console. The previous Screen instance will still be running in the background. To return to that instance, type: screen -R To close the Screen instance, run the command: exit Note that if you receive the result [10:19:48 INFO]: Unknown command. Type "help" for help. The Minecraft server is still running. You will need to run **stop** to stop the server first. To find out the IP address of the server, run the command ifconfig again, you cannot do this while the Minecraft server is running. You will need to either stop the server, or suspend the Screen instance and return to the Screen instance later. =====Launch Server as a Service===== Next we can make a system service to launch our server. This means we can make it launch on start-up, and control it using ubuntu's built in service called systemd. First we will make a service - called minecraftserver.service. Create it using the nano editor with the command: nano minecraftserver.service Then paste the code below: [Service] WorkingDirectory=/home/mcuser/minecraft User=mcuser #Group=minecraft Type=forking # Run it as a non-root user in a specific directory ExecStart=/usr/bin/screen -h 1024 -dmS minecraft ./minecraft_server.sh # I like to keep my commandline to launch it in a separate file # because sometimes I want to change it or launch it manually # If it's in the WorkingDirectory, then we can use a relative path # Send "stop" to the Minecraft server console ExecStop=/usr/bin/screen -p 0 -S minecraft -X eval 'stuff \"stop\"\015' # Wait for the PID to die - otherwise it's killed after this command finishes! ExecStop=/bin/bash -c "while ps -p $MAINPID > /dev/null; do /bin/sleep 1; done" # Note that absolute paths for all executables are required! [Install] WantedBy=multi-user.target This service will start up screen (as mcuser) then run a script in the working directory called minecraft_server.sh. To turn this into a service, we need to make it executable with sudo chmod 775 minecraftserver.service Then add it to our systemd directory with sudo cp minecraftserver.service /lib/systemd/system =====Server Start-up Script===== Before we test our service, lets make our minecraft_server.sh script with nano nano minecraft_server.sh and enter #!/bin/bash java -Xmx1024M -Xms1024M -jar craftbukkit-1.14.4-R0.1-SNAPSHOT.jar nogui echo hi Now this script needs to be executable chmod 775 minecraft_server.sh ===== Test the Service ===== Nearly there! Lets start our service sudo systemctl start minecraftrserver and check its running with screen -r All good? Now exit screen with ctrl+a+d Then enable on start-up with sudo systemctl enable minecraftserver Its time to stop the service and reboot your server to check it starts properly: sudo systemctl stop minecraftserver sudo reboot =====Other Information===== Your server will require internet access in order to authenticate the Minecraft clients.