
Building Custom Bedrock Servers with PocketMine-MP
"Custom server software for Minecraft: Bedrock, built from scratch in PHP, C and C++"
pmmp/PocketMine-MP · github.com
If you've ever wanted to run a Minecraft Bedrock server without being locked into vanilla survival, PocketMine-MP is exactly what you're looking for. It's free, open-source server software built in PHP that lets you create fully customized gameplay experiences through a plugin system. Instead of managing multiple server nodes, you can run 100+ players on a single instance with complete control over the rules.
What This Project Does
PocketMine-MP isn't a drop-in replacement for vanilla Bedrock. It's a blank slate. You start with a server engine and build out whatever you want through plugins. Want to run a creative-only server with instant teleportation? Done. Building a mini-games hub where players jump between game modes? PocketMine handles that. Need custom economy systems, permission hierarchies, or world management tools? The plugin ecosystem has you covered, and if something doesn't exist, you can write it yourself.
The engine supports multiple worlds running simultaneously, so players stay on your server while experiencing completely different gameplay modes. Everything gets managed from a command-line interface, with live admin controls while the server's running.
When You'd Need This
Here's the disclaimer upfront: this isn't for vanilla survival. If you want pure survival Minecraft with normal world generation and mob AI, use the official Bedrock server software instead. PocketMine strips out vanilla features like redstone mechanics, mob AI, and native world generation.
But if you're running a creative server, building an RPG experience, hosting mini-games, or creating something the vanilla game was never designed for, this is your toolkit. People use it for adventure servers where players follow scripted storylines. Others build competitive PvP arenas. Some run role-playing communities with custom lore and progression systems. The flexibility is the entire point.
You also get active development. New Minecraft Bedrock versions are typically supported within days of release, so you're never stuck on an old version waiting for compatibility updates.
Getting Started with Installation
Setting up PocketMine-MP is straightforward. The project provides pre-built PHP binaries so you don't have to compile anything yourself (though you can if you want). Start by downloading the latest recommended PHP binary from their releases page, then grab the PocketMine-MP PHAR file.
On Linux, it looks like this:
wget https://github.com/pmmp/PocketMine-MP/releases/download/5.42.1/PocketMine-MP.phar
wget https://github.com/pmmp/PHP-Binaries/releases/download/pm5-php-8.2-latest/PHP-Linux-x86_64.tar.gz
tar -xzf PHP-Linux-x86_64.tar.gz./bin/php7/bin/php PocketMine-MP.pharFirst startup takes a few minutes to generate config files and the default world. After that, you're in the server console where you can run commands, monitor players, and adjust settings on the fly.
They also maintain a Docker image if you'd rather containerize it, which makes deployment cleaner on cloud infrastructure. Windows and macOS users get batch files and PowerShell scripts instead of shell scripts, so the setup process stays consistent across platforms.
Core Features That Matter
The plugin API is the real engine here. It's well-documented and mature after over a decade of development. Want to hook into player movement events? Listen for block breaks? Trigger custom commands? Register new items with behaviors? The API covers all of it. Many plugin developers publish their work on Poggit, the community plugin repository, so you can find pre-built solutions before writing your own.
Multi-world support is genuinely useful. You can run a creative world, a survival world, and a mini-games arena all simultaneously on the same server instance. Players can teleport between them without disconnecting. That would normally require separate servers eating separate hardware, but here it's just different world folders.
Permission systems work out of the box. Assign players to groups, grant specific permissions to those groups, and build a hierarchy that works for your server's needs. A private creative server has different requirements than a public RPG with moderators, and the system adapts to both.
Performance is solid. The 3512-star repository reflects active maintenance, and real-world servers consistently run 100+ concurrent players depending on your hardware and what plugins you're running. That's not theoretical - it's what people actually report in production deployments.
Things That'll Trip You Up
First: don't expect vanilla features you didn't explicitly add. No redstone circuits. No mob spawning. No trees growing. Players fresh from vanilla Bedrock sometimes expect this to "just work," and it won't. That's not a bug - that's the design. Anything you want needs either a plugin or manual implementation.
Plugin conflicts happen. Two plugins fighting over the same events can cause weird behavior. Your best defense is installing plugins one at a time, testing thoroughly between additions, and checking the plugin's requirements and known incompatibilities before adding it to a live server.
Performance degrades nonlinearly with plugin count. Ten well-written plugins run smoothly. Thirty plugins written without performance in mind will tank your tick rate. If your server starts stuttering, the issue's almost always a poorly-optimized plugin, not PocketMine itself.
Updates require restarts. Unlike some games, you can't hot-reload Minecraft servers. Plan maintenance windows or use a proxy in front of your server so players can reconnect to a backup while you update.
What You Should Consider Instead
If you specifically need vanilla Bedrock, Microsoft maintains official server software. It's less customizable but requires zero configuration and zero plugin management.
For Java Edition, Spigot and Paper have larger ecosystems with more plugins and arguably easier setup for beginners. The Java server landscape is more mature simply because Java Minecraft has existed longer. But Java and Bedrock use completely different protocols, so this choice depends entirely on which version your players are using.
Some people use proxies like Bungeecord in front of multiple PocketMine instances to load-balance players across servers. That's an architecture question, not a software choice, and it's way outside scope here. Just know it's possible if you end up needing that scale.
Where to Dig Deeper
The official documentation is solid. GitHub issues are actively monitored, and the Discord community responds quickly to setup questions. If you're considering running a custom Bedrock server, spend an afternoon reading through the docs and poking around the Poggit plugin repository. That'll tell you whether PocketMine's philosophy aligns with what you're building.
Once you've got your server running, you can even create a custom MOTD to show in the server list, letting players know what kind of experience they're getting into. And when it comes time to build that perfect character for your adventure server, you might want to check out Minecraft skins to find something that fits your server's theme.
pmmp/PocketMine-MP - LGPL-3.0, ★3512

