Reference this skill when implementing storage in a Purpur-targeted plugin. Purpur does not add new storage APIs — all Paper storage mechanisms work identically. This skill documents the purpur.yml config file integration and cross-links to Paper storage guides.
When to Use This Skill
Reading Purpur-specific settings from purpur.yml
Storing plugin data on a Purpur server
Deciding between config, PDC, and database on Purpur
Purpur does not expose purpur.yml values through its API. If you need to read Purpur config values:
import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File;
// NOT recommended for production — Purpur may rename keys without notice
File purpurYml = new File("purpur.yml"); // server root, not plugin folder
YamlConfiguration purpurConfig = YamlConfiguration.loadConfiguration(purpurYml);
int afkTimeout = purpurConfig.getInt("gameplay-mechanics.afk-timeout", 0);
Warning: Reading purpur.yml directly is fragile and couples your plugin to Purpur's internal config format. Prefer storing your own settings in your plugin's config.yml and letting server admins cross-reference purpur.yml manually.
Common Pitfalls
Assuming a Purpur-only API for storage: There is none. Use Paper's APIs.
Reading purpur.yml directly in production: The file format may change across Purpur versions. Use your plugin's own config.yml for plugin settings.
Version Notes
Purpur 1.21.1: Storage APIs identical to Paper 1.21.1.
PersistentDataType.LIST (Paper 1.21 addition) is available in Purpur 1.21.1.
1---2name: storage-23description: Storage Skill — Purpur4---5# Storage Skill — Purpur67## Purpose8Reference this skill when implementing storage in a Purpur-targeted plugin. Purpur does not add new storage APIs — all Paper storage mechanisms work identically. This skill documents the `purpur.yml` config file integration and cross-links to Paper storage guides.910## When to Use This Skill11- Reading Purpur-specific settings from `purpur.yml`12- Storing plugin data on a Purpur server13- Deciding between config, PDC, and database on Purpur1415## API Quick Reference1617| Class / Method | Purpose | Notes |18|---------------|---------|-------|19| Same as Paper | All Paper storage APIs apply | `FileConfiguration`, `PersistentDataContainer`, HikariCP |20| `purpur.yml` | Purpur's server config | Not directly accessible via API — read via `config.yml` or own files |2122## Code Pattern2324All Paper storage patterns work unchanged on Purpur. See:25- [../../paper/storage/config-yml.md](../../paper/storage/config-yml.md) for YAML config26- [../../paper/storage/pdc.md](../../paper/storage/pdc.md) for PersistentDataContainer27- [../../paper/storage/database-hikari.md](../../paper/storage/database-hikari.md) for HikariCP + MySQL/SQLite2829### Reading `purpur.yml` from a Plugin (Advanced)3031Purpur does not expose `purpur.yml` values through its API. If you need to read Purpur config values:3233```java34import org.bukkit.configuration.file.YamlConfiguration;35import java.io.File;3637// NOT recommended for production — Purpur may rename keys without notice38File purpurYml = new File("purpur.yml"); // server root, not plugin folder39YamlConfiguration purpurConfig = YamlConfiguration.loadConfiguration(purpurYml);4041int afkTimeout = purpurConfig.getInt("gameplay-mechanics.afk-timeout", 0);42```4344> **Warning**: Reading `purpur.yml` directly is fragile and couples your plugin to Purpur's internal config format. Prefer storing your own settings in your plugin's `config.yml` and letting server admins cross-reference `purpur.yml` manually.4546## Common Pitfalls4748- **Assuming a Purpur-only API for storage**: There is none. Use Paper's APIs.49- **Reading `purpur.yml` directly in production**: The file format may change across Purpur versions. Use your plugin's own `config.yml` for plugin settings.5051## Version Notes5253- **Purpur 1.21.1**: Storage APIs identical to Paper 1.21.1.54- `PersistentDataType.LIST` (Paper 1.21 addition) is available in Purpur 1.21.1.5556## Related Skills5758- [../../paper/storage/SKILL.md](../../paper/storage/SKILL.md) — Storage overview and decision guide59- [../../paper/storage/config-yml.md](../../paper/storage/config-yml.md) — YAML configuration60- [../../paper/storage/pdc.md](../../paper/storage/pdc.md) — PersistentDataContainer61- [../../paper/storage/database-hikari.md](../../paper/storage/database-hikari.md) — Database setup62- [../OVERVIEW.md](../OVERVIEW.md) — Purpur platform setup
Run npx skillmds@latest add mrpippi/storage-2 in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Storage Skill — Purpur It is listed under Coding & Dev Tools on SkillMD.
This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
MrPippi (@mrpippi) published this skill. Their other Agent Skills are listed on their SkillMD profile.