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