{
  "format_version": "1.10.0",
  "particle_effect": {
    "description": {
      "identifier": "minecraft:nautilus_bubbles_particle",
      "basic_render_parameters": {
        "material": "particles_alpha",
        "texture": "textures/particle/particles"
      }
    },
    "components": {
      "minecraft:emitter_initialization": {
        "creation_expression": "variable.max_spawn_rate_speed = 15.0f; variable.max_spawn_rate_speed_scalar = 10.0f; variable.baby_size_scale = 0.35f;"
      },
      "minecraft:emitter_rate_steady": {
        "spawn_rate": "Math.random(1.579, 2.632) * Math.lerp(1.0f, variable.max_spawn_rate_speed_scalar, Math.clamp(Math.inverse_lerp(0.0f, variable.max_spawn_rate_speed, query.ground_speed), 0.0f, 1.0f))",
        "max_particles": 50
      },
      "minecraft:emitter_lifetime_expression": {
        "activation_expression": "query.is_in_water",
        "expiration_expression": 0
      },
      "minecraft:emitter_shape_point": {
        "offset": [ "0", "query.is_baby ? 1.4 : 0", "0" ],
        "direction": [ "Math.Random(-0.5, 0.5)", "Math.Random(-0.2, 0.2)", "0.5" ]
      },
      "minecraft:particle_lifetime_expression": {
        "max_lifetime": "2 / ((Math.Random(0.0, 1.0) * 0.8 + 0.2) * 5)"
      },
      "minecraft:particle_motion_dynamic": {
        "linear_acceleration": [ 0, 0.8, 0 ],
        "linear_drag_coefficient": 1
      },
      "minecraft:particle_appearance_billboard": {
        "size": [ "((0.05*variable.particle_random_1+0.1)*(variable.particle_random_2*0.9+0.2)) * (query.is_baby ? variable.baby_size_scale : 1.0)", "((0.05*variable.particle_random_1+0.1)*(variable.particle_random_2*0.9+0.2)) * (query.is_baby ? variable.baby_size_scale : 1.0)" ],
        "facing_camera_mode": "lookat_xyz",
        "uv": {
          "texture_width": 128,
          "texture_height": 128,
          "uv": [ 0, 16 ],
          "uv_size": [ 8, 8 ]
        }
      },
      "minecraft:particle_appearance_lighting": {}
    }
  }
}
