Пример #1
0
 /**
  * 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);
   }
 }
Пример #2
0
 /**
  * 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);
 }
Пример #3
0
  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");
    }
  }
Пример #4
0
  /**
   * 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);
    }
  }
Пример #5
0
 /**
  * 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));
 }