From fb32fc7f5131dfd23d49d6c24f0dfffa6b1d652a Mon Sep 17 00:00:00 2001 From: Brettflan Date: Sun, 15 Jan 2012 01:42:56 -0600 Subject: [PATCH] (courtesy of eXeC64) Added chat spy feature for admins --- plugin.yml | 7 +++++-- src/com/massivecraft/factions/FPlayer.java | 7 ++++++- src/com/massivecraft/factions/cmd/CmdHelp.java | 2 +- src/com/massivecraft/factions/cmd/FCmdRoot.java | 2 ++ .../listeners/FactionsChatEarlyListener.java | 15 +++++++++++++-- .../massivecraft/factions/struct/Permission.java | 1 + 6 files changed, 28 insertions(+), 6 deletions(-) diff --git a/plugin.yml b/plugin.yml index a5e68af0..8cd4d200 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,5 +1,5 @@ name: Factions -version: 1.6.2 +version: 1.6.3_dev main: com.massivecraft.factions.P authors: [Olof Larsson, Brett Flannigan] softdepend: [PermissionsEx, Permissions, Essentials, EssentialsChat, HeroChat, iChat, LocalAreaChat, nChat, ChatManager, CAPI, AuthMe, Register, Spout, WorldEdit, WorldGuard] @@ -31,7 +31,7 @@ permissions: factions.sethome.any: true factions.money.*: true factions.kit.halfmod: - description: Zones, bypassing, and kicking + description: Zones, bypassing, kicking, and chatspy children: factions.kit.fullplayer: true factions.managesafezone: true @@ -39,6 +39,7 @@ permissions: factions.bypass: true factions.kick.any: true factions.ownershipbypass: true + factions.chatspy: true factions.kit.fullplayer: default: true description: Can also create new factions. @@ -87,6 +88,8 @@ permissions: description: enable admin bypass mode factions.chat: description: change chat mode + factions.chatspy: + description: enable admin chat spy mode factions.claim: description: claim land where you are standing factions.config: diff --git a/src/com/massivecraft/factions/FPlayer.java b/src/com/massivecraft/factions/FPlayer.java index a0a67a92..de95e62c 100644 --- a/src/com/massivecraft/factions/FPlayer.java +++ b/src/com/massivecraft/factions/FPlayer.java @@ -135,7 +135,12 @@ public class FPlayer extends PlayerEntity implements EconomyParticipator } return chatMode; } - + + // FIELD: chatSpy + private transient boolean spyingChat = false; + public void setSpyingChat(boolean chatSpying) { this.spyingChat = chatSpying; } + public boolean isSpyingChat() { return spyingChat; } + // FIELD: account public MethodAccount getAccount() { diff --git a/src/com/massivecraft/factions/cmd/CmdHelp.java b/src/com/massivecraft/factions/cmd/CmdHelp.java index 57336db9..fd12e940 100644 --- a/src/com/massivecraft/factions/cmd/CmdHelp.java +++ b/src/com/massivecraft/factions/cmd/CmdHelp.java @@ -171,12 +171,12 @@ public class CmdHelp extends FCommand pageLines = new ArrayList(); pageLines.add(p.txt.parse("More commands for server admins:")); + pageLines.add( p.cmdBase.cmdChatSpy.getUseageTemplate(true) ); pageLines.add( p.cmdBase.cmdPermanent.getUseageTemplate(true) ); pageLines.add( p.cmdBase.cmdPermanentPower.getUseageTemplate(true) ); pageLines.add( p.cmdBase.cmdLock.getUseageTemplate(true) ); pageLines.add( p.cmdBase.cmdReload.getUseageTemplate(true) ); pageLines.add( p.cmdBase.cmdSaveAll.getUseageTemplate(true) ); - pageLines.add( p.cmdBase.cmdVersion.getUseageTemplate(true) ); pageLines.add( p.cmdBase.cmdConfig.getUseageTemplate(true) ); helpPages.add(pageLines); } diff --git a/src/com/massivecraft/factions/cmd/FCmdRoot.java b/src/com/massivecraft/factions/cmd/FCmdRoot.java index 0b3cbad0..04365940 100644 --- a/src/com/massivecraft/factions/cmd/FCmdRoot.java +++ b/src/com/massivecraft/factions/cmd/FCmdRoot.java @@ -11,6 +11,7 @@ public class FCmdRoot extends FCommand public CmdBoom cmdBoom = new CmdBoom(); public CmdBypass cmdBypass = new CmdBypass(); public CmdChat cmdChat = new CmdChat(); + public CmdChatSpy cmdChatSpy = new CmdChatSpy(); public CmdClaim cmdClaim = new CmdClaim(); public CmdConfig cmdConfig = new CmdConfig(); public CmdCreate cmdCreate = new CmdCreate(); @@ -77,6 +78,7 @@ public class FCmdRoot extends FCommand this.addSubCommand(this.cmdBoom); this.addSubCommand(this.cmdBypass); this.addSubCommand(this.cmdChat); + this.addSubCommand(this.cmdChatSpy); this.addSubCommand(this.cmdClaim); this.addSubCommand(this.cmdConfig); this.addSubCommand(this.cmdCreate); diff --git a/src/com/massivecraft/factions/listeners/FactionsChatEarlyListener.java b/src/com/massivecraft/factions/listeners/FactionsChatEarlyListener.java index bd49cc75..0a074ead 100644 --- a/src/com/massivecraft/factions/listeners/FactionsChatEarlyListener.java +++ b/src/com/massivecraft/factions/listeners/FactionsChatEarlyListener.java @@ -51,7 +51,14 @@ public class FactionsChatEarlyListener extends PlayerListener myFaction.sendMessage(message); P.p.log(Level.INFO, ChatColor.stripColor("FactionChat "+me.getFaction().getTag()+": "+message)); - + + //Send to any players who are spying chat + for (FPlayer fplayer : FPlayers.i.getOnline()) + { + if(fplayer.isSpyingChat() && fplayer.getFaction() != myFaction) + fplayer.sendMessage("[FCspy] "+me.getFaction().getTag()+": "+message); + } + event.setCancelled(true); return; @@ -69,7 +76,11 @@ public class FactionsChatEarlyListener extends PlayerListener for (FPlayer fplayer : FPlayers.i.getOnline()) { if(myFaction.getRelationTo(fplayer) == Relation.ALLY) - fplayer.sendMessage(message); + fplayer.sendMessage(message); + + //Send to any players who are spying chat + else if(fplayer.isSpyingChat()) + fplayer.sendMessage("[ACspy]: " + message); } P.p.log(Level.INFO, ChatColor.stripColor("AllianceChat: "+message)); diff --git a/src/com/massivecraft/factions/struct/Permission.java b/src/com/massivecraft/factions/struct/Permission.java index 49a430e4..19da93c7 100644 --- a/src/com/massivecraft/factions/struct/Permission.java +++ b/src/com/massivecraft/factions/struct/Permission.java @@ -13,6 +13,7 @@ public enum Permission AUTOCLAIM("autoclaim"), BYPASS("bypass"), CHAT("chat"), + CHATSPY("chatspy"), CLAIM("claim"), CONFIG("config"), CREATE("create"),