From 8a630061679968f2e0efa8e94deea4de894d2b0d Mon Sep 17 00:00:00 2001 From: Daniel Saukel Date: Mon, 28 Dec 2015 14:54:06 +0100 Subject: [PATCH] +DGroup#sendMessage(); Fixed NPE on quit --- .../dungeonsxl/listener/PlayerListener.java | 8 +++--- .../dre2n/dungeonsxl/player/DGroup.java | 25 +++++++++++++++++++ .../dre2n/dungeonsxl/player/DPlayer.java | 15 +++++------ 3 files changed, 38 insertions(+), 10 deletions(-) diff --git a/src/io/github/dre2n/dungeonsxl/listener/PlayerListener.java b/src/io/github/dre2n/dungeonsxl/listener/PlayerListener.java index 3006c62b..df382f63 100644 --- a/src/io/github/dre2n/dungeonsxl/listener/PlayerListener.java +++ b/src/io/github/dre2n/dungeonsxl/listener/PlayerListener.java @@ -378,7 +378,7 @@ public class PlayerListener implements Listener { } if (dPlayer.isInDungeonChat()) { - dPlayer.msg(player.getDisplayName() + ": " + event.getMessage()); + dPlayer.sendMessage(player.getDisplayName() + ": " + event.getMessage()); event.setCancelled(true); } } @@ -392,6 +392,8 @@ public class PlayerListener implements Listener { return; } + DGroup dGroup = DGroup.get(player); + // Check GameWorld GameWorld gameWorld = GameWorld.get(player.getWorld()); if (gameWorld != null) { @@ -401,11 +403,11 @@ public class PlayerListener implements Listener { dPlayer.leave(); } else if (timeUntilKickOfflinePlayer > 0) { - dPlayer.msg(plugin.getDMessages().get("Player_Offline", dPlayer.getPlayer().getName(), "" + timeUntilKickOfflinePlayer)); + dGroup.sendMessage(plugin.getDMessages().get("Player_Offline", dPlayer.getPlayer().getName(), "" + timeUntilKickOfflinePlayer), player); dPlayer.setOfflineTime(System.currentTimeMillis() + timeUntilKickOfflinePlayer * 1000); } else { - dPlayer.msg(plugin.getDMessages().get("Player_OfflineNeverKick", dPlayer.getPlayer().getName())); + dGroup.sendMessage(plugin.getDMessages().get("Player_OfflineNever", dPlayer.getPlayer().getName()), player); } } else if (dPlayer.isEditing()) { diff --git a/src/io/github/dre2n/dungeonsxl/player/DGroup.java b/src/io/github/dre2n/dungeonsxl/player/DGroup.java index 6f6a7558..356bf372 100644 --- a/src/io/github/dre2n/dungeonsxl/player/DGroup.java +++ b/src/io/github/dre2n/dungeonsxl/player/DGroup.java @@ -244,6 +244,31 @@ public class DGroup { GroupSign.updatePerGroup(this); } + /** + * Send a message to all players in the group + */ + public void sendMessage(String message) { + for (Player player : players) { + if (player.isOnline()) { + MessageUtil.sendCenteredMessage(player, message); + } + } + } + + /** + * Send a message to all players in the group + * + * @param except + * Players who do not receive the message + */ + public void sendMessage(String message, Player... except) { + for (Player player : players) { + if (player.isOnline() && !player.equals(except)) { + MessageUtil.sendCenteredMessage(player, message); + } + } + } + // Statics public static DGroup get(Player player) { diff --git a/src/io/github/dre2n/dungeonsxl/player/DPlayer.java b/src/io/github/dre2n/dungeonsxl/player/DPlayer.java index b744b306..8e625bfa 100644 --- a/src/io/github/dre2n/dungeonsxl/player/DPlayer.java +++ b/src/io/github/dre2n/dungeonsxl/player/DPlayer.java @@ -345,21 +345,22 @@ public class DPlayer { } } - public void msg(String msg) { + public void sendMessage(String message) { if (isEditing) { - EditWorld eworld = EditWorld.get(world); - eworld.msg(msg); + EditWorld editWorld = EditWorld.get(world); + editWorld.msg(message); for (Player player : plugin.getChatSpyers()) { - if ( !eworld.getWorld().getPlayers().contains(player)) { - MessageUtil.sendMessage(player, ChatColor.GREEN + "[Chatspy] " + ChatColor.WHITE + msg); + if ( !editWorld.getWorld().getPlayers().contains(player)) { + MessageUtil.sendMessage(player, ChatColor.GREEN + "[Chatspy] " + ChatColor.WHITE + message); } } + } else { GameWorld gameWorld = GameWorld.get(world); - gameWorld.msg(msg); + gameWorld.msg(message); for (Player player : plugin.getChatSpyers()) { if ( !gameWorld.getWorld().getPlayers().contains(player)) { - MessageUtil.sendMessage(player, ChatColor.GREEN + "[Chatspy] " + ChatColor.WHITE + msg); + MessageUtil.sendMessage(player, ChatColor.GREEN + "[Chatspy] " + ChatColor.WHITE + message); } } }