Skip to content

Creating Lures

Lures are Filament item definitions with a bloom:lure behaviour block. Create a JSON file in your datapack, define how the item looks and how the lure behaves, and reload.

data/<namespace>/filament/item/fire_lure.json

Here’s a complete lure:

{
"id": "bloom:grass_lure",
"translations": { "en_us": "Grass Lure" },
"vanillaItem": "cobblemon:cracked_pot",
"properties": {
"name": "<green>Grass Lure",
"lore": [
"<gray>Attracts Grass and Bug type Pokemon",
"<gray>Duration: 5 minutes"
]
},
"behaviour": {
"bloom:lure": {
"particle_composition": "grass_aura",
"types": ["grass", "bug"],
"duration": 6000,
"range": 10,
"spawn_boost": 2.0,
"shiny_boost": 2.0,
"ha_boost": 0.1,
"mode": "BOTH",
"display_name": "<green>Grass Lure",
"hologram_lines": ["{lure_name}", "Owner: {owner}", "{time_remaining}"]
}
}
}

Two parts: the Filament item (how it looks) and the lure behaviour (how it works). Let’s break each one down.


These control the item itself — what it looks like in inventory and what base item it uses.

FieldRequiredDescription
idYesUnique identifier in namespace:name format
vanillaItemYesBase Minecraft item (e.g. cobblemon:cracked_pot, minecraft:paper)
translationsNoLocalized names ({ "en_us": "Grass Lure" })
properties.nameNoMiniMessage-formatted display name
properties.loreNoArray of MiniMessage-formatted lore lines
itemResource.modelsNoCustom model references

Names and lore support full MiniMessage formatting:

"name": "<red><bold>Premium Lure",
"lore": [
"<gray>The ultimate lure!",
"<gold>5x spawns, <yellow>10x shiny"
]

Everything under behaviour.bloom:lure controls how the lure actually works.

FieldTypeDefaultDescription
durationInt7200Duration in ticks (20 ticks = 1 second)
rangeInt10Effect radius in blocks
intervalInt20Ticks between spawn attempts
cooldownInt0Cooldown in ticks before another lure can be used
infiniteBoolfalseLure never expires
max_usesInt1Spawn uses before expiry (placed mode only)
modeString"BOTH"PLACED, PERSONAL, or BOTH

Duration reference:

  • 5 minutes = 6000, 10 minutes = 12000, 30 minutes = 36000, 1 hour = 72000
FieldTypeDefaultDescription
typesList[]Pokemon types to attract (e.g. ["fire", "water"])
speciesList[]Specific species with form filters
bucketsList[]Spawn bucket filters (e.g. ["rare", "ultra-rare"])
blacklistBoolfalseInvert filters — repel instead of attract
bypass_spawn_checkBoolfalseSkip Cobblemon spawn condition checks

Empty filters means no filtering — the lure affects all spawns.

FieldTypeDefaultDescription
spawn_boostFloat1.0Spawn rate modifier
shiny_boostFloat1.0Shiny chance modifier
ha_boostFloat0.0Hidden ability chance (additive, 0.0-1.0)
modifier_typeString"MULTIPLY"MULTIPLY, ADD
FieldTypeDefaultDescription
particle_compositionStringnullParticle composition file name (without .conf)
display_nameString"{lure_name}"MiniMessage name shown in holograms
hologram_linesList["{lure_name}", "{time_remaining}"]Hologram text lines
show_owner_headBooltrueShow owner’s player head above hologram
FieldTypeDefaultDescription
ambient_soundStringnullLooping ambient sound (null = none)
ambient_sound_volumeFloat0.5Ambient volume
ambient_sound_pitchFloat1.0Ambient pitch
place_soundString"minecraft:block.amethyst_block.place"Placement sound
attract_soundString"minecraft:entity.experience_orb.pickup"Spawn attraction sound
expire_soundString"minecraft:block.amethyst_block.break"Expiration sound
recall_soundString"minecraft:entity.item.pickup"Recall sound

Attract Fire and Electric types:

