diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index 21aca390..d3b763f5 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -65,7 +65,7 @@ namespace TShockAPI int ply = args.PlayerID; if (!(Tools.FindPlayer(plStr) == -1 || plStr == "")) { - if (!Tools.IsAdmin(Tools.FindPlayer(plStr))) + if (!TShock.players[Tools.FindPlayer(plStr)].IsAdmin()) { Tools.Kick(Tools.FindPlayer(plStr), "You were kicked."); Tools.Broadcast(plStr + " was kicked by " + Tools.FindPlayer(ply)); @@ -83,7 +83,7 @@ namespace TShockAPI int ply = args.PlayerID; if (!(Tools.FindPlayer(plStr) == -1 || plStr == "")) { - if (!Tools.IsAdmin(Tools.FindPlayer(plStr))) + if (!TShock.players[Tools.FindPlayer(plStr)].IsAdmin()) { FileTools.WriteBan(Tools.FindPlayer(plStr)); Tools.Kick(Tools.FindPlayer(plStr), "You were banned."); @@ -420,7 +420,7 @@ namespace TShockAPI { int ply = args.PlayerID; var commands = TShock.commandList; - if (Tools.IsAdmin(ply)) + if (TShock.players[ply].IsAdmin()) commands = TShock.admincommandList; Tools.SendMessage(ply, "TShock Commands:"); int h = 1; @@ -489,7 +489,7 @@ namespace TShockAPI public static void Kill(CommandArgs args) { - bool isadmin = Tools.IsAdmin(args.PlayerID); + bool isadmin = TShock.players[args.PlayerID].IsAdmin(); ; var msgargs = Regex.Split(args.Message, "(?<=^[^\"]*(?:\"[^\"]*\"[^\"]*)*) (?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)"); if (msgargs.Length == 2 && isadmin) { diff --git a/TShockAPI/TSPlayer.cs b/TShockAPI/TSPlayer.cs index 57806ac8..028e91c4 100644 --- a/TShockAPI/TSPlayer.cs +++ b/TShockAPI/TSPlayer.cs @@ -5,10 +5,12 @@ using System.Text; namespace TShockAPI { - class TSPlayer + public class TSPlayer { public uint tileThreshold; private int player; + private bool admin; + private bool adminSet; public TSPlayer(int ply) { @@ -19,5 +21,16 @@ namespace TShockAPI { return Terraria.Main.player[player]; } + + public bool IsAdmin() + { + if (adminSet) + { + return admin; + } + admin = Tools.IsAdmin(player); + adminSet = true; + return admin; + } } } diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 3dfef609..43c6c9e5 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -11,7 +11,7 @@ namespace TShockAPI { public class TShock : TerrariaPlugin { - TSPlayer[] players = new TSPlayer[Main.maxPlayers]; + public static TSPlayer[] players = new TSPlayer[Main.maxPlayers]; public static string saveDir = "./tshock/"; @@ -228,7 +228,7 @@ namespace TShockAPI Main.player[who].hostile = true; NetMessage.SendData(30, -1, -1, "", who); } - if (Tools.IsAdmin(who) && ConfigurationManager.infiniteInvasion && !ConfigurationManager.startedInvasion) + if (TShock.players[who].IsAdmin() && ConfigurationManager.infiniteInvasion && !ConfigurationManager.startedInvasion) { StartInvasion(); } @@ -246,7 +246,7 @@ namespace TShockAPI { Commands.CommandArgs args = new Commands.CommandArgs(msg, x, y, ply); var commands = commandList; - if (Tools.IsAdmin(ply)) + if (TShock.players[ply].IsAdmin()) commands = admincommandList; Commands.CommandDelegate command; diff --git a/TShockAPI/Tools.cs b/TShockAPI/Tools.cs index 6de0ce20..c906e7df 100644 --- a/TShockAPI/Tools.cs +++ b/TShockAPI/Tools.cs @@ -224,7 +224,7 @@ namespace TShockAPI /// int player public static void HandleCheater(int ply) { - if (!Tools.IsAdmin(ply)) + if (!TShock.players[ply].IsAdmin()) { string cheater = Tools.FindPlayer(ply); string ip = Tools.GetRealIP(Convert.ToString(Netplay.serverSock[ply].tcpClient.Client.RemoteEndPoint));