[
    {
        "DisplayName": "Game Port",
        "Category": "Windrose:stadia_controller",
        "Subcategory": "Server:dns:1",
        "Description": "",
        "Keywords": "",
        "FieldName": "$GamePort",
        "InputType": "number",
        "Hidden": true,
        "ParamFieldName": "$.ServerDescription_Persistent.DirectConnectionServerPort",
        "ExcludeFromImport": true,
        "EnumValues": {}
    },
    {
        "DisplayName": "Direct Connection IP Binding",
        "Category": "Windrose:stadia_controller",
        "Subcategory": "Server:dns:1",
        "Description": "",
        "Keywords": "",
        "FieldName": "DirectConnectionProxyAddress",
        "InputType": "text",
        "Hidden": true,
        "ParamFieldName": "$.ServerDescription_Persistent.DirectConnectionProxyAddress",
        "DefaultValue": "0.0.0.0",
        "ExcludeFromImport": true,
        "EnumValues": {}
    },
    {
        "DisplayName": "Invite Code",
        "Category": "Windrose:stadia_controller",
        "Subcategory": "Server:dns:1",
        "Description": "Sets the invite code used to search for the server in-game, if the Connection Mode is set to 'P2P Connection'. Must contain between 1 and 32 alphanumeric characters. Case-sensitive. Empty or not valid = a new invite code will be generated at server start (which can be imported from 'R5/ServerDescription.json' into this setting for persistence)",
        "Keywords": "invite,code,invitecode,search",
        "FieldName": "InviteCode",
        "InputType": "text",
        "ParamFieldName": "$.ServerDescription_Persistent.InviteCode",
        "DefaultValue": "",
        "Placeholder": "d6221bb7",
        "EnumValues": {}
    },
    {
        "DisplayName": "World Island ID",
        "Category": "Windrose:stadia_controller",
        "Subcategory": "Server:dns:1",
        "Description": "Sets the ID of an existing world to load on server start. It must match the ID in that world's 'WorldDescription.json' file. Empty = new world created on start - you MUST import the world ID generated for that world from 'R5/ServerDescription.json' into this setting for that world to load on next start",
        "Keywords": "world,id,worldId,worldislandid",
        "FieldName": "WorldIslandId",
        "InputType": "text",
        "ParamFieldName": "$.ServerDescription_Persistent.WorldIslandId",
        "DefaultValue": "",
        "EnumValues": {}
    },
    {
        "DisplayName": "Server Name",
        "Category": "Windrose:stadia_controller",
        "Subcategory": "Server:dns:1",
        "Description": "Sets the name of the server. Helpful if invite codes look similar",
        "Keywords": "name,description,server,ServerName",
        "FieldName": "ServerName",
        "InputType": "text",
        "ParamFieldName": "$.ServerDescription_Persistent.ServerName",
        "DefaultValue": "",
        "EnumValues": {}
    },
    {
        "DisplayName": "Enable Password Protection",
        "Category": "Windrose:stadia_controller",
        "Subcategory": "Server:dns:1",
        "Description": "If set, the password set under Server Password will be required to join the server",
        "Keywords": "password,protected,ispasswordprotected",
        "FieldName": "IsPasswordProtected",
        "InputType": "checkbox",
        "ParamFieldName": "$.ServerDescription_Persistent.IsPasswordProtected",
        "DefaultValue": "false",
        "EnumValues": {
            "False": "false",
            "True": "true"
        }
    },
    {
        "DisplayName": "Server Password",
        "Category": "Windrose:stadia_controller",
        "Subcategory": "Server:dns:1",
        "Description": "Sets the password required to join the server. Enable Password Protection must be set for this to take effect",
        "Keywords": "server,password",
        "FieldName": "Password",
        "InputType": "Password",
        "ParamFieldName": "$.ServerDescription_Persistent.Password",
        "DefaultValue": "",
        "EnumValues": {}
    },
    {
        "DisplayName": "Player Limit",
        "Category": "Windrose:stadia_controller",
        "Subcategory": "Server:dns:1",
        "Description": "Sets the maximum number of players allowed on the server at one time. More than 4 players may cause performance issues, particularly when deploying large frigates",
        "Keywords": "max,player,count,players,limit,maxplayercount",
        "FieldName": "$MaxUsers",
        "InputType": "number",
        "MinValue": "1",
        "MaxValue": "10",
        "ParamFieldName": "$.ServerDescription_Persistent.MaxPlayerCount",
        "DefaultValue": "8",
        "Placeholder": "8",
        "Suffix": "players",
        "EnumValues": {}
    },
    {
        "DisplayName": "Connection Mode",
        "Category": "Windrose:stadia_controller",
        "Subcategory": "Server:dns:1",
        "Description": "Sets the connection mode - either via a P2P connection using the ICE protocol (no ports required), or via a direct port connection on the Game Port",
        "Keywords": "p2p,relay,connection,service,direct,network,port,UseDirectConnection",
        "FieldName": "UseDirectConnection",
        "InputType": "enum",
        "ParamFieldName": "$.ServerDescription_Persistent.UseDirectConnection",
        "DefaultValue": "false",
        "EnumValues": {
            "false": "P2P Connection (default)",
            "true": "Direct Port Connection"
        }
    },
    {
        "DisplayName": "P2P Connection Service Region",
        "Category": "Windrose:stadia_controller",
        "Subcategory": "Server:dns:1",
        "Description": "Sets the P2P connection service region to use, if the Connection Mode is set to 'P2P Connection'. 'Automatic selection' is based on latency from the server",
        "Keywords": "p2p,relay,connection,service,user,selected,automatic,region,UserSelectedRegion",
        "FieldName": "UserSelectedRegion",
        "InputType": "enum",
        "ParamFieldName": "$.ServerDescription_Persistent.UserSelectedRegion",
        "DefaultValue": "",
        "EnumValues": {
            "": "Automatic selection (default)",
            "SEA": "SEA",
            "CIS": "CIS",
            "EU": "EU and NA"
        }
    },
    {
        "DisplayName": "Load From Backup If Broken",
        "Category": "Windrose:stadia_controller",
        "Subcategory": "Server:dns:1",
        "Description": "If set, on launch the server will try to restore broken save files from backups, as described in 'SaveWorkflow.md'",
        "Keywords": "restore,load,save,file,backup,auto,broken,AutoLoadLatestBackupIfHasBroken",
        "FieldName": "AutoLoadLatestBackupIfHasBroken",
        "InputType": "checkbox",
        "ParamFieldName": "$.ServerDescription_Persistent.AutoLoadLatestBackupIfHasBroken",
        "DefaultValue": "true",
        "EnumValues": {
            "False": "false",
            "True": "true"
        }
    },
    {
        "DisplayName": "Enable RCON",
        "Category": "Windrose:stadia_controller",
        "Subcategory": "WindrosePlus:extension:2",
        "Description": "If set, the Windrose+ RCON will be enabled",
        "Keywords": "rcon,dashboard,enable,enabled,rcon.enabled",
        "FieldName": "rcon.enabled",
        "InputType": "checkbox",
        "ParamFieldName": "$.rcon.enabled",
        "DefaultValue": "true",
        "EnumValues": {
            "False": "false",
            "True": "true"
        }
    },
    {
        "DisplayName": "RCON Password",
        "Category": "Windrose:stadia_controller",
        "Subcategory": "WindrosePlus:extension:2",
        "Description": "Sets the password for the Windrose+ RCON. This password is also used for the Windrose+ dashboard login. Default is a strong random password. Blank = disabled",
        "Keywords": "rcon,dashboard,password,rcon.password",
        "FieldName": "rcon.password",
        "InputType": "password",
        "ParamFieldName": "$.rcon.password",
        "DefaultValue": "{{newguid()}}",
        "EnumValues": {}
    },
    {
        "DisplayName": "Enable Server Query",
        "Category": "Windrose:stadia_controller",
        "Subcategory": "WindrosePlus:extension:2",
        "Description": "If set, Windrose+ server query responses will be enabled",
        "Keywords": "query,enable,enabled,query.enabled",
        "FieldName": "query.enabled",
        "InputType": "checkbox",
        "ParamFieldName": "$.query.enabled",
        "DefaultValue": "true",
        "EnumValues": {
            "False": "false",
            "True": "true"
        }
    },
    {
        "DisplayName": "Server Query Interval",
        "Category": "Windrose:stadia_controller",
        "Subcategory": "WindrosePlus:extension:2",
        "Description": "Sets the interval for server query responses. Lower values provide more frequent updates but increase server load",
        "Keywords": "query,interval,server.query.interval_ms",
        "FieldName": "query.interval_ms",
        "InputType": "number",
        "MinValue": "0",
        "ParamFieldName": "$.query.interval_ms",
        "DefaultValue": "5000",
        "Placeholder": "5000",
        "Suffix": "milliseconds",
        "EnumValues": {}
    },
    {
        "DisplayName": "Server Admins",
        "Category": "Windrose:stadia_controller",
        "Subcategory": "WindrosePlus:extension:2",
        "Description": "Sets a list of [Steam64 IDs](https://steamid.io/) of server admins. Admins can run all wp.* commands without the Windrose+ RCON",
        "Keywords": "rcon,dashboard,admin,steam,ids,admin.steam_ids",
        "FieldName": "admin.steam_ids",
        "InputType": "list",
        "ParamFieldName": "$.admin.steam_ids",
        "DefaultValue": "[]",
        "Special": "array:text",
        "EnumValues": {}
    },
    {
        "DisplayName": "Dashboard IP Binding Selection Mode",
        "Category": "Windrose:stadia_controller",
        "Subcategory": "WindrosePlus:extension:2",
        "Description": "Sets whether the IP binding of the Windrose+ dashboard should be automatically set, or whether it should be set to the instance's Application IP Binding or the IP set under Dashboard IP Binding. Note that on Windows the forced binding is 'localhost' only unless the Network Service user has appropriate ACL permissions",
        "Keywords": "ip,binding,dashboard",
        "FieldName": "HTTPBinding",
        "InputType": "enum",
        "ParamFieldName": "HTTPBinding",
        "DefaultValue": "",
        "EnumValues": {
            "": "Automatic (default)",
            "{{$ApplicationIPBinding}}": "Application IP Binding",
            "{{ManualIPBinding}}": "Manual"
        }
    },
    {
        "DisplayName": "Dashboard IP Binding",
        "Category": "Windrose:stadia_controller",
        "Subcategory": "WindrosePlus:extension:2",
        "Description": "Sets the IP binding for the Windrose+ dashboard, if 'Manual' is selected as the Dashboard IP Binding Selection Mode",
        "Keywords": "manual,ip,binding,dashboard",
        "FieldName": "ManualIPBinding",
        "InputType": "text",
        "ParamFieldName": "ManualIPBinding",
        "DefaultValue": "",
        "EnumValues": {}
    },
    {
        "DisplayName": "Unlock All Ships",
        "Category": "Windrose:stadia_controller",
        "Subcategory": "WindrosePlus:extension:2",
        "Description": "If set, all ships will be unlocked",
        "Keywords": "features,unlock,all,ships,features.unlock_all_ships",
        "FieldName": "features.unlock_all_ships",
        "InputType": "checkbox",
        "ParamFieldName": "$.features.unlock_all_ships",
        "DefaultValue": "false",
        "EnumValues": {
            "False": "false",
            "True": "true"
        }
    },
    {
        "DisplayName": "Unlock All Recipes",
        "Category": "Windrose:stadia_controller",
        "Subcategory": "WindrosePlus:extension:2",
        "Description": "If set, all recipes will be unlocked",
        "Keywords": "features,unlock,all,recipes,features.unlock_all_recipes",
        "FieldName": "features.unlock_all_recipes",
        "InputType": "checkbox",
        "ParamFieldName": "$.features.unlock_all_recipes",
        "DefaultValue": "false",
        "EnumValues": {
            "False": "false",
            "True": "true"
        }
    },
    {
        "DisplayName": "XP Multiplier",
        "Category": "Windrose:stadia_controller",
        "Subcategory": "WindrosePlus:extension:2",
        "Description": "Sets the experience gain multiplier. 1.0 = default, 2.0 = double XP",
        "Keywords": "xp,experience,multiplier.multipliers.xp",
        "FieldName": "multipliers.xp",
        "InputType": "number",
        "MinValue": "0.1",
        "MaxValue": "100",
        "ParamFieldName": "$.multipliers.xp",
        "DefaultValue": "1.0",
        "Placeholder": "1.0",
        "MultipleOf": "0.000001",
        "EnumValues": {}
    },
    {
        "DisplayName": "Loot Multiplier",
        "Category": "Windrose:stadia_controller",
        "Subcategory": "WindrosePlus:extension:2",
        "Description": "Sets the loot drop rate multiplier. 1.0 = default, 2.0 = double loot",
        "Keywords": "loot,drop,multiplier,multipliers.loot",
        "FieldName": "multipliers.loot",
        "InputType": "number",
        "MinValue": "0.1",
        "MaxValue": "100",
        "ParamFieldName": "$.multipliers.loot",
        "DefaultValue": "1.0",
        "Placeholder": "1.0",
        "MultipleOf": "0.000001",
        "EnumValues": {}
    },
    {
        "DisplayName": "Craft Efficiency Multiplier",
        "Category": "Windrose:stadia_controller",
        "Subcategory": "WindrosePlus:extension:2",
        "Description": "Sets the crafting efficiency multiplier. 2.0 = half the normal crafting cost (lower ingredient counts), 0.5 = double the normal crafting cost (higher ingredient counts)",
        "Keywords": "crafting,efficiency,multiplier,multipliers.craft_efficiency",
        "FieldName": "multipliers.craft_efficiency",
        "InputType": "number",
        "MinValue": "0.1",
        "MaxValue": "100",
        "ParamFieldName": "$.multipliers.craft_efficiency",
        "DefaultValue": "1.0",
        "Placeholder": "1.0",
        "MultipleOf": "0.000001",
        "EnumValues": {}
    },
    {
        "DisplayName": "Cooking Speed Multiplier",
        "Category": "Windrose:stadia_controller",
        "Subcategory": "WindrosePlus:extension:2",
        "Description": "Sets the cooking/fermentation/smelting speed multiplier. 2.0 = twice as fast",
        "Keywords": "cooking,fermentation,smelting,speed,multiplier,multipliers.cooking_speed",
        "FieldName": "multipliers.cooking_speed",
        "InputType": "number",
        "MinValue": "0.1",
        "MaxValue": "100",
        "ParamFieldName": "$.multipliers.cooking_speed",
        "DefaultValue": "1.0",
        "Placeholder": "1.0",
        "MultipleOf": "0.000001",
        "EnumValues": {}
    },
    {
        "DisplayName": "Harvest Yield Multiplier",
        "Category": "Windrose:stadia_controller",
        "Subcategory": "WindrosePlus:extension:2",
        "Description": "Sets the amount of resources gathered from harvesting. 2.0 = double yield",
        "Keywords": "harvest,yield,resources,multiplier,multipliers.harvest_yield",
        "FieldName": "multipliers.harvest_yield",
        "InputType": "number",
        "MinValue": "0.1",
        "MaxValue": "100",
        "ParamFieldName": "$.multipliers.harvest_yield",
        "DefaultValue": "1.0",
        "Placeholder": "1.0",
        "MultipleOf": "0.000001",
        "EnumValues": {}
    },
    {
        "DisplayName": "Skip/Remove Multiplier PAK",
        "Category": "Windrose:stadia_controller",
        "Subcategory": "WindrosePlus:extension:2",
        "Description": "If set, the multiplier PAK file generated by Windrose+ will be skipped/removed on server start",
        "Keywords": "multiplier,pak,disable,skip,remove,WINDROSEPLUS_DISABLE_MULTIPLIER_PAK",
        "FieldName": "WINDROSEPLUS_DISABLE_MULTIPLIER_PAK",
        "InputType": "checkbox",
        "ParamFieldName": "WINDROSEPLUS_DISABLE_MULTIPLIER_PAK",
        "DefaultValue": "0",
        "EnumValues": {
            "False": "0",
            "True": "1"
        }
    },
    {
        "DisplayName": "Install Windrose+",
        "Category": "Updates",
        "Subcategory": "Runtime Configuration:build:3",
        "Description": "If set, [Windrose+](https://github.com/humangenome/WindrosePlus) will be installed when the server is updated, and the PAK builder and dashboard run when the server is started. Includes UE4SS experimental build. Note: your instance must have a Dashboard Port allocated by AMP",
        "Keywords": "install,windrose+,windrose,plus,InstallWindrosePlus",
        "FieldName": "InstallWindrosePlus",
        "InputType": "checkbox",
        "ParamFieldName": "InstallWindrosePlus",
        "DefaultValue": "false",
        "EnumValues": {
            "False": "false",
            "True": "true"
        }
    }
]