Particles (ParticleSpawner)
Asset path: Server/Particles/*.particlespawner
Parent
When set this asset will inherit properties from the named asset.
When inheriting from another ParticleSpawner most properties will simply be copied from the parent asset to this asset. In the case where both child and parent provide a field the child field will simply replace the value provided by the parent, in the case of nested structures this will apply to the fields within the structure. In some cases the field may decide to act differently, for example: by merging the parent and child fields together.
Type information: String
Tags
Tags are a general way to describe an asset that can be interpreted by other systems in a way they see fit.
For example you could tag something with a Material tag with the values Solid and Stone, And another single tag Ore.
Tags will be expanded into a single list of tags automatically. Using the above example with Material and Ore the end result would be the following list of tags: Ore, Material, Solid, Stone, Material=Solid and Material=Stone.
Type information:
(Nullable) Map of the following:
| Key | Type |
|---|---|
any String | Array of String |
Shape
Defines in what shape the EmitOffset is calculated.
Type information:
Any one of the following String (defaults to Sphere):
| Name | Description |
|---|---|
"Sphere" | The particles get spawned in a spheroid area. |
"Cube" | The particles get spawned in a cuboid area. |
EmitOffset
Defines in what region the particles can be spawned around the ParticleSpawner centre.
If it contains:
- only 1 range, the particle will always get spawned in a line.
- 2 ranges, the particles will get spawned in a 2d form of the
EmitShape. E.g. rings can be created with this. - all 3 ranges, the particle will spawn inside the defined shape. This shape can be hollow in the inside via the
Minvalues.
Type information:
(Nullable)
RangeVector3f with the following properties:
| Key | Type | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| X | (Nullable)
Rangef
| ||||||||||
| Y | (Nullable)
Rangef
| ||||||||||
| Z | (Nullable)
Rangef
|
UseEmitDirection
If enabled, the spawn offset determines the direction.
Overrides pitch/yaw in InitialVelocity.
Type information: Boolean defaults to: false
TotalParticles
Defines how many particles can be spawned by this spawner at maximum throughout its whole lifetime.
Type information:
(Nullable)
Range with the following properties:
| Key | Type | Description |
|---|---|---|
| Min | Integer defaults to: 0 | |
| Max | Integer defaults to: 0 |
LifeSpan
Defines how long the spawner lasts in seconds.
If 0, the spawner does not expire.
Type information:
(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$
MaxConcurrentParticles
Defines how many particles from this spawner can be present at the same time.
The client caps this value at 512.
Normally you would use ParticleLifeSpan[Max]*SpawnRate[Max], but if SpawnBurst is enabled, you would additionally multiply it with 1/WaveDelay[Min].
Type information: Integer defaults to: 0
ParticleLifeSpan
Defines how long a particle lasts in seconds.
Type information:
(Nullable)
Rangef with the following properties:
| Key | Type | Description |
|---|---|---|
| Min | Number defaults to: 0.0 | |
| Max | Number defaults to: 0.0 |
SpawnRate
Defines how many particles get spawned:
- per second normally
- per wave if
SpawnBurstis enabled.
Type information:
(Nullable)
Rangef with the following properties:
| Key | Type | Description |
|---|---|---|
| Min | Number defaults to: 0.0 | |
| Max | Number defaults to: 0.0 |
SpawnBurst
If enabled, the amount of particles defined in SpawnRate get spawned at the same time every wave.
The time distance between these waves is defined in WaveDelay.
Type information: Boolean defaults to: false
WaveDelay
Defines the time difference between spawn waves.
If SpawnBurst is enabled, it is the delay between bursts.
If SpawnBurst is disabled, spawning pauses for this delay after all particles of a wave have expired.
Type information:
(Nullable)
Rangef with the following properties:
| Key | Type | Description |
|---|---|---|
| Min | Number defaults to: 0.0 | |
| Max | Number defaults to: 0.0 |
InitialVelocity
Defines in what direction the particles move upon creation.
Please note that the velocity can be affected by Attractors or UseEmitDirection.
Type information:
(Nullable)
InitialVelocity with the following properties:
| Key | Type | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Yaw | (Nullable)
Rangef
| Defines the rotation around the y-Axis. | |||||||||
| Pitch | (Nullable)
Rangef
| Defines the rotation around the x-Axis. 0 / 180 > at the same height as its origin Down < - 90 + > Up | |||||||||
| Speed | (Nullable)
Rangef
| Defines the starting speed in the direction set by |
ParticleRotationInfluence
Defines how the rotation of the particle gets affected by the viewing camera or its current motion.
Type information:
Any one of the following String (defaults to None):
| Name | Description |
|---|---|
"None" | The rotation only gets affected by the |
"Billboard" | The particle always faces the camera. Only the rotation around the z-Axis can additionally affect the rotation. |
"BillboardY" | The particle only rotates around its y-Axis(Up-Down) to always face the camera. Only the rotation around the z-Axis can additionally affect the rotation. |
"BillboardVelocity" | Similar to |
"Velocity" | The particle's y-Axis always aligns with the velocity vector of the particle. |
ParticleRotateWithSpawner
If enabled, the particles rotate the same amount around their axis (x,y,z) as their ParticleSystem.
E.g.: If the system rotates 90° around its y-Axis, the particles would all rotate 90° around their own y-Axis.
Type information: Boolean defaults to: false
TrailSpawnerPositionMultiplier
Defines how strong the particles keep their position when their anchor gets moved.
- 0.0: Moves fully with its anchor.
- 0.5: Moves half the distance with its anchor.
- 1.0: Does not move with its anchor.
Type information:
(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$
TrailSpawnerRotationMultiplier
Defines how strong the particles rotate with their ParticleSystem.
- 0.0: The particles rotate the same amount as their anchor.
- 0.5: The particles rotate half the amount as their anchor.
- 1.0: The particles don't rotate with their anchor.
E.g.: The anchor rotates 180° around its y-Axis, with this value being 0.3 the particles would rotate only 126° ((1-0.3)*180°) with it.
Type information:
(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$
VelocityStretchMultiplier
Stretches the Particles based on velocity. Only functions if ParticleRotationInfluence is BillboardVelocity or Velocity.
Needs None in ScaleRatioConstraint to function properly. Effect is barely visible.
Type information:
(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$
Attractors
Attractors are the best way to control the motion of particles over time.
Type information:
(Nullable) Array of the type:
ParticleAttractor with the following properties:
| Key | Type | Description | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Position | (Nullable)
Vector3f
| Attractors are used both in Spawner: Offsets the centre of the System: Offsets the centre of the | ||||||||||||
| RadialAxis | (Nullable)
Vector3f
| Sets an axis for the radial motion. Values can be mixed to change the direction of the axis. You can think of it as defining another position in a coordinate system originating from the centre of the attractor and then drawing a line through this origin and the newly defined point. E.g.: If the x and y value is 1 it is exactly between the default x and y axis. If x = 2 and y = 1 the axis is 1/3 towards the y and 2/3 towards the x axis.
| ||||||||||||
| TrailPositionMultiplier | (Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$ | Attractors are used both in Spawner (Advanced, rarely used): Defines how strong the attractor keeps its position, while the spawner gets moved. This movement for the attractor is individual for each particle, so the movement of the attractor is only stopped, when the particle gets spawned. E.g.: The spawner moves with speed 1 towards +x and every 0.5 seconds a field of particles (1 x and 1 z max spawn offset) get spawned. The attractor has a Both:
| ||||||||||||
| Radius | (Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$ | Defines how far the attractor takes effect. Leave empty for infinite range. | ||||||||||||
| RadialAcceleration | (Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$ | Defines the acceleration away from (positive) or towards (negative) the | ||||||||||||
| RadialTangentAcceleration | (Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$ | Defines the acceleration of rotation around the
| ||||||||||||
| LinearAcceleration | (Nullable)
Vector3f
| Lets you define the acceleration along the x,y and z-Axis. West < - x + > East Down < - y + > Up North < - z + > South | ||||||||||||
| RadialImpulse | (Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$ | Defines a constant speed away from (positive) or towards (negative) the | ||||||||||||
| RadialTangentImpulse | (Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$ | Defines a constant rotation speed around the
| ||||||||||||
| LinearImpulse | (Nullable)
Vector3f
| Lets you define a constant speed along the x,y and z-Axis, applied while the particle is inside the effective radius. West < - x + > East Down < - y + > Up North < - z + > South | ||||||||||||
| DampingMultiplier | (Nullable)
Vector3f
| Attractors are used both in Spawner: Defines the slowdown of the System: Defines the slowdown of the |
RenderMode
Defines how the particles get rendered.
Default: BlendLinear
Type information:
Any one of the following String (defaults to BlendLinear):
| Name | Description |
|---|---|
"BlendLinear" | The particles get blended linearly with the environment's background. |
"BlendAdd" | The particles get blended additively (lightens) with the background. |
"Erosion" | The particle fully covers the background and the lighter the colour the stronger a glow halo is applied to the particle borders. Opacity values only cut off semitransparent pixels of the texture. |
"Distortion" | The particle distorts the background. |
LightInfluence
Defines if the environment light affects the colour and brightness of the particle.
0.0: Lighting does not affect it (fullbright). Any other value applies the full lighting.
Any value above 0 removes the glow from Erosion particles.
Type information:
(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$
IntersectionHighlight
Changes the colour of the region of the particle that intersects a block / is near an intersection.
Type information:
(Nullable)
IntersectionHighlight with the following properties:
| Key | Type | Description |
|---|---|---|
| HighlightThreshold | (Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$ | Defines how far away from the intersection the highlight still gets applied. 0 disables the highlight. |
| HighlightColor | (Nullable) A color in the form:
| Defines the colour that gets applied to the region for the highlight. |
LinearFiltering
Smoothes the texture, so pixels of low resolution textures are less visible.
Type information: Boolean defaults to: false
UVMotion
Distorts the texture via a flow map. Mainly used for non solid representations like smoke or waves.
Type information:
(Nullable)
UVMotion with the following properties:
| Key | Type | Description | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Texture | (Nullable) StringReference to a common asset in the folder:
*.png | Defines the texture used for the distortion. The texture gets tiled to avoid scale conflicts with | ||||||||||||||||||||
| Scale | Number defaults to: 0.0 | Defines the scale of the used texture. | ||||||||||||||||||||
| AddRandomUVOffset | Boolean defaults to: false | If checked, randomly offsets the centre of the distortion texture per particle. | ||||||||||||||||||||
| SpeedX | Number defaults to: 0.0 | How fast the texture should get shifted along the x-Axis over time. | ||||||||||||||||||||
| SpeedY | Number defaults to: 0.0 | How fast the texture should get shifted along the y-Axis over time. | ||||||||||||||||||||
| Strength | Number defaults to: 0.0 | Defines how strong the distortion is. | ||||||||||||||||||||
| StrengthCurveType | (Nullable) Any one of the following String (defaults to Constant):
UVMotionCurveType
| Defines how the strength of the distortion evolves over time. |
CameraOffset
Offsets the particle more towards (negative value) or away (positive value) from the camera.
Used to fix z-fighting if the particle aligns with block/model faces.
Type information:
(Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$
ParticleCollision
Defines what should happen, if the particle hits a specific block type.
Type information:
(Nullable)
ParticleCollision with the following properties:
| Key | Type | Description | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| BlockType | Any one of the following String (defaults to None):
ParticleCollisionBlockType
| Defines what Block Type triggers the | ||||||||||||
| Action | Any one of the following String (defaults to Expire):
ParticleCollisionAction
| Defines what to do when the | ||||||||||||
| ParticleRotationInfluence | (Nullable) Any one of the following String:
ParticleRotationInfluence
| Overwrites how the rotation of the particle is influenced by the viewing camera or its motion. |
IsLowRes
If enabled, the particles get rendered at a lower resolution to improve performance.
Type information: Boolean defaults to: false
Particle
Contains the defining values of the particle like animation, size, texture, rotation, opacity and colour.
Type information:
Particle with the following properties:
| Key | Type | Description | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Texture | StringReference to a common asset in the folder:
*.png | The texture used for the particle. MUST ALWAYS BE DEFINED! | ||||||||||||||||||
| FrameSize | (Nullable)
Size
| Sometimes the texture has multiple variants of the same texture. If this field isn't defined the whole texture is used for the particle. By defining the dimension of these frames you can cut the texture into smaller parts. To use other frames than the first (most top left) frame you need to change the values in Invalid sizes (0 or larger than the texture) are ignored and the whole texture is used. | ||||||||||||||||||
| SoftParticles | Any one of the following String (defaults to Enable):
SoftParticle
| Soft particles describe how the transparency of the particle changes near solid geometry. | ||||||||||||||||||
| SoftParticlesFadeFactor | (Nullable) Either Number defaults to: 1.0 or String that matches the pattern: ^(-?Infinity|NaN)$ | Controls how quickly the particle fades near solid geometry. Higher values make the fade region thinner. | ||||||||||||||||||
| CameraNearFadeStartDistance | (Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$ | Distance from the camera where particle opacity starts to increase. | ||||||||||||||||||
| CameraNearFadeEndDistance | (Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$ | Distance from the camera where particle opacity reaches its configured value. Set both near fade distances to zero to disable the fade. | ||||||||||||||||||
| CameraFarFadeStartDistance | (Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$ | Distance from the camera where particle opacity starts to decrease. | ||||||||||||||||||
| CameraFarFadeEndDistance | (Nullable) Either Number defaults to: 0.0 or String that matches the pattern: ^(-?Infinity|NaN)$ | Distance from the camera where particle opacity reaches zero. Set both far fade distances to zero to disable the fade. | ||||||||||||||||||
| UseSpriteBlending | Boolean defaults to: false | If enabled, the texture between frames gets interpolated if the | ||||||||||||||||||
| Animation | Map of the following:
Map
| Controls the animation of the particles by listing all the frames. Values range from 0 to 100 since they refer to the percentage of its lifetime. E.g.: If the lifetime is 2s and the added frame is 50, the frame is shown after 1s or 50% of its lifetime. NEEDS AT LEAST ONE FRAME! | ||||||||||||||||||
| CollisionAnimationFrame | (Nullable)
ParticleAnimationFrame
| Contains the frame that is used if | ||||||||||||||||||
| UVOption | Any one of the following String (defaults to None):
ParticleUVOption
| Flips the texture horizontally, vertically, both or none. | ||||||||||||||||||
| ScaleRatioConstraint | Any one of the following String (defaults to OneToOne):
ParticleScaleRatioConstraint
| Controls side ratio of the texture. | ||||||||||||||||||
| InitialAnimationFrame | (Nullable)
ParticleAnimationFrame
| Defines the base frame values for the particle animation. |
