搭建 MCPE 服务器

目前搭建 MCPE 服务器的方法主要有两种:PocketMine-MPNukkit。前者基于 PHP,而后者基于 Java。
无论选择哪一种方法,都要确保游戏客户端和服务器端均是最新版本。如果版本不匹配,可能造成无法连接等问题。

PocketMine-MP

运行 PocketMine-MP 需要 PHP7 环境和大量的拓展库,例如 php-leveldbyaml 等。即使你已经通过 brewyum 等包管理工具安装了 PHP,也可能无法正确启动服务器 —— 它们一般是不会自带这些拓展库的。为了免去手动编译安装拓展的麻烦,比较简单的解决方法是使用 php-build-scripts。它会编译出带有所有必要的拓展库的 PHP,供 PocketMine-MP 使用,并且不会与系统原有的 PHP 环境冲突。比如在 Mac 下,执行

1
2
3
git clone https://github.com/pmmp/php-build-scripts.git
cd php-build-scripts
bash compile.sh -t mac64 -l -j4 -f

即可编译安装 PHP(Linux 将参数对应改为 -t linux64 即可)。
完成后,再执行 bash installer.sh,就会自动下载 PocketMine-MP.phar 等必要程序。最后,执行 bash start.sh 就可以运行了,接下来根据提示进行配置即可。这种方式非常方便,只要记得使用 screen,然后等上几分钟就行。更多配置可以参考其官方文档。

Nukkit

Nukkit 的原版似乎已经失去维护,其官方网站 Nukkit.io 也无法打开。这里介绍的是一个 fork 出的分支。
Nukkit 需要 Java8 环境,如果没有安装,可以前往 ORACLE 官网下载。运行方式也很简单,克隆这个仓库后,依次执行:

1
2
3
git submodule update --init
mvn clean package
java -jar Nukkit.jar

当然,在其新维护者的官网上也有发布的版本,无需自行编译 Jar 文件,可以前往 NukkitX 查看。
Nukkit 的主要问题是不支持 leveldb,也就是无法打开较新的 MCPE 存档,只支持 MC 存档和上古的 MCPE 存档,因此建议使用第一种方法。

客户端

PocketMine-MP 和 Nukkit 启动后默认都会监听 19132 端口,配置服务器时填写局域网或公网 IP / 域名即可。更多的设置项可以参考它们的文档。

更多

转换存档的格式可以用这个脚本:LevelDb2Avnil,不过笔者测试发现其兼容性存在问题,请谨慎使用。


本文更新于 2019 年 9 月:
笔者发现了一个更好的转换存档的方式,请看转换 Minecraft 存档格式