Add isolated chat option.

This commit is contained in:
garbagemule
2013-07-30 22:07:57 +02:00
parent 9230f823fb
commit ea4031b0ed
5 changed files with 22 additions and 1 deletions
@@ -94,6 +94,7 @@ public class ArenaImpl implements Arena
private List<ItemStack> 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"
@@ -237,4 +237,6 @@ public interface Arena
public boolean canJoin(Player p);
public boolean canSpec(Player p);
public boolean hasIsolatedChat();
}
@@ -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;