"types": ["fire", "electric"]

All 18 Pokemon types are valid: normal, fire, water, grass, electric, ice, fighting, poison, ground, flying, psychic, bug, rock, ghost, dragon, dark, steel, fairy.

Target specific Pokemon and their forms:

"species": [
{
"name": "pikachu",
"forms": [
{"aspects": []},
{"aspects": ["alolan"]}
]
},
{
"name": "eevee",
"forms": [{"aspects": []}]
}
]
  • {"aspects": []} — normal form
  • {"aspects": ["alolan"]} — Alolan form
  • {"aspects": ["shiny", "galarian"]} — Shiny Galarian form

Target spawn rarity tiers:

"buckets": ["rare", "ultra-rare"]

Default Cobblemon buckets: common, uncommon, rare, ultra-rare.

Flip blacklist to true to repel instead of attract:

"types": ["bug"],
"blacklist": true

This prevents Bug-type spawns in the lure’s radius.


A basic Fire Lure that triples Fire-type spawns for 30 minutes:

{
"id": "bloom:fire_lure",
"vanillaItem": "cobblemon:cracked_pot",
"properties": {
"name": "<red>Fire Lure",
"lore": ["<gray>Attracts Fire type Pokemon", "<gold>3x spawn rate!"]
},
"behaviour": {
"bloom:lure": {
"particle_composition": "fire_blaze",
"types": ["fire"],
"duration": 36000,
"range": 10,
"spawn_boost": 3.0,
"mode": "BOTH",
"display_name": "<red>Fire Lure"
}
}
}

No type filter, just raw shiny boost:

{
"id": "bloom:shiny_charm",
"vanillaItem": "cobblemon:cracked_pot",
"properties": {
"name": "<gold>Shiny Charm",
"lore": ["<gray>Boosts shiny spawn rates", "<gold>5x shiny chance!"]
},
"behaviour": {
"bloom:lure": {
"particle_composition": "electric_surge",
"duration": 24000,
"range": 12,
"spawn_boost": 1.5,
"shiny_boost": 5.0,
"mode": "PERSONAL",
"display_name": "<gold>Shiny Charm"
}
}
}

Prevents ultra-rare spawns in a large area:

{
"id": "bloom:legendary_repel",
"vanillaItem": "cobblemon:cracked_pot",
"properties": {
"name": "<dark_gray>Legendary Repel",
"lore": ["<gray>Prevents legendary spawns"]
},
"behaviour": {
"bloom:lure": {
"buckets": ["ultra-rare"],
"blacklist": true,
"duration": 72000,
"range": 20,
"mode": "PLACED",
"display_name": "<dark_gray>Legendary Repel"
}
}
}

Boosts HA chance to 15%:

{
"id": "bloom:ha_lure",
"vanillaItem": "cobblemon:cracked_pot",
"properties": {
"name": "<dark_purple>Hidden Ability Lure",
"lore": ["<gray>15% hidden ability chance"]
},
"behaviour": {
"bloom:lure": {
"duration": 36000,
"range": 10,
"spawn_boost": 2.0,
"ha_boost": 0.15,
"mode": "BOTH",
"display_name": "<dark_purple>HA Lure"
}
}
}

A permanent lure for server landmarks:

{
"id": "bloom:eternal_lure",
"vanillaItem": "cobblemon:cracked_pot",
"properties": {
"name": "<light_purple><bold>Eternal Lure",
"lore": ["<gray>Lasts forever"]
},
"behaviour": {
"bloom:lure": {
"infinite": true,
"range": 15,
"spawn_boost": 2.0,
"mode": "PLACED",
"display_name": "<light_purple>Eternal Lure",
"hologram_lines": ["{lure_name}", "Placed by {owner}"]
}
}
}

  1. Create your JSON file in data/<namespace>/filament/item/
  2. Run /reload to load it (Filament auto-reloads datapacks)
  3. Give yourself the lure: /bloom lure <namespace>:<id>
  4. Right-click to place, or sneak + right-click for personal mode
  5. Adjust values and /reload again as needed