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 }
/** On player chat, if the server is set to prefix the chat or not. */ @Override public void onPlayerChat(PlayerChatEvent event) { if (event.isCancelled()) { return; } /** * Check whether the Server is set to prefix the chat with the World name. If not we do nothing, * if so we need to check if the World has an Alias. */ if (this.configuration.getBoolean("prefix", false)) { /** Grab the name of the World the player is in. */ String world = event.getPlayer().getWorld().getName(); /** Setup a String called 'prefix' */ String prefix; /** * Check whether the Alias for the world is not empty and is longer than 0 Letters. If so we * apply it to the 'prefix' String. */ if (this.plugin.MVWorlds.containsKey(world) && this.plugin.MVWorlds.get(world).getAlias() != "" && this.plugin.MVWorlds.get(world).getAlias().length() > 0) { prefix = this.plugin.MVWorlds.get(world).getAlias(); } /** * If the World doesn't have a prefix we'll just sent the full World name, can get messy :). */ else { prefix = world; } /** Format the output of the String to add in the Prefix before the rest of the message. */ String format = event.getFormat(); /** Set the formatting. */ event.setFormat("[" + prefix + "]" + format); } }
@EventHandler public void HeMan(PlayerChatEvent e) { if (e.isCancelled()) return; if (!e.getMessage().matches("(?i)by the power of gr[a|e]yskull!?")) return; Player p = e.getPlayer(); if (!plugin.isAuthorized(p, "rcmds.heman")) return; ItemStack is = p.getItemInHand(); if (is.getType() != Material.DIAMOND_SWORD) return; if (is.getEnchantments().isEmpty()) return; e.setCancelled(true); p.getWorld().strikeLightningEffect(p.getLocation()); Matcher m = Pattern.compile("(?i)by the power of gr[a|e]yskull!?").matcher(e.getMessage()); StringBuilder sb = new StringBuilder(); int last = 0; while (m.find()) { sb.append(e.getMessage().substring(last, m.start())); sb.append(m.group(0).toUpperCase()); last = m.end(); } sb.append(e.getMessage().substring(last)); plugin .getServer() .broadcastMessage( e.getFormat().replaceAll("(?i)by the power of gr[a|e]yskull!?", sb.toString())); e.setFormat(""); List<PotionEffect> effects = new ArrayList<PotionEffect>(); effects.add(new PotionEffect(PotionEffectType.INCREASE_DAMAGE, 1200, 2)); effects.add(new PotionEffect(PotionEffectType.REGENERATION, 1200, 2)); effects.add(new PotionEffect(PotionEffectType.DAMAGE_RESISTANCE, 1200, 2)); effects.add(new PotionEffect(PotionEffectType.SPEED, 1200, 2)); p.addPotionEffects(effects); }
@Override public void onPlayerChat(final PlayerChatEvent event) { if (isAborted(event)) { return; } /** * This file should handle detection of the local chat features... if local chat is enabled, we * need to handle it here */ final User user = ess.getUser(event.getPlayer()); final String chatType = getChatType(event.getMessage()); long radius = ess.getSettings().getChatRadius(); if (radius < 1) { return; } radius *= radius; try { if (event.getMessage().length() > 0 && chatType.length() > 0) { StringBuilder permission = new StringBuilder(); permission.append("essentials.chat.").append(chatType); StringBuilder command = new StringBuilder(); command.append("chat-").append(chatType); StringBuilder format = new StringBuilder(); format.append(chatType).append("Format"); StringBuilder errorMsg = new StringBuilder(); errorMsg .append("notAllowedTo") .append(chatType.substring(0, 1).toUpperCase()) .append(chatType.substring(1)); if (user.isAuthorized(permission.toString())) { charge(user, command.toString()); event.setMessage(event.getMessage().substring(1)); event.setFormat(Util.format(format.toString(), event.getFormat())); return; } user.sendMessage(Util.i18n(errorMsg.toString())); event.setCancelled(true); return; } } catch (ChargeException ex) { ess.showError(user, ex, "Shout"); event.setCancelled(true); return; } sendLocalChat(user, radius, event); }
@SuppressWarnings("static-access") public void onPlayerChat(PlayerChatEvent event) { // plugin.LCGui.initializeGUIBasic(sp); if (!plugin.EnableSkillMastery) return; Player p = event.getPlayer(); String str = event.getFormat(); for (Plugin plug : plugin.LevelNames.keySet()) { if (!plugin.Permissions.hasLevel(p, plug)) continue; if (!(plugin.LevelFunctions.getLevel(p, plug) >= plugin.LevelCap)) continue; str = plugin.c1 + "[" + plugin.LevelIndexes.get(plug) + "]WHITE" + str; } event.setFormat(plugin.Tools.format(str)); }
@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); } }