Repository navigation
Multi Version Protocol
PocketmineMV includes core-level memory and CPU optimizations designed for high-player servers.
| Aspect | Stock PMMP 5 | PocketmineMV |
|---|---|---|
| View Distance Chunks | Kept active in server RAM indefinitely | Unloaded from RAM after sending bytes to client |
| Memory Scaling | Exponential RAM usage on view-distance > 8 | Up to 90% RAM reduction on high render distances |
| Ticking Chunks | Ticks all chunks in render distance | Ticks only chunks within simulation-distance
|
| Command Resolution | Strict case-sensitive matching | O(1) Case-insensitive command resolution map |
In stock PMMP 5, every chunk within a player's view distance is loaded into server memory and kept active in RAM. On high render distances (e.g. 16-32 chunks), server RAM scales exponentially.
PocketmineMV implements a non-ticking chunk unloading system (ported from Altay PR #14 by remminiscent).
- Simulation Distance: Chunks within simulation distance tick normally (entities, redstone, crop growth, block updates).
- View Distance Chunks: Chunks outside simulation distance but inside render distance are loaded, sent to the client for rendering, and immediately dropped from server memory if they have no active ticking requirement.
This reduces active server chunk RAM usage by up to 90% when render distance is higher than simulation distance, allowing players to have high visual render distances without causing Out-Of-Memory (OOM) crashes.
Stock PMMP command resolution relies strictly on exact lowercased string matches. Commands typed with uppercase characters (e.g. /GAMEMODE CREATIVE, /Give @p diamond) fail or require plugin wrappers.
PocketmineMV implements case-insensitive command matching in CommandMap and Player::onCommand(). Lookups are normalized using lowercasing maps in O(1) time without wasting CPU or failing valid commands.
To get maximum memory savings with PocketmineMV, configure separate view and simulation distances in pocketmine.yml:
player:
# Distance in chunks around the player that will be ticked
simulation-distance: 4
# Visual render distance sent to client
view-distance: 12Only 4 chunks radius around players will tick in RAM, while 12 chunks radius will render visually on clients without consuming server memory.