My daughters have Raspberry Pi iv (8GB) desktop kits, which they utilize for online learning, during these times of pandemic. But they also utilise them as a personal computer for games, programming with Scratch, etc.

Hither, I'll comprehend a flake about how I set them up with Minecraft. I'thou going to beginning cover a bit of the land of Minecraft on the Raspberry Pi… every bit much equally I can gather.

If you desire, yous can skip alee to the Feature Presentation. The next couple of sections assistance to set up context for anyone in the time to come who needs to contrary-applied science my process or make improvements.

Land of Minecraft on RPi

Some time ago, I set my daughters up with Minecraft 1.12.two. I followed along with How to setup Minecraft i.12.one on Raspberry Pi 3, or perhaps another post like it.

Here's kind of how this setup process works, in a nutshell:

  1. Set upward Raspberry Pi graphics and driver dependency
  2. Install an old version of the Minecraft Launcher, from before Mojang updated to a version that no longer runs in Java
  3. Run the launcher to download the game files
  4. Try to run the game (become errors)
  5. Download some drivers from Dropbox, OptiFine mod, and a run script that glues this all together
  6. Edit run script with Mojang account, username and password
  7. Run Minecraft (at last)

LWJGL on ARM

Footstep five is the interesting function here. I've later learned that the driver existence downloaded from dropbox is for an armhf build of the native code dependencies for LWJGL.

Minecraft is written entirely in cross-platform Java, then information technology can theoretically run on any machine. But 3D graphics acceleration, sound, and input devices are all a little different on unlike hardware and operating systems. LWJGL is a drove of Open Source libraries that allow Minecraft to remain cross-platform without handling all of those differences themselves.

The trouble is, LWJGL did non support the ARM CPU architecture, used by the Raspberry Pi, until the nearly contempo version at the time of this writing.

And then how did they get this to work on the Raspberry Pi 2, 3, and 4? It's this magic file that is downloaded from Dropbox during the above procedure. It's a build of a now-older version of LWJGL, but as far as I've been able to find so far… no ane seems to know who congenital information technology or how they managed to do information technology.

Minecraft 32-flake Back up (discontinued)

The other thing to annotation here, is that Minecraft one.12.2 was the concluding version of Minecraft to support 32-bit operating systems. So if you were following this old ready of instructions to set up up Minecraft on the Raspberry Pi… yous wouldn't accept any of the multitude of features added to the game since September 2017.

The Raspberry Pi two'southward Cortex A7 was a 32-bit CPU, so on that hardware there was no other choice. But starting with Raspberry Pi hardware has been using a 64-bit Broadcom flake since the Raspberry Pi 3.

Unfortunately, upgrading a Linux distribution from 32-chip to 64-scrap is no modest task. And nosotros didn't meet a 64-bit base paradigm of the official Raspberry Pi OS until earlier this year. When I terminal checked in on information technology, this version was still Beta, with a long listing of known issues - ome of them pretty serious. I might take tried this version myself, only it wasn't something I'd put my daughters through.

In that location are other Linux distributions now available for the Raspberry Pi, though… and a few of them are ahead of the Raspberry Pi Foundation for 64-bit support.

Getting to 64-bit Minecraft on RPi

Selecting the Base of operations Image

Once I installed Minecraft i.12.2 on the Raspberry Pi ii for my daughters, I basically just fix it up and left information technology alone. Installing information technology initially was enough work and I didn't desire to hazard breaking it.

So the lack of updates never really hit me, until we got the Raspberry Pi iv. When I followed along on instructions for the RPi 4, I found they were all however installing 1.12.2, despite the latest version of Minecraft being ane.16.ten.

I wanted to fix this, but with 64-bit support being beta for Raspberry Pi Bone, I had to pick some other Linux distribution.

My choice of Ubuntu MATE was driven entirely by a different requirement, coming from the devices utilize for online learning…

