{
    "minecraft:emitter_local_space": {
        "position": "$general.boolean",
        "rotation": "$general.boolean",
        "velocity": "$general.boolean"
    },
    "minecraft:emitter_initialization": {
        "creation_expression": "$particle.general.moLang",
        "per_update_expression": "$particle.general.moLang"
    },
    "minecraft:emitter_rate_instant": {
        "num_particles": "$general.number and $particle.general.moLang"
    },
    "minecraft:emitter_rate_steady": {
        "spawn_rate": "$general.number and $particle.general.moLang",
        "max_particles": "$general.number and $particle.general.moLang"
    },
    "minecraft:emitter_rate_manual": {
        "max_particles": "$general.number and $particle.general.moLang"
    },

    "minecraft:emitter_lifetime_looping": {
        "active_time": "$general.number and $particle.general.moLang",
        "sleep_time": "$general.number and $particle.general.moLang"
    },
    "minecraft:emitter_lifetime_once": {
        "active_time": "$general.number and $particle.general.moLang"
    },
    "minecraft:emitter_lifetime_expression": {
        "activation_expression": "$general.number and $particle.general.moLang",
        "expiration_expression": "$general.number and $particle.general.moLang"
    },
    "minecraft:emitter_lifetime_events": {
        "creation_event": {
            "$dynamic.list.next_index": { "@meta": { "is_value": true } }
        },
        "expiration_event": {
            "$dynamic.list.next_index": { "@meta": { "is_value": true } }
        },

        "timeline": {
            "time": {
               "$dynamic.list.next_index": { "@meta": { "is_value": true } }
            }
        }
    },

    "minecraft:emitter_shape_point": {
        "offset": {
            "$dynamic.list.index_triple": "$general.number and $particle.general.moLang"
        },
        "direction": {
            "$dynamic.list.index_triple": "$general.number and $particle.general.moLang"
        }
    },
    "minecraft:emitter_shape_sphere": {
        "radius": "$general.number and $particle.general.moLang",
        "surface_only": "$general.boolean",

        "offset": {
            "$dynamic.list.index_triple": "$general.number and $particle.general.moLang"
        },
        "direction": {
            "@value.inwards": {},
            "@value.outwards": {},
            "$dynamic.list.index_triple": "$general.number and $particle.general.moLang"
        }
    },
    "minecraft:emitter_shape_box": {
        "half_dimensions": {
            "$dynamic.list.index_triple": "$general.number and $particle.general.moLang"
        },
        "surface_only": "$general.boolean",

        "offset": {
            "$dynamic.list.index_triple": "$general.number and $particle.general.moLang"
        },
        "direction": {
            "@value.inwards": {},
            "@value.outwards": {},
            "$dynamic.list.index_triple": "$general.number and $particle.general.moLang"
        }
    },
    "minecraft:emitter_shape_custom": {
        "offset": {
            "$dynamic.list.index_triple": "$general.number and $particle.general.moLang"
        },
        "direction": {
            "@value.inwards": {},
            "@value.outwards": {},
            "$dynamic.list.index_triple": "$general.number and $particle.general.moLang"
        } 
    },
    "minecraft:emitter_shape_entity_aabb": {
        "surface_only": "$general.boolean",
        "direction": {
            "@value.inwards": {},
            "@value.outwards": {},
            "$dynamic.list.index_triple": "$general.number and $particle.general.moLang"
        }   
    },
    "minecraft:emitter_shape_disc": {
        "plane_normal": {
            "@value.x": {},
            "@value.y": {},
            "@value.z": {},
            "$dynamic.list.index_triple": "$general.number and $particle.general.moLang"
        },
        "offset": {
            "$dynamic.list.index_triple": "$general.number and $particle.general.moLang"
        },
        "radius": "$general.number and $particle.general.moLang",
        "surface_only": "$general.boolean",
        "direction": {
            "@value.inwards": {},
            "@value.outwards": {},
            "$dynamic.list.index_triple": "$general.number and $particle.general.moLang"
        } 
    },

    "minecraft:particle_initial_spin": {
        "rotation": "$general.number and $particle.general.moLang",
        "rotation_rate": "$general.number and $particle.general.moLang"
    },
    "minecraft:particle_initial_speed": {
        "$dynamic.list.index_triple": "$general.number and $particle.general.moLang"
    },
    "minecraft:particle_motion_dynamic": {
        "linear_acceleration": {
            "$dynamic.list.index_triple": "$general.number and $particle.general.moLang"
        },
        "linear_drag_coefficient": "$general.number and $particle.general.moLang",
        "rotation_acceleration": "$general.number and $particle.general.moLang",
        "rotation_drag_coefficient": "$general.number and $particle.general.moLang"
    },
    "minecraft:particle_motion_parametric": {
        "relative_position": {
            "$dynamic.list.index_triple": "$general.number and $particle.general.moLang"
        },
        "direction": {
            "$dynamic.list.index_triple": "$general.number and $particle.general.moLang"
        },
        "rotation": "$general.number and $particle.general.moLang"
    },
    "minecraft:particle_motion_collision": {
        "enabled": "$general.boolean",
        "expire_on_contact": "$general.boolean",
        "collision_drag": "$general.number and $particle.general.moLang",
        "coefficient_of_restitution": "$general.number and $particle.general.moLang",
        "collision_radius": "$general.number and $particle.general.moLang",
        "events": {
            "$dynamic.list.next_index": {
                "event": { "@meta": { "is_value": true } },
                "min_speed": "$general.decimal"
            }
        }
    },
    "minecraft:particle_appearance_billboard": {
        "size": {
            "$dynamic.list.index_pair": "$general.number and $particle.general.moLang"
        },
        "face_camera_mode": [ "rotate_xyz", "rotate_y", "lookat_xyz", "lookat_y", "direction" ], 
        "uv": {
            "textureheight": "$general.number",
            "uv": {
                "$dynamic.list.index_pair": "$general.number and $particle.general.moLang"
            },
            "uv_size": {
                "$dynamic.list.index_pair": "$general.number and $particle.general.moLang"
            },
            "flipbook": {
                "base_UV": {
                    "$dynamic.list.index_pair": "$general.number and $particle.general.moLang"
                },
                "size_UV": {
                    "$dynamic.list.index_pair": "$general.number"
                },
                "step_UV": {
                    "$dynamic.list.index_pair": "$general.number"
                },
                "frames_per_second": "$general.decimal",
                "max_frame": "$general.number and $particle.general.moLang", 
                "stretch_to_lifetime": "$general.boolean",
                "loop":  "$general.boolean"
            }
        }
    },
    "minecraft:particle_appearance_tinting": {
        "color": {
            "gradient": "$general.decimal",
            "interpolant": "$general.number and $particle.general.moLang"
        }
    },
    "minecraft:particle_appearance_lighting": {},

    "minecraft:particle_lifetime_expression": {
        "expiration_expression": "$general.number and $particle.general.moLang",
        "max_lifetime": "$general.number and $particle.general.moLang"
    },
    "minecraft:particle_lifetime_events": {
        "creation_event": {
            "$dynamic.list.next_index": { "@meta": { "is_value": true } }
        },
        "expiration_event": {
            "$dynamic.list.next_index": { "@meta": { "is_value": true } }
        },

        "timeline": {
            "time": {
               "$dynamic.list.next_index": { "@meta": { "is_value": true } }
            }
        }
    },
    "minecraft:particle_expire_if_in_blocks": {
        "$dynamic.list.next_index": "$general.block_identifier"
    },
    "minecraft:particle_expire_if_not_in_blocks": {
        "$dynamic.list.next_index": "$general.block_identifier"
    },
    "minecraft:particle_kill_plane": [ "$general.number", "$general.number", "$general.number", "$general.number" ]
}