Vanilla particles
Every particle the game registers, animated from its own texture frames — so you can see what is available, pick one, and leave with the identifier and a command that runs.
The gallery
115 particles with a definition: 54 animate across multiple frames and 61 are a single frame. Sprites are scaled 2× and drawn with nearest-neighbour sampling, so a 16×16 texture stays 16×16.
ambient_entity_effectangry_villagerashbubblebubble_column_upbubble_popcampfire_cosy_smokecampfire_signal_smokecherry_leavescloudcompostercopper_fire_flamecrimson_sporecritcurrent_downdamage_indicatordolphindragon_breathdripping_dripstone_lavadripping_dripstone_waterdripping_honeydripping_lavadripping_obsidian_teardripping_waterdustdust_color_transitiondust_plumeeffectegg_crackelectric_sparkenchantenchanted_hitend_rodentity_effectexplosionfalling_dripstone_lavafalling_dripstone_waterfalling_dustfalling_honeyfalling_lavafalling_nectarfalling_obsidian_tearfalling_spore_blossomfalling_waterfireflyfireworkfishingflameflashgeyser_basegeyser_plumegeyser_poofglowglow_squid_inkgusthappy_villagerheartinfestedinstant_effectlanding_honeylanding_lavalanding_obsidian_tearlarge_smokelavamyceliumnautilusnotenoxious_gasominous_spawningorange_poplar_leavespale_oak_leavespause_mob_growthpoofportalraid_omenrainred_poplar_leavesreset_mob_growthreverse_portalscrapesculk_chargesculk_charge_popsculk_soulshrieksmall_flamesmall_gustsmokesneezesnowflakesonic_boomsoulsoul_fire_flamespitsplashspore_blossom_airsquid_inksulfur_bubblessulfur_cube_goosweep_attacktinted_leavestotem_of_undyingtrailtrial_omentrial_spawner_detectiontrial_spawner_detection_ominousunderwatervault_connectionvibrationwarped_sporewax_offwax_onwhite_ashwhite_smokewitchyellow_poplar_leavesWhat this shows, and what it does not
Each loop is the particle's own frame sequence, read from
assets/minecraft/particles/<id>.json in the game files.
That list is the animation the game plays, so the frames here are reproduced
rather than approximated.
Only the frames are data. A particle's motion, gravity, colour tint, size and lifetime are hardcoded in Java and are not represented anywhere in the game's files. So this page shows what a particle's texture does; it does not show what the effect looks like in the world. A particle that drifts, fades or is tinted by an argument will look different in game, and several are drawn tinted at runtime from a colour you pass in.
Particles with no texture of their own
14 of the 128 registered particles have no definition file, because their appearance is supplied when they are spawned — from a block state, an item stack, or a colour. There is nothing to animate here, which is why they are listed rather than drawn:
blockblock_crumbleblock_markerdust_pillarelder_guardianexplosion_emittergeysergust_emitter_largegust_emitter_smallitemitem_cobwebitem_slimeitem_snowballnoxious_gas_cloud
Using one in a pack
The copy button on each card gives a /particle line that runs as
written, including the extra argument for the particles that require one.
Paste it into a function to see the real thing in the world, which is the only
place the behaviour actually exists.
data/<namespace>/function/demo.mcfunction
# count 0 with a non-zero speed makes delta a DIRECTION rather than a spread
particle minecraft:flame ~ ~1 ~ 0 1 0 0.1 0
# count above 0 makes delta a box to scatter within, and speed random per particle
particle minecraft:flame ~ ~1 ~ 0.3 0.3 0.3 0.02 40
The two forms above are the thing worth knowing about
/particle: with count at zero the delta arguments
stop meaning “spread” and start meaning “direction”,
and speed becomes the magnitude. It is the same command with the same
argument names doing two different jobs.
Block particles take their state as options
Five particles carry a block state, and the field they carry it in was renamed at 1.20.5. Passing the old form does not merely draw the wrong particle — the game refuses the whole command, and in a function that means the function never loads.
| Particle | Up to 1.20.4 | From 1.20.5 |
|---|---|---|
block, falling_dust, block_marker,
dust_pillar, block_crumble |
value | block_state |
Wrong on 26.2 — the pre-1.20.5 form
particle minecraft:block minecraft:stone ~ ~ ~ 0.5 0.5 0.5 0 10
Correct up to 26.2 — the state is an option map
particle minecraft:block{block_state:{Name:"minecraft:stone"}} ~ ~ ~ 0.5 0.5 0.5 0 10
Correct from 26.3 Snapshot 7 — the keys were renamed
particle minecraft:block{block_state:{id:"minecraft:stone"}} ~ ~ ~ 0.5 0.5 0.5 0 10
Everywhere a block state is written as a compound — not just in particles — the keys changed in 26.3 Snapshot 7, and stayed that way through release:
| Up to 26.2 | From 26.3 |
|---|---|
Name | id |
Properties | properties |
26.3 also accepts a bare block id in place of the compound entirely. A pack carrying the old keys on 26.3 fails to load the file that holds them, so this bites the same way the 1.20.5 rename did — reported from production during the 26.3 port of a structure pack, where eleven functions stopped loading at once.
Since 1.20.5 block_state accepts either a plain
block id or a full block state, so
minecraft:block{block_state:"minecraft:stone"} is valid and the
compound is only needed when you are setting properties.
The old form parses as an empty option map, so the failure is a hard one:
Can't parse particle options: No key block_state in MapLike[{}]
A function that fails to parse is never registered, so it
is not that one particle line misbehaves — nothing in the file runs, and
anything calling it silently does nothing. Reported from production by a
sibling pack, where two functions had been dead since the day they were
written. Field names and version boundary confirmed against vanilla-mcdoc @ eea955a6afdb.
Sources
- misode/mcmeta — particle definitions — the frame lists every animation here is built from.
- Minecraft Wiki — /particle — argument reference for the command.