Our school board was using Microsoft Teams for classes… and the only fashion I could become information technology to work on the RPi was to update to the latest version of Open Source Chromium. Almost all of the Linux distributions I checked were a major version or more behind the official Chromium version used to build Google Chrome. Only Canonical'due south builds of Chromium for Ubuntu seemed to be tracking shut enough to the latest version to support Microsoft Teams.

LWJGL for Arm64

I'm going to skip over some troubleshooting here, and jump to LWJGL. In-between selecting the base image and here, I backed-up and tried installing Minecraft with some variations on the tried-and-tested instructions. These did not work because the ARM build of the LWJGL binary from Dropbox was out-of-engagement compared to the latest LWJGL used by newer versions of Minecraft.

Then I backed-up again, and tried to install Minecraft the way yous would on whatever other Linux machine. That didn't work because the newer Launcher was no longer a Java programme, and wasn't built for ARM. In theory, you tin run the Java game without the Launcher, but there'southward no reasonable style to get all the files needed to run the game without information technology.

While trying to combine the 2 approaches, my Google Keywords striking upon this AskUbuntu mail.

This connected the dots to MultiMC - an Open Source implementation of the Minecraft Launcher. This somewhen solved both the Launcher trouble… and through a fork of the metadata for MultiMC it also gave a solution for downloading and using the arm64 binaries for the latest LWJGL version.

Feature Presentation

Hither's the actual instructions for repeating what I did to become Minecraft 1.16.1 working on the Raspberry Pi 4, with Ubuntu MATE. Thanks for hanging in, for anyone who read all of the higher up background. If you didn't… that's ok, as well. These instructions should exist pretty cocky-contained.

This tutorial is starting from a freshly-imaged SD card, from the Ubuntu MATE 20.04.1-beta2 image, with the offset kick setup completed, and all package updates applied.

I won't get into the instructions for installation here. Yous can find them on the Ubuntu MATE for Raspberry Pi project website.

Install Dependencies

The first few steps will be done from the Terminal. On a Ubuntu Desktop, you lot tin can bring it up any time with the shortcut keys Ctrl + Alt + T.

Commencement… install the package dependencies. This list includes everything for building the MultiMC launcher, and running Minecraft.

              sudo apt-get install \   build-essential \   cmake \   qt5-default \   qtbase5-dev \   zlib1g-dev \   libgl1-mesa-dev \   openjdk-8-jdk \   git                          

Build MultiMC from Source

Following along with the official MultiMC5 Build Instructions, here's what we're going to run from the concluding. I'm going to practise things slightly out of order to make it easier to follow in my breakdown for those who desire to know what's going on hither.

              mkdir ~/MultiMC cd ~/MultiMC git clone --recursive https://github.com/MultiMC/MultiMC5.git src mkdir build mkdir install cd build cmake -DCMAKE_INSTALL_PREFIX=../install \   -DMultiMC_META_URL:Cord="https://jjtech0130.github.io/meta-multimc/" \   ../src make -j4 brand install                          

If you lot just ran all that and don't intendance for a description, just skip ahead to running MultiMC.

  1. Create a new directory at /home/username/MultiMC, and set it as our working direcotry.
                                          mkdir ~/MultiMC  cd ~/MultiMC                                  
  2. Download the source code for the MultiMC launcher projection into /domicile/username/MultiMC/src. We utilize --recursive considering MultiMC uses git submodules, which are basically repositories within repositories. After cloning MultiMC, it does the aforementioned for all submodules.
                                          git clone --recursive https://github.com/MultiMC/MultiMC5.git src                                  
  3. Create a build directory for the all the files generated for the build process, and an install directory where the final plan will be installed, and where nosotros will run MultiMC from.
                                          mkdir build  mkdir install  cd build                                  
  4. Now we utilize cmake to generate all the build configuration files. This basically looks for all the dependencies we installed before and wires them up for the compiler step that comes subsequently. There's one notable addition hither:

    -DMultiMC_META_URL:STRING="https://jjtech0130.github.io/meta-multimc/".

    This overrides the URL where MultiMC volition fetch data about what versions of Minecraft exist, and where to download the files to install them. GitHub user JJTech0130 has done the heavy lifting of setting upward the overrides here to install LWJGL that were mentioned in the background above, so that we get LWJGL iii.2.3 instead of 3.2.2, with the ARM builds for Linux.

                                          cmake -DCMAKE_INSTALL_PREFIX=../install \    -DMultiMC_META_URL:String="https://jjtech0130.github.io/meta-multimc/" \    ../src                                  
  5. Finally, we compile MultiMC, and install it to /home/username/MultiMC/install.

