diff --git a/src/main/java/me/totalfreedom/totalfreedommod/admin/Admin.java b/src/main/java/me/totalfreedom/totalfreedommod/admin/Admin.java index 79f699bb..e90b3c5f 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/admin/Admin.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/admin/Admin.java @@ -6,11 +6,13 @@ import java.util.*; import me.totalfreedom.totalfreedommod.LogViewer.LogsRegistrationMode; import me.totalfreedom.totalfreedommod.TotalFreedomMod; +import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.StringUtils; import org.bukkit.Bukkit; +import org.bukkit.Server; import org.bukkit.entity.Player; public class Admin @@ -157,6 +159,34 @@ public class Admin { plugin.btb.killTelnetSessions(getName()); } + + // Ensure admins don't have admin functionality when removed (FS-222) + AdminList.vanished.remove(getName()); + + if (plugin.esb != null) + { + plugin.esb.setVanished(getName(), false); + } + + setCommandSpy(false); + setPotionSpy(false); + + Server server = Bukkit.getServer(); + Player player = server.getPlayer(getName()); + + if (player != null) + { + // Update chats + FPlayer freedomPlayer = plugin.pl.getPlayer(player); + freedomPlayer.removeAdminFunctionality(); + + // Disable vanish + for (Player player1 : server.getOnlinePlayers()) + { + player1.showPlayer(plugin, player); + } + } + } plugin.lv.updateLogsRegistration(null, getName(), LogsRegistrationMode.DELETE); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_saconfig.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_saconfig.java index 47ee7219..78979d4e 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_saconfig.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_saconfig.java @@ -240,7 +240,9 @@ public class Command_saconfig extends FreedomCommand checkRank(Rank.ADMIN); Player player = getPlayer(args[1]); + Admin admin = player != null ? plugin.al.getAdmin(player) : plugin.al.getEntryByName(args[1]); + String adminName = admin.getName(); if (admin == null) { @@ -253,15 +255,15 @@ public class Command_saconfig extends FreedomCommand plugin.al.save(admin); plugin.al.updateTables(); + if (player != null) { plugin.rm.updateDisplay(player); - plugin.pl.getPlayer(player).setAdminChat(false); } if (plugin.dc.enabled && ConfigEntry.DISCORD_ROLE_SYNC.getBoolean()) { - Discord.syncRoles(admin, plugin.pl.getData(admin.getName()).getDiscordID()); + Discord.syncRoles(admin, plugin.pl.getData(adminName).getDiscordID()); } plugin.ptero.updateAccountStatus(admin); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java b/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java index 603cd4af..002b16f9 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java @@ -112,6 +112,14 @@ public class FPlayer this.player = player; } + // Ensure admins don't have admin functionality when removed (FS-222) + public void removeAdminFunctionality() + { + this.setCommandSpy(false); + this.setAdminChat(false); + this.setFuckoffRadius(0); + } + public boolean isOrbiting() { return isOrbiting; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/rank/RankManager.java b/src/main/java/me/totalfreedom/totalfreedommod/rank/RankManager.java index 9af8fe94..e1d07e1e 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/rank/RankManager.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/rank/RankManager.java @@ -9,7 +9,6 @@ import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.StringUtils; import org.bukkit.ChatColor; -import org.bukkit.GameMode; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -185,6 +184,12 @@ public class RankManager extends FreedomService if (isAdmin) { plugin.al.updateLastLogin(player); + } else + { + // Ensure admins don't have admin functionality when removed (FS-222) + FPlayer freedomPlayer = plugin.pl.getPlayer(player); + + freedomPlayer.removeAdminFunctionality(); } // Broadcast login message