{
    "outputPath" : "./src/main/java/electrosphere/net/parser/",
    "packageName" : "electrosphere.net.parser",
    "categories":[
        {
            "categoryName" : "Entity",
            "data" : [
                {
                    "name" : "entityCategory",
                    "type" : "FIXED_INT"
                },
                {
                    "name" : "entitySubtype",
                    "type" : "VAR_STRING"
                },
                {
                    "name" : "entityID",
                    "type" : "FIXED_INT"
                },
                {
                    "name" : "creatureTemplate",
                    "type" : "VAR_STRING"
                },
                {
                    "name" : "positionX",
                    "type" : "FIXED_DOUBLE"
                },
                {
                    "name" : "positionY",
                    "type" : "FIXED_DOUBLE"
                },
                {
                    "name" : "positionZ",
                    "type" : "FIXED_DOUBLE"
                },
                {
                    "name" : "rotationX",
                    "type" : "FIXED_DOUBLE"
                },
                {
                    "name" : "rotationY",
                    "type" : "FIXED_DOUBLE"
                },
                {
                    "name" : "rotationZ",
                    "type" : "FIXED_DOUBLE"
                },
                {
                    "name" : "rotationW",
                    "type" : "FIXED_DOUBLE"
                },
                {
                    "name" : "linVelX",
                    "type" : "FIXED_DOUBLE"
                },
                {
                    "name" : "linVelY",
                    "type" : "FIXED_DOUBLE"
                },
                {
                    "name" : "linVelZ",
                    "type" : "FIXED_DOUBLE"
                },
                {
                    "name" : "angVelX",
                    "type" : "FIXED_DOUBLE"
                },
                {
                    "name" : "angVelY",
                    "type" : "FIXED_DOUBLE"
                },
                {
                    "name" : "angVelZ",
                    "type" : "FIXED_DOUBLE"
                },
                {
                    "name" : "linForceX",
                    "type" : "FIXED_DOUBLE"
                },
                {
                    "name" : "linForceY",
                    "type" : "FIXED_DOUBLE"
                },
                {
                    "name" : "linForceZ",
                    "type" : "FIXED_DOUBLE"
                },
                {
                    "name" : "angForceX",
                    "type" : "FIXED_DOUBLE"
                },
                {
                    "name" : "angForceY",
                    "type" : "FIXED_DOUBLE"
                },
                {
                    "name" : "angForceZ",
                    "type" : "FIXED_DOUBLE"
                },
                {
                    "name" : "yaw",
                    "type" : "FIXED_DOUBLE"
                },
                {
                    "name" : "pitch",
                    "type" : "FIXED_DOUBLE"
                },
                {
                    "name" : "velocity",
                    "type" : "FIXED_DOUBLE"
                },
                {
                    "name" : "treeState",
                    "type" : "FIXED_INT"
                },
                {
                    "name" : "propertyType",
                    "type" : "FIXED_INT"
                },
                {
                    "name" : "propertyValue",
                    "type" : "FIXED_INT"
                },
                {
                    "name" : "treeType",
                    "type" : "FIXED_INT"
                },
                {
                    "name" : "treeStatus",
                    "type" : "FIXED_INT"
                },
                {
                    "name" : "time",
                    "type" : "FIXED_LONG"
                },
                {
                    "name" : "bone",
                    "type" : "VAR_STRING"
                },
                {
                    "name" : "targetID",
                    "type" : "FIXED_INT"
                },
                {
                    "name" : "bTreeID",
                    "type" : "FIXED_INT"
                },
                {
                    "name" : "propertyID",
                    "type" : "FIXED_INT"
                },
                {
                    "name" : "propertyValueInt",
                    "type" : "FIXED_INT"
                },
                {
                    "name" : "propertyValueFloat",
                    "type" : "FIXED_FLOAT"
                },
                {
                    "name" : "propertyValueDouble",
                    "type" : "FIXED_DOUBLE"
                },
                {
                    "name" : "propertyValueString",
                    "type" : "VAR_STRING"
                },
                {
                    "name" : "foliageSeed",
                    "type" : "FIXED_LONG"
                }
            ],
            "messageTypes" : [
                {
                    "messageName" : "Create",
                    "description" : "Spawns an empty entity on the client",
                    "data" : [
                        "entityID",
                        "entityCategory",
                        "entitySubtype",
                        "positionX",
                        "positionY",
                        "positionZ"
                    ]
                },
                {
                    "messageName" : "SpawnCreature",
                    "description" : "Spawns a creature on the client",
                    "data" : [
                        "entityID",
                        "creatureTemplate",
                        "positionX",
                        "positionY",
                        "positionZ"
                    ]
                },
                {
                    "messageName" : "SpawnItem",
                    "description" : "Spawns an item on the client",
                    "data" : [
                        "entityID",
                        "creatureTemplate",
                        "positionX",
                        "positionY",
                        "positionZ"
                    ]
                },
                {
                    "messageName" : "SpawnObject",
                    "description" : "Spawns a generic object",
                    "data" : [
                        "entityID",
                        "creatureTemplate",
                        "positionX",
                        "positionY",
                        "positionZ"
                    ]
                },
                {
                    "messageName" : "moveUpdate",
                    "description" : "Updates a client on the move state of an entity",
                    "data" : [
                        "entityID",
                        "time",
                        "positionX",
                        "positionY",
                        "positionZ",
                        "rotationX",
                        "rotationY",
                        "rotationZ",
                        "rotationW",
                        "velocity",
                        "propertyValueInt",
                        "treeState"
                    ]
                },
                {
                    "messageName" : "attackUpdate",
                    "description" : "Updates the client on the status of a given attack",
                    "data" : [
                        "entityID",
                        "time",
                        "positionX",
                        "positionY",
                        "positionZ",
                        "rotationX",
                        "rotationY",
                        "rotationZ",
                        "velocity",
                        "treeState"
                    ]
                },
                {
                    "messageName" : "startAttack",
                    "description" : "Alerts the server that the client wants to start attacking",
                    "data" : []
                },
                {
                    "messageName" : "Kill",
                    "description" : "Kills an entity (ie plays death animation, creates effects, etc -- does not actually delete the entity from data/scene)",
                    "data" : [
                        "time",
                        "entityID"
                    ]
                },
                {
                    "messageName" : "Destroy",
                    "description" : "Destroys an entity, clearing it from the client scene",
                    "data" : [
                        "entityID"
                    ]
                },
                {
                    "messageName" : "setProperty",
                    "description" : "Sets a property on an entity (old method user to set the player's entity)",
                    "data" : [
                        "entityID",
                        "time",
                        "propertyType",
                        "propertyValue"
                    ]
                },
                {
                    "messageName" : "attachEntityToEntity",
                    "description" : "Tells the client to attach an entity to another entity",
                    "data" : [
                        "entityID",
                        "bone",
                        "targetID"
                    ]
                },
                {
                    "messageName" : "SpawnFoliageSeed",
                    "description" : "Spawns a foliage object on the client with a given seed value",
                    "data" : [
                        "entityID",
                        "creatureTemplate",
                        "foliageSeed",
                        "positionX",
                        "positionY",
                        "positionZ"
                    ]
                },
                {
                    "messageName" : "updateEntityViewDir",
                    "description" : "Updates the server's value for where the player is looking",
                    "data" : [
                        "entityID",
                        "time",
                        "propertyType",
                        "yaw",
                        "pitch"
                    ]
                },
                {
                    "messageName" : "syncPhysics",
                    "description" : "Synchronizes server physics state to client",
                    "data" : [
                        "entityID",
                        "time",
                        "positionX",
                        "positionY",
                        "positionZ",
                        "rotationX",
                        "rotationY",
                        "rotationZ",
                        "rotationW",
                        "linVelX",
                        "linVelY",
                        "linVelZ",
                        "angVelX",
                        "angVelY",
                        "angVelZ",
                        "linForceX",
                        "linForceY",
                        "linForceZ",
                        "angForceX",
                        "angForceY",
                        "angForceZ"
                    ]
                }



            ]
        }
    ]
}