Minecraft On OCI Arm (Plus)

Over the weekend, I took some inspiration from a few different sources and put this together in action. Taking what Todd Sharp has mentioned on his blog (here) and what I’ve been doing with my #DaysOfArm article series (most recently here) and some of the things that I’ve been doing at home with learning how to code – then this is what’s been able to be achieved and some learnings and differences that I’ve taken with running Minecraft (on Arm).

I’ve been aware of Minecraft for a few years and the tech stack has changed over that time. And the purpose of why I even considered installing and developing with Minecraft was not about the playing but learning and extending it for different purposes.

I really like what Todd’s done. I use a different stack. I use spigot for my Minecraft Java Edition server implementation (here). There are different Minecraft server implementation out there. I’ve used this for a while (even when it was called CraftBukkit) because a) it was Java, b) it used Java Maven based projects to build plugins and c) there was already a plugin called RaspberryJuice that enabled python programming to interact with the world. Having this kind of capability meant that I can do some cool things.

As of writing this, I would suggest a couple of things.

  • Run Java 16
  • Also needs git to be installed
  • Run the latest version of spigot which is v1.17

On Oracle Cloud Infrastructure, if you provision an Oracle Linux 7.9 image on Arm, then you can do the following:

$ sudo yum update
$ sudo yum remove python36-pyyaml.aarch64
$ sudo yum install git
$ sudo yum install jdk-16.0.1.0.1.aarch64

The main difference between the Microsoft download this one, you use the server from the ground up. You download the BuildTools.jar from their Jenkins server (here) and you build it. Once you’ve downloaded it you can build it.

$ java -jar BuildTools.jar --rev 1.17

This will build the whole server and you get a JAR file that you can run which will behave the same way as the official download from Minecraft site.

$ java -Xmx2G -jar spigot-1.17.jar

This will start the server in gui mode so you can run operator commands. You can run the above with the additional parameter nogui (if you want to run the server as a service).

From here, this is where I still bringing my other thoughts and comments I would suggest a few things to manage your Minecraft server.

Lock down the access

Here’s a couple of different options that could be worth considering.

  • Use Security Lists in Oracle Cloud to narrow the IP addresses that can access this server. If you know your IP address, restrict the access.
  • Use SSH Tunnelling into your Oracle Cloud VM.

If you want some help with these options, let me know. And there are likely to be other methods, but I haven’t tried them.

Lock down the server itself

Explore the use of permissions and whitelist and ops (which is who can be an operator). Here’s a couple of references to help manage your server.

  • Minecraft server.properties reference (here)
  • Command Operator reference (here)
  • Command Whitelist reference (here)
Explore Extensions / Plugins

This is where things can be quite fun. Here’s a few that I’ve experimented with from (here).

  • BungeeCord (here) – this server allows you to jump between Minecraft servers and acts as a proxy
  • RaspberryJuice (here) – this plugin allows you to program using Python against the server itself acting as that user.
  • Geyser / Floodgate (here)- this plugin allows you to authenticate using a Microsoft / XBox account (users that have a Mojang Account pre-dating Dec 2020 use the original authentication in Java Edition)

Like most things in terms of plugins, be aware of what they do. They are installed on the server and have access to your VM within the context of your Minecraft server.

If you are interested in building your own plugin, then have a look (here) as a tutorial of bootstrapping your developer environment. And there are Javadocs too for the plugin (here).

Over the next little while, I’ll build out a terraform script similar to what I did for the OCI Arcade to get this up and going.

Author: Jason Lowe

I am passionate about how organisations adopt IT quickly and sustainably to achieve a specific and measurable outcome. This thinking is supported through lean IT practices in operational support and project delivery, and adopting these practices with Oracle technologies by creating sustainable platforms. I'm also interested different perspectives and drivers - from enterprise to start-ups, academia to commercial to public sector, cost-sensitive (risk) to value-driven (reward) - all of which influences decisions that organisations make. I have a passion for community and have been called "a connector" - meeting new people that are trying to solve valuable and hard problems and connecting them with others that can validate and help realise their full potential. I've supported different organisations like TADHack and Hacking Health as a global organiser. I'm is a persistent blogger on medium.com and redthunder.blog and on LinkedIn - https://www.linkedin.com/in/lowe-jason #CommunityMatters #ItTakesAVillage

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s