diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index fd3d4899..71c22b66 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -143,6 +143,7 @@ namespace TShockAPI add(Permissions.tp, TP, "tp"); add(Permissions.tphere, TPHere, "tphere"); add(Permissions.tphere, SendWarp, "sendwarp", "sw"); + add(Permissions.tpallow, TPAllow, "tpallow"); add(Permissions.warp, UseWarp, "warp"); add(Permissions.managewarp, SetWarp, "setwarp"); add(Permissions.managewarp, DeleteWarp, "delwarp"); @@ -1270,11 +1271,20 @@ namespace TShockAPI args.Player.SendMessage("Invalid player!", Color.Red); else if (players.Count > 1) args.Player.SendMessage("More than one player matched!", Color.Red); + else if (!args.Player.TPAllow && !args.Player.Group.HasPermission(Permissions.tpall)) + { + var plr = players[0]; + args.Player.SendMessage(plr.Name + " Has Selected For Users Not To Teleport To Them"); + plr.SendMessage(args.Player.Name + " Attempted To Teleport To You"); + } else { var plr = players[0]; if (args.Player.Teleport(plr.TileX, plr.TileY + 3)) + { args.Player.SendMessage(string.Format("Teleported to {0}", plr.Name)); + plr.SendMessage(args.Player.Name + " Teleported To You"); + } } } @@ -1325,10 +1335,18 @@ namespace TShockAPI plr.SendMessage(string.Format("You were teleported to {0}.", args.Player.Name)); args.Player.SendMessage(string.Format("You brought {0} here.", plr.Name)); } - } } + private static void TPAllow(CommandArgs args) + { + if (!args.Player.TPAllow) + args.Player.SendMessage("Other Players Can Now Teleport To You"); + if (args.Player.TPAllow) + args.Player.SendMessage("Other Players Can No Longer Teleport To You"); + args.Player.TPAllow = !args.Player.TPAllow; + } + private static void SendWarp(CommandArgs args) { if (args.Parameters.Count < 2) diff --git a/TShockAPI/Permissions.cs b/TShockAPI/Permissions.cs index 7b5b9fe1..aa2be51a 100644 --- a/TShockAPI/Permissions.cs +++ b/TShockAPI/Permissions.cs @@ -147,6 +147,12 @@ namespace TShockAPI [Description("Required to be able to place Explosives")] public static readonly string canexplosive; + [Description("Users can stop people from TPing to them")] + public static readonly string tpallow; + + [Description("Users can tp to anyone")] + public static readonly string tpall; + static Permissions() { foreach (var field in typeof(Permissions).GetFields()) diff --git a/TShockAPI/TSPlayer.cs b/TShockAPI/TSPlayer.cs index 768e6665..89221924 100644 --- a/TShockAPI/TSPlayer.cs +++ b/TShockAPI/TSPlayer.cs @@ -56,6 +56,7 @@ namespace TShockAPI public bool IsLoggedIn; public int UserID = -1; public bool HasBeenNaggedAboutLoggingIn; + public bool TPAllow = true; public bool TpLock = false; Player FakePlayer; public bool RequestedSection = false;