{
  "format_version": "1.26.10",
  "particle_effect": {
    "description": {
      "identifier": "minecraft:portal_directional",
      "basic_render_parameters": {
        "material": "particles_alpha",
        "texture": "textures/particle/particles"
      }
    },
    "components": {
      "minecraft:emitter_lifetime_expression": {
        "expiration_expression": 1
      },
      "minecraft:emitter_rate_instant": {
        "num_particles": 1
      },
      "minecraft:emitter_shape_point": {
        "direction": [
          {
            "expression": "math.random(-1, 1)",
            "version": 13
          },
          {
            "expression": "math.random(-1, 1)",
            "version": 13
          },
          {
            "expression": "math.random(-1, 1)",
            "version": 13
          }
        ]
      },
      "minecraft:particle_appearance_billboard": {
        "size": [
          {
            "expression": "(variable.particle_random_2 * 0.02 + 0.05) * (1 - Math.Pow((1-(variable.particle_age/variable.particle_lifetime)),2))",
            "version": 0
          },
          {
            "expression": "(variable.particle_random_2 * 0.02 + 0.05) * (1 - Math.Pow((1-(variable.particle_age/variable.particle_lifetime)),2))",
            "version": 0
          }
        ],
        "facing_camera_mode": "lookat_xyz",
        "direction": {
          "mode": "derive_from_velocity",
          "custom_direction": [
            0,
            0,
            0
          ],
          "min_speed_threshold": 0.1
        },
        "uv": {
          "texture_width": 128,
          "texture_height": 128,
          "uv": [
            {
              "expression": "Math.round(variable.particle_random_1*8)*8",
              "version": 0
            },
            0
          ],
          "uv_size": [
            8,
            8
          ]
        }
      },
      "minecraft:particle_appearance_tinting": {
        "color": {
          "gradient": {
            "0.000000": [
              {
                "expression": "variable.particle_random_1 * 0.6 + 0.4",
                "version": 0
              },
              {
                "expression": "(variable.particle_random_1 * 0.6 + 0.4) * 0.3",
                "version": 0
              },
              {
                "expression": "(variable.particle_random_1 * 0.6 + 0.4) * 0.9",
                "version": 0
              },
              1
            ]
          },
          "interpolant": 0
        }
      },
      "minecraft:particle_lifetime_expression": {
        "max_lifetime": {
          "expression": "Math.Random(2.0,2.45)",
          "version": 0
        }
      },
      "minecraft:particle_motion_parametric": {
        "relative_position": [
          {
            "expression": "variable.alpha = variable.particle_age/variable.particle_lifetime; variable.distance = (1-(-1*(variable.alpha)+Math.Pow((variable.alpha),2)*2)); return variable.direction.x * variable.distance;",
            "version": 0
          },
          {
            "expression": "variable.direction.y * variable.distance - variable.alpha",
            "version": 0
          },
          {
            "expression": "variable.direction.z * variable.distance",
            "version": 0
          }
        ]
      }
    }
  }
}