Minecraft

I don’t think there’s any need to explain what Minecraft is, so here are a few resources I’ve gathered on the topic.

Resources

Category Date Link Notes
Category Date Link Notes
Servers 2016-06 PocketMine-MP A server for the Pocket Edition, which unfortunately uses a lot of PHP for some ungodly reason
DragonProxy A proxy that allows Pocket Edition clients to connect to standard servers
Nukkit A Pocket Edition server written in Java
highmc A much more interesting (but incomplete) Pocket Edition server written in Go
cuberite A C++ server for the desktop version
Genisys A PocketMine fork
Spigot A Java based server
2019 NukkitX Seems to be the new hotness as far as PE servers are concerned
Services 2016-06 Intercraften Provides family-friendly servers and an awesome map

Installing Spigot

Currently deprecated, but kept for historical reasons:

mkdir minecraft
cd minecraft
wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar
java -jar BuildTools.jar
# wait
echo "eula=true" > eula.txt
java -jar -Xms512M -Xmx1008M spigot-1.9.4.jar nogui

Old Setup (2016)

  • Pocket Edition clients (v0.15.6)
  • Overclocked Raspberry Pi Model B+ running Nukkit atop Java 8.

This is enough for two players to frolick around a shared world, and the Pi is around 30% CPU load most of the time (probably due to miserable IO throughput from a Class 4 SD card)

Also, I’ve set things up so that I have a backup on another box:

# m h  dom mon dow   command
@reboot cd /home/pi/minecraft && java -jar nukkit-1.0-SNAPSHOT.jar > /dev/null 2>&1
0 * * * * cd /home/pi/minecraft/worlds && git add . && git commit -a -m "snapshot" > /dev/null 2>&1
10 */4 * * * cd /home/pi/minecraft/worlds && git push origin master > /dev/null 2>&1

New Setup (2019)

Dockerized NukkitX atop Java 11, using the following Dockerfile:

FROM openjdk:11-jre-slim

# https://github.com/NukkitX/Nukkit
# wget https://ci.nukkitx.com/job/NukkitX/job/Nukkit/job/master/lastSuccessfulBuild/artifact/target/nukkit-1.0-SNAPSHOT.jar 
ADD ./nukkit-1.0-SNAPSHOT.jar /app/nukkit.jar

RUN useradd --user-group \
            --no-create-home \
            --home-dir /data \
            --shell /usr/sbin/nologin \
            minecraft

# Volumes
VOLUME /data /home/minecraft

# Ports
EXPOSE 19132

# Make app owned by minecraft user
RUN chown -R minecraft:minecraft /app

# User and group to run as
USER minecraft:minecraft

# Set runtime workdir
WORKDIR /data

# Run app
ENTRYPOINT ["java"]
CMD [ "-jar", "/app/nukkit.jar" ]

…and the following server.properties file:

#Properties Config file
#2019-05-01 09:32:12
motd=A Nukkit Powered Server
sub-motd=https://nukkitx.com
server-port=19132
server-ip=0.0.0.0
view-distance=10
white-list=off
achievements=on
announce-player-achievements=on
spawn-protection=16
max-players=20
allow-flight=off
spawn-animals=on
spawn-mobs=on
gamemode=0
force-gamemode=off
hardcore=off
pvp=on
difficulty=1
generator-settings=
level-name=world
level-seed=
level-type=DEFAULT
allow-nether=on
enable-query=on
enable-rcon=off
auto-save=on
force-resources=off
bug-report=on
xbox-auth=off
online-mode=off
public=on

See Also: