From ea4031b0ed685cb7276ec5beb2d868809ff28155 Mon Sep 17 00:00:00 2001 From: garbagemule Date: Tue, 30 Jul 2013 22:07:57 +0200 Subject: [PATCH] Add isolated chat option. --- resources/plugin.yml | 2 +- resources/res/settings.yml | 1 + src/com/garbagemule/MobArena/ArenaImpl.java | 8 ++++++++ src/com/garbagemule/MobArena/framework/Arena.java | 2 ++ .../MobArena/listeners/MAGlobalListener.java | 10 ++++++++++ 5 files changed, 22 insertions(+), 1 deletion(-) diff --git a/resources/plugin.yml b/resources/plugin.yml index f86f0d8..10e93f1 100644 --- a/resources/plugin.yml +++ b/resources/plugin.yml @@ -1,7 +1,7 @@ name: MobArena author: garbagemule main: com.garbagemule.MobArena.MobArena -version: 0.95.5.1 +version: 0.95.5.3 softdepend: [Spout,Towny,Heroes,MagicSpells,Vault] commands: ma: diff --git a/resources/res/settings.yml b/resources/res/settings.yml index db9ccf8..f880e96 100644 --- a/resources/res/settings.yml +++ b/resources/res/settings.yml @@ -38,4 +38,5 @@ use-class-chests: false display-waves-as-level: false display-timer-as-level: false use-scoreboards: true +isolated-chat: false global-end-announce: false diff --git a/src/com/garbagemule/MobArena/ArenaImpl.java b/src/com/garbagemule/MobArena/ArenaImpl.java index c09e3e4..d379d01 100644 --- a/src/com/garbagemule/MobArena/ArenaImpl.java +++ b/src/com/garbagemule/MobArena/ArenaImpl.java @@ -94,6 +94,7 @@ public class ArenaImpl implements Arena private List entryFee; private TimeStrategy timeStrategy; private AutoStartTimer autoStartTimer; + private boolean isolatedChat; // Scoreboards private ScoreboardManager scoreboard; @@ -158,6 +159,8 @@ public class ArenaImpl implements Arena int autoStart = settings.getInt("auto-start-timer", 0); this.autoStartTimer = new AutoStartTimer(this, autoStart); + + this.isolatedChat = settings.getBoolean("isolated-chat", false); String timeString = settings.getString("player-time-in-arena", "world"); Time time = Enums.getEnumFromString(Time.class, timeString); @@ -1361,6 +1364,11 @@ public class ArenaImpl implements Arena return false; } + + @Override + public boolean hasIsolatedChat() { + return isolatedChat; + } /** * The "perfect equals method" cf. "Object-Oriented Design and Patterns" diff --git a/src/com/garbagemule/MobArena/framework/Arena.java b/src/com/garbagemule/MobArena/framework/Arena.java index 20a59ad..23a42a4 100644 --- a/src/com/garbagemule/MobArena/framework/Arena.java +++ b/src/com/garbagemule/MobArena/framework/Arena.java @@ -237,4 +237,6 @@ public interface Arena public boolean canJoin(Player p); public boolean canSpec(Player p); + + public boolean hasIsolatedChat(); } diff --git a/src/com/garbagemule/MobArena/listeners/MAGlobalListener.java b/src/com/garbagemule/MobArena/listeners/MAGlobalListener.java index 74b3703..66204e2 100644 --- a/src/com/garbagemule/MobArena/listeners/MAGlobalListener.java +++ b/src/com/garbagemule/MobArena/listeners/MAGlobalListener.java @@ -204,6 +204,16 @@ public class MAGlobalListener implements Listener arena.getEventListener().onPlayerBucketEmpty(event); } + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) + public void playerChat(AsyncPlayerChatEvent event) { + if (!am.isEnabled()) return; + + Arena arena = am.getArenaWithPlayer(event.getPlayer()); + if (arena == null || !arena.hasIsolatedChat()) return; + + event.getRecipients().retainAll(arena.getAllPlayers()); + } + @EventHandler(priority = EventPriority.LOWEST) public void playerCommandPreprocess(PlayerCommandPreprocessEvent event) { if (!am.isEnabled()) return;