{
  "panel": {
    "console": {
      "send": "socket",
      "regex": ".*\\[(\\d+:\\d+:\\d+)\\](\\[\\w+\\]) : (.*)",
      "levels": {
        "map": [
          {
            "name": "Debug",
            "match": "[DEBUG]",
            "type": "string",
            "colour": "cyan"
          },
          {
            "name": "Warn",
            "match": "[WARNING]",
            "type": "string",
            "colour": "yellow"
          },
          {
            "name": "Error",
            "match": "[ERROR]",
            "type": "string",
            "colour": "red"
          },
          {
            "name": "Info",
            "match": "(.*)",
            "type": "regex",
            "colour": "white"
          }
        ],
        "replace": true
      },
      "map": {
        "timestamp": 1,
        "level": 2,
        "message": 3
      }
    }
  },
  "files": [
    {
      "name": "config",
      "path": "ksp/ksp.config",
      "handler": "json",
      "default": true
    }
  ],
  "title": "KSP Config",
  "type": "object",
  "properties": {
    "port": {
      "title": "Server Port",
      "description": "The port the server listens on",
      "type": "number",
      "default": 6702,
      "propertyOrder": 1
    },
    "modpackMode": {
      "title": "Modpack Mode",
      "description": "Specify the modpack type",
      "type": "string",
      "default": "NONE",
      "enum": [
        "NONE",
        "GAMEDATA",
        "CKAN"
      ],
      "options": {
        "enum_titles": [
          "NONE",
          "GAMEDATA",
          "CKAN"
        ]
      },
      "propertyOrder": 1
    },
    "warpMode": {
      "title": "Warp Mode",
      "description": "Specify the warp type",
      "type": "string",
      "default": "SUBSPACE",
      "enum": [
        "MCW_FORCE",
        "MCW_VOTE",
        "MCW_LOWEST",
        "SUBSPACE_SIMPLE",
        "SUBSPACE"
      ],
      "options": {
        "enum_titles": [
          "MCW_FORCE",
          "MCW_VOTE",
          "MCW_LOWEST",
          "SUBSPACE_SIMPLE",
          "SUBSPACE"
        ]
      },
      "propertyOrder": 1
    },
    "gameMode": {
      "title": "Game Mode",
      "description": "Specify the game type",
      "type": "string",
      "default": "SANDBOX",
      "enum": [
        "SANDBOX",
        "SCIENCE",
        "CAREER"
      ],
      "options": {
        "enum_titles": [
          "SANDBOX",
          "SCIENCE",
          "CAREER"
        ]
      },
      "propertyOrder": 1
    },
    "sharedScience": {
      "title": "Shared Science",
      "description": "Use shared science",
      "type": "boolean",
      "default": false,
      "propertyOrder": 5
    },
    "gameDifficulty": {
      "title": "Game Difficulty",
      "description": "Specify the gameplay difficulty of the server",
      "type": "string",
      "default": "NORMAL",
      "enum": [
        "EASY",
        "NORMAL",
        "MODERATE",
        "HARD",
        "CUSTOM"
      ],
      "options": {
        "enum_titles": [
          "EASY",
          "NORMAL",
          "MODERATE",
          "HARD",
          "CUSTOM"
        ]
      },
      "propertyOrder": 1
    },
    "whitelisted": {
      "title": "Whitelisted",
      "description": "Enable white-listing",
      "type": "boolean",
      "default": false,
      "propertyOrder": 1
    },
    "modControl": {
      "title": "Mod Control",
      "description": "Enable mod control",
      "type": "string",
      "default": "ENABLED_STOP_INVALID_PART_SYNC",
      "enum": [
        "DISABLED",
        "ENABLED_STOP_INVALID_PART_SYNC",
        "ENABLED_STOP_INVALID_PART_LAUNCH"
      ],
      "options": {
        "enum_titles": [
          "DISABLED",
          "ENABLED_STOP_INVALID_PART_SYNC",
          "ENABLED_STOP_INVALID_PART_LAUNCH"
        ]
      },
      "propertyOrder": 1
    },
    "sendPlayerToLatestSubspace": {
      "title": "Send Player To Latest Subspace",
      "description": "If true, sends the player to the latest subspace upon connecting. If false, sends the player to the previous time they were in",
      "type": "boolean",
      "default": true,
      "propertyOrder": 1
    },
    "useUTCTimeInLog": {
      "title": "Use UTC Time In Log",
      "description": "Use UTC instead of system time in the log",
      "type": "boolean",
      "default": false,
      "propertyOrder": 1
    },
    "logLevel": {
      "title": "Log Level",
      "description": "Minimum log level",
      "type": "string",
      "default": "DEBUG",
      "enum": [
        "DEBUG",
        "INFO",
        "CHAT",
        "ERROR",
        "FATAL"
      ],
      "options": {
        "enum_titles": [
          "DEBUG",
          "INFO",
          "CHAT",
          "ERROR",
          "FATAL"
        ]
      },
      "propertyOrder": 1
    },
    "screenshotsPerPlayer": {
      "title": "Screenshots Per Player",
      "description": "Specify maximum number of screenshots to save per player. -1 = None, 0 = Unlimited",
      "type": "number",
      "default": 20,
      "propertyOrder": 1
    },
    "screenshotHeight": {
      "title": "ScreenShot Height",
      "description": "Specify maximum number of screenshots to save per player. -1 = None, 0 = Unlimited",
      "type": "number",
      "default": 720,
      "propertyOrder": 1
    },
    "cheats": {
      "title": "Cheats",
      "description": "Enable use of cheats in-game",
      "type": "boolean",
      "default": true,
      "propertyOrder": 1
    },
    "httpPort": {
      "title": "Http Port",
      "description": "Specify maximum number of screenshots to save per player. -1 = None, 0 = Unlimited",
      "type": "number",
      "default": 0,
      "propertyOrder": 1
    },
    "serverName": {
      "title": "Server Name",
      "description": "Name of the server",
      "type": "string",
      "default": "DMP Server",
      "propertyOrder": 1
    },
    "maxPlayers": {
      "title": "Max Players",
      "description": "Maximum amount of players that can join the server",
      "type": "number",
      "default": 20,
      "propertyOrder": 1
    },
    "screenshotDirectory": {
      "title": "Screenshot Directory",
      "description": "Specify a custom screenshot directory",
      "type": "string",
      "default": "",
      "propertyOrder": 1
    },
    "autoNuke": {
      "title": "AutoNuke",
      "description": "Specify in minutes how often /nukeksc automatically runs. 0 = Disabled",
      "type": "number",
      "default": 0,
      "propertyOrder": 1
    },
    "autoDekessler": {
      "title": "Auto Dekessler",
      "description": "Specify in minutes how often /dekessler automatically runs. 0 = Disabled",
      "type": "number",
      "default": 30,
      "propertyOrder": 1
    },
    "numberOfAsteroids": {
      "title": "NumberOfAsteroids",
      "description": "How many untracked asteroids to spawn into the universe. 0 = Disabled",
      "type": "number",
      "default": 30,
      "propertyOrder": 1
    },
    "consoleIdentifier": {
      "title": "Console Identifier",
      "description": "Specify the name that will appear when you send a message using the server's console",
      "type": "string",
      "default": "Server",
      "propertyOrder": 1
    },
    "serverMotd": {
      "title": "Server Motd",
      "description": "Specify the server's MOTD (message of the day)",
      "type": "string",
      "default": "Welcome, %name%!",
      "propertyOrder": 1
    },
    "expireScreenshots": {
      "title": "Expire Screenshots",
      "description": "Specify the amount of days a screenshot should be considered as expired and deleted. 0 = Disabled",
      "type": "number",
      "default": 0,
      "propertyOrder": 1
    },
    "compressionEnabled": {
      "title": "Compression Enabled",
      "description": "Specify whether to enable compression. Decreases bandwidth usage but increases CPU usage. 0 = Disabled",
      "type": "boolean",
      "default": true,
      "propertyOrder": 1
    },
    "expireLogs": {
      "title": "Expire Logs",
      "description": "Specify the amount of days a log file should be considered as expired and deleted. 0 = Disabled",
      "type": "number",
      "default": 0,
      "propertyOrder": 1
    },
    "safetyBubbleDistance": {
      "title": "Safety Bubble Distance",
      "description": "Specify the minimum distance in which vessels can interact with eachother at the launch pad and runway",
      "type": "number",
      "default": 100,
      "propertyOrder": 1
    }
  }
}
