| Name | Description |
|---|---|
| variable.particle_lifetime | How long the particle lives for |
| variable.particle_age | How long the particle has lived |
| variable.particle_random_1 | A random from 0.0 to 1.0 that is constant for the lifetime of the particle |
| variable.particle_random_2 | Another random from 0.0 to 1.0 that is constant for the lifetime of the particle |
| variable.particle_random_3 | A third random from 0.0 to 1.0 that is constant for the lifetime of the particle |
| variable.particle_random_4 | A fourth random from 0.0 to 1.0 that is constant for the lifetime of the particle |
| variable.emitter_lifetime | How long the current loop lasts for the emitter |
| variable.emitter_age | Age since the current loop started for the emitter |
| variable.emitter_random_1 | A random from 0.0 to 1.0 that is constant for the current loop of the emitter |
| variable.emitter_random_2 | Another random from 0.0 to 1.0 that is constant for the current loop of the emitter |
| variable.emitter_random_3 | A third random from 0.0 to 1.0 that is constant for the current loop of the emitter |
| variable.emitter_random_4 | A fourth random from 0.0 to 1.0 that is constant for the current loop of the emitter |
| variable.entity_scale | When the effect is attached to an entity, this value is the scale of the entity |
{ "format_version": "1.10.0", "particle_effect": { "description": { "identifier": <string>, // e.g. "minecraft:test_effect", this is the name the particle emitter is referred to as "basic_render_parameters": { "material": <string> // Minecraft material to use for emitter "texture": <string> // Minecraft texture to use for emitter } }, "curves": { // curve details }, "components": // emission rate components // emission lifetime components // emission shape components, or the shape of the effect as defined // by particle emission position and directions // emitter local space components // components that control initial state of particles // components that control/direct motion of particles // components that affect how the particle is drawn // components that affect particle lifetime } } }
{ // specifies the format version of the particle. Only particles of a particular set of versions // will work with the game "format_version": "1.10.0", "particle_effect": { // general data for the particle effect "description": { // e.g. "minecraft:test_mule", this is the name the particle emitter is referred to as "identifier": <string>, // Basic render parameters are basic rendering // properties like the texture used, or the material used. // All particles require a material to render, and (for now) a // texture to draw. Future changes might be to make the texture // optional, or to specify more than one texture, to facilitate // custom shader-driven particle effects "basic_render_parameters": { "material": <string> "texture": <string> }, }, // this section describes curves that can be used later by components // 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 // // each frame for each particle, the curves are evaluated // and the result is placed in a molang variable of the name of the // curve "curves": { // "molangvar" is the molang variable to be used alter in molang expression // for example "variable.mycurve" here would make the result of the curve // available in MoLang as "variable.mycurve" "molangvar": { // type can be "linear", "bezier", or "catmull_rom" "type": type, // control nodes for curve. These are assumed to be equally // spaced, e.g. first node is at input value 0, second at 0.25, etc "nodes": [<float/molang>, <float/molang>, <float/molang>, <float/molang>], // what is the input value to use "input": <float/molang>, // what is the range the input is mapped onto // between 0 and this value "horizontal_range": <float/molang> } }, "components: { ///////////////////////////////////////////////////////////////////// // Emitter related components // these components primarily affect the emitter bevahior // emitter initial state components set up the emitter with // particular properties // emitter rate components control when particles get emitted // these will be run every frame for the emitter to determine if any // particles need to be spawned // emitter lifetime components control the lifetime of the emitter // and the "enabled/disabled" state of the emitter. // Emitters can only spawn particles if enabled. // emitter shapecomponents control where a particle gets emitted // and initial shape-driven state such as particle direction // emitter local space components // this component specifies whether entity-based emitters // simulate in local or global space ///////////////////////////////////////////////////////////////////// // Particle related components // these components primarily affect the particle behavior // particle initial condition components control what the initial state // of the particles is, such as initial speed, rotation, etc. // These are run once at particle creation // particle motion components control what happens to the particle // on frames after creation, such as it's position (for // a parametric particle), drag/acceleration (for a dynamic // particle), etc. // These are run once per frame per particle // particle appearance components control how the particle is rendered // such as what UV coortinates to use, size of the particle, // billboard orientation, color tinting, etc. // These are run once per frame for visible particles // these components handle when the particle expires } } }
<float> - field takes a floating point input <float/molang> - field takes a floating point input, or a MoLang expression <default:val> - specifies the default value used if field isn't specified <bool> - "true" or "false" <string> - a string ("this is a string" <default> - not a part of the particular line, this just says what this field defaults to if not specified
"minecraft:emitter_local_space": { "position": <bool> "rotation": <bool> }
"minecraft:emitter_initialization": { "creation_expression": <molang>, // this is run once at emitter startup "per_update_expression": <molang> // this is run once per emitter update }
"minecraft:emitter_rate_instant": { // this many particles are emitted at once // evaluated once per particle emitter loop "num_particles": <float/molang> <default:10> }
"minecraft:emitter_rate_steady": { // how often a particle is emitted, in particles/sec // evaluated once per particle emitted "spawn_rate": <float/molang> <default:1> // maximum number of particles that can be active at once for this emitter // evaluated once per particle emitter loop "max_particles": <float/molang> <default:50> }
"minecraft:emitter_rate_manual": { // evaluated once per particle emitted "max_particles": <float/molang> <default:50> }
"minecraft:emitter_lifetime_looping": { // emitter will emit particles for this time per loop // evaluated once per particle emitter loop "active_time": <float/molang> <default:10> // emitter will pause emitting particles for this time per loop // evaluated once per particle emitter loop "sleep_time": <float/molang> <default:0> }
"minecraft:emitter_lifetime_once": { // how long the particles emit for // evaluated once "active_time": <float/molang> <default:10> }
"minecraft:emitter_lifetime_expression": { // When the expression is non-zero, the emitter will emit particles. // Evaluated every frame "activation_expression": <float/molang> <default:1> // Emitter will expire if the expression is non-zero. // Evaluated every frame "expiration_expression": <float/molang> <default:0> }
"minecraft:emitter_shape_point": { // specifies the offset from the emitter to emit the particles // evaluated once per particle emitted "offset": [<float/molang>, <float/molang>, <float/molang>] <default:[0, 0, 0]> // specifies the direciton of particles. // evaluated once per particle emitted "direction": [<float/molang>, <float/molang>, <float/molang>] }
"minecraft:emitter_shape_sphere": { // specifies the offset from the emitter to emit the particles // evaluated once per particle emitted "offset": [<float/molang>, <float/molang>, <float/molang>] <default:[0, 0, 0]> // sphere radius // evaluated once per particle emitted "radius": <float/molang> <default:1> // emit only from the surface of the sphere "surface_only": <bool> <default:false> // specifies the direciton of particles. Defaults to "outwards" "direction": "inwards" // particle direction towards center of sphere "direction": "outwards" // particle direction away from center of sphere // evaluated once per particle emitted "direction": [<float/molang>, <float/molang>, <float/molang>] }
"minecraft:emitter_shape_box": { // specifies the offset from the emitter to emit the particles // evaluated once per particle emitted "offset": [<float/molang>, <float/molang>, <float/molang>] <default:[0, 0, 0]> // box dimensions // these are the half dimensions, the box is formed centered on the emitter // with the box extending in the 3 principal x/y/z axes by these values "half_dimensions": [ <float/molang>, <float/molang> <float/molang ], // emit only from the surface of the sphere "surface_only": <bool> <default:false> // specifies the direction of particles. Defaults to "outwards" // evaluated once per particle emitted "direction": "inwards" // particle direction towards center of sphere "direction": "outwards" // particle direction away from center of sphere "direction": [<float/molang>, <float/molang>, <float/molang>] }
"minecraft:emitter_shape_custom": { // specifies the offset from the emitter to emit the particles // evaluated once per particle emitted "offset": [<float/molang>, <float/molang>, <float/molang>] <default:[0, 0, 0]> // specifies the direciton for the particle // evaluated once per particle emitted "direction": [<float/molang>, <float/molang>, <float/molang>] <default:[0, 0, 0] }
"minecraft:emitter_shape_entity_aabb": { // emit only from the surface of the sphere "surface_only": <bool> <default:false> // evaluated once per particle emitted // defaults to outwards "direction": "inwards" // particle direction towards center of sphere "direction": "outwards" // particle direction away from center of sphere "direction": [<float/molang>, <float/molang>, <float/molang>] <default:[0, 0, 0] }
"minecraft:particle_initial_spin": { // specifies the initial rotation in degrees // evaluated once "rotation": <float/molang> <default:0> // specifies the spin rate in degrees/second // evaluated once "rotation_rate": <float/molang> <default:0> }
// evaluated once "minecraft:particle_initial_speed": <float/molang> <default:0> "minecraft:particle_initial_speed" [<float/molang>, <float/molang>, <float/molang>],
"minecraft:particle_motion_dynamic": { // the linear acceleration applied to the particle, defaults to [0, 0, 0]. // Units are blocks/sec/sec // An example would be gravity which is [0, -9.8, 0] // evaluated every frame "linear_acceleration": [<float/molang>, <float/molang>, <float/molang>], // using the equation: // acceleration = -linear_drag_coefficient*velocity // where velocity is the current direction times speed // Think of this as air-drag. The higher the value, the more drag // evaluated every frame "linear_drag_coefficient": <float/molang> <default:0> // acceleration applies to the rotation speed of the particle // think of a disc spinning up or a smoke puff that starts rotating // but slows down over time // evaluated every frame // acceleration is in degrees/sec/sec "rotation_acceleration" <float/molang> <default:0> // drag applied to retard rotation // equation is rotation_acceleration += -rotation_rate*rotation_drag_coefficient // useful to slow a rotation, or to limit the rotation acceleration // Think of a disc that speeds up (acceleration) // but reaches a terminal speed (drag) // Another use is if you have a particle growing in size, having // the rotation slow down due to drag can add "weight" to the particle's // motion "rotation_drag_coefficient" <float/molang> <default:0> }
"minecraft:particle_motion_parametric": { // directly set the position relative to the emitter. // E.g. a spiral might be: // "relative_position": ["Math.cos(Params.LifeTime)", 1.0, // "Math.sin(Params.Lifetime)"] // defaults to [0, 0, 0] // evaluated every frame "relative_position": [<float/molang> <float/molang> <float/molang>] // directly set the 3d direction of the particle // doesn't affect direction if not specified // evaluated every frame "direction": [<float/molang> <float/molang> <float/molang] // directly set the rotation of the particle // evaluated every frame "rotation": <float/molang> <default:0> }}
"minecraft:particle_motion_collision": { // enables collision when true/non-zero. // evaluated every frame "enabled": <bool/molang> <default:true> // alters the speed of the particle when it has collided // useful for emulating friction/drag when colliding, e.g a particle // that hits the ground would slow to a stop. // This drag slows down the particle by this amount in blocks/sec // when in contact "collision_drag": <float> // used for bouncing/not-bouncing // Set to 0.0 to not bounce, 1.0 to bounce back up to original hight // and in-between to lose speed after bouncing. Set to >1.0 to gain energy on each bounce "coefficient_of_restitution": <float> // used to minimize interpenetration of particles with the environment // note that this must be less than or equal to 1/2 block "collision_radius": <float> }
"minecraft:particle_appearance_billboard": { // specifies the x/y size of the billboard // evaluated every frame "size": [<float/molang>, <float/molang>], // used to orient the billboard. Options are: // "rotate_xyz" - aligned to the camera, perpendicular to the view axis // "rotate_y" -aligned to camera, but rotating around world y axis // "lookat_xyz" - aimed at the camera, biased towards world y up // "lookat_y" - aimed at the camera, but rotating around world y axis // "direction" - billboard is aligned perpendicular to the direction vector, // e.g. a direction of [0, 1, 0] would have the particle facing upwards "face_camera_mode": <string> // specifies the UVs for the particle. "uv": { // specifies the assumed texture width/height // defaults to 1 // when set to 1, UV's work just like normalized UV's // when set to the texture width/height, this works like texels "texturewidth": <int>, "textureheight": <int>, // Assuming the specified texture width and height, use these // uv coordinates. // evaluated every frame "uv": [<float/molang>, <float/molang>], "uv_size": [<float/molang>, <float/molang>], // alternate way via specifying a flipbook animation // a flipbook animation uses pieces of the texture to animate, by stepping over time from one // "frame" to another "flipbook": { "base_UV": [ <float/molang>, <float/molang> ], // upper-left corner of starting UV patch "size_UV": [ <float>, <float> ], // size of UV patch "step_UV": [ <float>, <float> ], // how far to move the UV patch each frame "frames_per_second": <float>, // default frames per second "max_frame": <float/molang>, // maximum frame number, with first frame being frame 1 "stretch_to_lifetime": <bool>, // optional, adjust fps to match lifetime of particle. default=false "loop": <bool> // optional, makes the animation loop when it reaches the end? default=false } } }
// color fields are special, they can be either an RGB, or a "#RRGGBB" // field (or RGBA or "AARRGGBB"). If RGB(A), the channels are // from 0 to 1. If the string "#AARRGGBB", then the values are // hex from 00 to ff. // // this pseudo-type will be denoted by <color> "minecraft:particle_appearance_tinting": { // interpolation based color "color": { // an array of colors // there are two ways to specify the array of colors // the first method is to just have an array of colors // these will be interpreted to be equally spaced, with the entire // range going from 0 to 1 // // the second option is to specify a value/color pair list // this will cause the colors to appear when their specified value // occurs in the interpolant, and interpolated in between. Note // that this will be sorted "gradient": [ <color>, <color>, ...], "gradient": { <float>: <color>, <float>: <color>, ... } "interpolant": <float/molang> // hint: use a curve here! } // directly set the color "color": <color> },
"minecraft:particle_appearance_lighting": {}
"minecraft:particle_lifetime_expression": { // this expression makes the particle expire when true (non-zero) // The float/expr is evaluated once per particle // evaluated every frame "expiration_expression": <float/molang> <default:0> // alternate way to express lifetime // particle will expire after this much time // evaluated once "max_lifetime": <float/molang> },
"minecraft:particle_expire_if_in_blocks" [ // minecraft block names, e.g. 'minecraft:water', 'minecraft:air' // these are typically the same name as in the /setblock command // except for the minecraft: prefix "blockname1", "blockname2", ... ],
"minecraft:particle_expire_if_not_in_blocks" [ // minecraft block names, e.g. 'minecraft:water', 'minecraft:air' // these are typically the same name as in the /setblock command // except for the minecraft: prefix "blockname1", "blockname2", ... ],
{ "format_version": "1.10.0", "particle_effect": { "description": { "identifier": "minecraft:basic_flame_particle", "basic_render_parameters": { "material": "particles_alpha", "texture": "textures/particle/particles" } }, "components": { "minecraft:emitter_rate_instant": { "num_particles": 1 }, "minecraft:emitter_lifetime_expression": { "activation_expression": 1, "expiration_expression": 0 }, "minecraft:emitter_shape_sphere": { "radius": 0.025, "direction": [ 0, 0, 0 ] }, "minecraft:particle_lifetime_expression": { "max_lifetime": "Math.random(0.6, 2.0)" }, "minecraft:particle_appearance_billboard": { "size": [ "(0.1 + variable.ParticleRandom1*0.1) - (0.1 * variable.ParticleAge)", "(0.1 + variable.ParticleRandom1*0.1) - (0.1 * variable.ParticleAge)" ], "facing_camera_mode": "lookat_xyz", "uv": { "texturewidth": 128, "textureheight": 128, "uv": [ 0, 24 ], "uv_size": [ 8, 8 ] } } } } }
{ "format_version": "1.10.0", "particle_effect": { "description": { "identifier": "minecraft:basic_smoke_particle", "basic_render_parameters": { "material": "particles_alpha", "texture": "textures/particle/particles" } }, "components": { "minecraft:emitter_rate_instant": { "num_particles": 1 }, "minecraft:emitter_lifetime_expression": { "activation_expression": 1, "expiration_expression": 0 }, "minecraft:emitter_shape_custom": { "offset": [ 0, 0, 0 ], "direction": [ "Math.random(-0.1, 0.1)", 1.0, "Math.random(-0.1, 0.1)" ] }, "minecraft:particle_initial_speed": 1.0, "minecraft:particle_lifetime_expression": { "max_lifetime": "Math.random(0.4, 1.4)" }, "minecraft:particle_motion_dynamic": { "linear_acceleration": [ 0, 0.4, 0 ] }, "minecraft:particle_appearance_billboard": { "size": [ 0.1, 0.1 ], "facing_camera_mode": "lookat_xyz", "uv": { "texturewidth": 128, "textureheight": 128, "flipbook": { "base_UV": [ 56, 0 ], "size_UV": [ 8, 8 ], "step_UV": [ -8, 0 ], "frames_per_second": 8, "max_frame": 8, "stretch_to_lifetime": true, "loop": false } } }, "minecraft:particle_appearance_tinting": { "color": [ "variable.ParticleRandom1*0.5", "variable.ParticleRandom1*0.5", "variable.ParticleRandom1*0.5", 1.0 ] }, "minecraft:particle_appearance_lighting": {} } } }
{ "format_version": "1.10.0", "particle_effect": { "description": { "identifier": "minecraft:mobflame_emitter", "basic_render_parameters": { "material": "particles_alpha", "texture": "textures/flame_atlas" } }, "components": { "minecraft:emitter_local_space": { "position": true, "rotation": true }, "minecraft:emitter_rate_steady": { "spawn_rate": "Math.random(15, 25)", "max_particles": 50 }, "minecraft:emitter_lifetime_expression": { "activation_expression": 1, "expiration_expression": 0 }, "minecraft:emitter_shape_entity_aabb": { "direction": [ 0, 1, 0 ] }, "minecraft:particle_initial_speed": "Math.random(0, 1)", "minecraft:particle_lifetime_expression": { "max_lifetime": 1.25 }, "minecraft:particle_motion_dynamic": { "linear_acceleration": [ 0, 1.0, 0 ], "linear_drag_coefficient": 0.0 }, "minecraft:particle_appearance_billboard": { "size": [ 0.5, 0.5 ], "facing_camera_mode": "lookat_xyz", "uv": { "texturewidth": 1, "textureheight": 32, "flipbook": { "base_UV": [ 0, 0 ], "size_UV": [ 1, 1 ], "step_UV": [ 0, 1 ], "frames_per_second": 32, "max_frame": 32, "stretch_to_lifetime": true, "loop": false } } } } } }
{ "format_version": "1.10.0", "particle_effect": { "description": { "identifier": "minecraft:test_bounce", "basic_render_parameters": { "material": "particles_alpha", "texture": "textures/particle/particles" } }, "components": { "minecraft:emitter_rate_instant": { "num_particles": 100 }, "minecraft:emitter_lifetime_once": { "active_time": 2 }, "minecraft:emitter_shape_sphere": { "offset": [ "Math.random(-0.5, 0.5)", "Math.random(-0.5, 0.5)", "Math.random(-0.5, 0.5)" ], "direction": "outwards", "radius": 1 }, "minecraft:particle_initial_speed": 5.0, "minecraft:particle_initial_spin": { "rotation": "Math.random(0, 360)", "rotation_rate": 0 }, "minecraft:particle_lifetime_expression": { "max_lifetime": "5" }, "minecraft:particle_motion_dynamic": { "linear_acceleration": [ 0, -9.8, 0 ] }, "minecraft:particle_motion_collision": { "coefficient_of_restitution": 0.5, "collision_drag": 4, "collision_radius": 0.1 }, "minecraft:particle_appearance_billboard": { "size": [ "0.1", "0.1" ], "facing_camera_mode": "lookat_xyz", "uv": { "texturewidth": 128, "textureheight": 128, "uv": [ 0, 16 ], "uv_size": [ 8, 8 ] } }, "minecraft:particle_appearance_lighting": {} } } }
{ "format_version": "1.8.0", "minecraft:client_entity": { "description": { "identifier": "minecraft:entity_name", ... "particle_effects": { "shorthand_name1": "effect_name1", "shorthand_name2": "effect_name2", }, ... } } }
{ "format_version": "1.8.0", "minecraft:client_entity": { "description": { "identifier": "minecraft:blaze", ... "particle_effects": { "charged_flames": "minecraft:mobflame_emitter" }, ... } } }
{ "effect": "internal_name", "locator": "locator_name", // optional "pre_effect_script" // optional }
{ "format_version": "1.8.0", "animation_controllers": { ... "controller.animation.blaze.flame": { "states": { "default": { "transitions": [ { "flaming": "query.is_charged" } ] }, "flaming": { "particle_effects": [ { "effect": "charged_flames" } ], "transitions": [ { "default": "!query.is_charged" } ] } } }, ... } }
{ "format_version": "1.8.0", "animation_controllers": { "controller.animation.evoker.general": { "states": { "default": { ... "transitions": [ { "casting": "query.is_casting" } ] }, "casting": { ... "particle_effects": [ { "effect": "spell", "locator": "left_hand" }, { "effect": "spell", "locator": "right_hand" } ], "transitions": [ { "default": "!query.is_casting" } ] } } } } }
"particle_effects": { "time1" : [ // array of effect events ], "time2" : [ // array of effect events ], "time3" : { // single effect } }
{ "format_version": "1.8.0", "animations": { ... "animation.cat.sit": { "loop": true, "animation_length": 5.0, "bones": { // bone animation stuff }, "particle_effects": { "3.0": [ { "effect": "smoke_puff" } ] } }, ... } } }
This website is not affiliated with Mojang Studios or Microsoft