Packages
Packages
Section titled “Packages”Attach items, Pokemon, currency, and commands to any mail. When the recipient claims the package, everything lands in their inventory automatically — items go to inventory, Pokemon go to party, currency gets deposited, and commands run on the server.
Here’s what a full package looks like inside a preset:
items = [ { item = "minecraft:diamond", count = 10 } { item = "minecraft:diamond_sword[minecraft:enchantments={levels:{sharpness:5}}]" count = 1 name = "<red><bold>Blade of Legends" lore = [ "<gray>Forged in the fires of Mt. Chimney" "<yellow>Season 3 Event Reward" ] }]
pokemonSpecs = [ "eevee level=20 shiny=yes" "pikachu level=15"]
currencies { "impactor:dollars" = 500 "impactor:tokens" = 10}
commands = [ "experience add {player} 100 levels" "say {player} just claimed their event reward!"]Four attachment types. Let’s break each one down.
Items can be defined in several ways, from simple to fully customized.
Simple Item
Section titled “Simple Item”Just the item ID as a string:
items = [ "minecraft:diamond"]With Count
Section titled “With Count”An object with item and count:
items = [ { item = "minecraft:diamond", count = 10 }]With Components
Section titled “With Components”Minecraft’s component syntax for enchantments, custom data, and more:
items = [ "minecraft:diamond_sword[minecraft:enchantments={levels:{sharpness:5}}]"]With Display Overrides
Section titled “With Display Overrides”Add name and lore for custom display text (supports MiniMessage):
items = [ { item = "minecraft:diamond_sword[minecraft:enchantments={levels:{sharpness:5}}]" count = 1 name = "<red><bold>Blade of Legends" lore = [ "<gray>Forged in the fires of Mt. Chimney" "<yellow>Season 3 Event Reward" ] }]Mix and match all formats in the same array — Courier handles them all:
items = [ "minecraft:diamond" { item = "minecraft:golden_apple", count = 5 } { item = "minecraft:netherite_pickaxe[minecraft:enchantments={levels:{efficiency:5,fortune:3}}]" count = 1 name = "<gradient:gold:yellow>Miner's Dream" lore = [ "<gray>Digs through anything" "<dark_gray>Unbreakable spirit" ] }]Pokemon
Section titled “Pokemon”Pokemon are defined as spec strings using Cobblemon’s format.
Basic Spec
Section titled “Basic Spec”Just the species name:
pokemonSpecs = [ "pikachu"]With Properties
Section titled “With Properties”Add space-separated key=value pairs for level, shiny status, nature, and more:
pokemonSpecs = [ "eevee level=20 shiny=yes nature=adamant ability=anticipation gender=female form=alolan"]Available Properties
Section titled “Available Properties”| Property | Example | Description |
|---|---|---|
level | level=20 | Pokemon level (1-100) |
shiny | shiny=yes | Whether the Pokemon is shiny |
nature | nature=adamant | Pokemon nature |
ability | ability=anticipation | Pokemon ability |
gender | gender=female | Pokemon gender (male/female) |
form | form=alolan | Regional form or variant |
Currency
Section titled “Currency”Currency is a map of currency IDs to amounts. Keys use Impactor’s namespaced format or custom names for command-based economies.
currencies { "impactor:dollars" = 500}Multiple currencies in a single package? No problem:
currencies { "impactor:dollars" = 500 "impactor:tokens" = 10}Commands
Section titled “Commands”Server commands that run when the recipient claims the package. Use {player} and {uuid} as placeholders — they’re replaced with the claiming player’s info at claim time.
| Placeholder | Replaced With |
|---|---|
{player} | The claiming player’s username |
{uuid} | The claiming player’s UUID |
commands = [ "experience add {player} 100 levels" "give {player} minecraft:emerald 32" "say {player} just claimed their event reward!"]Claiming Flow
Section titled “Claiming Flow”When a recipient claims a package, each type is processed in order:
- Items go to the player’s inventory. If it’s full, overflow goes to the Package Locker.
- Pokemon go to the player’s party. If the party’s full, they’re sent to the PC.
- Currency is deposited directly via the configured economy system.
- Commands run with the claiming player as the context.
Each package is claimed exactly once — an atomic compare-and-swap prevents double claims.
Next Steps
Section titled “Next Steps”Now that you know what goes inside a package, check out Presets to create reusable templates you can send to one player or everyone at once. If you’re wondering what happens when inventory is full, that’s the Package Locker.