{
    "outputPath" : "./src/main/java/electrosphere/net/parser/",
    "packageName" : "electrosphere.net.parser",
    "categories":[
        {
            "categoryName" : "Terrain",
            "data" : [
                {
                    "name" : "worldSizeDiscrete",
                    "type" : "FIXED_INT"
                },
                {
                    "name" : "dynamicInterpolationRatio",
                    "type" : "FIXED_INT"
                },
                {
                    "name" : "randomDampener",
                    "type" : "FIXED_FLOAT"
                },
                {
                    "name" : "worldMinX",
                    "type" : "FIXED_INT"
                },
                {
                    "name" : "worldMinY",
                    "type" : "FIXED_INT"
                },
                {
                    "name" : "worldMaxX",
                    "type" : "FIXED_INT"
                },
                {
                    "name" : "worldMaxY",
                    "type" : "FIXED_INT"
                },


                {
                    "name" : "value",
                    "type" : "FIXED_FLOAT"
                },


                {
                    "name" : "worldX",
                    "type" : "FIXED_INT"
                },
                {
                    "name" : "worldY",
                    "type" : "FIXED_INT"
                },
                {
                    "name" : "worldZ",
                    "type" : "FIXED_INT"
                },

                {
                    "name" : "voxelX",
                    "type" : "FIXED_INT"
                },
                {
                    "name" : "voxelY",
                    "type" : "FIXED_INT"
                },
                {
                    "name" : "voxelZ",
                    "type" : "FIXED_INT"
                },

                


                {
                    "name" : "realLocationX",
                    "type" : "FIXED_DOUBLE"
                },
                {
                    "name" : "realLocationY",
                    "type" : "FIXED_DOUBLE"
                },
                {
                    "name" : "realLocationZ",
                    "type" : "FIXED_DOUBLE"
                },



                {
                    "name" : "chunkData",
                    "type" : "BYTE_ARRAY"
                },

                {
                    "name" : "chunkResolution",
                    "type" : "FIXED_INT"
                },

                {
                    "name" : "terrainWeight",
                    "type" : "FIXED_FLOAT"
                },
                {
                    "name" : "terrainValue",
                    "type" : "FIXED_INT"
                }
            ],
            "messageTypes" : [
                {
                    "messageName" : "RequestMetadata",
                    "description" : "Requests terrain metadata from the server",
                    "data" : []
                },
                {
                    "messageName" : "ResponseMetadata",
                    "description" : "Tell the client the terrain metadata",
                    "data" : [
                        "worldSizeDiscrete",
                        "dynamicInterpolationRatio",
                        "randomDampener",
                        "worldMinX",
                        "worldMinY",
                        "worldMaxX",
                        "worldMaxY"
                    ]
                },
                {
                    "messageName" : "RequestEditVoxel",
                    "description" : "Requests that a voxel be edited on the server",
                    "data" : [
                        "worldX",
                        "worldY",
                        "worldZ",
                        "voxelX",
                        "voxelY",
                        "voxelZ",
                        "terrainWeight",
                        "terrainValue"
                    ]
                },
                {
                    "messageName" : "UpdateVoxel",
                    "description" : "Tells the client to update a voxel's value",
                    "data" : [
                        "worldX",
                        "worldY",
                        "worldZ",
                        "voxelX",
                        "voxelY",
                        "voxelZ",
                        "terrainWeight",
                        "terrainValue"
                    ]
                },
                {
                    "messageName" : "RequestUseTerrainPalette",
                    "description" : "Requests that the current player entity use a given terrain palette",
                    "data" : [
                        "realLocationX",
                        "realLocationY",
                        "realLocationZ",
                        "value",
                        "terrainWeight",
                        "terrainValue"
                    ]
                },
                {
                    "messageName" : "SpawnPosition",
                    "description" : "Sets the spawn position of the client",
                    "data" : [
                        "realLocationX",
                        "realLocationY",
                        "realLocationZ"
                    ]
                },
                {
                    "messageName" : "RequestChunkData",
                    "description" : "Requests chunk data from the server",
                    "data" : [
                        "worldX",
                        "worldY",
                        "worldZ"
                    ]
                },
                {
                    "messageName" : "sendChunkData",
                    "description" : "Sends chunk data to the client",
                    "data" : [
                        "worldX",
                        "worldY",
                        "worldZ",
                        "chunkData"
                    ]
                },
                {
                    "messageName" : "RequestReducedChunkData",
                    "description" : "Requests reduced resolution chunk data from the server",
                    "data" : [
                        "worldX",
                        "worldY",
                        "worldZ",
                        "chunkResolution"
                    ]
                },
                {
                    "messageName" : "SendReducedChunkData",
                    "description" : "Sends chunk data to the client",
                    "data" : [
                        "worldX",
                        "worldY",
                        "worldZ",
                        "chunkResolution",
                        "chunkData"
                    ]
                },
                {
                    "messageName" : "RequestFluidData",
                    "description" : "Requests a fluid data from the server",
                    "data" : [
                        "worldX",
                        "worldY",
                        "worldZ"
                    ]
                },
                {
                    "messageName" : "sendFluidData",
                    "description" : "Sends fluid data to the client",
                    "data" : [
                        "worldX",
                        "worldY",
                        "worldZ",
                        "chunkData"
                    ]
                },
                {
                    "messageName" : "updateFluidData",
                    "description" : "Updates fluid data on the client",
                    "data" : [
                        "worldX",
                        "worldY",
                        "worldZ",
                        "chunkData"
                    ]
                }
            ]
        }
    ]
}