Run MultiMC and Kickoff-Time Setup

Now that we've built MultiMC from source, we should accept a working copy that we can run on our Raspberry Pi's ARM processor. Y'all can at present run it on the command line, or create a card item for it. If you've followed along above, and there were no errors, there will be an executable at:

              /home/username/MultiMC/install/MultiMC                          

There's lots of screenshots coming up hither, following along the offset-time setup of MultiMC.

i. Language Option

Multi-MC has a wide-spread international customs that has contributed many translations of the interface text. Choose your preferred linguistic communication hither.

It probably goes without saying that I've chosen English language and the screenshots will reflect that.

MultiMC language selection dialog, showing a large collection of languages and a translation completion percentage.

2. Java Options

The second screen MultiMC will show on beginning run is for some Java options. If y'all've installed the openjdk-8-jdk packet during the dependencies step while nosotros were building MultiMC, and then all of the defaults should work for you here.

MultiMC java options dialog. Provides settings for the path to the Java executable, and the min and max memory allocation values for the JVM heap.

3. Analytics Disclosure

As any skilful data steward of analytics data should, the MultiMC developers are disclosing hither what information they are collecting, and giving you a chance to opt-out.

Sending them device information like - ahem - the fact that you're running on an ARM processor, will help them prioritize evolution and bugfix resource to the well-nigh commonly-used platforms.

MultiMC's analytics disclosure and opt-out screen.

iv. Main Page

Yay! We're done the first-launch wizard steps. At present we tin can start setting things up. The first affair I suggest yous practice is configure your Mojang account. Y'all'll need this for MultiMC to fix a session using your purchased Minecraft license.

MultiMC's main page, with the Profiles menu open to Add Account.

five. Add together Business relationship

The main page's profiles menu will have you to the Accounts section of the MultiMC settings window. Y'all tin can utilise this page to manage multiple Mojang accounts.

MultiMC's Account settings page, where you can manage your Mojang account info.

If you oasis't already purchased Minecraft, become do that. This tutorial is not a guide on how to pirate Minecraft, nor would I disregard doing then. Your coin helps to pay for new Minecraft features and bugfixes. And while I'm not holding my breath… peradventure anytime we'll get an official Arm64 build of Minecraft if enough paying customers are already running information technology.

Click "Add" on the right to get the dialog where yous can enter your e-mail and password.

Add Account dialog, with email and password fields for Mojang login credentials.

Once you've entered your account info, we're done in this settings window, and y'all may close it.

6. Add Instance

Every bit the name suggest, MultiMC is designed to run multiple copies - or instances of Minecraft. We're not necessarily using information technology for that purpose, but we'll need to set up at least one.

Click the "Add Case" button on the meridian-left of the main folio.

The Add Instance button on the top-left of the main page will open the Add Instance dialog window.

This will open a dialog where we can choose from some options for our game installation.

The Add Instance dialog without any changes made to the defaults.

The "name" field defaults to the version number, and is also the directory name - and what you'll call it from the command line, if yous want to launch direct into Minecraft without opening the MultiMC GUI.

I personally called my case "minecraft", since I'm only running one.

Y'all tin as well pick a specific version of Minecraft to run, hither. I have only tested this with version i.16.1. Versions that depend on a version of LWJGL other than the one that JJTech1301 configured for us in the forked Meta repository may not piece of work correctly at this time.

Click "Ok" to create the example.

