🎨 ResourcePackPipeline is a PocketMine-MP virion (PM4 / PM5) that automates resource pack management at server startup.
It provides a smooth and reliable pipeline:
👉 Scan → Zip (.mcpack) → Load → Log
All of this happens without breaking or removing resource packs from other plugins (like InventoryUI).
✅ Automatic scan of resource packs
📦 Automatic .mcpack generation (one per pack)
🔁 Safe loading into PocketMine’s ResourcePackManager
🛡️ Keeps existing resource packs untouched
❌ Prevents duplicate pack loading
🎨 Clean & colorful startup logs
⚙️ Compatible with PocketMine-MP 4.x & 5.x
📚 Distributed as a virion (embedded library)
Resource packs must be placed inside resources/packs/ in the plugin using this virion.
resources/
└── packs/
├─────── PackOne/
├── manifest.json
└── textures/
└── ...
├─────── Packtwo/
├── manifest.json
└── textures/
└── ...
📝 Notes:
- 📦 Each folder inside
packs/represents one resource pack - 📄
manifest.jsonmust be at the root of each pack - 🎧 Standard Bedrock folders (
textures,sounds, etc.) are supported - 🧰 Each pack is automatically zipped into a
.mcpack
Inside your plugin:
use resourcepack\pipeline\ResourcePackPipeline;
public function onEnable(): void{
$pipeline = new ResourcePackPipeline($this, $this->getResourceFolder());
$pipeline->scan("packs/");
$zips = $pipeline->zip();
$pipeline->load($zips);
$pipeline->log();
}