Creating Lures
Creating Lures
Section titled “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.jsonHere’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.
Filament Item Fields
Section titled “Filament Item Fields”These control the item itself — what it looks like in inventory and what base item it uses.
| Field | Required | Description |
|---|---|---|
id | Yes | Unique identifier in namespace:name format |
vanillaItem | Yes | Base Minecraft item (e.g. cobblemon:cracked_pot, minecraft:paper) |
translations | No | Localized names ({ "en_us": "Grass Lure" }) |
properties.name | No | MiniMessage-formatted display name |
properties.lore | No | Array of MiniMessage-formatted lore lines |
itemResource.models | No | Custom 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"]Lure Behaviour Fields
Section titled “Lure Behaviour Fields”Everything under behaviour.bloom:lure controls how the lure actually works.
| Field | Type | Default | Description |
|---|---|---|---|
duration | Int | 7200 | Duration in ticks (20 ticks = 1 second) |
range | Int | 10 | Effect radius in blocks |
interval | Int | 20 | Ticks between spawn attempts |
cooldown | Int | 0 | Cooldown in ticks before another lure can be used |
infinite | Bool | false | Lure never expires |
max_uses | Int | 1 | Spawn uses before expiry (placed mode only) |
mode | String | "BOTH" | PLACED, PERSONAL, or BOTH |
Duration reference:
- 5 minutes =
6000, 10 minutes =12000, 30 minutes =36000, 1 hour =72000
Targeting
Section titled “Targeting”| Field | Type | Default | Description |
|---|---|---|---|
types | List | [] | Pokemon types to attract (e.g. ["fire", "water"]) |
species | List | [] | Specific species with form filters |
buckets | List | [] | Spawn bucket filters (e.g. ["rare", "ultra-rare"]) |
blacklist | Bool | false | Invert filters — repel instead of attract |
bypass_spawn_check | Bool | false | Skip Cobblemon spawn condition checks |
Empty filters means no filtering — the lure affects all spawns.
Boosts
Section titled “Boosts”| Field | Type | Default | Description |
|---|---|---|---|
spawn_boost | Float | 1.0 | Spawn rate modifier |
shiny_boost | Float | 1.0 | Shiny chance modifier |
ha_boost | Float | 0.0 | Hidden ability chance (additive, 0.0-1.0) |
modifier_type | String | "MULTIPLY" | MULTIPLY, ADD |
Display
Section titled “Display”| Field | Type | Default | Description |
|---|---|---|---|
particle_composition | String | null | Particle composition file name (without .conf) |
display_name | String | "{lure_name}" | MiniMessage name shown in holograms |
hologram_lines | List | ["{lure_name}", "{time_remaining}"] | Hologram text lines |
show_owner_head | Bool | true | Show owner’s player head above hologram |
Sounds
Section titled “Sounds”| Field | Type | Default | Description |
|---|---|---|---|
ambient_sound | String | null | Looping ambient sound (null = none) |
ambient_sound_volume | Float | 0.5 | Ambient volume |
ambient_sound_pitch | Float | 1.0 | Ambient pitch |
place_sound | String | "minecraft:block.amethyst_block.place" | Placement sound |
attract_sound | String | "minecraft:entity.experience_orb.pickup" | Spawn attraction sound |
expire_sound | String | "minecraft:block.amethyst_block.break" | Expiration sound |
recall_sound | String | "minecraft:entity.item.pickup" | Recall sound |
Targeting Examples
Section titled “Targeting Examples”By Type
Section titled “By Type”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.
By Species
Section titled “By Species”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
By Bucket
Section titled “By Bucket”Target spawn rarity tiers:
"buckets": ["rare", "ultra-rare"]Default Cobblemon buckets: common, uncommon, rare, ultra-rare.
Blacklist (Repel)
Section titled “Blacklist (Repel)”Flip blacklist to true to repel instead of attract:
"types": ["bug"],"blacklist": trueThis prevents Bug-type spawns in the lure’s radius.
Complete Examples
Section titled “Complete Examples”Type Lure
Section titled “Type Lure”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" } }}Shiny Hunter
Section titled “Shiny Hunter”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" } }}Hidden Ability Lure
Section titled “Hidden Ability Lure”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" } }}Infinite Placed Lure
Section titled “Infinite Placed 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}"] } }}Testing
Section titled “Testing”- Create your JSON file in
data/<namespace>/filament/item/ - Run
/reloadto load it (Filament auto-reloads datapacks) - Give yourself the lure:
/bloom lure <namespace>:<id> - Right-click to place, or sneak + right-click for personal mode
- Adjust values and
/reloadagain as needed
Next Steps
Section titled “Next Steps”- Particle Compositions — Create custom particle effects for your lures
- Configuration Reference — Global settings and advanced options