Notation: At the time I'm writing this, the latest version of Minecraft is i.16.iii. So you may detect that the latest version here is a fiddling out-of-date. That's because nosotros're using a fork - or copy, with changes - of the official MultiMC Minecraft release meta-information in order to become our arm64 build of LWJGL for the Raspberry Pi.

Unforunately, these meta-data files are getting a little backside on that fork. I'one thousand personally hoping to spend some time on getting these updated, or getting the LWJGL changes made bachelor on the main co-operative of MultiMC, merely at the moment nosotros will need to take being a fiddling backside. At least we're non on 1.12.ii anymore like we were on Raspberry Pi Bone.

7. Launch Minecraft

Back on the primary folio again, we should see an icon for our new instance of Minecraft. With it selected, click "Launch" from the menu on the correct-hand side of this main page.

The main page again, this time populated with our new instance of Minecraft. The right-hand menu now has some options enabled for working with our instance, including the Launch button to start a game.

A series of progress bars should popular up, as MultiMC downloads content from Mojang's servers. This is the main matter that nosotros needed MultiMC to exercise. This is what Mojang's Launcher needed to exercise for the states, but they don't provide an arm64 build.

A progress bar showing MultiMC downloading the Minecraft asset files.

If everything goes well, the progress confined should be followed by this cute Mojang-branded loading screen.

A progress bar showing MultiMC downloading the Minecraft asset files.

If they did non, you will probably get a observe that suggests you wait at the logs to see why Minecraft exited suddenly. Unfortunately, I don't have the capacity in writing those article to cover troubleshooting. If you encounter whatsoever errors up to this point that you cannot troubleshoot yourself, head over to the MultiMC discord community. There is a link for that on the MultiMC projection website.

They're a helpful agglomeration of volunteers, and helped me get equally far as I did to write this article. Consider altruistic while y'all're there. They really are dedicating a lot of time and technical resources to keeping this project running, and no modest office of that goes to supporting and troubleshooting for users.

eight. Minecraft Video Settings

Nosotros should non have Minecraft running, and open to the main card. From hither, click "Options…".

The Minecraft main menu screen.

Adjacent, select "Video Settings" from the left column.

The Minecraft options menu. The video options button is in the left column.

Before starting a game, you will demand to update the video settings. Even with the new 8GB models of the Raspberry Pi iv Model B, the hardware is severely nether-powered for the default video settings.

The Minecraft video options screen with all of the options turned down to minimum quality, in order to improve performance on the Raspberry Pi's weak hardware.

The prototype beneath shows the settings I've used. Basically… just plow everything down to the lowest setting. The ane other setting I use is "Fullscreen: ON", but it was difficult to take a screen capture in fullscreen.

ix. Performance Expectations

The Raspberry Pi is admittedly not a high performance game system. Information technology volition run Minecraft Coffee Edition… simply non at a very high resolution or frame rate.

Below is a screen capture of the "F3" debug menu running with Minecraft in a pretty small window.

The Minecraft debug text overlay, showing Minecraft running at 24 frames per second.

I've found that 20 FPS is fairly normal, one time the game is loaded and running… just when it showtime starts upward, v-10 FPS is pretty common. Entities that take a little more functioning to render, like Animals and Monsters will besides eat at the performance a little while on-screen.

Using the OptiFine modernistic may aid amend performance. MultiMC has a wiki page about OptiFine, simply this seems to exist out of date. Some data I was reading in their GitHub issues suggests that contempo versions have conflicting requirements compared to the Wiki instructions.

Thank Yous

Cheers for taking the fourth dimension to read this. At the time I wrote this, I could not find comprehensive instructions on how to run Minecraft versions above 1.12.2 on the Rasperry Pi 4… and so I hope this helps some people get more out of their Raspberry Pi.

I'd besides like to thank the MultiMC team for assist troubleshooting my installation, and JJTech0130 on GitHub for doing the heavy lifting of getting LWJGL arm64 builds to work with MultiMC.