/** * Send the player an informative message to explain what he's doing wrong. Play an optional sound * aswell * * <p> * * @param player to send msg to * @param perm permission to silence the message * @param sound errorsound to play after the event got cancelled * @param soundPitch 20-35 is good */ public void send( Player player, MessageNode node, PermissionNode perm, Sound sound, float soundPitch) { if (!player.hasPermission(perm.getNode())) { send(player, node, messages.getString(node)); if (sound != null) player.playSound(player.getLocation(), sound, 1, soundPitch); } }
/** * Sends a message with variables which will be inserted in the specified areas * * @param player Player to send the message to * @param message to send */ public void send(Player player, MessageNode message, FindAndReplace... fars) { String msgText = messages.getString(message); for (FindAndReplace far : fars) { /* Replace the placeholder with the actual value */ msgText = far.replace(msgText); } send(player, message, msgText); }
private void send(Player player, MessageNode node, String message) { switch (messages.getCat(node)) { case NOTIFICATION: if (player == null) { plugin.getLogger().warning("Could not send the following message: " + message); } else { // FEATURE: don't spam messages PlayerData playerData = plugin.getModuleForClass(DataStoreModule.class).getPlayerData(player.getName()); long now = Calendar.getInstance().getTimeInMillis(); if (!node.equals(playerData.lastMessageSent) || now - playerData.lastMessageTimestamp > 30000) { if (popupsAreEnabled(MsgCategory.NOTIFICATION)) sendPopup(player, MsgCategory.NOTIFICATION, message); else player.sendMessage(message); playerData.lastMessageSent = node; playerData.lastMessageTimestamp = now; } } break; case TUTORIAL: Validate.notNull(player); if (persistModule.getCountFor(node, player.getName()) < messages.getMsgCount(node)) { long now = Calendar.getInstance().getTimeInMillis(); if (!timeouts.contains(player.getName(), node) || now - timeouts.get(player.getName(), node) > 120000) // only if contains { timeouts.put(player.getName(), node, now); String msgText = messages.getString(node); if (manager != null) sendPopup(player, MsgCategory.TUTORIAL, msgText); else player.sendMessage( ChatColor.DARK_RED + plugin.getTag() + ChatColor.WHITE + " " + msgText); persistModule.increment(node, player.getName()); } } else timeouts.remove(player, message); break; case BROADCAST: plugin.getServer().broadcastMessage(message); break; default: throw new UnsupportedOperationException(messages.getCat(node) + " not implemented"); } }
/** * Send a short message using SbPopupAPI * * @param player player to send the message to * @param category type defines the length color for consistency * @param message text already seperated into lines * @param stripColors if colors should be removed from the message */ public void sendPopup( Player player, MsgCategory category, List<String> message, boolean stripColors) { if (popupsAreEnabled(category)) { int length; ChatColor titleColor; ChatColor textColor; String titleText = messages.getString(MessageNode.SB_MSG_TITLE); if (stripColors) for (int i = 0; i < message.size(); i++) message.set(i, ChatColor.stripColor(message.get(i))); switch (category) { case BROADCAST: length = messages.getInt(MessageNode.SB_MSG_BROADCAST_LEN); titleColor = null; textColor = messages.getColor(MessageNode.SB_MSG_BROADCAST_TEXT_CLR); break; case ONE_TIME: case NOTIFICATION: length = messages.getInt(MessageNode.SB_MSG_NOTIFICATION_LEN); titleColor = null; textColor = messages.getColor(MessageNode.SB_MSG_NOTIFICATION_TEXT_CLR); break; case TUTORIAL: length = messages.getInt(MessageNode.SB_MSG_TUTORIAL_LEN); titleColor = null; textColor = messages.getColor(MessageNode.SB_MSG_TUTORIAL_TEXT_CLR); break; case DISABLED: default: length = 0; titleColor = null; textColor = null; } manager.showPopup( player.getName(), category.getUniqueIdentifier(), length, titleColor, textColor, titleText, message); } }
/** * Send a message to a Player. * * @param player to send the message to * @param node message, gets loaded from the config */ public void send(Player player, MessageNode node) { send(player, node, messages.getString(node)); }