As college students, this pool of stress had to be dumped somewhere. And what better place to do that than Minecraft PE. It’s a great choice (for us, anyways). Multiplayer, portable, can be LAN-only, and just chill.
The longer we played, the more obvious this specific problem is. Usually, we would play together when everyone was around. But what if someone was missing? What if the host was not around?
Thus the need for an always-available server. We could, in theory, just leave a sacrificial PC/phone, but then there’s electricity bills. Further, that would just be a waste of a gadget. Oh, and I have an extra Raspberry Pi 3.
Where this came from
Researching on the best software to use, I was really left with only two choices. PocketMine-MP and NukkitX. But then, developer activity and personal experience (the NukkitX generated world was quite bland and outdated) swayed me to PMMP.
The more I researched, the more I realized there was no proper guide for this. It was all bits and pieces of information, with errors on the Pi since the guides were meant for PCs.
The Thing (Installation Guide)
First problem: PocketMine-MP needs a 64-bit operating system. Raspbian and almost all others are 32-bit, and they will not work.
Error: PocketMine-MP is not supported on 32-bit systems.Error message encountered while compiling on 32-bit systems.
There are limited options, but the best I found is pi64 since this was legitimate Debian, not Arch or something.
Download the latest lite version. Simply uncompress pi64-lite.zip file and burn the .img file to a microSD card.
Once setup is done and you are logged in (
pi:raspberry), update the kernel using
pi64-update. You can then update the system using
sudo apt-get -y update && sudo apt-get -y upgrade. Reboot if necessary.
PHP 7.2 – Compile and Setup
Why do this manually? PMMP provides a script that automatically installs the PHP it needs. However, this is for x64 PCs and not for an ARM Raspberry Pi 3.
gcc: error: unrecognized command line option ‘-m64’Yeah, this isn’t x64. We’re ARM64.
We will need to compile PHP 7.2 with Zend Thread Safety (ZTS) and various extensions for PMMP. Later, we’ll compile and install
First, install the prerequisites. As of writing, the command below works.
sudo apt-get install wget git autoconf bison build-essential libssl-dev openssl libzip-dev libcurl4-openssl-dev libreadline-dev libyaml-dev libpng-dev libgmp-dev pkg-config
Grab the latest stable PHP source from php.net. At the time of writing, it’s 7.2.9. Extract,
cd into the extracted folder, then execute the
You can then
sudo make install. This will place the php binaries in
/usr/bin on install, which should be totally fine.
./configure --prefix=/usr --with-config-file-path=/etc/php/7.2/cli --with-config-file-scan-dir=/etc/php/7.2/cli/conf.d --disable-all --with-openssl --with-gmp --with-zlib --with-curl --with-pic --enable-phar --enable-ctype --enable-sockets --enable-shared=no --enable-static=yes --enable-shmop --enable-maintainer-zts --enable-pcntl --enable-mbstring --enable-calendar --with-tsrm-pthreads --enable-bcmath --enable-cli --enable-zip --enable-ftp --with-gd --enable-opcache=yes --enable-hash --enable-json make sudo make install
While you’re still in the PHP source directory, it would be a good idea to create the PHP configuration folders. After that, copy the template over.
sudo mkdir /etc/php/ sudo mkdir /etc/php/7.2/ sudo mkdir /etc/php/7.2/cli sudo mkdir /etc/php/7.2/cli/conf.d sudo cp php.ini-production /etc/php/7.2/cli/php.ini
PHP done. Next,
Phreads compile and install
Not much could be said about Pthreads in this context aside from it’s required by PMMP.
Clone the Pthreads Git repository, then
cd into it. Prepare to compile the extension by running
phpize. After that,
./configure and install.
git clone https://github.com/krakjoe/pthreads.git cd pthreads phpize ./configure make sudo make install
Once that’s done, edit
php.ini and add
extension=pthreads.so in there somewhere. I just placed mine near the top before the banner.
YAML Compile and Install
Again, nothing much to say. Go get the latest stable here. At the time of writing, it’s 2.0.2.
Extract the package.
cd into the extracted directory.
wget https://pecl.php.net/get/yaml-2.0.2.tgz tar xvf tar xvf yaml-2.0.2.tgz cd yaml-2.0.2/ ./configure make sudo make install
Once you’ve done everything properly, PocketMine should just launch without issues. With that said,
You may need to
chmod +x start.sh in case the script is not executable.
When you run it for the first time, a wizard should ask you to make basic configuration stuff like what language to use. Advanced config can be found on
mkdir pocketmine cd pocketmine wget https://github.com/pmmp/PocketMine-MP/releases/download/3.1.4/PocketMine-MP.phar wget https://raw.githubusercontent.com/pmmp/PocketMine-MP/master/start.sh chmod +x start.sh ./start.sh