Skip to content

Multi Version Protocol

vape edited this page Aug 11, 2026 · 1 revision

Performance & Memory Optimizations

PocketmineMV includes core-level memory and CPU optimizations designed for high-player servers.

Architecture: Stock PMMP Chunk Memory vs Non-Ticking Chunk Unloader

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

Non-Ticking Chunk Memory Unloader

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.

Case-Insensitive Command Resolution

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.

Recommended Server Configuration

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: 12

Only 4 chunks radius around players will tick in RAM, while 12 chunks radius will render visually on clients without consuming server memory.

Clone this wiki locally