Add /forcehalloween, fix /hardmode to actually send changes, clamp tile positions in /tppos, remove extra permissions
This commit is contained in:
parent
df7a0d86e5
commit
97252dfe93
3 changed files with 292 additions and 217 deletions
|
|
@ -425,6 +425,10 @@ namespace TShockAPI
|
||||||
{
|
{
|
||||||
HelpText = "Sets an eclipse."
|
HelpText = "Sets an eclipse."
|
||||||
});
|
});
|
||||||
|
add(new Command(Permissions.halloween, ForceHalloween, "forcehalloween")
|
||||||
|
{
|
||||||
|
HelpText = "Toggles halloween mode (goodie bags, pumpkins, etc)."
|
||||||
|
});
|
||||||
add(new Command(Permissions.xmas, ForceXmas, "forcexmas")
|
add(new Command(Permissions.xmas, ForceXmas, "forcexmas")
|
||||||
{
|
{
|
||||||
HelpText = "Toggles christmas mode (present spawning, santa, etc)."
|
HelpText = "Toggles christmas mode (present spawning, santa, etc)."
|
||||||
|
|
@ -1379,37 +1383,19 @@ namespace TShockAPI
|
||||||
args.Player.SendSuccessMessage("SSC of player \"{0}\" has been overriden.", matchedPlayer.Name);
|
args.Player.SendSuccessMessage("SSC of player \"{0}\" has been overriden.", matchedPlayer.Name);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void ForceXmas(CommandArgs args)
|
private static void ForceHalloween(CommandArgs args)
|
||||||
{
|
{
|
||||||
if(args.Parameters.Count == 0)
|
TShock.Config.ForceHalloween = !TShock.Config.ForceHalloween;
|
||||||
{
|
Main.checkHalloween();
|
||||||
args.Player.SendErrorMessage("Usage: /forcexmas [true/false]");
|
TSPlayer.All.SendInfoMessage("{0} {1}abled halloween mode!", args.Player.Name, (TShock.Config.ForceHalloween ? "en" : "dis"));
|
||||||
args.Player.SendInfoMessage(
|
}
|
||||||
String.Format("The server is currently {0} force Christmas mode.",
|
|
||||||
(TShock.Config.ForceXmas ? "in" : "not in")));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(args.Parameters[0].ToLower() == "true")
|
private static void ForceXmas(CommandArgs args)
|
||||||
{
|
{
|
||||||
TShock.Config.ForceXmas = true;
|
TShock.Config.ForceHalloween = !TShock.Config.ForceHalloween;
|
||||||
Main.checkXMas();
|
Main.checkXMas();
|
||||||
}
|
TSPlayer.All.SendInfoMessage("{0} {1}abled Christmas mode!", args.Player.Name, (TShock.Config.ForceHalloween ? "en" : "dis"));
|
||||||
else if(args.Parameters[0].ToLower() == "false")
|
}
|
||||||
{
|
|
||||||
TShock.Config.ForceXmas = false;
|
|
||||||
Main.checkXMas();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
args.Player.SendErrorMessage("Usage: /forcexmas [true/false]");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
args.Player.SendInfoMessage(
|
|
||||||
String.Format("The server is currently {0} force Christmas mode.",
|
|
||||||
(TShock.Config.ForceXmas ? "in" : "not in")));
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void TempGroup(CommandArgs args)
|
private static void TempGroup(CommandArgs args)
|
||||||
{
|
{
|
||||||
|
|
@ -1668,26 +1654,24 @@ namespace TShockAPI
|
||||||
TSPlayer.All.SendInfoMessage("{0} started the frost moon at wave {1}!", args.Player.Name, wave);
|
TSPlayer.All.SendInfoMessage("{0} started the frost moon at wave {1}!", args.Player.Name, wave);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void Hardmode(CommandArgs args)
|
private static void Hardmode(CommandArgs args)
|
||||||
{
|
{
|
||||||
if (Main.hardMode)
|
if (Main.hardMode)
|
||||||
{
|
{
|
||||||
Main.hardMode = false;
|
Main.hardMode = false;
|
||||||
|
TSPlayer.All.SendData(PacketTypes.WorldInfo);
|
||||||
args.Player.SendSuccessMessage("Hardmode is now off.");
|
args.Player.SendSuccessMessage("Hardmode is now off.");
|
||||||
}
|
}
|
||||||
|
else if (!TShock.Config.DisableHardmode)
|
||||||
|
{
|
||||||
|
WorldGen.StartHardmode();
|
||||||
|
args.Player.SendSuccessMessage("Hardmode is now on.");
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!TShock.Config.DisableHardmode)
|
args.Player.SendErrorMessage("Hardmode is disabled via config.");
|
||||||
{
|
|
||||||
WorldGen.StartHardmode();
|
|
||||||
args.Player.SendSuccessMessage("Hardmode is now on.");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
args.Player.SendErrorMessage("Hardmode is disabled via config.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SpawnBoss(CommandArgs args)
|
private static void SpawnBoss(CommandArgs args)
|
||||||
{
|
{
|
||||||
|
|
@ -2022,12 +2006,16 @@ namespace TShockAPI
|
||||||
}
|
}
|
||||||
|
|
||||||
int x, y;
|
int x, y;
|
||||||
if (!int.TryParse(args.Parameters[0], out x) || !int.TryParse(args.Parameters[1], out y)
|
if (!int.TryParse(args.Parameters[0], out x) || !int.TryParse(args.Parameters[1], out y))
|
||||||
|| x < 0 || y < 0 || x >= Main.maxTilesX || y >= Main.maxTilesY)
|
|
||||||
{
|
{
|
||||||
args.Player.SendErrorMessage("Invalid tile positions!");
|
args.Player.SendErrorMessage("Invalid tile positions!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
x = Math.Max(0, x);
|
||||||
|
y = Math.Max(0, y);
|
||||||
|
x = Math.Min(x, Main.maxTilesX - 1);
|
||||||
|
y = Math.Min(y, Main.maxTilesY - 1);
|
||||||
|
|
||||||
args.Player.Teleport(16 * x, 16 * y);
|
args.Player.Teleport(16 * x, 16 * y);
|
||||||
args.Player.SendSuccessMessage("Teleported to {0}, {1}!", x, y);
|
args.Player.SendSuccessMessage("Teleported to {0}, {1}!", x, y);
|
||||||
}
|
}
|
||||||
|
|
@ -4367,7 +4355,7 @@ namespace TShockAPI
|
||||||
|
|
||||||
if (args.Parameters.Count == 1)
|
if (args.Parameters.Count == 1)
|
||||||
{
|
{
|
||||||
List<NPC> npcs = TShock.Utils.GetNPCByIdOrName(args.Parameters[0]);
|
var npcs = TShock.Utils.GetNPCByIdOrName(args.Parameters[0]);
|
||||||
if (npcs.Count == 0)
|
if (npcs.Count == 0)
|
||||||
{
|
{
|
||||||
args.Player.SendErrorMessage("Invalid mob type!");
|
args.Player.SendErrorMessage("Invalid mob type!");
|
||||||
|
|
|
||||||
|
|
@ -31,264 +31,354 @@ namespace TShockAPI
|
||||||
{
|
{
|
||||||
[Description(
|
[Description(
|
||||||
"The equation for calculating invasion size is 100 + (multiplier * (number of active players with greater than 200 health))."
|
"The equation for calculating invasion size is 100 + (multiplier * (number of active players with greater than 200 health))."
|
||||||
)] public int InvasionMultiplier = 1;
|
)]
|
||||||
|
public int InvasionMultiplier = 1;
|
||||||
|
|
||||||
[Description("The default maximum mobs that will spawn per wave. Higher means more mobs in that wave.")] public int
|
[Description("The default maximum mobs that will spawn per wave. Higher means more mobs in that wave.")]
|
||||||
DefaultMaximumSpawns = 5;
|
public int DefaultMaximumSpawns = 5;
|
||||||
|
|
||||||
[Description("The delay between waves. Lower values lead to more mobs.")] public int DefaultSpawnRate = 600;
|
[Description("The delay between waves. Lower values lead to more mobs.")]
|
||||||
[Description("The port the server runs on.")] public int ServerPort = 7777;
|
public int DefaultSpawnRate = 600;
|
||||||
[Description("Enable or disable the whitelist based on IP addresses in whitelist.txt")] public bool EnableWhitelist;
|
[Description("The port the server runs on.")]
|
||||||
|
public int ServerPort = 7777;
|
||||||
|
[Description("Enable or disable the whitelist based on IP addresses in whitelist.txt")]
|
||||||
|
public bool EnableWhitelist;
|
||||||
|
|
||||||
[Description(
|
[Description(
|
||||||
"Enable the ability for invasion size to never decrease. Make sure to run /invade, and note that this adds 2 million+ goblins to the spawn queue for the map."
|
"Enable the ability for invasion size to never decrease. Make sure to run /invade, and note that this adds 2 million+ goblins to the spawn queue for the map."
|
||||||
)] public bool InfiniteInvasion;
|
)]
|
||||||
|
public bool InfiniteInvasion;
|
||||||
|
|
||||||
[Description("Set the server pvp mode. Valid types are, \"normal\", \"always\", and \"disabled.\"")] public string PvPMode
|
[Description("Set the server pvp mode. Valid types are, \"normal\", \"always\", and \"disabled.\"")]
|
||||||
|
public string PvPMode
|
||||||
= "normal";
|
= "normal";
|
||||||
|
|
||||||
[Description("Prevents tiles from being placed within SpawnProtectionRadius of the default spawn.")] public bool
|
[Description("Prevents tiles from being placed within SpawnProtectionRadius of the default spawn.")]
|
||||||
SpawnProtection = true;
|
public bool SpawnProtection = true;
|
||||||
|
|
||||||
[Description("Radius from spawn tile for SpawnProtection.")] public int SpawnProtectionRadius = 10;
|
[Description("Radius from spawn tile for SpawnProtection.")]
|
||||||
|
public int SpawnProtectionRadius = 10;
|
||||||
|
|
||||||
[Description(
|
[Description(
|
||||||
"Max slots for the server. If you want people to be kicked with \"Server is full\" set this to how many players you want max and then set Terraria max players to 2 higher."
|
"Max slots for the server. If you want people to be kicked with \"Server is full\" set this to how many players you want max and then set Terraria max players to 2 higher."
|
||||||
)] public int MaxSlots = 8;
|
)]
|
||||||
|
public int MaxSlots = 8;
|
||||||
|
|
||||||
[Description("Global protection agent for any block distance based anti-grief check.")] public bool RangeChecks = true;
|
[Description("Global protection agent for any block distance based anti-grief check.")]
|
||||||
[Description("Disables any building; placing of blocks")] public bool DisableBuild;
|
public bool RangeChecks = true;
|
||||||
|
[Description("Disables any building; placing of blocks")]
|
||||||
|
public bool DisableBuild;
|
||||||
|
|
||||||
[Description("#.#.#. = Red/Blue/Green - RGB Colors for the Admin Chat Color. Max value: 255")] public float[]
|
[Description("#.#.#. = Red/Blue/Green - RGB Colors for the Admin Chat Color. Max value: 255")]
|
||||||
SuperAdminChatRGB = {255, 0, 0};
|
public float[] SuperAdminChatRGB = { 255, 0, 0 };
|
||||||
|
|
||||||
[Description("Super admin group chat prefix")] public string SuperAdminChatPrefix = "(Admin) ";
|
[Description("Super admin group chat prefix")]
|
||||||
[Description("Super admin group chat suffix")] public string SuperAdminChatSuffix = "";
|
public string SuperAdminChatPrefix = "(Admin) ";
|
||||||
|
[Description("Super admin group chat suffix")]
|
||||||
|
public string SuperAdminChatSuffix = "";
|
||||||
|
|
||||||
[Description(
|
[Description(
|
||||||
"Backup frequency in minutes. So, a value of 60 = 60 minutes. Backups are stored in the \\tshock\\backups folder.")] public int BackupInterval;
|
"Backup frequency in minutes. So, a value of 60 = 60 minutes. Backups are stored in the \\tshock\\backups folder.")]
|
||||||
|
public int BackupInterval;
|
||||||
|
|
||||||
[Description("How long backups are kept in minutes. 2880 = 2 days.")] public int BackupKeepFor = 60;
|
[Description("How long backups are kept in minutes. 2880 = 2 days.")]
|
||||||
|
public int BackupKeepFor = 60;
|
||||||
|
|
||||||
[Description(
|
[Description(
|
||||||
"Remembers where a player left off. It works by remembering the IP, NOT the character. \neg. When you try to disconnect, and reconnect to be automatically placed at spawn, you'll be at your last location. Note: Won't save after server restarts."
|
"Remembers where a player left off. It works by remembering the IP, NOT the character. \neg. When you try to disconnect, and reconnect to be automatically placed at spawn, you'll be at your last location. Note: Won't save after server restarts."
|
||||||
)] public bool RememberLeavePos;
|
)]
|
||||||
|
public bool RememberLeavePos;
|
||||||
|
|
||||||
[Description("Hardcore players ONLY. This means softcore players cannot join.")] public bool HardcoreOnly;
|
[Description("Hardcore players ONLY. This means softcore players cannot join.")]
|
||||||
[Description("Mediumcore players ONLY. This means softcore players cannot join.")] public bool MediumcoreOnly;
|
public bool HardcoreOnly;
|
||||||
[Description("Kicks a hardcore player on death.")] public bool KickOnMediumcoreDeath;
|
[Description("Mediumcore players ONLY. This means softcore players cannot join.")]
|
||||||
[Description("Bans a hardcore player on death.")] public bool BanOnMediumcoreDeath;
|
public bool MediumcoreOnly;
|
||||||
|
[Description("Kicks a hardcore player on death.")]
|
||||||
|
public bool KickOnMediumcoreDeath;
|
||||||
|
[Description("Bans a hardcore player on death.")]
|
||||||
|
public bool BanOnMediumcoreDeath;
|
||||||
|
|
||||||
[Description("Enable/disable Terraria's built in auto save.")] public bool AutoSave = true;
|
[Description("Enable/disable Terraria's built in auto save.")]
|
||||||
[Description("Enable/disable save announcements.")] public bool AnnounceSave = true;
|
public bool AutoSave = true;
|
||||||
|
[Description("Enable/disable save announcements.")]
|
||||||
|
public bool AnnounceSave = true;
|
||||||
|
|
||||||
[Description("Number of failed login attempts before kicking the player.")] public int MaximumLoginAttempts = 3;
|
[Description("Number of failed login attempts before kicking the player.")]
|
||||||
|
public int MaximumLoginAttempts = 3;
|
||||||
|
|
||||||
[Description("Not implemented.")] public string RconPassword = "";
|
[Description("Not implemented.")]
|
||||||
[Description("Not implemented.")] public int RconPort = 7777;
|
public string RconPassword = "";
|
||||||
|
[Description("Not implemented.")]
|
||||||
|
public int RconPort = 7777;
|
||||||
|
|
||||||
[Description("Used when replying to a rest /status request or sent to the client when UseServerName is true.")] public string ServerName = "";
|
[Description("Used when replying to a rest /status request or sent to the client when UseServerName is true.")]
|
||||||
[Description("Sends ServerName in place of the world name to clients.")] public bool UseServerName = false;
|
public string ServerName = "";
|
||||||
[Description("Not implemented.")] public string MasterServer = "127.0.0.1";
|
[Description("Sends ServerName in place of the world name to clients.")]
|
||||||
|
public bool UseServerName = false;
|
||||||
|
[Description("Not implemented.")]
|
||||||
|
public string MasterServer = "127.0.0.1";
|
||||||
|
|
||||||
[Description("Valid types are \"sqlite\" and \"mysql\"")] public string StorageType = "sqlite";
|
[Description("Valid types are \"sqlite\" and \"mysql\"")]
|
||||||
|
public string StorageType = "sqlite";
|
||||||
|
|
||||||
[Description("The MySQL hostname and port to direct connections to")] public string MySqlHost = "localhost:3306";
|
[Description("The MySQL hostname and port to direct connections to")]
|
||||||
[Description("Database name to connect to")] public string MySqlDbName = "";
|
public string MySqlHost = "localhost:3306";
|
||||||
[Description("Database username to connect with")] public string MySqlUsername = "";
|
[Description("Database name to connect to")]
|
||||||
[Description("Database password to connect with")] public string MySqlPassword = "";
|
public string MySqlDbName = "";
|
||||||
|
[Description("Database username to connect with")]
|
||||||
|
public string MySqlUsername = "";
|
||||||
|
[Description("Database password to connect with")]
|
||||||
|
public string MySqlPassword = "";
|
||||||
|
|
||||||
[Description("Bans a mediumcore player on death.")] public string MediumcoreBanReason = "Death results in a ban";
|
[Description("Bans a mediumcore player on death.")]
|
||||||
[Description("Kicks a mediumcore player on death.")] public string MediumcoreKickReason = "Death results in a kick";
|
public string MediumcoreBanReason = "Death results in a ban";
|
||||||
|
[Description("Kicks a mediumcore player on death.")]
|
||||||
|
public string MediumcoreKickReason = "Death results in a kick";
|
||||||
|
|
||||||
[Description("Enables DNS resolution of incoming connections with GetGroupForIPExpensive.")] public bool
|
[Description("Enables DNS resolution of incoming connections with GetGroupForIPExpensive.")]
|
||||||
EnableDNSHostResolution;
|
public bool EnableDNSHostResolution;
|
||||||
|
|
||||||
[Description("Enables kicking of banned users by matching their IP Address.")] public bool EnableIPBans = true;
|
[Description("Enables kicking of banned users by matching their IP Address.")]
|
||||||
|
public bool EnableIPBans = true;
|
||||||
|
|
||||||
[Description("Enables kicking of banned users by matching their client UUID.")] public bool EnableUUIDBans = true;
|
[Description("Enables kicking of banned users by matching their client UUID.")]
|
||||||
|
public bool EnableUUIDBans = true;
|
||||||
|
|
||||||
[Description("Enables kicking of banned users by matching their Character Name.")] public bool EnableBanOnUsernames;
|
[Description("Enables kicking of banned users by matching their Character Name.")]
|
||||||
|
public bool EnableBanOnUsernames;
|
||||||
|
|
||||||
[Description("Selects the default group name to place new registrants under.")] public string
|
[Description("Selects the default group name to place new registrants under.")]
|
||||||
DefaultRegistrationGroupName = "default";
|
public string DefaultRegistrationGroupName = "default";
|
||||||
|
|
||||||
[Description("Selects the default group name to place non registered users under")] public string
|
[Description("Selects the default group name to place non registered users under")]
|
||||||
DefaultGuestGroupName = "guest";
|
public string DefaultGuestGroupName = "guest";
|
||||||
|
|
||||||
[Description("Force-disable printing logs to players with the log permission.")] public bool DisableSpewLogs = true;
|
[Description("Force-disable printing logs to players with the log permission.")]
|
||||||
|
public bool DisableSpewLogs = true;
|
||||||
|
|
||||||
[Description("Valid types are \"sha512\", \"sha256\", \"md5\", append with \"-xp\" for the xp supported algorithms.")] public string HashAlgorithm = "sha512";
|
[Description("Valid types are \"sha512\", \"sha256\", \"md5\", append with \"-xp\" for the xp supported algorithms.")]
|
||||||
|
public string HashAlgorithm = "sha512";
|
||||||
|
|
||||||
[Description("Buffers up the packets and sends them out at the end of each frame.")] public bool BufferPackets = true;
|
[Description("Buffers up the packets and sends them out at the end of each frame.")]
|
||||||
|
public bool BufferPackets = true;
|
||||||
|
|
||||||
[Description("String that is used when kicking people when the server is full.")] public string ServerFullReason =
|
[Description("String that is used when kicking people when the server is full.")]
|
||||||
"Server is full";
|
public string ServerFullReason = "Server is full";
|
||||||
|
|
||||||
[Description("String that is used when a user is kicked due to not being on the whitelist.")] public string WhitelistKickReason = "You are not on the whitelist.";
|
[Description("String that is used when a user is kicked due to not being on the whitelist.")]
|
||||||
|
public string WhitelistKickReason = "You are not on the whitelist.";
|
||||||
|
|
||||||
[Description("String that is used when kicking people when the server is full with no reserved slots.")] public string
|
[Description("String that is used when kicking people when the server is full with no reserved slots.")]
|
||||||
ServerFullNoReservedReason = "Server is full. No reserved slots open.";
|
public string ServerFullNoReservedReason = "Server is full. No reserved slots open.";
|
||||||
|
|
||||||
[Description("This will save the world if Terraria crashes from an unhandled exception.")] public bool
|
[Description("This will save the world if Terraria crashes from an unhandled exception.")]
|
||||||
SaveWorldOnCrash = true;
|
public bool SaveWorldOnCrash = true;
|
||||||
|
|
||||||
[Description("This will announce a player's location on join")] public bool EnableGeoIP;
|
[Description("This will announce a player's location on join")]
|
||||||
|
public bool EnableGeoIP;
|
||||||
|
|
||||||
[Description("This will turn on token requirement for the public REST API endpoints.")] public bool
|
[Description("This will turn on token requirement for the public REST API endpoints.")]
|
||||||
EnableTokenEndpointAuthentication;
|
public bool EnableTokenEndpointAuthentication;
|
||||||
|
|
||||||
[Description("Enable/disable the rest api.")] public bool RestApiEnabled;
|
[Description("Enable/disable the rest api.")]
|
||||||
|
public bool RestApiEnabled;
|
||||||
|
|
||||||
[Description("This is the port which the rest api will listen on.")] public int RestApiPort = 7878;
|
[Description("This is the port which the rest api will listen on.")]
|
||||||
|
public int RestApiPort = 7878;
|
||||||
|
|
||||||
[Description("Disable tombstones for all players.")] public bool DisableTombstones = true;
|
[Description("Disable tombstones for all players.")]
|
||||||
|
public bool DisableTombstones = true;
|
||||||
|
|
||||||
[Description("Displays a player's IP on join to everyone who has the log permission.")] public bool DisplayIPToAdmins;
|
[Description("Displays a player's IP on join to everyone who has the log permission.")]
|
||||||
|
public bool DisplayIPToAdmins;
|
||||||
|
|
||||||
[Description("Kicks users using a proxy as identified with the GeoIP database.")] public bool KickProxyUsers = true;
|
[Description("Kicks users using a proxy as identified with the GeoIP database.")]
|
||||||
|
public bool KickProxyUsers = true;
|
||||||
|
|
||||||
[Description("Disables hardmode, can't never be activated. Overrides /starthardmode.")] public bool DisableHardmode;
|
[Description("Disables hardmode, can't never be activated. Overrides /starthardmode.")]
|
||||||
|
public bool DisableHardmode;
|
||||||
|
|
||||||
[Description("Disables the dungeon guardian from being spawned by player packets, this will instead force a respawn.")] public bool DisableDungeonGuardian;
|
[Description("Disables the dungeon guardian from being spawned by player packets, this will instead force a respawn.")]
|
||||||
|
public bool DisableDungeonGuardian;
|
||||||
|
|
||||||
[Description("Enable server side characters, This stops the client from saving character data! EXPERIMENTAL!!!!!")] public bool ServerSideCharacter;
|
[Description("Enable server side characters, This stops the client from saving character data! EXPERIMENTAL!!!!!")]
|
||||||
|
public bool ServerSideCharacter;
|
||||||
|
|
||||||
[Description("How often SSC should save, in minutes.")] public int ServerSideCharacterSave = 5;
|
[Description("How often SSC should save, in minutes.")]
|
||||||
|
public int ServerSideCharacterSave = 5;
|
||||||
|
|
||||||
[Description("Time, in milliseconds, to disallow discarding items after logging in when ServerSideInventory is ON.")] public int LogonDiscardThreshold=250;
|
[Description("Time, in milliseconds, to disallow discarding items after logging in when ServerSideInventory is ON.")]
|
||||||
|
public int LogonDiscardThreshold = 250;
|
||||||
[Description("Disables clown bomb projectiles from spawning.")] public bool DisableClownBombs;
|
|
||||||
|
|
||||||
[Description("Disables snow ball projectiles from spawning.")] public bool DisableSnowBalls;
|
[Description("Disables clown bomb projectiles from spawning.")]
|
||||||
|
public bool DisableClownBombs;
|
||||||
|
|
||||||
|
[Description("Disables snow ball projectiles from spawning.")]
|
||||||
|
public bool DisableSnowBalls;
|
||||||
|
|
||||||
[Description(
|
[Description(
|
||||||
"Changes ingame chat format: {0} = Group Name, {1} = Group Prefix, {2} = Player Name, {3} = Group Suffix, {4} = Chat Message"
|
"Changes ingame chat format: {0} = Group Name, {1} = Group Prefix, {2} = Player Name, {3} = Group Suffix, {4} = Chat Message"
|
||||||
)] public string ChatFormat = "{1}{2}{3}: {4}";
|
)]
|
||||||
|
public string ChatFormat = "{1}{2}{3}: {4}";
|
||||||
|
|
||||||
[Description("Change the player name when using chat above heads. This begins with a player name wrapped in brackets, as per Terraria's formatting. Same formatting as ChatFormat(minus the text aka {4}).")] public string ChatAboveHeadsFormat = "{2}";
|
[Description("Change the player name when using chat above heads. This begins with a player name wrapped in brackets, as per Terraria's formatting. Same formatting as ChatFormat(minus the text aka {4}).")]
|
||||||
|
public string ChatAboveHeadsFormat = "{2}";
|
||||||
|
|
||||||
[Description("Force the world time to be normal, day, or night.")] public string ForceTime = "normal";
|
[Description("Force the world time to be normal, day, or night.")]
|
||||||
|
public string ForceTime = "normal";
|
||||||
|
|
||||||
[Description("Disables/reverts a player if this number of tile kills is exceeded within 1 second.")] public int
|
[Description("Disables/reverts a player if this number of tile kills is exceeded within 1 second.")]
|
||||||
TileKillThreshold = 60;
|
public int TileKillThreshold = 60;
|
||||||
|
|
||||||
[Description("Disables/reverts a player if this number of tile places is exceeded within 1 second.")]
|
[Description("Disables/reverts a player if this number of tile places is exceeded within 1 second.")]
|
||||||
public int
|
public int TilePlaceThreshold = 20;
|
||||||
TilePlaceThreshold = 20;
|
|
||||||
|
|
||||||
[Description("Disables a player if this number of liquid sets is exceeded within 1 second.")] public int
|
[Description("Disables a player if this number of liquid sets is exceeded within 1 second.")]
|
||||||
TileLiquidThreshold = 15;
|
public int TileLiquidThreshold = 15;
|
||||||
|
|
||||||
[Description("Disable a player if this number of projectiles is created within 1 second.")]
|
[Description("Disable a player if this number of projectiles is created within 1 second.")]
|
||||||
public int
|
public int ProjectileThreshold = 50;
|
||||||
ProjectileThreshold = 50;
|
|
||||||
|
|
||||||
[Description("Ignore shrapnel from crystal bullets for projectile threshold.")] public bool
|
[Description("Ignore shrapnel from crystal bullets for projectile threshold.")]
|
||||||
ProjIgnoreShrapnel = true;
|
public bool ProjIgnoreShrapnel = true;
|
||||||
|
|
||||||
[Description("Requires all players to register or login before being allowed to play.")] public bool RequireLogin;
|
[Description("Requires all players to register or login before being allowed to play.")]
|
||||||
|
public bool RequireLogin;
|
||||||
|
|
||||||
[Description(
|
[Description(
|
||||||
"Disables invisibility potions from being used in PvP (Note, can be used in the client, but the effect isn't sent to the rest of the server)."
|
"Disables invisibility potions from being used in PvP (Note, can be used in the client, but the effect isn't sent to the rest of the server)."
|
||||||
)] public bool DisableInvisPvP;
|
)]
|
||||||
|
public bool DisableInvisPvP;
|
||||||
|
|
||||||
[Description("The maximum distance players disabled for various reasons can move from.")] public int
|
[Description("The maximum distance players disabled for various reasons can move from.")]
|
||||||
MaxRangeForDisabled = 10;
|
public int MaxRangeForDisabled = 10;
|
||||||
|
|
||||||
[Description("Server password required to join the server.")] public string ServerPassword = "";
|
[Description("Server password required to join the server.")]
|
||||||
|
public string ServerPassword = "";
|
||||||
|
|
||||||
[Description("Protect chests with region and build permissions.")] public bool RegionProtectChests;
|
[Description("Protect chests with region and build permissions.")]
|
||||||
|
public bool RegionProtectChests;
|
||||||
|
|
||||||
[Description("Disable users from being able to login with account password when joining.")] public bool
|
[Description("Disable users from being able to login with account password when joining.")]
|
||||||
DisableLoginBeforeJoin;
|
public bool DisableLoginBeforeJoin;
|
||||||
|
|
||||||
[Description("Disable users from being able to login with their client UUID.")] public bool DisableUUIDLogin;
|
[Description("Disable users from being able to login with their client UUID.")]
|
||||||
|
public bool DisableUUIDLogin;
|
||||||
|
|
||||||
[Description("Kick clients that don't send a UUID to the server.")] public bool KickEmptyUUID;
|
[Description("Kick clients that don't send a UUID to the server.")]
|
||||||
|
public bool KickEmptyUUID;
|
||||||
[Description("Allows users to register any username with /register.")] public bool AllowRegisterAnyUsername;
|
|
||||||
|
|
||||||
[Description("Allows users to login with any username with /login.")] public bool AllowLoginAnyUsername = true;
|
[Description("Allows users to register any username with /register.")]
|
||||||
|
public bool AllowRegisterAnyUsername;
|
||||||
|
|
||||||
[Description("The maximum damage a player/npc can inflict.")] public int MaxDamage = 175;
|
[Description("Allows users to login with any username with /login.")]
|
||||||
|
public bool AllowLoginAnyUsername = true;
|
||||||
[Description("The maximum damage a projectile can inflict.")] public int MaxProjDamage = 175;
|
|
||||||
|
|
||||||
[Description("Ignores checking to see if player 'can' update a projectile.")] public bool IgnoreProjUpdate = false;
|
[Description("The maximum damage a player/npc can inflict.")]
|
||||||
|
public int MaxDamage = 175;
|
||||||
[Description("Ignores checking to see if player 'can' kill a projectile.")] public bool IgnoreProjKill = false;
|
|
||||||
|
|
||||||
[Description("Ignores all no clip checks for players.")] public bool IgnoreNoClip = false;
|
[Description("The maximum damage a projectile can inflict.")]
|
||||||
|
public int MaxProjDamage = 175;
|
||||||
|
|
||||||
[Description("Allow ice placement even when user does not have canbuild.")] public bool AllowIce = false;
|
[Description("Ignores checking to see if player 'can' update a projectile.")]
|
||||||
|
public bool IgnoreProjUpdate = false;
|
||||||
|
|
||||||
|
[Description("Ignores checking to see if player 'can' kill a projectile.")]
|
||||||
|
public bool IgnoreProjKill = false;
|
||||||
|
|
||||||
|
[Description("Ignores all no clip checks for players.")]
|
||||||
|
public bool IgnoreNoClip = false;
|
||||||
|
|
||||||
|
[Description("Allow ice placement even when user does not have canbuild.")]
|
||||||
|
public bool AllowIce = false;
|
||||||
|
|
||||||
[Description("Allows crimson to spread when a world is hardmode.")]
|
[Description("Allows crimson to spread when a world is hardmode.")]
|
||||||
public bool AllowCrimsonCreep = true;
|
public bool AllowCrimsonCreep = true;
|
||||||
|
|
||||||
[Description("Allows corruption to spread when a world is hardmode.")] public bool AllowCorruptionCreep = true;
|
[Description("Allows corruption to spread when a world is hardmode.")]
|
||||||
|
public bool AllowCorruptionCreep = true;
|
||||||
|
|
||||||
[Description("Allows hallow to spread when a world is hardmode.")] public bool AllowHallowCreep = true;
|
[Description("Allows hallow to spread when a world is hardmode.")]
|
||||||
|
public bool AllowHallowCreep = true;
|
||||||
|
|
||||||
[Description("How many things a statue can spawn within 200 pixels(?) before it stops spawning. Default = 3")] public int StatueSpawn200 = 3;
|
[Description("How many things a statue can spawn within 200 pixels(?) before it stops spawning. Default = 3")]
|
||||||
|
public int StatueSpawn200 = 3;
|
||||||
|
|
||||||
[Description("How many things a statue can spawn within 600 pixels(?) before it stops spawning. Default = 6")] public int StatueSpawn600 = 6;
|
[Description("How many things a statue can spawn within 600 pixels(?) before it stops spawning. Default = 6")]
|
||||||
|
public int StatueSpawn600 = 6;
|
||||||
|
|
||||||
[Description("How many things a statue spawns can exist in the world before it stops spawning. Default = 10")] public int StatueSpawnWorld = 10;
|
[Description("How many things a statue spawns can exist in the world before it stops spawning. Default = 10")]
|
||||||
|
public int StatueSpawnWorld = 10;
|
||||||
|
|
||||||
[Description("Prevent banned items from being /i or /give.")] public bool PreventBannedItemSpawn = false;
|
[Description("Prevent banned items from being /i or /give.")]
|
||||||
|
public bool PreventBannedItemSpawn = false;
|
||||||
|
|
||||||
[Description("Prevent players from interacting with the world if dead.")] public bool PreventDeadModification =
|
[Description("Prevent players from interacting with the world if dead.")]
|
||||||
true;
|
public bool PreventDeadModification = true;
|
||||||
|
|
||||||
[Description("Displays chat messages above players' heads, but will disable chat prefixes to compensate.")] public
|
[Description("Displays chat messages above players' heads, but will disable chat prefixes to compensate.")]
|
||||||
bool EnableChatAboveHeads = false;
|
public bool EnableChatAboveHeads = false;
|
||||||
|
|
||||||
[Description("Force Christmas only events to occur all year.")] public bool ForceXmas = false;
|
[Description("Force Christmas-only events to occur all year.")]
|
||||||
|
public bool ForceXmas = false;
|
||||||
|
|
||||||
[Description("Allows groups on the banned item allowed list to spawn banned items.")] public bool AllowAllowedGroupsToSpawnBannedItems = false;
|
[Description("Allows groups on the banned item allowed list to spawn banned items.")]
|
||||||
|
public bool AllowAllowedGroupsToSpawnBannedItems = false;
|
||||||
|
|
||||||
[Description("Allows stacks in chests to be beyond the stack limit")] public bool IgnoreChestStacksOnLoad = false;
|
[Description("Allows stacks in chests to be beyond the stack limit")]
|
||||||
|
public bool IgnoreChestStacksOnLoad = false;
|
||||||
|
|
||||||
[Description("The path of the directory where logs should be written into.")] public string LogPath = "tshock";
|
[Description("The path of the directory where logs should be written into.")]
|
||||||
|
public string LogPath = "tshock";
|
||||||
|
|
||||||
[Description("Prevents players from placing tiles with an invalid style.")] public bool PreventInvalidPlaceStyle = true;
|
[Description("Prevents players from placing tiles with an invalid style.")]
|
||||||
|
public bool PreventInvalidPlaceStyle = true;
|
||||||
|
|
||||||
[Description("#.#.#. = Red/Blue/Green - RGB Colors for broadcasts. Max value: 255.")] public float[] BroadcastRGB =
|
[Description("#.#.#. = Red/Blue/Green - RGB Colors for broadcasts. Max value: 255.")]
|
||||||
{127,255,212};
|
public float[] BroadcastRGB = { 127, 255, 212 };
|
||||||
|
|
||||||
// TODO: Get rid of this when the old REST permission model is removed.
|
// TODO: Get rid of this when the old REST permission model is removed.
|
||||||
[Description(
|
[Description(
|
||||||
"Whether the REST API should use the new permission model. Note: The old permission model will become depracted in the future."
|
"Whether the REST API should use the new permission model. Note: The old permission model will become depracted in the future."
|
||||||
)] public bool RestUseNewPermissionModel = true;
|
)]
|
||||||
|
public bool RestUseNewPermissionModel = true;
|
||||||
|
|
||||||
[Description("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<string, SecureRest.TokenData> ApplicationRestTokens = new Dictionary<string, SecureRest.TokenData>();
|
public Dictionary<string, SecureRest.TokenData> ApplicationRestTokens = new Dictionary<string, SecureRest.TokenData>();
|
||||||
|
|
||||||
[Description("The number of reserved slots past your max server slot that can be joined by reserved players")] public int ReservedSlots = 20;
|
[Description("The number of reserved slots past your max server slot that can be joined by reserved players")]
|
||||||
|
public int ReservedSlots = 20;
|
||||||
[Description("The number of reserved slots past your max server slot that can be joined by reserved players")] public bool LogRest = false;
|
|
||||||
|
|
||||||
[Description("The number of seconds a player must wait before being respawned.")] public int RespawnSeconds = 3;
|
[Description("The number of reserved slots past your max server slot that can be joined by reserved players")]
|
||||||
|
public bool LogRest = false;
|
||||||
|
|
||||||
[Description("Disables a player if this number of tiles is painted within 1 second.")] public int TilePaintThreshold = 15;
|
[Description("The number of seconds a player must wait before being respawned.")]
|
||||||
|
public int RespawnSeconds = 3;
|
||||||
|
|
||||||
[Description("Enables max packet bufferer size.")] public bool EnableMaxBytesInBuffer = false;
|
[Description("Disables a player if this number of tiles is painted within 1 second.")]
|
||||||
|
public int TilePaintThreshold = 15;
|
||||||
|
|
||||||
[Description("Number of bytes in the packet buffer before we disconnect the player.")] public int MaxBytesInBuffer = 5242880;
|
[Description("Enables max packet bufferer size.")]
|
||||||
|
public bool EnableMaxBytesInBuffer = false;
|
||||||
|
|
||||||
[Description("Forces your world to be in Halloween mode regardless of the data.")] public bool ForceHalloween = false;
|
[Description("Number of bytes in the packet buffer before we disconnect the player.")]
|
||||||
|
public int MaxBytesInBuffer = 5242880;
|
||||||
|
|
||||||
[Description("Allows anyone to break grass, pots, etc.")] public bool AllowCutTilesAndBreakables = false;
|
[Description("Forces your world to be in Halloween mode regardless of the data.")]
|
||||||
|
public bool ForceHalloween = false;
|
||||||
|
|
||||||
[Description("Specifies which string starts a command")] public string CommandSpecifier = "/";
|
[Description("Allows anyone to break grass, pots, etc.")]
|
||||||
|
public bool AllowCutTilesAndBreakables = false;
|
||||||
|
|
||||||
|
[Description("Specifies which string starts a command")]
|
||||||
|
public string CommandSpecifier = "/";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Reads a configuration file from a given path
|
/// Reads a configuration file from a given path
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="path">string path</param>
|
/// <param name="path">string path</param>
|
||||||
/// <returns>ConfigFile object</returns>
|
/// <returns>ConfigFile object</returns>
|
||||||
public static ConfigFile Read(string path)
|
public static ConfigFile Read(string path)
|
||||||
{
|
{
|
||||||
if (!File.Exists(path))
|
if (!File.Exists(path))
|
||||||
return new ConfigFile();
|
return new ConfigFile();
|
||||||
|
|
@ -298,11 +388,11 @@ namespace TShockAPI
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Reads the configuration file from a stream
|
/// Reads the configuration file from a stream
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="stream">stream</param>
|
/// <param name="stream">stream</param>
|
||||||
/// <returns>ConfigFile object</returns>
|
/// <returns>ConfigFile object</returns>
|
||||||
public static ConfigFile Read(Stream stream)
|
public static ConfigFile Read(Stream stream)
|
||||||
{
|
{
|
||||||
using (var sr = new StreamReader(stream))
|
using (var sr = new StreamReader(stream))
|
||||||
|
|
@ -314,10 +404,10 @@ namespace TShockAPI
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Writes the configuration to a given path
|
/// Writes the configuration to a given path
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="path">string path - Location to put the config file</param>
|
/// <param name="path">string path - Location to put the config file</param>
|
||||||
public void Write(string path)
|
public void Write(string path)
|
||||||
{
|
{
|
||||||
using (var fs = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Write))
|
using (var fs = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Write))
|
||||||
|
|
@ -326,10 +416,10 @@ namespace TShockAPI
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Writes the configuration to a stream
|
/// Writes the configuration to a stream
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="stream">stream</param>
|
/// <param name="stream">stream</param>
|
||||||
public void Write(Stream stream)
|
public void Write(Stream stream)
|
||||||
{
|
{
|
||||||
var str = JsonConvert.SerializeObject(this, Formatting.Indented);
|
var str = JsonConvert.SerializeObject(this, Formatting.Indented);
|
||||||
|
|
@ -339,14 +429,14 @@ namespace TShockAPI
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// On config read hook
|
/// On config read hook
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static Action<ConfigFile> ConfigRead;
|
public static Action<ConfigFile> ConfigRead;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Dumps all configuration options to a text file in Markdown format
|
/// Dumps all configuration options to a text file in Markdown format
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static void DumpDescriptions()
|
public static void DumpDescriptions()
|
||||||
{
|
{
|
||||||
var sb = new StringBuilder();
|
var sb = new StringBuilder();
|
||||||
|
|
|
||||||
|
|
@ -242,12 +242,6 @@ namespace TShockAPI
|
||||||
[Description("User can force a blood moon.")]
|
[Description("User can force a blood moon.")]
|
||||||
public static readonly string bloodmoon = "tshock.world.time.bloodmoon";
|
public static readonly string bloodmoon = "tshock.world.time.bloodmoon";
|
||||||
|
|
||||||
[Description("User can force a pumpkin moon.")]
|
|
||||||
public static readonly string pumpkinmoon = "tshock.world.time.pumpkinmoon";
|
|
||||||
|
|
||||||
[Description("User can force a snow moon.")]
|
|
||||||
public static readonly string snowmoon = "tshock.world.time.snowmoon";
|
|
||||||
|
|
||||||
[Description("User can set the time.")]
|
[Description("User can set the time.")]
|
||||||
public static readonly string time = "tshock.world.time.set";
|
public static readonly string time = "tshock.world.time.set";
|
||||||
|
|
||||||
|
|
@ -263,6 +257,9 @@ namespace TShockAPI
|
||||||
[Description("User can convert hallow into corruption and vice-versa")]
|
[Description("User can convert hallow into corruption and vice-versa")]
|
||||||
public static readonly string converthardmode = "tshock.world.converthardmode";
|
public static readonly string converthardmode = "tshock.world.converthardmode";
|
||||||
|
|
||||||
|
[Description("User can force the server to Halloween mode.")]
|
||||||
|
public static readonly string halloween = "tshock.world.sethalloween";
|
||||||
|
|
||||||
[Description("User can force the server to Christmas mode.")]
|
[Description("User can force the server to Christmas mode.")]
|
||||||
public static readonly string xmas = "tshock.world.setxmas";
|
public static readonly string xmas = "tshock.world.setxmas";
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue