From 11347c2327afa9cf6cca59d7d9410093ac40cab9 Mon Sep 17 00:00:00 2001 From: Jerom van der Sar Date: Wed, 28 Nov 2012 19:31:01 +0100 Subject: [PATCH] Added Adminchat Conflicts: src/me/StevenLawson/TotalFreedomMod/TFM_Util.java --- .../TotalFreedomMod/Commands/Command_o.java | 38 +++++++++++++++++++ .../Listener/TFM_PlayerListener.java | 13 ++++++- .../TotalFreedomMod/TFM_UserInfo.java | 11 ++++++ .../TotalFreedomMod/TFM_Util.java | 16 ++++++++ src/plugin.yml | 5 ++- 5 files changed, 80 insertions(+), 3 deletions(-) create mode 100644 src/me/StevenLawson/TotalFreedomMod/Commands/Command_o.java diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_o.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_o.java new file mode 100644 index 00000000..7eeb0d08 --- /dev/null +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_o.java @@ -0,0 +1,38 @@ +package me.StevenLawson.TotalFreedomMod.Commands; + +import me.StevenLawson.TotalFreedomMod.TFM_SuperadminList; +import me.StevenLawson.TotalFreedomMod.TFM_UserInfo; +import me.StevenLawson.TotalFreedomMod.TFM_Util; +import org.apache.commons.lang.StringUtils; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@CommandPermissions(level = ADMIN_LEVEL.SUPER, source = SOURCE_TYPE_ALLOWED.BOTH, ignore_permissions = false) +public class Command_o extends TFM_Command +{ + @Override + public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) + { + if(senderIsConsole && args.length == 0) + { + TFM_Util.playerMsg(sender, "Only in-game players can toggle AdminChat."); + return true; + } + + if(args.length == 0) + { + TFM_UserInfo userinfo = TFM_UserInfo.getPlayerData(sender_p); + userinfo.setAdminChat(!userinfo.inAdminChat()); + TFM_Util.playerMsg(sender, "Toggled Admin Chat " + (userinfo.inAdminChat() ? "on" : "off")+"."); + } + else + { + + // very complicated magic stuff + TFM_Util.AdminChatMessage(sender, StringUtils.join(args, " "), senderIsConsole); + } + return true; + } +} \ No newline at end of file diff --git a/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_PlayerListener.java b/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_PlayerListener.java index c3644739..8266aa5a 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_PlayerListener.java +++ b/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_PlayerListener.java @@ -358,8 +358,17 @@ public class TFM_PlayerListener implements Listener } } - // finally, set message - event.setMessage(message); + // check for adminchat + if(playerdata.inAdminChat()) + { + TFM_Util.AdminChatMessage(p, message, false); + event.setCancelled(true); + } + else + { + // finally, set message + event.setMessage(message); + } } catch (Exception ex) { diff --git a/src/me/StevenLawson/TotalFreedomMod/TFM_UserInfo.java b/src/me/StevenLawson/TotalFreedomMod/TFM_UserInfo.java index f2e1f3e6..17b56d26 100644 --- a/src/me/StevenLawson/TotalFreedomMod/TFM_UserInfo.java +++ b/src/me/StevenLawson/TotalFreedomMod/TFM_UserInfo.java @@ -46,6 +46,7 @@ public class TFM_UserInfo private boolean mp44_firing = false; private int lockup_schedule_id = -1; private String last_message = ""; + private boolean in_adminchat = false; public TFM_UserInfo(Player player) { @@ -417,4 +418,14 @@ public class TFM_UserInfo { return this.last_message; } + + public void setAdminChat(boolean in_adminchat) + { + this.in_adminchat = in_adminchat; + } + + public boolean inAdminChat() + { + return this.in_adminchat; + } } diff --git a/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java b/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java index f2b99b7c..133fe774 100644 --- a/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java +++ b/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java @@ -998,4 +998,20 @@ public class TFM_Util fos.getChannel().transferFrom(rbc, 0, 1 << 24); fos.close(); } + public static void AdminChatMessage(CommandSender sender, String message, boolean senderIsConsole) + { + // complicated magic + String name = sender.getName()+ + (senderIsConsole ? ChatColor.DARK_PURPLE+" (Console)" : + (TFM_SuperadminList.isSeniorAdmin(sender) ? ChatColor.LIGHT_PURPLE+ " (SrA)" : ChatColor.GOLD+" (SA)")); + + TFM_Log.info("[ADMIN] " + name + ": " + message); + for(Player p : Bukkit.getOnlinePlayers()) + { + if(TFM_SuperadminList.isUserSuperadmin(p)) + { + p.sendMessage("[" + ChatColor.AQUA + "ADMIN" + ChatColor.WHITE + "] " + ChatColor.DARK_RED + name + ChatColor.WHITE + ": " + ChatColor.AQUA + message); + } + } + } } diff --git a/src/plugin.yml b/src/plugin.yml index 583625af..a768b4ce 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -119,6 +119,9 @@ commands: nonuke: description: Superadmin command - Attempt to detect "invisible griefers" and "nukers". usage: / [range] [blockrate] + o: + description: Superadmin command - Talk privately with other admins + usage: / [message] onlinemode: description: Console command - Switch server online-mode on and off. usage: / @@ -130,7 +133,7 @@ commands: usage: / [-c | -s] ops: description: Superadmin command - Manage operators - usage: / [count | list | purge] + usage: / opme: description: Superadmin command - Automatically ops user. usage: /