Back to top
Emitter Disc component
Back to top
Particle Components
Particle Initial State Components
Particle Initial State component
Back to top
Particle Initial Speed component
Back to top
Particle Motion Components
Particle Motion Dynamic component
Back to top
Particle Motion Parametric component
Back to top
Particle Motion Collision component
Back to top
Particle Appearance Components
Particle Appearance Billboard component
Back to top
Particle Appearance Tinting component
Back to top
Particle Appearance Lighting
Back to top
Particle Lifetime Components
Particle Lifetime Expression component
Back to top
Particle Lifetime Events component
Back to top
Particle Expire If In Blocks component
Back to top
Particle Expire If Not In Blocks component
Back to top
Particle Lifetime Kill-Plane component
Back to top
Curves
Curves are interpolation values, with inputs from 0 to 1, and outputs based on the curve. The result of the curve is a MoLang variable of the same name that can be referenced in MoLang in components. For each rendering frame for each particle, the curves are evaluated and the result is placed in a MoLang variable of the name of the curve.
Back to top
Events
Events can be triggered elsewhere in the .json and fire off new particle and sound effects.Particle effects have different types. If the type is "emitter", this will create an emitter of "effect" type at the event's world position, in a fire-and-forget way. "emitter_bound" works similarly, except if the spawning emitter is bound to an actor/locator, the new emitter will be bound to the same actor/locator. If the type is "particle", then the event will manually emit a particle on an emitter of "effect" type at the event location, creating the emitter if it doesn't already exist (be sure to use "minecraft:emitter_rate_manual" for the spawned emitter effect). "particle_with_velocity" will do the same as "particle" except the new particle will inherit the spawning particle's velocity.Sound effects specify the specific "level sound event" to be played when the event fires.The events themselves consist of an optional node tree and/or an actual event. When "sequence" is specified, that array will execute in order, with every element executing when that event fires. When using "random", one element will be picked from the array based on the weight.
Back to top
Examples
Flame particle
Back to top
Smoke particle
Back to top
Mob Flame effect
Back to top
Bouncing Bubbles
Back to top
MoLang integration
Where it makes sense, any field can use a MoLang expression. MoLang expressions are strings, and are defined in the MoLang documentation. The particle system uses some special MoLang variables that particle MoLang expressions can use. Additionally, custom MoLang paramaters can be set in various ways and used in MoLang expressions in effects.
Name | Description |
variable.particle_lifetime |
|
variable.particle_age |
|
variable.particle_random_1 |
|
variable.particle_random_2 |
|
variable.particle_random_3 |
|
variable.particle_random_4 |
|
variable.emitter_lifetime |
|
variable.emitter_age |
|
variable.emitter_random_1 |
|
variable.emitter_random_2 |
|
variable.emitter_random_3 |
|
variable.emitter_random_4 |
|
variable.entity_scale |
|
Back to top
Namespacing
All particle effects should be namespaced (in their name).Namespacing involves adding a 'name:' prefix on the effect tag.Regular Minecraft will use the 'minecraft: prefix. See the examples for example names.Back to top
Particles Entity Integration
One of the primary uses for emitting particles in the Bedrock engine is particles associated with entities, such as mobs. Examples can be when the Blaze flames-up during it's attack sequence, or the Evoker's spell effect while summoning Vexes. The goal is to allow binding and management of particle effects attached to entities.The following concepts are important for managing particles with entities via .json:- Effect lists. These live in the resource definition of the entity's .json, along with textures, etc. These list the effects available to the entity, with an internal entity name for the effect, and the associated effect to play.- Locators. These live in the geometry files, and specify a location in the geometry. These locators can be associated with bones, and thus follow the bone as it animates.- Animation controller-based particle management. Using the Animation Controller state machine concept, one can trigger both fire-and-forget and sustained particle effects- Animation timeline particle management. As part of an animation .json for the entity, one can set up a timeline that triggers particle effects at specified times while the animation is playing. Note that an actual physical animation is not needed, just the animation .json structure.Particles that are attached to entities are intrinsically tied to those entities. If the entity ceases to exist, the particle effects cease as well. Emitters follow either the entity, or a locator on the entity.time1/time2/etc are numerical time points, e.g. "0.0". In this example, when the cat sits down, after 3 seconds a smoke puff is generated:
Back to top
Animation Controller effects
Animation controllers can specify effect events for their states. This allows for a list of particle effects to be started upon state entry, and for those particle effects to be automatically ended when leaving the state. For particles that don't terminate (or don't terminate prior to state transition), they will be terminated at state exit.The schema is:"particle_effects": [ // array of effect events]The array syntax allows for more than one effect to be triggered on state entry.An example is the Blaze's flame-up effect in it's animation controller. This animation controller has two states, "default" and "flaming". It transitions between the two via the "query.is_charged" entity flag check. When in the "flaming" state, the "charged_flames" effect is started (with no locator or initialization MoLang expression), and is terminated when the state exits.
Back to top
Animation Timeline effects
Animations can also trigger particle effects. These are fire-and-forget effects that are tied to a timeline, when the animation hits that time point, the effect(s) are fired.
Back to top
Effect Event
Particle events in the entity have the following properties:- "effect" is the effect name specified in the entity's resource definition .json (the particle effect list), this specifies what particle effect to start/play- "locator" is an optional parameter that maps to a locator of the same name in the resource definition. By specifying a locator, the emitter will follow that locator around as the entity animates, including orientation. If this is not specified, the effect will occur at the origin of the entity.- "pre_effect_script" is an optional parameter that is a MoLang expression run at emitter startup time. This can set up MoLang variables, (for example 'particle color'), which can be then referred to inside the particle effect .json itself.
Back to top
Effect List
The effect list is a list of internal effect names to actual particle effects bindings. This is the general form for adding particle effects to an entity. The effect list consists of a list of shorthand names to actual effects. All references to effects will use the shorthand name in animations and animation controllers. Note that this by itself will not cause the particle effect to appear.
Back to top
Particles Examples Pack
https://aka.ms/MCParticlesPackExamples of various particles can be found in the link above. These are examples of various stand-alone particle effects. The particle effects provided as part of the Minecraft installation are tuned to be used with the Minecraft game, and thus do not serve as good examples. Please refer to the examples in the pack to see various ways to utilize the particle system. To invoke an example particle with the examples particles pack enabled, bring up the console, type "/particle name x y z" where "name" is the name of the particle effect, and x/y/z are the coordinates the particle appears at.For example, "/particle minecraft:example_smoke_puff 0 5 0" will spawn a smoke puff at the origin of the world, 5 blocks up from the bottom of the world. "/particle minecraft:example_smoke_puff ~ ~1 ~5" will create that smoke puff about 5 blocks away from the player.Example Effects
Name | Description |
minecraft:example_bezier_chaincurve |
|
minecraft:example_beziercurve |
|
minecraft:example_bounce |
|
minecraft:example_catmullromcurve |
|
minecraft:example_colorcurve |
|
minecraft:example_colorcurve2 |
|
minecraft:example_combocurve |
|
minecraft:example_directional_sphere |
|
minecraft:example_entity_sparkle_box |
|
minecraft:example_entity_sparkle_aabb |
|
minecraft:example_expire_on_contact |
|
minecraft:example_flipbook |
|
minecraft:example_highrestitution |
|
minecraft:example_linearcurve |
|
minecraft:example_particle_event_system |
|
minecraft:example_smoke_puff |
|
minecraft:example_spiral |
|
minecraft:example_watertest |
|
minecraft:fireworks_events_demo |
|
Back to top
Structure In Detail
Outline:
Back to top