Skip to content

Preset Packages

Preset packages allow admins to quickly send pre-configured item and Pokemon bundles to players.

Presets are JSON files stored in config/courier/presets/. Each preset defines:

  • Display information (icon, name, description)
  • Items to include
  • Pokemon to include
config/courier/presets/
├── starter_kit.json
├── welcome_gift.json
├── event_reward.json
└── your_custom_preset.json
config/courier/presets/example.json
{
"id": "example_preset",
"displayItem": {
"stack": { "id": "minecraft:chest" },
"name": "<gold>Example Package"
},
"displayName": "<gold>Example Package</gold>",
"description": [
"<gray>This is an example preset",
"<yellow>Contains cool stuff!"
],
"items": [
{ "stack": { "id": "minecraft:diamond", "count": 5 } },
{ "stack": { "id": "minecraft:golden_apple" } }
],
"pokemonSpecs": [
"pikachu level=10",
"eevee level=5 shiny=yes"
]
}
FieldTypeDescription
idstringUnique identifier for the preset
displayNamestringName shown in mail (MiniMessage)
FieldTypeDefaultDescription
displayItemConfigurableItemPaperIcon shown in GUI
descriptionstring[][]Description lines (MiniMessage)
itemsConfigurableItem[][]Items to include
pokemonSpecsstring[][]Pokemon specs to include

The displayItem field uses Ceremony’s ConfigurableItem format:

"displayItem": {
"stack": {
"id": "minecraft:nether_star",
"count": 1,
"components": {
"minecraft:enchantment_glint_override": true
}
},
"name": "<gold><bold>Special Reward",
"lore": [
"<gray>A very special package",
"<yellow>Open with care!"
]
}

Use Minecraft’s component format for special items:

"stack": {
"id": "minecraft:diamond_sword",
"components": {
"minecraft:enchantments": {
"levels": {
"minecraft:sharpness": 5,
"minecraft:unbreaking": 3
}
},
"minecraft:custom_name": "\"Epic Sword\"",
"minecraft:lore": ["\"A legendary blade\""]
}
}

Items use the same ConfigurableItem format:

"items": [
// Simple item
{ "stack": { "id": "minecraft:diamond", "count": 10 } },
// Item with custom name
{
"stack": { "id": "minecraft:golden_apple" },
"name": "<light_purple>Mystical Apple"
},
// Item with enchantments
{
"stack": {
"id": "minecraft:diamond_pickaxe",
"components": {
"minecraft:enchantments": {
"levels": { "minecraft:efficiency": 5, "minecraft:fortune": 3 }
}
}
},
"name": "<aqua>Miner's Dream",
"lore": ["<gray>Digs through anything"]
}
]

Pokemon are specified using Cobblemon’s property string format:

"pokemonSpecs": [
"pikachu",
"charizard level=50",
"eevee level=10 shiny=yes",
"bulbasaur level=5 nature=adamant",
"mewtwo level=100 shiny=yes ability=pressure"
]
PropertyExampleDescription
levellevel=50Pokemon level
shinyshiny=yesShiny variant
naturenature=adamantPokemon nature
abilityability=staticSpecific ability
gendergender=femaleGender
formform=alolanRegional form
config/courier/presets/starter_kit.json
{
"id": "starter_kit",
"displayItem": {
"stack": { "id": "minecraft:chest" },
"name": "<gold>Starter Kit"
},
"displayName": "<gold>Starter Kit",
"description": [
"<gray>Welcome to the server!",
"<yellow>Here's some gear to get started."
],
"items": [
{ "stack": { "id": "minecraft:iron_sword" } },
{ "stack": { "id": "minecraft:iron_pickaxe" } },
{ "stack": { "id": "minecraft:iron_axe" } },
{ "stack": { "id": "minecraft:bread", "count": 16 } },
{ "stack": { "id": "minecraft:torch", "count": 32 } }
],
"pokemonSpecs": [
"bulbasaur level=5",
"charmander level=5",
"squirtle level=5"
]
}
config/courier/presets/event_reward.json
{
"id": "event_reward",
"displayItem": {
"stack": {
"id": "minecraft:dragon_egg",
"components": {
"minecraft:enchantment_glint_override": true
}
},
"name": "<gold><bold>Event Reward"
},
"displayName": "<gold><bold>Event Reward",
"description": [
"<rainbow>Congratulations!",
"<gray>Thank you for participating!"
],
"items": [
{ "stack": { "id": "minecraft:diamond_block", "count": 3 } },
{
"stack": { "id": "minecraft:netherite_ingot" },
"name": "<gold>Reward Ingot",
"lore": ["<gray>A token of appreciation"]
}
],
"pokemonSpecs": [
"mew level=50 shiny=yes"
]
}
config/courier/presets/vote_reward.json
{
"id": "vote_reward",
"displayItem": {
"stack": { "id": "minecraft:emerald" },
"name": "<green>Vote Reward"
},
"displayName": "<green>Thanks for Voting!",
"description": [
"<gray>Your vote helps us grow!",
"<aqua>Here's a small thank you."
],
"items": [
{ "stack": { "id": "minecraft:emerald", "count": 5 } },
{ "stack": { "id": "minecraft:experience_bottle", "count": 10 } }
],
"pokemonSpecs": []
}
  1. Create the preset file

    Create a JSON file in config/courier/presets/

  2. Reload presets

    /mailadmin reload
  3. Verify it loaded

    /mailadmin listpresets
  4. Send to players

    /mailadmin sendpreset <player> <preset_id>

Naming

  • Use descriptive IDs (vote_reward, not vr1)
  • Match filename to ID
  • Use underscores, not spaces

Display

  • Use colored display names
  • Add helpful descriptions
  • Choose recognizable icons

Balance

  • Consider economy impact
  • Don’t overload with items
  • Test Pokemon levels

Organization

  • Group related presets
  • Use consistent naming
  • Document special presets

Use the interactive builder to create preset configurations: