diff --git a/CHANGELOG.md b/CHANGELOG.md
index eb2270dd..0f2ff579 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,7 @@ This is the rolling changelog for TShock for Terraria. Use past tense when addin
* API: Fixed chat line breaks when using chat tags and long strings of text (@ProfessorXZ)
* API: Added ItemForceIntoChest hook (@WhiteXZ)
+* API: Included the player's registration date in REST's players/read endpoints (@ProfessorXZ)
* The setdungeon command correctly uses tshock.world.setdungeon as its permission (@OnsenManju)
* Fixed clients being able to "Catch" and remove NPCs (@ProfessorXZ)
* Fixed clients being able to remove other players' portals (@ProfessorXZ)
diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs
index 4fb24eb5..4a455b73 100755
--- a/TShockAPI/Commands.cs
+++ b/TShockAPI/Commands.cs
@@ -83,10 +83,10 @@ namespace TShockAPI
/// Gets or sets the help text of this command.
///
public string HelpText { get; set; }
- ///
- /// Gets or sets an extended description of this command.
- ///
- public string[] HelpDesc { get; set; }
+ ///
+ /// Gets or sets an extended description of this command.
+ ///
+ public string[] HelpDesc { get; set; }
///
/// Gets the name of the command.
///
@@ -111,7 +111,7 @@ namespace TShockAPI
commandDelegate = value;
}
- }
+ }
public Command(List permissions, CommandDelegate cmd, params string[] names)
: this(cmd, names)
@@ -136,7 +136,7 @@ namespace TShockAPI
CommandDelegate = cmd;
DoLog = true;
HelpText = "No help available.";
- HelpDesc = null;
+ HelpDesc = null;
Names = new List(names);
Permissions = new List();
}
@@ -202,7 +202,7 @@ namespace TShockAPI
public static void InitCommands()
{
List tshockCommands = new List(100);
- Action add = (cmd) =>
+ Action add = (cmd) =>
{
tshockCommands.Add(cmd);
ChatCommands.Add(cmd);
@@ -270,10 +270,10 @@ namespace TShockAPI
{
HelpText = "Manages item bans."
});
- add(new Command(Permissions.manageprojectile, ProjectileBan, "projban")
- {
- HelpText = "Manages projectile bans."
- });
+ add(new Command(Permissions.manageprojectile, ProjectileBan, "projban")
+ {
+ HelpText = "Manages projectile bans."
+ });
add(new Command(Permissions.managetile, TileBan, "tileban")
{
HelpText = "Manages tile bans."
@@ -355,7 +355,7 @@ namespace TShockAPI
HelpText = "Shows the TShock version."
});
/* Does nothing atm.
- *
+ *
* add(new Command(Permissions.updateplugins, UpdatePlugins, "updateplugins")
{
});*/
@@ -456,7 +456,7 @@ namespace TShockAPI
#region World Commands
add(new Command(Permissions.toggleexpert, ToggleExpert, "expert", "expertmode")
{
- HelpText = "Toggles expert mode."
+ HelpText = "Toggles expert mode."
});
add(new Command(Permissions.antibuild, ToggleAntiBuild, "antibuild")
{
@@ -746,7 +746,7 @@ namespace TShockAPI
args.Player.SendErrorMessage("You are already logged in, and cannot login again.");
return;
}
-
+
User user = TShock.Users.GetUserByName(args.Player.Name);
string password = "";
bool usingUUID = false;
@@ -829,7 +829,7 @@ namespace TShockAPI
if (TShock.RememberedPos.GetLeavePos(args.Player.Name, args.Player.IP) != Vector2.Zero)
{
Vector2 pos = TShock.RememberedPos.GetLeavePos(args.Player.Name, args.Player.IP);
- args.Player.Teleport((int) pos.X*16, (int) pos.Y*16);
+ args.Player.Teleport((int)pos.X * 16, (int)pos.Y * 16);
}
args.Player.LoginHarassed = false;
@@ -911,7 +911,7 @@ namespace TShockAPI
args.Player.SendSuccessMessage("You changed your password!");
TShock.Users.SetUserPassword(args.Player.User, args.Parameters[1]); // SetUserPassword will hash it for you.
TShock.Log.ConsoleInfo(args.Player.IP + " named " + args.Player.Name + " changed the password of account " +
- args.Player.User.Name + ".");
+ args.Player.User.Name + ".");
}
catch (ArgumentOutOfRangeException)
{
@@ -922,7 +922,7 @@ namespace TShockAPI
{
args.Player.SendErrorMessage("You failed to change your password!");
TShock.Log.ConsoleError(args.Player.IP + " named " + args.Player.Name + " failed to change password for account: " +
- args.Player.User.Name + ".");
+ args.Player.User.Name + ".");
}
}
else
@@ -980,7 +980,7 @@ namespace TShockAPI
user.Group = TShock.Config.DefaultRegistrationGroupName; // FIXME -- we should get this from the DB. --Why?
user.UUID = args.Player.UUID;
- if (TShock.Users.GetUserByName(user.Name) == null && user.Name != TSServerPlayer.AccountName) // Cheap way of checking for existance of a user
+ if (TShock.Users.GetUserByName(user.Name) == null && user.Name != TSServerPlayer.AccountName) // Cheap way of checking for existance of a user
{
args.Player.SendSuccessMessage("Account \"{0}\" has been registered.", user.Name);
args.Player.SendSuccessMessage("Your password is {0}.", echoPassword);
@@ -1012,7 +1012,7 @@ namespace TShockAPI
string subcmd = args.Parameters[0];
// Add requires a username, password, and a group specified.
- if (subcmd == "add" && args.Parameters.Count == 4)
+ if (subcmd == "add" && args.Parameters.Count == 4)
{
var user = new User();
@@ -1027,7 +1027,7 @@ namespace TShockAPI
return;
}
user.Group = args.Parameters[3];
-
+
try
{
TShock.Users.AddUser(user);
@@ -1048,7 +1048,7 @@ namespace TShockAPI
TShock.Log.ConsoleError(e.ToString());
}
}
- // User deletion requires a username
+ // User deletion requires a username
else if (subcmd == "del" && args.Parameters.Count == 2)
{
var user = new User();
@@ -1070,7 +1070,7 @@ namespace TShockAPI
TShock.Log.ConsoleError(ex.ToString());
}
}
-
+
// Password changing requires a username, and a new password to set
else if (subcmd == "password" && args.Parameters.Count == 3)
{
@@ -1404,7 +1404,7 @@ namespace TShockAPI
}
else
{
- if (args.Silent)
+ if (args.Silent)
{
args.Player.SendSuccessMessage("{0}banned {1} for '{2}'", verb, players[0].Name, reason);
}
@@ -1482,8 +1482,8 @@ namespace TShockAPI
"delip - Unbans an IP.",
"list [page] - Lists all player bans.",
"listip [page] - Lists all IP bans."
- };
-
+ };
+
PaginationTools.SendPage(args.Player, pageNumber, lines,
new PaginationTools.Settings
{
@@ -1590,7 +1590,7 @@ namespace TShockAPI
args.Player.SendErrorMessage("Server Side Characters is disabled.");
return;
}
- if( args.Parameters.Count < 1 )
+ if (args.Parameters.Count < 1)
{
args.Player.SendErrorMessage("Correct usage: {0}overridessc|{0}ossc ", Specifier);
return;
@@ -1598,12 +1598,12 @@ namespace TShockAPI
string playerNameToMatch = string.Join(" ", args.Parameters);
var matchedPlayers = TShock.Utils.FindPlayer(playerNameToMatch);
- if( matchedPlayers.Count < 1 )
+ if (matchedPlayers.Count < 1)
{
args.Player.SendErrorMessage("No players matched \"{0}\".", playerNameToMatch);
return;
}
- else if( matchedPlayers.Count > 1 )
+ else if (matchedPlayers.Count > 1)
{
TShock.Utils.SendMultipleMatchError(args.Player, matchedPlayers.Select(p => p.Name));
return;
@@ -1634,7 +1634,7 @@ namespace TShockAPI
{
TShock.Config.ForceHalloween = !TShock.Config.ForceHalloween;
Main.checkHalloween();
- if (args.Silent)
+ if (args.Silent)
args.Player.SendInfoMessage("{0}abled halloween mode!", (TShock.Config.ForceHalloween ? "en" : "dis"));
else
TSPlayer.All.SendInfoMessage("{0} {1}abled halloween mode!", args.Player.Name, (TShock.Config.ForceHalloween ? "en" : "dis"));
@@ -1719,8 +1719,8 @@ namespace TShockAPI
string message = string.Join(" ", args.Parameters);
TShock.Utils.Broadcast(
- "(Server Broadcast) " + message,
- Convert.ToByte(TShock.Config.BroadcastRGB[0]), Convert.ToByte(TShock.Config.BroadcastRGB[1]),
+ "(Server Broadcast) " + message,
+ Convert.ToByte(TShock.Config.BroadcastRGB[0]), Convert.ToByte(TShock.Config.BroadcastRGB[1]),
Convert.ToByte(TShock.Config.BroadcastRGB[2]));
}
@@ -1741,7 +1741,7 @@ namespace TShockAPI
string reason = ((args.Parameters.Count > 0) ? "Server shutting down: " + String.Join(" ", args.Parameters) : "Server shutting down!");
TShock.Utils.StopServer(true, reason);
}
-
+
private static void Restart(CommandArgs args)
{
if (TShock.NoRestart)
@@ -1787,55 +1787,56 @@ namespace TShockAPI
if (args.Parameters.Count > 0)
subCommand = args.Parameters[0];
- switch(subCommand.ToLower())
+ switch (subCommand.ToLower())
{
case "listusers":
- {
- int pageNumber;
- if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber))
- return;
-
- Dictionary restUsersTokens = new Dictionary();
- foreach (Rests.SecureRest.TokenData tokenData in TShock.RestApi.Tokens.Values)
{
- if (restUsersTokens.ContainsKey(tokenData.Username))
- restUsersTokens[tokenData.Username]++;
- else
- restUsersTokens.Add(tokenData.Username, 1);
- }
+ int pageNumber;
+ if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber))
+ return;
- List restUsers = new List(
- restUsersTokens.Select(ut => string.Format("{0} ({1} tokens)", ut.Key, ut.Value)));
-
- PaginationTools.SendPage(
- args.Player, pageNumber, PaginationTools.BuildLinesFromTerms(restUsers), new PaginationTools.Settings {
- NothingToDisplayString = "There are currently no active REST users.",
- HeaderFormat = "Active REST Users ({0}/{1}):",
- FooterFormat = "Type {0}rest listusers {{0}} for more.".SFormat(Specifier)
+ Dictionary restUsersTokens = new Dictionary();
+ foreach (Rests.SecureRest.TokenData tokenData in TShock.RestApi.Tokens.Values)
+ {
+ if (restUsersTokens.ContainsKey(tokenData.Username))
+ restUsersTokens[tokenData.Username]++;
+ else
+ restUsersTokens.Add(tokenData.Username, 1);
}
- );
- break;
- }
+ List restUsers = new List(
+ restUsersTokens.Select(ut => string.Format("{0} ({1} tokens)", ut.Key, ut.Value)));
+
+ PaginationTools.SendPage(
+ args.Player, pageNumber, PaginationTools.BuildLinesFromTerms(restUsers), new PaginationTools.Settings
+ {
+ NothingToDisplayString = "There are currently no active REST users.",
+ HeaderFormat = "Active REST Users ({0}/{1}):",
+ FooterFormat = "Type {0}rest listusers {{0}} for more.".SFormat(Specifier)
+ }
+ );
+
+ break;
+ }
case "destroytokens":
- {
- TShock.RestApi.Tokens.Clear();
- args.Player.SendSuccessMessage("All REST tokens have been destroyed.");
- break;
- }
+ {
+ TShock.RestApi.Tokens.Clear();
+ args.Player.SendSuccessMessage("All REST tokens have been destroyed.");
+ break;
+ }
default:
- {
- args.Player.SendInfoMessage("Available REST Sub-Commands:");
- args.Player.SendMessage("listusers - Lists all REST users and their current active tokens.", Color.White);
- args.Player.SendMessage("destroytokens - Destroys all current REST tokens.", Color.White);
- break;
- }
+ {
+ args.Player.SendInfoMessage("Available REST Sub-Commands:");
+ args.Player.SendMessage("listusers - Lists all REST users and their current active tokens.", Color.White);
+ args.Player.SendMessage("destroytokens - Destroys all current REST tokens.", Color.White);
+ break;
+ }
}
}
#endregion Server Maintenence Commands
- #region Cause Events and Spawn Monsters Commands
+ #region Cause Events and Spawn Monsters Commands
private static void DropMeteor(CommandArgs args)
{
@@ -1979,7 +1980,7 @@ namespace TShockAPI
if (result > 0)
{
args.Player.SendSuccessMessage("Removed {0} players from the angler quest completion list for today.", result);
- foreach (TSPlayer ply in TShock.Players.Where(p => p!= null && p.Active && p.TPlayer.name.ToLower().Equals(args.Parameters[0].ToLower())))
+ foreach (TSPlayer ply in TShock.Players.Where(p => p != null && p.Active && p.TPlayer.name.ToLower().Equals(args.Parameters[0].ToLower())))
{
//this will always tell the client that they have not done the quest today.
ply.SendData((PacketTypes)74, "");
@@ -2236,7 +2237,7 @@ namespace TShockAPI
private static void Spawn(CommandArgs args)
{
- if (args.Player.Teleport(Main.spawnTileX*16, (Main.spawnTileY*16) -48))
+ if (args.Player.Teleport(Main.spawnTileX * 16, (Main.spawnTileY * 16) - 48))
args.Player.SendSuccessMessage("Teleported to the map's spawnpoint.");
}
@@ -2501,34 +2502,34 @@ namespace TShockAPI
if (!args.Player.TPAllow)
args.Player.SendSuccessMessage("You have removed your teleportation protection.");
if (args.Player.TPAllow)
- args.Player.SendSuccessMessage("You have enabled teleportation protection.");
+ args.Player.SendSuccessMessage("You have enabled teleportation protection.");
args.Player.TPAllow = !args.Player.TPAllow;
}
private static void Warp(CommandArgs args)
{
- bool hasManageWarpPermission = args.Player.HasPermission(Permissions.managewarp);
- if (args.Parameters.Count < 1)
- {
- if (hasManageWarpPermission)
- {
- args.Player.SendInfoMessage("Invalid syntax! Proper syntax: {0}warp [command] [arguments]", Specifier);
- args.Player.SendInfoMessage("Commands: add, del, hide, list, send, [warpname]");
- args.Player.SendInfoMessage("Arguments: add [warp name], del [warp name], list [page]");
- args.Player.SendInfoMessage("Arguments: send [player] [warp name], hide [warp name] [Enable(true/false)]");
- args.Player.SendInfoMessage("Examples: {0}warp add foobar, {0}warp hide foobar true, {0}warp foobar", Specifier);
- return;
- }
- else
- {
- args.Player.SendErrorMessage("Invalid syntax! Proper syntax: {0}warp [name] or {0}warp list ", Specifier);
- return;
- }
- }
+ bool hasManageWarpPermission = args.Player.HasPermission(Permissions.managewarp);
+ if (args.Parameters.Count < 1)
+ {
+ if (hasManageWarpPermission)
+ {
+ args.Player.SendInfoMessage("Invalid syntax! Proper syntax: {0}warp [command] [arguments]", Specifier);
+ args.Player.SendInfoMessage("Commands: add, del, hide, list, send, [warpname]");
+ args.Player.SendInfoMessage("Arguments: add [warp name], del [warp name], list [page]");
+ args.Player.SendInfoMessage("Arguments: send [player] [warp name], hide [warp name] [Enable(true/false)]");
+ args.Player.SendInfoMessage("Examples: {0}warp add foobar, {0}warp hide foobar true, {0}warp foobar", Specifier);
+ return;
+ }
+ else
+ {
+ args.Player.SendErrorMessage("Invalid syntax! Proper syntax: {0}warp [name] or {0}warp list ", Specifier);
+ return;
+ }
+ }
if (args.Parameters[0].Equals("list"))
- {
- #region List warps
+ {
+ #region List warps
int pageNumber;
if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber))
return;
@@ -2542,98 +2543,98 @@ namespace TShockAPI
FooterFormat = "Type {0}warp list {{0}} for more.".SFormat(Specifier),
NothingToDisplayString = "There are currently no warps defined."
});
- #endregion
- }
- else if (args.Parameters[0].ToLower() == "add" && hasManageWarpPermission)
- {
- #region Add warp
- if (args.Parameters.Count == 2)
- {
- string warpName = args.Parameters[1];
- if (warpName == "list" || warpName == "hide" || warpName == "del" || warpName == "add")
- {
- args.Player.SendErrorMessage("Name reserved, use a different name.");
- }
- else if (TShock.Warps.Add(args.Player.TileX, args.Player.TileY, warpName))
- {
- args.Player.SendSuccessMessage("Warp added: " + warpName);
- }
- else
- {
- args.Player.SendErrorMessage("Warp " + warpName + " already exists.");
- }
- }
- else
- args.Player.SendErrorMessage("Invalid syntax! Proper syntax: {0}warp add [name]", Specifier);
- #endregion
- }
- else if (args.Parameters[0].ToLower() == "del" && hasManageWarpPermission)
- {
- #region Del warp
- if (args.Parameters.Count == 2)
- {
- string warpName = args.Parameters[1];
+ #endregion
+ }
+ else if (args.Parameters[0].ToLower() == "add" && hasManageWarpPermission)
+ {
+ #region Add warp
+ if (args.Parameters.Count == 2)
+ {
+ string warpName = args.Parameters[1];
+ if (warpName == "list" || warpName == "hide" || warpName == "del" || warpName == "add")
+ {
+ args.Player.SendErrorMessage("Name reserved, use a different name.");
+ }
+ else if (TShock.Warps.Add(args.Player.TileX, args.Player.TileY, warpName))
+ {
+ args.Player.SendSuccessMessage("Warp added: " + warpName);
+ }
+ else
+ {
+ args.Player.SendErrorMessage("Warp " + warpName + " already exists.");
+ }
+ }
+ else
+ args.Player.SendErrorMessage("Invalid syntax! Proper syntax: {0}warp add [name]", Specifier);
+ #endregion
+ }
+ else if (args.Parameters[0].ToLower() == "del" && hasManageWarpPermission)
+ {
+ #region Del warp
+ if (args.Parameters.Count == 2)
+ {
+ string warpName = args.Parameters[1];
if (TShock.Warps.Remove(warpName))
{
args.Player.SendSuccessMessage("Warp deleted: " + warpName);
}
else
args.Player.SendErrorMessage("Could not find the specified warp.");
- }
- else
- args.Player.SendErrorMessage("Invalid syntax! Proper syntax: {0}warp del [name]", Specifier);
- #endregion
- }
- else if (args.Parameters[0].ToLower() == "hide" && hasManageWarpPermission)
- {
- #region Hide warp
- if (args.Parameters.Count == 3)
- {
- string warpName = args.Parameters[1];
- bool state = false;
- if (Boolean.TryParse(args.Parameters[2], out state))
- {
- if (TShock.Warps.Hide(args.Parameters[1], state))
- {
- if (state)
- args.Player.SendSuccessMessage("Warp " + warpName + " is now private.");
- else
- args.Player.SendSuccessMessage("Warp " + warpName + " is now public.");
- }
- else
- args.Player.SendErrorMessage("Could not find specified warp.");
- }
- else
- args.Player.SendErrorMessage("Invalid syntax! Proper syntax: {0}warp hide [name] ", Specifier);
- }
- else
- args.Player.SendErrorMessage("Invalid syntax! Proper syntax: {0}warp hide [name] ", Specifier);
- #endregion
- }
- else if (args.Parameters[0].ToLower() == "send" && args.Player.HasPermission(Permissions.tpothers))
- {
- #region Warp send
- if (args.Parameters.Count < 3)
- {
- args.Player.SendErrorMessage("Invalid syntax! Proper syntax: {0}warp send [player] [warpname]", Specifier);
- return;
- }
+ }
+ else
+ args.Player.SendErrorMessage("Invalid syntax! Proper syntax: {0}warp del [name]", Specifier);
+ #endregion
+ }
+ else if (args.Parameters[0].ToLower() == "hide" && hasManageWarpPermission)
+ {
+ #region Hide warp
+ if (args.Parameters.Count == 3)
+ {
+ string warpName = args.Parameters[1];
+ bool state = false;
+ if (Boolean.TryParse(args.Parameters[2], out state))
+ {
+ if (TShock.Warps.Hide(args.Parameters[1], state))
+ {
+ if (state)
+ args.Player.SendSuccessMessage("Warp " + warpName + " is now private.");
+ else
+ args.Player.SendSuccessMessage("Warp " + warpName + " is now public.");
+ }
+ else
+ args.Player.SendErrorMessage("Could not find specified warp.");
+ }
+ else
+ args.Player.SendErrorMessage("Invalid syntax! Proper syntax: {0}warp hide [name] ", Specifier);
+ }
+ else
+ args.Player.SendErrorMessage("Invalid syntax! Proper syntax: {0}warp hide [name] ", Specifier);
+ #endregion
+ }
+ else if (args.Parameters[0].ToLower() == "send" && args.Player.HasPermission(Permissions.tpothers))
+ {
+ #region Warp send
+ if (args.Parameters.Count < 3)
+ {
+ args.Player.SendErrorMessage("Invalid syntax! Proper syntax: {0}warp send [player] [warpname]", Specifier);
+ return;
+ }
- var foundplr = TShock.Utils.FindPlayer(args.Parameters[1]);
- if (foundplr.Count == 0)
- {
- args.Player.SendErrorMessage("Invalid player!");
- return;
- }
- else if (foundplr.Count > 1)
- {
+ var foundplr = TShock.Utils.FindPlayer(args.Parameters[1]);
+ if (foundplr.Count == 0)
+ {
+ args.Player.SendErrorMessage("Invalid player!");
+ return;
+ }
+ else if (foundplr.Count > 1)
+ {
TShock.Utils.SendMultipleMatchError(args.Player, foundplr.Select(p => p.Name));
- return;
- }
+ return;
+ }
- string warpName = args.Parameters[2];
- var warp = TShock.Warps.Find(warpName);
- var plr = foundplr[0];
+ string warpName = args.Parameters[2];
+ var warp = TShock.Warps.Find(warpName);
+ var plr = foundplr[0];
if (warp.Position != Point.Zero)
{
if (plr.Teleport(warp.Position.X * 16, warp.Position.Y * 16))
@@ -2646,22 +2647,22 @@ namespace TShockAPI
{
args.Player.SendErrorMessage("Specified warp not found.");
}
- #endregion
- }
- else
- {
- string warpName = String.Join(" ", args.Parameters);
- var warp = TShock.Warps.Find(warpName);
- if (warp != null)
- {
+ #endregion
+ }
+ else
+ {
+ string warpName = String.Join(" ", args.Parameters);
+ var warp = TShock.Warps.Find(warpName);
+ if (warp != null)
+ {
if (args.Player.Teleport(warp.Position.X * 16, warp.Position.Y * 16))
- args.Player.SendSuccessMessage("Warped to " + warpName + ".");
- }
- else
- {
- args.Player.SendErrorMessage("The specified warp was not found.");
- }
- }
+ args.Player.SendSuccessMessage("Warped to " + warpName + ".");
+ }
+ else
+ {
+ args.Player.SendErrorMessage("The specified warp was not found.");
+ }
+ }
}
#endregion Teleport Commands
@@ -2758,7 +2759,7 @@ namespace TShockAPI
"parent - Changes a group's parent group.",
"prefix - Changes a group's prefix.",
"suffix - Changes a group's suffix."
- };
+ };
PaginationTools.SendPage(args.Player, pageNumber, lines,
new PaginationTools.Settings
@@ -3234,7 +3235,7 @@ namespace TShockAPI
"del - - Deletes an item ban.",
"disallow
- - Disallows a group from using an item.",
"list [page] - Lists all item bans."
- };
+ };
PaginationTools.SendPage(args.Player, pageNumber, lines,
new PaginationTools.Settings
@@ -3404,7 +3405,7 @@ namespace TShockAPI
"del - Deletes an projectile ban.",
"disallow - Disallows a group from using a projectile.",
"list [page] - Lists all projectile bans."
- };
+ };
PaginationTools.SendPage(args.Player, pageNumber, lines,
new PaginationTools.Settings
@@ -3573,7 +3574,7 @@ namespace TShockAPI
"del - Deletes a tile ban.",
"disallow - Disallows a group from place a tile.",
"list [page] - Lists all tile bans."
- };
+ };
PaginationTools.SendPage(args.Player, pageNumber, lines,
new PaginationTools.Settings
@@ -3592,7 +3593,7 @@ namespace TShockAPI
if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber))
return;
IEnumerable tileIds = from tileBan in TShock.TileBans.TileBans
- select tileBan.ID;
+ select tileBan.ID;
PaginationTools.SendPage(args.Player, pageNumber, PaginationTools.BuildLinesFromTerms(tileIds),
new PaginationTools.Settings
{
@@ -3677,11 +3678,12 @@ namespace TShockAPI
if (String.Equals(args.Parameters[0], "default", StringComparison.CurrentCultureIgnoreCase))
{
TShock.Config.DefaultMaximumSpawns = NPC.defaultMaxSpawns = 5;
- if (args.Silent)
+ if (args.Silent)
{
args.Player.SendInfoMessage("Changed the maximum spawns to 5.");
}
- else {
+ else
+ {
TSPlayer.All.SendInfoMessage("{0} changed the maximum spawns to 5.", args.Player.Name);
}
return;
@@ -3699,7 +3701,8 @@ namespace TShockAPI
{
args.Player.SendInfoMessage("Changed the maximum spawns to {0}.", maxSpawns);
}
- else {
+ else
+ {
TSPlayer.All.SendInfoMessage("{0} changed the maximum spawns to {1}.", args.Player.Name, maxSpawns);
}
}
@@ -3715,11 +3718,12 @@ namespace TShockAPI
if (String.Equals(args.Parameters[0], "default", StringComparison.CurrentCultureIgnoreCase))
{
TShock.Config.DefaultSpawnRate = NPC.defaultSpawnRate = 600;
- if (args.Silent)
+ if (args.Silent)
{
args.Player.SendInfoMessage("Changed the spawn rate to 600.");
}
- else {
+ else
+ {
TSPlayer.All.SendInfoMessage("{0} changed the spawn rate to 600.", args.Player.Name);
}
return;
@@ -3732,11 +3736,12 @@ namespace TShockAPI
return;
}
TShock.Config.DefaultSpawnRate = NPC.defaultSpawnRate = spawnRate;
- if (args.Silent)
+ if (args.Silent)
{
args.Player.SendInfoMessage("Changed the spawn rate to {0}.", spawnRate);
}
- else {
+ else
+ {
TSPlayer.All.SendInfoMessage("{0} changed the spawn rate to {1}.", args.Player.Name, spawnRate);
}
}
@@ -3757,7 +3762,7 @@ namespace TShockAPI
args.Player.SendInfoMessage("The current time is {0}:{1:D2}.", (int)Math.Floor(time), (int)Math.Round((time % 1.0) * 60.0));
return;
}
-
+
switch (args.Parameters[0].ToLower())
{
case "day":
@@ -3911,8 +3916,8 @@ namespace TShockAPI
return;
}
- float speed;
- if (!float.TryParse(args.Parameters[0], out speed))
+ int speed;
+ if (!int.TryParse(args.Parameters[0], out speed))
{
args.Player.SendErrorMessage("Invalid wind speed!");
return;
@@ -3927,7 +3932,7 @@ namespace TShockAPI
#endregion Time/PvpFun Commands
- #region Region Commands
+ #region Region Commands
private static void Region(CommandArgs args)
{
@@ -4230,11 +4235,11 @@ namespace TShockAPI
break;
List lines = new List
- {
- string.Format("X: {0}; Y: {1}; W: {2}; H: {3}, Z: {4}", region.Area.X, region.Area.Y, region.Area.Width, region.Area.Height, region.Z),
- string.Concat("Owner: ", region.Owner),
- string.Concat("Protected: ", region.DisableBuild.ToString()),
- };
+ {
+ string.Format("X: {0}; Y: {1}; W: {2}; H: {3}, Z: {4}", region.Area.X, region.Area.Y, region.Area.Width, region.Area.Height, region.Z),
+ string.Concat("Owner: ", region.Owner),
+ string.Concat("Protected: ", region.DisableBuild.ToString()),
+ };
if (region.AllowedIDs.Count > 0)
{
@@ -4282,8 +4287,8 @@ namespace TShockAPI
// Preferring dotted lines as those should easily be distinguishable from actual wires.
if ((boundaryPoint.X + boundaryPoint.Y & 1) == 0)
{
- // Could be improved by sending raw tile data to the client instead but not really
- // worth the effort as chances are very low that overwriting the wire for a few
+ // Could be improved by sending raw tile data to the client instead but not really
+ // worth the effort as chances are very low that overwriting the wire for a few
// nanoseconds will cause much trouble.
Tile tile = Main.tile[boundaryPoint.X, boundaryPoint.Y];
bool oldWireState = tile.wire();
@@ -4423,21 +4428,21 @@ namespace TShockAPI
return;
List lines = new List {
- "set <1/2> - Sets the temporary region points.",
- "clear - Clears the temporary region points.",
- "define - Defines the region with the given name.",
- "delete - Deletes the given region.",
- "name [-u][-z][-p] - Shows the name of the region at the given point.",
- "list - Lists all regions.",
- "resize - Resizes a region.",
- "allow - Allows a user to a region.",
- "remove - Removes a user from a region.",
- "allowg - Allows a user group to a region.",
- "removeg - Removes a user group from a region.",
- "info [-d] - Displays several information about the given region.",
- "protect - Sets whether the tiles inside the region are protected or not.",
- "z <#> - Sets the z-order of the region.",
- };
+ "set <1/2> - Sets the temporary region points.",
+ "clear - Clears the temporary region points.",
+ "define - Defines the region with the given name.",
+ "delete - Deletes the given region.",
+ "name [-u][-z][-p] - Shows the name of the region at the given point.",
+ "list - Lists all regions.",
+ "resize - Resizes a region.",
+ "allow - Allows a user to a region.",
+ "remove - Removes a user from a region.",
+ "allowg - Allows a user group to a region.",
+ "removeg - Removes a user group from a region.",
+ "info [-d] - Displays several information about the given region.",
+ "protect - Sets whether the tiles inside the region are protected or not.",
+ "z <#> - Sets the z-order of the region.",
+ };
if (args.Player.HasPermission(Permissions.tp))
lines.Add("tp - Teleports you to the given region's center.");
@@ -4454,7 +4459,7 @@ namespace TShockAPI
}
}
- #endregion Region Commands
+ #endregion Region Commands
#region World Protection Commands
@@ -4522,15 +4527,15 @@ namespace TShockAPI
}
args.Player.SendSuccessMessage("{0}{1} help: ", Specifier, command.Name);
- if (command.HelpDesc == null)
- {
- args.Player.SendInfoMessage(command.HelpText);
- return;
- }
- foreach (string line in command.HelpDesc)
- {
- args.Player.SendInfoMessage(line);
- }
+ if (command.HelpDesc == null)
+ {
+ args.Player.SendInfoMessage(command.HelpText);
+ return;
+ }
+ foreach (string line in command.HelpDesc)
+ {
+ args.Player.SendInfoMessage(line);
+ }
}
}
@@ -4545,7 +4550,7 @@ namespace TShockAPI
bool displayIdsRequested = false;
int pageNumber = 1;
- if (!invalidUsage)
+ if (!invalidUsage)
{
foreach (string parameter in args.Parameters)
{
@@ -4575,8 +4580,8 @@ namespace TShockAPI
args.Player.SendSuccessMessage("Online Players ({0}/{1})", TShock.Utils.ActivePlayers(), TShock.Config.MaxSlots);
PaginationTools.SendPage(
- args.Player, pageNumber, PaginationTools.BuildLinesFromTerms(TShock.Utils.GetPlayers(displayIdsRequested)),
- new PaginationTools.Settings
+ args.Player, pageNumber, PaginationTools.BuildLinesFromTerms(TShock.Utils.GetPlayers(displayIdsRequested)),
+ new PaginationTools.Settings
{
IncludeHeader = false,
FooterFormat = string.Format("Type {0}who {1}{{0}} for more.", Specifier, displayIdsRequested ? "-i " : string.Empty)
@@ -4890,9 +4895,10 @@ namespace TShockAPI
args.Player.SendErrorMessage("Invalid syntax! Proper syntax: {0}aliases ", Specifier);
return;
}
-
+
string givenCommandName = string.Join(" ", args.Parameters);
- if (string.IsNullOrWhiteSpace(givenCommandName)) {
+ if (string.IsNullOrWhiteSpace(givenCommandName))
+ {
args.Player.SendErrorMessage("Please enter a proper command name or alias.");
return;
}
@@ -4904,10 +4910,11 @@ namespace TShockAPI
commandName = givenCommandName;
bool didMatch = false;
- foreach (Command matchingCommand in ChatCommands.Where(cmd => cmd.Names.IndexOf(commandName) != -1)) {
+ foreach (Command matchingCommand in ChatCommands.Where(cmd => cmd.Names.IndexOf(commandName) != -1))
+ {
if (matchingCommand.Names.Count > 1)
args.Player.SendInfoMessage(
- "Aliases of {0}{1}: {0}{2}", Specifier, matchingCommand.Name, string.Join(", {0}".SFormat(Specifier), matchingCommand.Names.Skip(1)));
+ "Aliases of {0}{1}: {0}{2}", Specifier, matchingCommand.Name, string.Join(", {0}".SFormat(Specifier), matchingCommand.Names.Skip(1)));
else
args.Player.SendInfoMessage("{0}{1} defines no aliases.", Specifier, matchingCommand.Name);
@@ -5069,13 +5076,13 @@ namespace TShockAPI
{
if (Main.npc[i].active && ((npcId == 0 && !Main.npc[i].townNPC && Main.npc[i].netID != NPCID.TargetDummy) || Main.npc[i].netID == npcId))
{
- TSPlayer.Server.StrikeNPC(i, (int)(Main.npc[i].life + (Main.npc[i].defense*0.5)), 0, 0);
+ TSPlayer.Server.StrikeNPC(i, (int)(Main.npc[i].life + (Main.npc[i].defense * 0.5)), 0, 0);
kills++;
}
}
TSPlayer.All.SendInfoMessage("{0} butchered {1} NPCs.", args.Player.Name, kills);
}
-
+
private static void Item(CommandArgs args)
{
if (args.Parameters.Count < 1)
@@ -5138,12 +5145,12 @@ namespace TShockAPI
else if (!item.accessory && prefixIds.Contains(42))
prefixIds.Remove(76);
- if (prefixIds.Count > 1)
+ if (prefixIds.Count > 1)
{
TShock.Utils.SendMultipleMatchError(args.Player, prefixIds.Select(p => p.ToString()));
return;
}
- else if (prefixIds.Count == 0)
+ else if (prefixIds.Count == 0)
{
args.Player.SendErrorMessage("No prefix matched \"{0}\".", prefixidOrName);
return;
@@ -5174,7 +5181,7 @@ namespace TShockAPI
args.Player.SendErrorMessage("Your inventory seems full.");
}
}
-
+
private static void RenameNPC(CommandArgs args)
{
if (args.Parameters.Count != 2)
@@ -5196,7 +5203,7 @@ namespace TShockAPI
TShock.Utils.SendMultipleMatchError(args.Player, npcs.Select(n => n.name));
return;
}
- else if (args.Parameters[1].Length >200)
+ else if (args.Parameters[1].Length > 200)
{
args.Player.SendErrorMessage("New name is too large!");
return;
@@ -5206,26 +5213,26 @@ namespace TShockAPI
npcId = npcs[0].netID;
}
}
- int done=0;
+ int done = 0;
for (int i = 0; i < Main.npc.Length; i++)
{
if (Main.npc[i].active && ((npcId == 0 && !Main.npc[i].townNPC) || (Main.npc[i].netID == npcId && Main.npc[i].townNPC)))
{
- Main.npc[i].displayName= args.Parameters[1];
- NetMessage.SendData(56, -1, -1, args.Parameters[1], i, 0f, 0f, 0f, 0);
- done++;
+ Main.npc[i].displayName = args.Parameters[1];
+ NetMessage.SendData(56, -1, -1, args.Parameters[1], i, 0f, 0f, 0f, 0);
+ done++;
}
}
- if (done >0 )
+ if (done > 0)
{
- TSPlayer.All.SendInfoMessage("{0} renamed the {1}.", args.Player.Name, args.Parameters[0]);
+ TSPlayer.All.SendInfoMessage("{0} renamed the {1}.", args.Player.Name, args.Parameters[0]);
}
else
{
- args.Player.SendErrorMessage("Could not rename {0}!", args.Parameters[0]);
+ args.Player.SendErrorMessage("Could not rename {0}!", args.Parameters[0]);
}
}
-
+
private static void Give(CommandArgs args)
{
if (args.Parameters.Count < 2)
@@ -5307,7 +5314,7 @@ namespace TShockAPI
{
args.Player.SendErrorMessage("You cannot spawn banned items.");
}
-
+
}
else
{
@@ -5396,7 +5403,7 @@ namespace TShockAPI
{
if (time < 0 || time > short.MaxValue)
time = 60;
- args.Player.SetBuff(id, time*60);
+ args.Player.SetBuff(id, time * 60);
args.Player.SendSuccessMessage(string.Format("You have buffed yourself with {0}({1}) for {2} seconds!",
TShock.Utils.GetBuffName(id), TShock.Utils.GetBuffDescription(id), (time)));
}
@@ -5447,7 +5454,7 @@ namespace TShockAPI
{
if (time < 0 || time > short.MaxValue)
time = 60;
- foundplr[0].SetBuff(id, time*60);
+ foundplr[0].SetBuff(id, time * 60);
args.Player.SendSuccessMessage(string.Format("You have buffed {0} with {1}({2}) for {3} seconds!",
foundplr[0].Name, TShock.Utils.GetBuffName(id),
TShock.Utils.GetBuffDescription(id), (time)));
diff --git a/TShockAPI/Rest/RestManager.cs b/TShockAPI/Rest/RestManager.cs
index 445da0c8..03c6692a 100644
--- a/TShockAPI/Rest/RestManager.cs
+++ b/TShockAPI/Rest/RestManager.cs
@@ -258,7 +258,7 @@ namespace TShockAPI
private object ServerReload(RestRequestArgs args)
{
TShock.Utils.Reload(new TSRestPlayer(args.TokenData.Username, TShock.Groups.GetGroupByName(args.TokenData.UserGroupName)));
-
+
return RestResponse("Configuration, permissions, and regions reload complete. Some changes may require a server restart.");
}
@@ -810,6 +810,7 @@ namespace TShockAPI
{"username", null == player.User ? "" : player.User.Name},
{"ip", player.IP},
{"group", player.Group.Name},
+ {"registered", null == player.User ? "" : player.User.Registered},
{"position", player.TileX + "," + player.TileY},
{"inventory", string.Join(", ", activeItems.Select(p => (p.name + ":" + p.stack)))},
{"buffs", string.Join(", ", player.TPlayer.buffType)}
@@ -837,6 +838,7 @@ namespace TShockAPI
{"username", null == player.User ? "" : player.User.Name},
{"ip", player.IP},
{"group", player.Group.Name},
+ {"registered", null == player.User ? "" : player.User.Registered},
{"position", player.TileX + "," + player.TileY},
{"inventory", string.Join(", ", inventory.Select(p => (p.name + ":" + p.stack)))},
{"armor", string.Join(", ", equipment.Select(p => (p.netID + ":" + p.prefix)))},