@EventHandler() public void onChat(PlayerChatEvent e) { if (PConfManager.getPVal(e.getPlayer(), "ignoredby") == null) return; Set<Player> recpts = e.getRecipients(); ArrayList<String> ignores = (ArrayList<String>) PConfManager.getPValStringList(e.getPlayer(), "ignoredby"); Set<Player> ignore = new HashSet<Player>(); for (Player p : recpts) for (String ignoree : ignores) if (p.getName().equalsIgnoreCase(ignoree.toLowerCase())) ignore.add(p); e.getRecipients().removeAll(ignore); }
public boolean chat(String s) { if (!this.player.dead) { if (s.startsWith("/")) { this.handleCommand(s); return true; } else { Player player = getPlayer(); PlayerChatEvent event = new PlayerChatEvent(player, s); server.getPluginManager().callEvent(event); if (event.isCancelled()) { return true; } s = String.format( event.getFormat(), event.getPlayer().getDisplayName(), event.getMessage()); a.info(s); for (Player recipient : event.getRecipients()) { recipient.sendMessage(s); } } } return false; // CraftBukkit end }
@Override public void onPlayerChat(final PlayerChatEvent event) { final User user = ess.getUser(event.getPlayer()); if (user.isMuted()) { event.setCancelled(true); user.sendMessage(Util.i18n("playerMuted")); LOGGER.info(Util.format("mutedUserSpeaks", user.getName())); } final Iterator<Player> it = event.getRecipients().iterator(); while (it.hasNext()) { final User u = ess.getUser(it.next()); if (u.isIgnoredPlayer(user.getName())) { it.remove(); } } user.updateActivity(true); if (ess.getSettings().changeDisplayName()) { user.setDisplayName(user.getNick()); } }
@Override public void onPlayerChat(PlayerChatEvent event) { if (event.isCancelled()) { return; } Player talkingPlayer = event.getPlayer(); String msg = event.getMessage(); // ... it was not a command. This means that it is a chat message! FPlayer me = FPlayer.get(talkingPlayer); // Are we to insert the Faction tag into the format? // If we are not to insert it - we are done. if (!Conf.chatTagEnabled || Conf.chatTagHandledByAnotherPlugin) { return; } int InsertIndex = 0; String eventFormat = event.getFormat(); if (!Conf.chatTagReplaceString.isEmpty() && eventFormat.contains(Conf.chatTagReplaceString)) { // we're using the "replace" method of inserting the faction tags // if they stuck "{FACTION_TITLE}" in there, go ahead and do it too if (eventFormat.contains("{FACTION_TITLE}")) { eventFormat = eventFormat.replace("{FACTION_TITLE}", me.getTitle()); } InsertIndex = eventFormat.indexOf(Conf.chatTagReplaceString); eventFormat = eventFormat.replace(Conf.chatTagReplaceString, ""); Conf.chatTagPadAfter = false; Conf.chatTagPadBefore = false; } else if (!Conf.chatTagInsertAfterString.isEmpty() && eventFormat.contains(Conf.chatTagInsertAfterString)) { // we're using the "insert after string" method InsertIndex = eventFormat.indexOf(Conf.chatTagInsertAfterString) + Conf.chatTagInsertAfterString.length(); } else if (!Conf.chatTagInsertBeforeString.isEmpty() && eventFormat.contains(Conf.chatTagInsertBeforeString)) { // we're using the "insert before string" method InsertIndex = eventFormat.indexOf(Conf.chatTagInsertBeforeString); } else { // we'll fall back to using the index place method InsertIndex = Conf.chatTagInsertIndex; if (InsertIndex > eventFormat.length()) return; } String formatStart = eventFormat.substring(0, InsertIndex) + ((Conf.chatTagPadBefore && !me.getChatTag().isEmpty()) ? " " : ""); String formatEnd = ((Conf.chatTagPadAfter && !me.getChatTag().isEmpty()) ? " " : "") + eventFormat.substring(InsertIndex); String nonColoredMsgFormat = formatStart + me.getChatTag().trim() + formatEnd; // Relation Colored? if (Conf.chatTagRelationColored) { // We must choke the standard message and send out individual messages to all players // Why? Because the relations will differ. event.setCancelled(true); for (Player listeningPlayer : event.getRecipients()) { FPlayer you = FPlayer.get(listeningPlayer); String yourFormat = formatStart + me.getChatTag(you).trim() + formatEnd; try { listeningPlayer.sendMessage( String.format(yourFormat, talkingPlayer.getDisplayName(), msg)); } catch (UnknownFormatConversionException ex) { Factions.log( Level.SEVERE, "Critical error in chat message formatting! Complete format string: " + yourFormat); Factions.log(Level.SEVERE, "First half of event.getFormat() string: " + formatStart); Factions.log(Level.SEVERE, "Second half of event.getFormat() string: " + formatEnd); Factions.log( Level.SEVERE, "NOTE: To fix this quickly, running this command should work: f config chatTagInsertIndex 0"); Factions.log( Level.SEVERE, "For a more proper fix, please read the chat configuration notes on the configuration page of the Factions user guide."); ex.printStackTrace(); return; } } // Write to the log... We will write the non colored message. String nonColoredMsg = ChatColor.stripColor( String.format(nonColoredMsgFormat, talkingPlayer.getDisplayName(), msg)); Logger.getLogger("Minecraft").info(nonColoredMsg); } else { // No relation color. event.setFormat(nonColoredMsgFormat); } }