diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index c783652f..7e04a5be 100755 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -27,6 +27,7 @@ using System.Text; using System.Threading; using Terraria; using TShockAPI.DB; +using TerrariaApi.Server; namespace TShockAPI { @@ -380,6 +381,10 @@ namespace TShockAPI { HelpText = "Starts a Frost Moon at the specified wave." }); + add(new Command(Permissions.clearangler, ClearAnglerQuests, "clearangler") + { + HelpText = "Resets the list of users who have completed an angler quest that day." + }); #endregion #region TP Commands add(new Command(Permissions.home, Home, "home") @@ -1516,7 +1521,7 @@ namespace TShockAPI private static void Restart(CommandArgs args) { - if (Main.runningMono) + if (ServerApi.RunningMono) { Log.ConsoleInfo("Sorry, this command has not yet been implemented in Mono."); } @@ -1702,6 +1707,32 @@ namespace TShockAPI TSPlayer.All.SendInfoMessage("{0} started the frost moon at wave {1}!", args.Player.Name, wave); } + private static void ClearAnglerQuests(CommandArgs args) + { + if (args.Parameters.Count > 0) + { + var result = Main.anglerWhoFinishedToday.RemoveAll(s => s.ToLower().Equals(args.Parameters[0].ToLower())); + 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()))) + { + //this will always tell the client that they have not done the quest today. + ply.SendData((PacketTypes)74, ""); + } + } + else + args.Player.SendErrorMessage("Failed to find any users by that name on the list."); + + } + else + { + Main.anglerWhoFinishedToday.Clear(); + NetMessage.SendAnglerQuest(); + args.Player.SendSuccessMessage("Cleared all users from the angler quest completion list for today."); + } + } + private static void Hardmode(CommandArgs args) { if (Main.hardMode) diff --git a/TShockAPI/PacketBufferer.cs b/TShockAPI/PacketBufferer.cs index 8be261a6..ad3b6d03 100644 --- a/TShockAPI/PacketBufferer.cs +++ b/TShockAPI/PacketBufferer.cs @@ -197,7 +197,7 @@ namespace TShockAPI { if (socket.tcpClient.Client != null && socket.tcpClient.Client.Poll(0, SelectMode.SelectWrite)) { - if (Main.runningMono) + if (ServerApi.RunningMono) socket.networkStream.Write(buffer, offset, count); else socket.tcpClient.Client.Send(buffer, offset, count, SocketFlags.None); diff --git a/TShockAPI/Permissions.cs b/TShockAPI/Permissions.cs index 4bb2b858..85847bfc 100644 --- a/TShockAPI/Permissions.cs +++ b/TShockAPI/Permissions.cs @@ -200,6 +200,9 @@ namespace TShockAPI [Description("User can start invasions (Goblin/Snow Legion) using items")] public static readonly string startinvasion = "tshock.npc.startinvasion"; + [Description("User can clear the list of users who have completed an angler quest that day.")] + public static readonly string clearangler = "tshock.npc.clearanglerquests"; + // tshock.superadmin nodes [Description("Meant for super admins only.")] diff --git a/TShockAPI/StatTracker.cs b/TShockAPI/StatTracker.cs index a3381bf7..ccda72f9 100644 --- a/TShockAPI/StatTracker.cs +++ b/TShockAPI/StatTracker.cs @@ -6,6 +6,7 @@ using System.Net; using System.Threading; using System.IO; using System.Web; +using TerrariaApi.Server; namespace TShockAPI { @@ -54,7 +55,7 @@ namespace TShockAPI systemCPUClock = 0, version = TShock.VersionNum.ToString(), terrariaVersion = Terraria.Main.versionNumber2, - mono = Terraria.Main.runningMono + mono = ServerApi.RunningMono }; var serialized = Newtonsoft.Json.JsonConvert.SerializeObject(data); diff --git a/TerrariaServerAPI b/TerrariaServerAPI index a44d46af..e89c1ed6 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit a44d46af2f7b54110707b6f09875fdcf32365544 +Subproject commit e89c1ed6904e3b1787e69615e900c506fb64bec2