Esempio n. 1
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");
    }
  }