From 2a4061b61c54028aa54b8cf10021718ddef809b0 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Fri, 29 Jul 2016 08:54:47 +1000 Subject: [PATCH] If a player is both banned and tempbanned, /unban should remove both bans. Also fix name colour in tab not being updated when doing /unban. --- Commands/Moderation/CmdUnban.cs | 21 ++++++++++++++------- Network/Player.Networking.cs | 2 +- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/Commands/Moderation/CmdUnban.cs b/Commands/Moderation/CmdUnban.cs index b23a0428a..03a57c879 100644 --- a/Commands/Moderation/CmdUnban.cs +++ b/Commands/Moderation/CmdUnban.cs @@ -15,7 +15,7 @@ or implied. See the Licenses for the specific language governing permissions and limitations under the Licenses. */ -namespace MCGalaxy.Commands { +namespace MCGalaxy.Commands { public sealed class CmdUnban : Command { public override string name { get { return "unban"; } } public override string shortcut { get { return ""; } } @@ -37,7 +37,8 @@ namespace MCGalaxy.Commands { void Unban(Player p, string name, Player who, string reason) { string srcFull = p == null ? "(console)" : p.ColoredName + "%S"; string src = p == null ? "(console)" : p.name; - + Group banned = Group.findPerm(LevelPermission.Banned); + // Check tempbans first foreach (Server.TempBan tban in Server.tempBans) { if (!tban.name.CaselessEq(name)) continue; @@ -46,14 +47,19 @@ namespace MCGalaxy.Commands { Player.GlobalMessage(name + " had their temporary ban lifted by " + srcFull + "."); Server.s.Log("UNBANNED: " + name + " by " + src); Server.IRC.Say(name + " was unbanned by " + src + "."); + + if (banned.playerList.Contains(name)) + UnbanPlayer(p, name, src, srcFull, reason); return; - } + } - Group banned = Group.findPerm(LevelPermission.Banned); int matches = 0; name = banned.playerList.FindMatches(p, name, "banned players", out matches); if (name == null) return; - + UnbanPlayer(p, name, src, srcFull, reason); + } + + static void UnbanPlayer(Player p, string name, string src, string srcFull, string reason) { Player.GlobalMessage(name + " was &8(unbanned) %Sby " + srcFull + "."); Server.s.Log("UNBANNED: " + name + " by " + src); Server.IRC.Say(name + " was unbanned by " + src + "."); @@ -62,10 +68,11 @@ namespace MCGalaxy.Commands { Group.findPerm(LevelPermission.Banned).playerList.Remove(name); Group.findPerm(LevelPermission.Banned).playerList.Save(); + Player who = PlayerInfo.Find(name); if (who != null) { who.group = Group.standard; who.color = who.group.color; - Entities.GlobalDespawn(who, false); - Entities.GlobalSpawn(who, false); + Entities.GlobalDespawn(who, true); + Entities.GlobalSpawn(who, true); } string ip = PlayerInfo.FindIP(name); diff --git a/Network/Player.Networking.cs b/Network/Player.Networking.cs index cbbfedb20..da9bc9118 100644 --- a/Network/Player.Networking.cs +++ b/Network/Player.Networking.cs @@ -532,7 +532,7 @@ namespace MCGalaxy { } else if (hasCustomBlocks) { buffer[7] = Block.Convert(block); } else { - buffer[7] = Block.Convert(Block.ConvertCPE(block)); + buffer[7] = Block.ConvertCPE(Block.Convert(block)); } SendRaw(buffer); }