Skip to content

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.

Just the item ID as a string:

items = [
"minecraft:diamond"
]

An object with item and count:

items = [
{ item = "minecraft:diamond", count = 10 }
]

Minecraft’s component syntax for enchantments, custom data, and more:

items = [
"minecraft:diamond_sword[minecraft:enchantments={levels:{sharpness:5}}]"
]

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 are defined as spec strings using Cobblemon’s format.

Just the species name:

pokemonSpecs = [
"pikachu"
]

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"
]
PropertyExampleDescription
levellevel=20Pokemon level (1-100)
shinyshiny=yesWhether the Pokemon is shiny
naturenature=adamantPokemon nature
abilityability=anticipationPokemon ability
gendergender=femalePokemon gender (male/female)
formform=alolanRegional form or variant

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
}

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.

PlaceholderReplaced 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!"
]

When a recipient claims a package, each type is processed in order:

  1. Items go to the player’s inventory. If it’s full, overflow goes to the Package Locker.
  2. Pokemon go to the player’s party. If the party’s full, they’re sent to the PC.
  3. Currency is deposited directly via the configured economy system.
  4. Commands run with the claiming player as the context.

Each package is claimed exactly once — an atomic compare-and-swap prevents double claims.


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.