diff --git a/TShockAPI/ConfigFile.cs b/TShockAPI/ConfigFile.cs
index d77a1253..27eaa9fc 100644
--- a/TShockAPI/ConfigFile.cs
+++ b/TShockAPI/ConfigFile.cs
@@ -31,7 +31,7 @@ namespace TShockAPI
public class ConfigFile
{
- // Server
+ /* ~~~~~ Server ~~~~~ */
/// The server password required to join the server.
[Description("The server password required to join the server.")]
@@ -74,7 +74,7 @@ namespace TShockAPI
public bool IgnoreChestStacksOnLoad = false;
- // Backup and Save
+ /* ~~~~~ Backup and Save ~~~~~ */
/// Enable or disable Terraria's built-in world auto save.
[Description("Enable or disable Terraria's built-in world auto save.")]
@@ -105,130 +105,182 @@ namespace TShockAPI
public bool SaveWorldOnLastPlayerExit = true;
- // Chat
+ /* ~~~~~ World ~~~~~ */
- /// Specifies which string starts a command.
- /// Note: Will not function properly if the string length is bigger than 1.
- [Description("Specifies which string starts a command.\nNote: Will not function properly if the string length is bigger than 1.")]
- public string CommandSpecifier = "/";
+ /// Determines the size of invasion events. The equation for calculating invasion size = 100 + (multiplier * (number of active players > 200 hp)).
+ [Description("Determines the size of invasion events.\nThe equation for calculating invasion size is 100 + (multiplier * (number of active players with greater than 200 health)).")]
+ public int InvasionMultiplier = 1;
- /// Specifies which string starts a command silently.
- /// Note: Will not function properly if the string length is bigger than 1.
- [Description("Specifies which string starts a command silently.\nNote: Will not function properly if the string length is bigger than 1.")]
- public string CommandSilentSpecifier = ".";
+ /// The default maximum number of mobs that will spawn per wave. Higher means more mobs in that wave.
+ [Description("The default maximum number of mobs that will spawn per wave. Higher means more mobs in that wave.")]
+ public int DefaultMaximumSpawns = 5;
- /// Disables sending logs as messages to players with the log permission.
- [Description("Disables sending logs as messages to players with the log permission.")]
- public bool DisableSpewLogs = true;
+ /// The delay between waves. Lower values lead to more mobs.
+ [Description("The delay between waves. Lower values lead to more mobs.")]
+ public int DefaultSpawnRate = 600;
- /// Prevents OnSecondUpdate checks from writing to the log file.
- [Description("Prevents OnSecondUpdate checks from writing to the log file.")]
- public bool DisableSecondUpdateLogs = false;
+ /// Enables never-ending invasion events. You still need to start the event.
+ [Description("Enables never ending invasion events. You still need to start the event, such as with the /invade command.")]
+ public bool InfiniteInvasion;
- /// The chat color for the superadmin group.
- [Description("The chat color for the superadmin group.\n#.#.# = Red/Blue/Green\nMax value: 255")]
- public int[] SuperAdminChatRGB = { 255, 255, 255 };
+ /// Sets the PvP mode. Valid types are: "normal", "always", "disabled".
+ [Description("Sets the PvP mode. Valid types are: \"normal\", \"always\" and \"disabled\".")]
+ public string PvPMode = "normal";
- /// The superadmin chat prefix.
- [Description("The superadmin chat prefix.")]
- public string SuperAdminChatPrefix = "(Super Admin) ";
+ /// Prevents tiles from being placed within SpawnProtectionRadius of the default spawn.
+ [Description("Prevents tiles from being placed within SpawnProtectionRadius of the default spawn.")]
+ public bool SpawnProtection = true;
- /// The superadmin chat suffix.
- [Description("The superadmin chat suffix.")]
- public string SuperAdminChatSuffix = "";
+ /// The tile radius around the spawn tile that is protected by the SpawnProtection setting.
+ [Description("The tile radius around the spawn tile that is protected by the SpawnProtection setting.")]
+ public int SpawnProtectionRadius = 10;
- /// Whether or not to announce a player's geographic location on join, based on their IP.
- [Description("Whether or not to announce a player's geographic location on join, based on their IP.")]
- public bool EnableGeoIP;
+ /// Enable or disable anti-cheat range checks based on distance between the player and their block placements.
+ [Description("Enable or disable anti-cheat range checks based on distance between the player and their block placements.")]
+ public bool RangeChecks = true;
- /// Displays a player's IP on join to users with the log permission.
- [Description("Displays a player's IP on join to users with the log permission.")]
- public bool DisplayIPToAdmins;
+ /// Prevents non-hardcore players from connecting.
+ [Description("Prevents non-hardcore players from connecting.")]
+ public bool HardcoreOnly;
- /// Changes in-game chat format: {0} = Group Name, {1} = Group Prefix, {2} = Player Name, {3} = Group Suffix, {4} = Chat Message.
- [Description("Changes in-game chat format: {0} = Group Name, {1} = Group Prefix, {2} = Player Name, {3} = Group Suffix, {4} = Chat Message.")]
- public string ChatFormat = "{1}{2}{3}: {4}";
+ /// Prevents softcore players from connecting.
+ [Description("Prevents softcore players from connecting.")]
+ public bool MediumcoreOnly;
- /// Changes the player name when using chat above heads. Starts with a player name wrapped in brackets, as per Terraria's formatting.\nSame formatting as ChatFormat without the message.
- [Description("Changes the player name when using chat above heads. Starts with a player name wrapped in brackets, as per Terraria's formatting.\nSame formatting as ChatFormat without the message.")]
- public string ChatAboveHeadsFormat = "{2}";
+ /// Disables any placing, or removal of blocks.
+ [Description("Disables any placing, or removal of blocks.")]
+ public bool DisableBuild;
- /// Whether or not to display chat messages above players' heads.
- [Description("Whether or not to display chat messages above players' heads.")]
- public bool EnableChatAboveHeads = false;
+ /// If enabled, hardmode will not be activated by the Wall of Flesh or the /starthardmode command.
+ [Description("If enabled, hardmode will not be activated by the Wall of Flesh or the /starthardmode command.")]
+ public bool DisableHardmode;
- /// The RGB values used for the color of broadcast messages.
- [Description("The RGB values used for the color of broadcast messages.\n#.#.# = Red/Blue/Green\nMax value: 255")]
- public int[] BroadcastRGB = { 127, 255, 212 };
+ /// Prevents the dungeon guardian from being spawned while sending players to their spawn point instead.
+ [Description("Prevents the dungeon guardian from being spawned while sending players to their spawn point instead.")]
+ public bool DisableDungeonGuardian;
+
+ /// Disables clown bomb projectiles from spawning.
+ [Description("Disables clown bomb projectiles from spawning.")]
+ public bool DisableClownBombs;
+
+ /// Disables snow ball projectiles from spawning.
+ [Description("Disables snow ball projectiles from spawning.")]
+ public bool DisableSnowBalls;
+
+ /// Disables tombstone dropping during death for all players.
+ [Description("Disables tombstone dropping during death for all players.")]
+ public bool DisableTombstones = true;
+
+ /// Forces the world time to be normal, day, or night.
+ [Description("Forces the world time to be normal, day, or night.")]
+ public string ForceTime = "normal";
+
+ /// Disables the effect of invisibility potions while PvP is enabled by turning the player visible to the other clients.
+ [Description("Disables the effect of invisibility potions while PvP is enabled by turning the player visible to the other clients.")]
+ public bool DisableInvisPvP;
+
+ /// The maximum distance, in tiles, that disabled players can move from.
+ [Description("The maximum distance, in tiles, that disabled players can move from.")]
+ public int MaxRangeForDisabled = 10;
+
+ /// Whether or not region protection should apply to chests.
+ [Description("Whether or not region protection should apply to chests.")]
+ public bool RegionProtectChests;
+
+ /// Whether or not region protection should apply to gem locks.
+ [Description("Whether or not region protection should apply to gem locks.")]
+ public bool RegionProtectGemLocks = true;
+
+ /// Ignores checks to see if a player 'can' update a projectile.
+ [Description("Ignores checks to see if a player 'can' update a projectile.")]
+ public bool IgnoreProjUpdate = false;
+
+ /// Ignores checks to see if a player 'can' kill a projectile.
+ [Description("Ignores checks to see if a player 'can' kill a projectile.")]
+ public bool IgnoreProjKill = false;
+
+ /// Allows players to break temporary tiles (grass, pots, etc) where they cannot usually build.
+ [Description("Allows players to break temporary tiles (grass, pots, etc) where they cannot usually build.")]
+ public bool AllowCutTilesAndBreakables = false;
+
+ /// Allows ice placement even where a user cannot usually build.
+ [Description("Allows ice placement even where a user cannot usually build.")]
+ public bool AllowIce = false;
+
+ /// Allows the crimson to spread when a world is in hardmode.
+ [Description("Allows the crimson to spread when a world is in hardmode.")]
+ public bool AllowCrimsonCreep = true;
+
+ /// Allows the corruption to spread when a world is in hardmode.
+ [Description("Allows the corruption to spread when a world is in hardmode.")]
+ public bool AllowCorruptionCreep = true;
+
+ /// Allows the hallow to spread when a world is in hardmode.
+ [Description("Allows the hallow to spread when a world is in hardmode.")]
+ public bool AllowHallowCreep = true;
+
+ /// How many NPCs a statue can spawn within 200 pixels(?) before it stops spawning.
+ [Description("How many NPCs a statue can spawn within 200 pixels(?) before it stops spawning.\nDefault = 3.")]
+ public int StatueSpawn200 = 3;
+
+ /// How many NPCs a statue can spawn within 600 pixels(?) before it stops spawning.
+ [Description("How many NPCs a statue can spawn within 600 pixels(?) before it stops spawning.\nDefault = 6.")]
+ public int StatueSpawn600 = 6;
+
+ /// How many NPCs a statue can spawn before it stops spawning.
+ [Description("How many NPCs a statue can spawn before it stops spawning.\nDefault = 10.")]
+ public int StatueSpawnWorld = 10;
+
+ /// Prevent banned items from being spawned or given with commands.
+ [Description("Prevent banned items from being spawned or given with commands.")]
+ public bool PreventBannedItemSpawn = false;
+
+ /// Prevent players from interacting with the world while they are dead.
+ [Description("Prevent players from interacting with the world while they are dead.")]
+ public bool PreventDeadModification = true;
+
+ /// Prevents players from placing tiles with an invalid style.
+ [Description("Prevents players from placing tiles with an invalid style.")]
+ public bool PreventInvalidPlaceStyle = true;
+
+ /// Forces Christmas-only events to occur all year.
+ [Description("Forces Christmas-only events to occur all year.")]
+ public bool ForceXmas = false;
+
+ /// Forces Halloween-only events to occur all year.
+ [Description("Forces Halloween-only events to occur all year.")]
+ public bool ForceHalloween = false;
+
+ /// Allows groups on the banned item allowed list to spawn banned items even if PreventBannedItemSpawn is set to true.
+ [Description("Allows groups on the banned item allowed list to spawn banned items even if PreventBannedItemSpawn is set to true.")]
+ public bool AllowAllowedGroupsToSpawnBannedItems = false;
+
+ /// The number of seconds a player must wait before being respawned. Cannot be longer than normal value now. Use at your own risk.
+ [Description("The number of seconds a player must wait before being respawned. Cannot be longer than normal value now. Use at your own risk.")]
+ public int RespawnSeconds = 5;
+
+ /// The number of seconds a player must wait before being respawned if there is a boss nearby. Cannot be longer than normal value now. Use at your own risk.
+ [Description("The number of seconds a player must wait before being respawned if there is a boss nearby. Cannot be longer than normal value now. Use at your own risk.")]
+ public int RespawnBossSeconds = 10;
+
+ /// Whether or not to announce boss spawning or invasion starts.
+ [Description("Whether or not to announce boss spawning or invasion starts.")]
+ public bool AnonymousBossInvasions = true;
+
+ /// The maximum HP a player can have, before equipment buffs.
+ [Description("The maximum HP a player can have, before equipment buffs.")]
+ public int MaxHP = 500;
+
+ /// The maximum MP a player can have, before equipment buffs.
+ [Description("The maximum MP a player can have, before equipment buffs.")]
+ public int MaxMP = 200;
+
+ /// Determines the range in tiles that a bomb can affect tiles from detonation point.
+ [Description("Determines the range in tiles that a bomb can affect tiles from detonation point.")]
+ public int BombExplosionRadius = 5;
- // MySQL
-
- /// The type of database to use when storing data (either "sqlite" or "mysql").
- [Description("The type of database to use when storing data (either \"sqlite\" or \"mysql\").")]
- public string StorageType = "sqlite";
-
- /// The path of sqlite db.
- [Description("The path of sqlite db.")]
- public string SqliteDBPath = "tshock.sqlite";
-
- /// The MySQL hostname and port to direct connections to.
- [Description("The MySQL hostname and port to direct connections to.")]
- public string MySqlHost = "localhost:3306";
-
- /// The database name to connect to when using MySQL as the database type.
- [Description("The database name to connect to when using MySQL as the database type.")]
- public string MySqlDbName = "";
-
- /// The username used when connecting to a MySQL database.
- [Description("The username used when connecting to a MySQL database.")]
- public string MySqlUsername = "";
-
- /// The password used when connecting to a MySQL database.
- [Description("The password used when connecting to a MySQL database.")]
- public string MySqlPassword = "";
-
- /// Whether or not to save logs to the SQL database instead of a text file.
- [Description("Whether or not to save logs to the SQL database instead of a text file.\nDefault = false.")]
- public bool UseSqlLogs = false;
-
- /// Number of times the SQL log must fail to insert logs before falling back to the text log.
- [Description("Number of times the SQL log must fail to insert logs before falling back to the text log.")]
- public int RevertToTextLogsOnSqlFailures = 10;
-
-
- // REST API
-
- /// Enable or disable the REST API.
- [Description("Enable or disable the REST API.")]
- public bool RestApiEnabled;
-
- /// The port used by the REST API.
- [Description("The port used by the REST API.")]
- public int RestApiPort = 7878;
-
- /// Whether or not to log REST API connections.
- [Description("Whether or not to log REST API connections.")]
- public bool LogRest = false;
-
- /// Whether or not to require token authentication to use the public REST API endpoints.
- [Description("Whether or not to require token authentication to use the public REST API endpoints.")]
- public bool EnableTokenEndpointAuthentication;
-
- /// The maximum REST requests in the bucket before denying requests. Minimum value is 5.
- [Description("The maximum REST requests in the bucket before denying requests. Minimum value is 5.")]
- public int RESTMaximumRequestsPerInterval = 5;
-
- /// How often in minutes the REST requests bucket is decreased by one. Minimum value is 1 minute.
- [Description("How often in minutes the REST requests bucket is decreased by one. Minimum value is 1 minute.")]
- public int RESTRequestBucketDecreaseIntervalMinutes = 1;
-
- /// A dictionary of REST tokens that external applications may use to make queries to your server.
- [Description("A dictionary of REST tokens that external applications may use to make queries to your server.")]
- public Dictionary ApplicationRestTokens = new Dictionary();
-
-
- // Login and Ban
+ /* ~~~~~ Login and Ban ~~~~~ */
/// The default group name to place newly registered users under.
[Description("The default group name to place newly registered users under.")]
@@ -409,179 +461,128 @@ namespace TShockAPI
public bool KickOnHealOtherThresholdBroken = false;
- // World
+ /* ~~~~~ Chat ~~~~~ */
- /// Determines the size of invasion events. The equation for calculating invasion size = 100 + (multiplier * (number of active players > 200 hp)).
- [Description("Determines the size of invasion events.\nThe equation for calculating invasion size is 100 + (multiplier * (number of active players with greater than 200 health)).")]
- public int InvasionMultiplier = 1;
+ /// Specifies which string starts a command.
+ /// Note: Will not function properly if the string length is bigger than 1.
+ [Description("Specifies which string starts a command.\nNote: Will not function properly if the string length is bigger than 1.")]
+ public string CommandSpecifier = "/";
- /// The default maximum number of mobs that will spawn per wave. Higher means more mobs in that wave.
- [Description("The default maximum number of mobs that will spawn per wave. Higher means more mobs in that wave.")]
- public int DefaultMaximumSpawns = 5;
+ /// Specifies which string starts a command silently.
+ /// Note: Will not function properly if the string length is bigger than 1.
+ [Description("Specifies which string starts a command silently.\nNote: Will not function properly if the string length is bigger than 1.")]
+ public string CommandSilentSpecifier = ".";
- /// The delay between waves. Lower values lead to more mobs.
- [Description("The delay between waves. Lower values lead to more mobs.")]
- public int DefaultSpawnRate = 600;
+ /// Disables sending logs as messages to players with the log permission.
+ [Description("Disables sending logs as messages to players with the log permission.")]
+ public bool DisableSpewLogs = true;
- /// Enables never-ending invasion events. You still need to start the event.
- [Description("Enables never ending invasion events. You still need to start the event, such as with the /invade command.")]
- public bool InfiniteInvasion;
+ /// Prevents OnSecondUpdate checks from writing to the log file.
+ [Description("Prevents OnSecondUpdate checks from writing to the log file.")]
+ public bool DisableSecondUpdateLogs = false;
- /// Sets the PvP mode. Valid types are: "normal", "always", "disabled".
- [Description("Sets the PvP mode. Valid types are: \"normal\", \"always\" and \"disabled\".")]
- public string PvPMode = "normal";
+ /// The chat color for the superadmin group.
+ [Description("The chat color for the superadmin group.\n#.#.# = Red/Blue/Green\nMax value: 255")]
+ public int[] SuperAdminChatRGB = { 255, 255, 255 };
- /// Prevents tiles from being placed within SpawnProtectionRadius of the default spawn.
- [Description("Prevents tiles from being placed within SpawnProtectionRadius of the default spawn.")]
- public bool SpawnProtection = true;
+ /// The superadmin chat prefix.
+ [Description("The superadmin chat prefix.")]
+ public string SuperAdminChatPrefix = "(Super Admin) ";
- /// The tile radius around the spawn tile that is protected by the SpawnProtection setting.
- [Description("The tile radius around the spawn tile that is protected by the SpawnProtection setting.")]
- public int SpawnProtectionRadius = 10;
+ /// The superadmin chat suffix.
+ [Description("The superadmin chat suffix.")]
+ public string SuperAdminChatSuffix = "";
- /// Enable or disable anti-cheat range checks based on distance between the player and their block placements.
- [Description("Enable or disable anti-cheat range checks based on distance between the player and their block placements.")]
- public bool RangeChecks = true;
+ /// Whether or not to announce a player's geographic location on join, based on their IP.
+ [Description("Whether or not to announce a player's geographic location on join, based on their IP.")]
+ public bool EnableGeoIP;
- /// Prevents non-hardcore players from connecting.
- [Description("Prevents non-hardcore players from connecting.")]
- public bool HardcoreOnly;
+ /// Displays a player's IP on join to users with the log permission.
+ [Description("Displays a player's IP on join to users with the log permission.")]
+ public bool DisplayIPToAdmins;
- /// Prevents softcore players from connecting.
- [Description("Prevents softcore players from connecting.")]
- public bool MediumcoreOnly;
+ /// Changes in-game chat format: {0} = Group Name, {1} = Group Prefix, {2} = Player Name, {3} = Group Suffix, {4} = Chat Message.
+ [Description("Changes in-game chat format: {0} = Group Name, {1} = Group Prefix, {2} = Player Name, {3} = Group Suffix, {4} = Chat Message.")]
+ public string ChatFormat = "{1}{2}{3}: {4}";
- /// Disables any placing, or removal of blocks.
- [Description("Disables any placing, or removal of blocks.")]
- public bool DisableBuild;
+ /// Changes the player name when using chat above heads. Starts with a player name wrapped in brackets, as per Terraria's formatting.\nSame formatting as ChatFormat without the message.
+ [Description("Changes the player name when using chat above heads. Starts with a player name wrapped in brackets, as per Terraria's formatting.\nSame formatting as ChatFormat without the message.")]
+ public string ChatAboveHeadsFormat = "{2}";
- /// If enabled, hardmode will not be activated by the Wall of Flesh or the /starthardmode command.
- [Description("If enabled, hardmode will not be activated by the Wall of Flesh or the /starthardmode command.")]
- public bool DisableHardmode;
+ /// Whether or not to display chat messages above players' heads.
+ [Description("Whether or not to display chat messages above players' heads.")]
+ public bool EnableChatAboveHeads = false;
- /// Prevents the dungeon guardian from being spawned while sending players to their spawn point instead.
- [Description("Prevents the dungeon guardian from being spawned while sending players to their spawn point instead.")]
- public bool DisableDungeonGuardian;
+ /// The RGB values used for the color of broadcast messages.
+ [Description("The RGB values used for the color of broadcast messages.\n#.#.# = Red/Blue/Green\nMax value: 255")]
+ public int[] BroadcastRGB = { 127, 255, 212 };
- /// Disables clown bomb projectiles from spawning.
- [Description("Disables clown bomb projectiles from spawning.")]
- public bool DisableClownBombs;
- /// Disables snow ball projectiles from spawning.
- [Description("Disables snow ball projectiles from spawning.")]
- public bool DisableSnowBalls;
+ /* ~~~~~ MySQL ~~~~~ */
- /// Disables tombstone dropping during death for all players.
- [Description("Disables tombstone dropping during death for all players.")]
- public bool DisableTombstones = true;
+ /// The type of database to use when storing data (either "sqlite" or "mysql").
+ [Description("The type of database to use when storing data (either \"sqlite\" or \"mysql\").")]
+ public string StorageType = "sqlite";
- /// Forces the world time to be normal, day, or night.
- [Description("Forces the world time to be normal, day, or night.")]
- public string ForceTime = "normal";
+ /// The path of sqlite db.
+ [Description("The path of sqlite db.")]
+ public string SqliteDBPath = "tshock.sqlite";
- /// Disables the effect of invisibility potions while PvP is enabled by turning the player visible to the other clients.
- [Description("Disables the effect of invisibility potions while PvP is enabled by turning the player visible to the other clients.")]
- public bool DisableInvisPvP;
+ /// The MySQL hostname and port to direct connections to.
+ [Description("The MySQL hostname and port to direct connections to.")]
+ public string MySqlHost = "localhost:3306";
- /// The maximum distance, in tiles, that disabled players can move from.
- [Description("The maximum distance, in tiles, that disabled players can move from.")]
- public int MaxRangeForDisabled = 10;
+ /// The database name to connect to when using MySQL as the database type.
+ [Description("The database name to connect to when using MySQL as the database type.")]
+ public string MySqlDbName = "";
- /// Whether or not region protection should apply to chests.
- [Description("Whether or not region protection should apply to chests.")]
- public bool RegionProtectChests;
+ /// The username used when connecting to a MySQL database.
+ [Description("The username used when connecting to a MySQL database.")]
+ public string MySqlUsername = "";
- /// Whether or not region protection should apply to gem locks.
- [Description("Whether or not region protection should apply to gem locks.")]
- public bool RegionProtectGemLocks = true;
+ /// The password used when connecting to a MySQL database.
+ [Description("The password used when connecting to a MySQL database.")]
+ public string MySqlPassword = "";
- /// Ignores checks to see if a player 'can' update a projectile.
- [Description("Ignores checks to see if a player 'can' update a projectile.")]
- public bool IgnoreProjUpdate = false;
+ /// Whether or not to save logs to the SQL database instead of a text file.
+ [Description("Whether or not to save logs to the SQL database instead of a text file.\nDefault = false.")]
+ public bool UseSqlLogs = false;
- /// Ignores checks to see if a player 'can' kill a projectile.
- [Description("Ignores checks to see if a player 'can' kill a projectile.")]
- public bool IgnoreProjKill = false;
+ /// Number of times the SQL log must fail to insert logs before falling back to the text log.
+ [Description("Number of times the SQL log must fail to insert logs before falling back to the text log.")]
+ public int RevertToTextLogsOnSqlFailures = 10;
- /// Allows players to break temporary tiles (grass, pots, etc) where they cannot usually build.
- [Description("Allows players to break temporary tiles (grass, pots, etc) where they cannot usually build.")]
- public bool AllowCutTilesAndBreakables = false;
- /// Allows ice placement even where a user cannot usually build.
- [Description("Allows ice placement even where a user cannot usually build.")]
- public bool AllowIce = false;
+ /* ~~~~~ REST API ~~~~~ */
- /// Allows the crimson to spread when a world is in hardmode.
- [Description("Allows the crimson to spread when a world is in hardmode.")]
- public bool AllowCrimsonCreep = true;
+ /// Enable or disable the REST API.
+ [Description("Enable or disable the REST API.")]
+ public bool RestApiEnabled;
- /// Allows the corruption to spread when a world is in hardmode.
- [Description("Allows the corruption to spread when a world is in hardmode.")]
- public bool AllowCorruptionCreep = true;
+ /// The port used by the REST API.
+ [Description("The port used by the REST API.")]
+ public int RestApiPort = 7878;
- /// Allows the hallow to spread when a world is in hardmode.
- [Description("Allows the hallow to spread when a world is in hardmode.")]
- public bool AllowHallowCreep = true;
+ /// Whether or not to log REST API connections.
+ [Description("Whether or not to log REST API connections.")]
+ public bool LogRest = false;
- /// How many NPCs a statue can spawn within 200 pixels(?) before it stops spawning.
- [Description("How many NPCs a statue can spawn within 200 pixels(?) before it stops spawning.\nDefault = 3.")]
- public int StatueSpawn200 = 3;
+ /// Whether or not to require token authentication to use the public REST API endpoints.
+ [Description("Whether or not to require token authentication to use the public REST API endpoints.")]
+ public bool EnableTokenEndpointAuthentication;
- /// How many NPCs a statue can spawn within 600 pixels(?) before it stops spawning.
- [Description("How many NPCs a statue can spawn within 600 pixels(?) before it stops spawning.\nDefault = 6.")]
- public int StatueSpawn600 = 6;
+ /// The maximum REST requests in the bucket before denying requests. Minimum value is 5.
+ [Description("The maximum REST requests in the bucket before denying requests. Minimum value is 5.")]
+ public int RESTMaximumRequestsPerInterval = 5;
- /// How many NPCs a statue can spawn before it stops spawning.
- [Description("How many NPCs a statue can spawn before it stops spawning.\nDefault = 10.")]
- public int StatueSpawnWorld = 10;
+ /// How often in minutes the REST requests bucket is decreased by one. Minimum value is 1 minute.
+ [Description("How often in minutes the REST requests bucket is decreased by one. Minimum value is 1 minute.")]
+ public int RESTRequestBucketDecreaseIntervalMinutes = 1;
- /// Prevent banned items from being spawned or given with commands.
- [Description("Prevent banned items from being spawned or given with commands.")]
- public bool PreventBannedItemSpawn = false;
+ /// A dictionary of REST tokens that external applications may use to make queries to your server.
+ [Description("A dictionary of REST tokens that external applications may use to make queries to your server.")]
+ public Dictionary ApplicationRestTokens = new Dictionary();
- /// Prevent players from interacting with the world while they are dead.
- [Description("Prevent players from interacting with the world while they are dead.")]
- public bool PreventDeadModification = true;
-
- /// Prevents players from placing tiles with an invalid style.
- [Description("Prevents players from placing tiles with an invalid style.")]
- public bool PreventInvalidPlaceStyle = true;
-
- /// Forces Christmas-only events to occur all year.
- [Description("Forces Christmas-only events to occur all year.")]
- public bool ForceXmas = false;
-
- /// Forces Halloween-only events to occur all year.
- [Description("Forces Halloween-only events to occur all year.")]
- public bool ForceHalloween = false;
-
- /// Allows groups on the banned item allowed list to spawn banned items even if PreventBannedItemSpawn is set to true.
- [Description("Allows groups on the banned item allowed list to spawn banned items even if PreventBannedItemSpawn is set to true.")]
- public bool AllowAllowedGroupsToSpawnBannedItems = false;
-
- /// The number of seconds a player must wait before being respawned. Cannot be longer than normal value now. Use at your own risk.
- [Description("The number of seconds a player must wait before being respawned. Cannot be longer than normal value now. Use at your own risk.")]
- public int RespawnSeconds = 5;
-
- /// The number of seconds a player must wait before being respawned if there is a boss nearby. Cannot be longer than normal value now. Use at your own risk.
- [Description("The number of seconds a player must wait before being respawned if there is a boss nearby. Cannot be longer than normal value now. Use at your own risk.")]
- public int RespawnBossSeconds = 10;
-
- /// Whether or not to announce boss spawning or invasion starts.
- [Description("Whether or not to announce boss spawning or invasion starts.")]
- public bool AnonymousBossInvasions = true;
-
- /// The maximum HP a player can have, before equipment buffs.
- [Description("The maximum HP a player can have, before equipment buffs.")]
- public int MaxHP = 500;
-
- /// The maximum MP a player can have, before equipment buffs.
- [Description("The maximum MP a player can have, before equipment buffs.")]
- public int MaxMP = 200;
-
- /// Determines the range in tiles that a bomb can affect tiles from detonation point.
- [Description("Determines the range in tiles that a bomb can affect tiles from detonation point.")]
- public int BombExplosionRadius = 5;
///