PocketMine-MP, where I started with code.
Before the GitHub organizations, the piles of repositories and this personal website, there was a Samsung phone running a Minecraft Bedrock server at home, and a kid editing plugins because the server could not simply look like everyone else’s.
If you read this website for long enough, PocketMine-MP starts showing up everywhere. In the about page. In the GitHub corner. In organizations like NhanAZ-Plugins, NhanAZ-Libraries, pm-pl and PMMPVN. In stories about Minecraft, open source, archiving community resources and the small tools I still build for fun.
The reason is simple. PocketMine-MP is almost the root of everything I do with code.
I played Minecraft first. Only after that did I start wondering how to run servers. It was not fancy. I once hosted a server on my mother’s Samsung phone and left it running like a tiny server at home. Later I became staff on a few servers, watched communities being run, watched plugins working, watched errors appear in the console, and started asking what those things were made of.
That led to translating plugins into Vietnamese, editing config, changing a few lines in plugin.yml, even changing author fields in the clumsy way a younger me thought was harmless. It is not exactly something to brag about, but it is true. Those awkward little edits became the first door into understanding authorship, other people’s code and why writing something properly feels better than renaming someone else’s file.
By ninth grade, I had already decided that Information Technology was the path I wanted. Not because of a career talk. Because of Minecraft Bedrock servers, PocketMine-MP plugins and the feeling of fixing a bug, restarting the server and seeing it finally run.
For me, PocketMine-MP is not only server software. It is where I learned to open things up and look inside.
What PocketMine-MP is
PocketMine-MP is open source server software for Minecraft Bedrock Edition. It is written mostly in PHP, with parts in C and C++. The main repository describes it as Bedrock server software built from scratch, not a modified copy of Mojang’s official server.
In simpler words, the client is still Minecraft Bedrock, but instead of connecting to Mojang’s Bedrock Dedicated Server, players connect to a server implemented by PocketMine-MP. PMMP handles networking, worlds, players, commands, events, items, blocks, entities and the plugin API.
This is why PMMP is not a vanilla server. It is strong when you want custom servers, minigames, lobbies, ranks, coins, forms, kits, quests and weird systems invented by server owners who should probably be asleep. But if the goal is a survival server that behaves as close to vanilla Bedrock as possible, PMMP is usually not the easiest path.
The README says this directly. PMMP lacks many vanilla game features, including vanilla-style world generation, redstone, mob AI and other gameplay mechanics. Plugins can fill some gaps, but they do not turn PMMP into Mojang’s server.
Why PHP appears here
PHP sounds odd next to game server work. That oddness is part of why PMMP became so easy for small server owners to stumble into. Install the server, download a plugin, open a file, change a few lines, reload, get yelled at by the console, fix it, repeat. That loop is fast.
Technically, PMMP is not just loose PHP files. It has its own PHP runtime, a server loop, events, commands, permissions, a scheduler, world providers, a network layer, async tasks and an API for plugins to hook into. Plugins are commonly packed as phar files, describe themselves in plugin.yml, and are loaded when the server starts.
Plugin developers usually touch onEnable(), listeners, event priority, commands, config files, repeating tasks, player data, forms, worlds, items and inventories. Beginners can start with one tiny event. Serious servers eventually run into ticks, memory, async data work, caching and the one plugin that makes everything breathe through a straw.
PMMP uses threads too, but carefully. Its documentation explains that PHP data structures usually need to be copied between threads. So threading is useful for work such as world generation, lighting, network compression, some internal networking work and cURL requests. Moving work to a thread does not magically make a server faster. Sometimes it just makes the bug more creative.
The network layer is where the sweat lives
Bedrock uses UDP and a RakNet-related layer. In the PMMP ecosystem, RakLib provides the small RakNet subset needed for Pocket Edition and Bedrock servers. Above that sits BedrockProtocol, a PHP implementation of Minecraft Bedrock packets.
That sounds clean until Bedrock changes protocol. Packets change. Fields change. Order changes. Behaviour changes. Sometimes the change is small. Sometimes it feels like Bedrock is politely reminding server developers that peace was never part of the deal.
Inside PMMP, the pocketmine\network\mcpe namespace is marked internal. It is not protected by the API version system. Plugins reaching into that area have to accept that one update can break them without warning. This is the line between using the API and touching server organs.
The plugin API is why PMMP lasted
A blank PMMP server is not the whole story. The reason it lasted is the plugin API and the plugin community around it.
Plugins can listen for joins, chat, block interactions, deaths, respawns, commands, permissions, inventory changes, items, forms, scheduled tasks and data storage. With that, an ordinary server can become a lobby, prison, skyblock, faction, minigame, survival server with custom rules or a very specific experiment for one community.
Poggit is a key piece of that ecosystem. For server owners, it is where many plugins are found and downloaded. For developers, it builds phars from GitHub, checks some things and makes releases less manual. Virions are small plugin libraries bundled at build time so code can be reused without making server owners manage dependencies like a traditional PHP app.
DevTools is another familiar tool. It can generate plugin skeletons, load folder plugins during development, build phars and provide a few helper commands. ExamplePlugin is a small modern example for people who need to see how a plugin is shaped.
A short history of PocketMine and PMMP
PocketMine-MP began with Shoghi Cervantes, also known as shoghicp. It came from the Minecraft Pocket Edition era, when Bedrock looked very different from what it is now. The need was clear. People wanted private servers, plugins, customization and a way to run their own communities.
In late 2015, according to PMMP’s own history page, Shoghi had to stop developing PocketMine-MP due to a conflict with his work at Mojang. The problem was bigger than one developer stepping away. Old infrastructure such as the GitHub organization, forum and website depended on him, so the remaining team could not keep everything moving normally.
In September 2016, former PocketMine team members and Dylan, known as dktapps, created the PMMP organization to continue the project. That is when “PMMP” became more than a casual abbreviation. They built a new GitHub organization, forum, website and eventually made pmmp.io the project’s new home.
In 2017, Shoghi recognized PMMP as PocketMine’s successor and redirected parts of pocketmine.net to pmmp.io. By then, PMMP already had enough of its own history, so the team kept the PMMP organization instead of moving back to the old PocketMine one.
This is one of the open source lessons I care about. A project is not only code. It is infrastructure, access, reviewers, forums, domains, community memory and the trust that someone will still be around when the next game update breaks things.
The Dylan years
If Shoghi is the name tied to early PocketMine, Dylan, or dktapps, is impossible to separate from modern PMMP. The public GitHub traces are obvious. Dylan is the largest contributor in the current repository, ahead of shoghicp by commit count.
Dylan did not only write code. He kept the project’s rhythm, reviewed changes, designed APIs, handled Bedrock updates, held code standards, managed the community and did a lot of work most users never see. That invisible work is what keeps an open source project from becoming a beautiful but frozen repository.
In March 2024, Dylan opened the issue “I'm retiring”. It was long and unusually honest. He said he would step down from PocketMine-MP, move on from Minecraft, and that the future of the project was uncertain. He also said he did not expect anyone to replace him as a “benevolent dictator”. If PMMP survived, it would be because of team effort.
He also named people who had been given access to maintain future game updates, including IvanCraft623, ShockedPlot7560, TobiasGrether, dries-c and TwistedAsylumMC. Reading that makes it easier to understand why the community sometimes feels that PMMP is narrower, slower and less carried by one hyper-active person than before.
Where PMMP stands now
Based on public sources checked on 30.06.2026, PocketMine-MP is still alive. The newest version I checked is 5.44.2 for Minecraft Bedrock 1.26.30. The repository still has recent commits, issues, open pull requests, docs and generated API documentation.
But “alive” does not mean it has the same energy as before. The project is older, heavier and harder to change. It is not a playground where every large idea can be thrown in and merged quickly. The core is a foundation for many servers, so every change carries compatibility, review and maintenance cost.
On pull requests, the current CONTRIBUTING document still says PocketMine-MP accepts code through GitHub Pull Requests. Small fixes can be submitted directly. Larger changes should go through a Change Proposal first. Reviews happen when maintainers are available, and the document says waiting a long time is possible.
So if someone says “it is hard to get a PR into PMMP now”, I understand the feeling. But I would not write that the project has closed PRs, because the official text does not say that. A fairer reading is that PMMP still accepts contributions, but the door into core is narrow, standards are high, reviewers are limited and large changes need a clearer process.
Why PMMP appears so much on this website
Because almost every branch of my work grew from it.
NhanAZ-Plugins is where I keep PocketMine-MP plugins I wrote or touched. NhanAZ-Libraries holds virions and small libraries. pm-pl came from the fear that community plugins might disappear, authors might delete repositories, Poggit might go down, or old links might stop working. PMMPVN is a piece of the Vietnamese PocketMine-MP community I started in 2019.
Even later web tools and vibe-code projects still carry PMMP’s shadow. glyph is one example. It is about Minecraft Bedrock, resource packs, custom emojis and a real need from server developers. I made that tool from the same old fear. What if a useful resource disappears one day?
The habits of saving repositories, forking, archiving, writing tools, making static websites, collecting documentation and leaving notes all came from those server days. The feeling of “if I do not keep this, it may disappear” followed me from PMMP to GitHub, open source and this personal site.
The Samsung phone and the longer road
Looking back, it is a little funny. A kid plays Minecraft, borrows his mother’s Samsung phone to host a server, becomes staff, learns how players behave, handles server drama, backs up worlds, installs plugins, then slowly learns how to edit plugins.
At first, I did not call that programming. I only wanted the server to behave the way I imagined. I wanted English text translated into Vietnamese. I wanted a plugin to stop throwing errors. I wanted a command to work differently. I wanted my server to have something of its own.
Those small needs made me learn. Not for exams. Because if I did not learn, the server would not run. If I did not understand code, I could only wait for someone else to fix things. After every red console line, I wanted to be a little less helpless next time.
By the time I had to choose a field, Information Technology did not feel like a strange option. It felt like a path that had quietly opened years earlier, starting with Minecraft, servers, plugins and a phone left running overnight.
PMMP is not perfect, but it is open enough
PocketMine-MP has limits. It is not vanilla. It has gameplay gaps. Plugins can age quickly. Major API changes force plugin updates. Touching internal network code is accepting breakage. The community has noisy seasons, quiet seasons and tired seasons.
But PMMP is open enough for a beginner to step in. Open enough to read code. Open enough to write a first plugin. Open enough to show that servers are not magic. Open enough for a kid running a server on a phone to realize software is built by real people, with real bugs, real limits and very real debug nights.
So if you ask why PocketMine-MP appears here so often, the answer is that I do not want to cut off the root. Many things I do now look like web work, GitHub, open source or AI, but the old thread is still there. It starts with Minecraft Bedrock. Then PocketMine-MP. Then plugins. Then code.
Places worth reading next
- PocketMine-MP official website for the current overview, docs, API docs, Discord and Poggit.
- The pmmp/PocketMine-MP GitHub repository for README, license, changelog and source code.
- PMMP’s page on PocketMine versus PMMP for the transition from old infrastructure to the PMMP organization.
- dktapps’ “I'm retiring” issue for Dylan’s own context on stepping back.
- PocketMine-MP contribution guide for how the project describes PRs, reviews and Change Proposals.
- PMMP’s threading in PHP document for why threads in PMMP are not a magic speed button.
- The network namespace note for why Bedrock protocol internals are risky for plugins.
- NhanAZ - 30.06.2026