PrivateMessages - Advanced private messaging plugin [1.7-26.2] icon

PrivateMessages - Advanced private messaging plugin [1.7-26.2] -----

Private messaging plugin | History, sound notifications, vanish, proxy support and more.




To servers already using PrivateMessages: This update contains major changes, including main configuration file & language file modifications. Please read carefully before updating from older versions!

Plugin works on latest 26.2 servers. Compatibility with older versions is preserved.
  1. Added Folia servers support.
  2. Added CMI plugin integration.
  3. Localization files are now being placed into "translations" sub-directory during plugin load.
  4. Fixed issue where in some specific cases GUIs might stop responding to player actions.
  5. Fixed plugin behavior when trying to run /pmsound command with no message sounds configured.
  6. Renamed key "MiniMessageChatFormatting" to "ModernChatFormatting" - this applies to fresh configuration files. Old-named key is still recognized by plugin.
  7. ModernChatFormatting is now being enabled by default on first install when plugin detects Paper (or any other compatible) server.
  8. Improved data sync between proxy and Bukkit servers

    When proxy mode is enabled, all servers with PrivateMessages installed locally share sounds configuration file (sounds.yml) with proxy server. When you make modifications to this file on proxy side and reload plugin (e.g. with /pmreload command), the new configuration will apply automatically to all PrivateMessages instances on network.
    Also added new settings in config.yml related to this change.
    Code (YAML):
    Proxy :
      # Interval in seconds between attempts to detect if any changes to sounds configuration (sounds.yml) have been made on proxy server.
      # When plugin detects changes, it will automatically update sounds configuration on current server.
      SoundChangesDetectionInterval
    : 10
      # Interval in seconds between attempts to inform proxy server about presence of PrivateMessages plugin on current Bukkit server.
      # Required for proper functioning of features utilizing inventory interaction as this requires Bukkit API on player's current server.
      LocalPluginInstanceNotificationInterval
    : 10
      # Server name used to identify current server when communicating with proxy plugin. This cannot contain spaces and formatting codes     aren't supported here.
      ServerName
    : "MyServer"
  9. Changes to "Proxy" node in config.yml

    "Proxy" entry in config.yml file is now a map. Previously it was just a holder for a boolean. Plugin still recognizes older foramt, but if you won't update your config.yml you will miss the new entries and plugin will always use default values.
    New keys added into Proxy section: SoundChangesDetectionInterval, LocalPluginInstanceNotificationInterval, ServerName (all described above in code preview).
  10. New command: /pmhelp - shows list of available commands. Command's output is paginated, you can control this with setting
    Code (YAML):
    # Maximum number of entries displayed per page in /pmhelp command output
    HelpCommandMaxEntriesPerPage
    : 5
     
    inside PrivateMessages' config.yml.
    Permission: pm.help
  11. New command: /pmadmin - allows making certain actions on players. Currently it's possible to clear unread messages, turn on/off messages, plugin tips, spy mode, edit ignored list and incoming messages sound options.
    All player editing commands start with "/pmadmin player"
    Example of disabling plugin tips for a player: "/pmadmin player [nick] tips off" - all other commands follow the same pattern; to see all possibilities just execute "/pmadmin player" command or visit plugin help page.
    Permission: pm.admin
  12. New command: /messageconsole - sends a message to server console
    Permission: pm.messageconsole
    Aliases: [mconsole, msgconsole, pmconsole, pmserver]
  13. (Proxy servers only) New command: /messageproxyconsole - sends a message to proxy server console
    Permission: pm.messageproxyconsole
    Aliases: [mproxyconsole, msgproxyconsole, pmproxyconsole, pmproxy]
  14. (Proxy servers only) Showing recipient's/sender's current server name near their name in messages (configurable in config.yml file, disabled by default)
    Code (YAML):
    # When set to true and player sends/receives message to/from player on other server, server display name (the one set on Bukkit server under PrivateMessages/config.yml) will be included near player name in message. Format is configured in lang.yml file.
    ShowServerDisplayNameInMessages
    : false
    # When set to true and when ShowServerDisplayNameInMessages is true, the server display name will be always included in messages sent to players, even those on the same server.
    AlwaysShowServerDisplayNameInMessages
    : false
    # These are names displayed in messages sent to players on other servers (only when ShowServerDisplayNameInMessages is enabled). This can contain spaces and formatting codes. Keys must match server identifiers in Velocity config.
    ServerDisplayNames
    :
      lobby
    : "Hub"
      survival
    : "<blue>Survival<reset>"
  15. Changes to /reply command behavior

    Added "ReplyCommandMode" setting in config.yml to control how /reply command selects our message recipient - this mirrors behavior of equivalent setting in other plugins like Essentials and CMI. Moreover, when PrivateMessages is launched for the first time and detects Essentials/CMI plugin, sets ReplyCommandMode to a value matching one from mentioned plugins.
    Code (YAML):
    # Default behavior of reply command.
    # 1 - reply to the last player you sent a message to; if none, reply to the last player who sent you a message
    # 2 - reply to the last player who sent you a message
    # This setting is ignored when Integration.<plugin>.RespectReplyCommandConfig is set to true
    ReplyCommandMode
    : 1
    There are also new key under each of integration plugins section which allows to ignore ReplyCommandMode setting and rely directly on value set in Essentials/CMI plugins. This is disabled by default.
    Code (YAML):
    Integration:
      Essentials
    :
      # When player is ignored using Essentials' /ignore command plugin prevents him from sending messages to target player.
        # Additionally, players ignored on Essentials are included in /pmignored output when this feature is enabled.
        RespectIgnore
    : true
        # If true, ReplyCommandMode setting will be ignored and reply command will always behave as configured in Essentials plugin ('last-message-reply-recipient' in Essentials' config.yml).
        RespectReplyCommandConfig
    : false
      CMI
    :
      # When player is ignored using CMI's /ignore command plugin prevents him from sending messages to target player.
        # Additionally, players ignored on CMI are included in /pmignored output when this feature is enabled.
        RespectIgnore
    : true
        # If true, ReplyCommandMode setting will be ignored and reply command will always behave as configured in CMI plugin ('Chat.ReplyToLastMessenger' in CMI's Settings/Chat.yml).
        RespectReplyCommandConfig
    : false
    Another change: /reply command now works from server console (both Bukkit & Proxy). The same rules apply.

  16. AutoPurge feature

    Added new "AutoPurge" setting within "MessagesHistory" key in config.yml to allow automatic deletion of private messages older than X days. This feature is disabled by default.
    Code (YAML):
    MessagesHistory :
      # Setting following to false will prevent messages from being stored in database
      Enabled
    : true
      # Date-time format displayed when viewing messages history
      DateFormat
    : "MM.dd.yyyy HH:mm:ss"
      AutoPurge
    :
        # When enabled, messages older than specified number of days will be automatically deleted from database
        Enabled
    : false
        # Number of days after which messages will be automatically deleted from database
        Days
    : 30
  17. Fixed HELP_COMMAND_PMCLEAR message not showing and throwing NPE.
  18. Resolved problem where incoming messages sound were being set incorrectly after clicking on music disc in case of errors in sounds configuration file (sounds.yml)
  19. Added music disc "Bounce" to the list of discs being used to display items in sound selection inventory (only on 26.2+ servers)
  20. Optimized loading of incoming messages sound selection inventory.
  21. Changes to lang.yml file:
    (Bukkit servers)
    Added text
    Code (YAML):

    INFO_PLAYERDATA_NOT_LOADED_YET
    : "<white>Your data has not been loaded yet. Please wait a moment and try again."
    INFO_HELP_HEADER
    :
    - "<white><b>PrivateMessages Help<b><white>"
    - "<white>Page <gold><number><white> of <gold><totalpages>"
    INFO_HELP_FOOTER
    :
    - "<gray><i>Use <gold>/pmhelp <gray>[page] <gold>to switch page."
    INFO_NO_HELP_ENTRIES
    : "<white>No help entries to show."
    HELP_COMMAND_PMTIPS
    :
    - "<white>/pmtips <gold>- enable/disable plugin tips"
    HELP_COMMAND_PMTOGGLE
    :
    - "<white>/pmtoggle <gold>- enable/disable sending/receiving messages"
    HELP_COMMAND_PMSOUND
    :
    - "<white>/pmsound <gold>- open sound preferences menu"
    HELP_COMMAND_PMRELOAD
    :
    - "<white>/pmreload <gold>- reload plugin configuration"
    HELP_COMMAND_PMSPY
    :
    - "<white>/pmspy <gold>- toggle spy mode"
    HELP_COMMAND_MESSAGECONSOLE
    :
    - "<white>/pmserver <gray>[message] <gold>- send message to console"
    INFO_IGNORED_PLAYERS_ALL_REPLACEMENT
    : "<all players on the server><gray>"
    HELP_COMMAND_ADMIN
    :
    - "<white>/pmadmin player <gray>[player] [option] [value] [-s <i>(optional)<reset><gray>] <gold>- edit player settings"
    HELP_COMMAND_ADMIN_PLAYER
    :
    - "<white>/pmadmin player <gray>[player] clear <gold>- clear unread messages of given player"
    - "<white>/pmadmin player <gray>[player] ignore add/remove [targetPlayer] <gold>- add/remove player from ignore list of given player"
    - "<white>/pmadmin player <gray>[player] spy on/off <gold>- enable/disable spy mode for given player"
    - "<white>/pmadmin player <gray>[player] tips on/off <gold>- enable/disable plugin tips for given player"
    - "<white>/pmadmin player <gray>[player] toggle on/off <gold>- enable/disable sending/receiving messages for given player"
    - "<white>/pmadmin player <gray>[player] sound <gray>[soundNumber] <gold>- set incoming message sound for given player to one of predefined sounds"
    - "<white>/pmadmin player <gray>[player] sound on/off <gold>- enable/disable sound notifications for given player"
    - "Add <gray>-s/-silent <white>flag to the end of the above commands to perform action without sending notification messages to target player."
    HELP_COMMAND_ADMIN_PLAYER_IGNORE
    :
    - "<white>/pmadmin player <gray>[player] ignore add [targetPlayer] <gold>- add player to ignore list of given player"
    - "<white>/pmadmin player <gray>[player] ignore remove [targetPlayer] <gold>- remove player from ignore list of given player"
    HELP_COMMAND_ADMIN_PLAYER_SPY
    :
    - "<white>/pmadmin player <gray>[player] spy on/off <gold>- enable/disable spy mode for given player"
    HELP_COMMAND_ADMIN_PLAYER_TIPS
    :
    - "<white>/pmadmin player <gray>[player] tips on/off <gold>- enable/disable plugin tips for given player"
    HELP_COMMAND_ADMIN_PLAYER_TOGGLE
    :
    - "<white>/pmadmin player <gray>[player] toggle on/off <gold>- enable/disable sending/receiving messages for given player"
    HELP_COMMAND_ADMIN_PLAYER_SOUND
    :
    - "<white>/pmadmin player <gray>[player] sound <gray>[soundNumber] <gold>- set incoming message sound for given player to one of predefined sounds"
    - "<white>/pmadmin player <gray>[player] sound on/off <gold>- enable/disable sound notifications for given player"
    INFO_ADMIN_MESSAGES_CLEARED_PLAYER
    : "<white>Cleared unread messages of player <gold><player><white>."
    INFO_ADMIN_IGNORE_ADDED_PLAYER
    : "<white>Added player <gold><targetPlayer> <white>to ignore list of player <gold><player><white>."
    INFO_ADMIN_IGNORE_REMOVED_PLAYER
    : "<white>Removed player <gold><targetPlayer> <white>from ignore list of player <gold><player><white>."
    INFO_ADMIN_SPY_ENABLED_PLAYER
    : "<white>Spy mode enabled for player <gold><player><white>."
    INFO_ADMIN_SPY_DISABLED_PLAYER
    : "<white>Spy mode disabled for player <gold><player><white>."
    INFO_ADMIN_TIPS_ENABLED_PLAYER
    : "<white>Plugin tips enabled for player <gold><player><white>."
    INFO_ADMIN_TIPS_DISABLED_PLAYER
    : "<white>Plugin tips disabled for player <gold><player><white>."
    INFO_ADMIN_MESSAGES_ENABLED_PLAYER
    : "<white>Messages enabled for player <gold><player><white>."
    INFO_ADMIN_MESSAGES_DISABLED_PLAYER
    : "<white>Messages disabled for player <gold><player><white>."
    INFO_ADMIN_SOUND_NOTIFICATIONS_ENABLED_PLAYER
    : "<white>Sound notifications enabled for player <gold><player><white>."
    INFO_ADMIN_SOUND_NOTIFICATIONS_DISABLED_PLAYER
    : "<white>Sound notifications disabled for player <gold><player><white>."
    INFO_ADMIN_SOUND_CHANGED_PLAYER
    : "<white>Changed incoming message sound for player <gold><player><white> to sound number <gold><soundNumber><white>."
    INFO_FEATURE_UNAVAILABLE_PROXY_ONLY
    : "<white>This feature is unavailable on this server when using proxy mode. Use the proxy server to access this feature."

     

    Code (YAML):
    INFO_PLAYERDATA_NOT_LOADED_YET : "&fYour data has not been loaded yet. Please wait a moment and try again."
    INFO_HELP_HEADER
    :
    - "&f&lPrivateMessages Help"
    - "&fPage &6<number> &fof &6<totalpages>"
    INFO_HELP_FOOTER
    :
    - "&7&oUse &6&o/pmhelp &7&o[page] &6&oto switch page."
    INFO_NO_HELP_ENTRIES
    : "&fNo help entries to show."
    INFO_AUTOPURGE_FINISHED
    : "&fAutopurge: deleted &6<number> &fmessages older than &6<days> &fdays."
    HELP_COMMAND_PMTIPS
    :
    - "&f/pmtips &6- enable/disable plugin tips"
    HELP_COMMAND_PMTOGGLE
    :
    - "&f/pmtoggle &6- enable/disable sending/receiving messages"
    HELP_COMMAND_PMSOUND
    :
    - "&f/pmsound &6- open sound preferences menu"
    HELP_COMMAND_PMRELOAD
    :
    - "&f/pmreload &6- reload plugin configuration"
    HELP_COMMAND_PMSPY
    :
    - "&f/pmspy &6- toggle spy mode"
    HELP_COMMAND_MESSAGECONSOLE
    :
    - "&f/pmserver &6[message] &6- send message to console"
    INFO_IGNORED_PLAYERS_ALL_REPLACEMENT
    : "<all players on the server>"
    HELP_COMMAND_ADMIN
    :
    - "&f/pmadmin player &7[player] [option] [value] [-s &o(optional)&r&7] &6- edit player settings"
    HELP_COMMAND_ADMIN_PLAYER
    :
    - "&f/pmadmin player &7[player] clear &6- clear unread messages of given player"
    - "&f/pmadmin player &7[player] ignore add/remove [targetPlayer] &6- add/remove player from ignore list of given player"
    - "&f/pmadmin player &7[player] spy on/off &6- enable/disable spy mode for given player"
    - "&f/pmadmin player &7[player] tips on/off &6- enable/disable plugin tips for given player"
    - "&f/pmadmin player &7[player] toggle on/off &6- enable/disable sending/receiving messages for given player"
    - "&f/pmadmin player &7[player] sound [soundNumber] &6- set incoming message sound for given player to one of predefined sounds"
    - "&f/pmadmin player &7[player] sound on/off &6- enable/disable sound notifications for given player"
    - "&fAdd &6-s/-silent &fflag to the end of the above commands to perform action without sending notification messages to target player."
    HELP_COMMAND_ADMIN_PLAYER_IGNORE
    :
    - "&f/pmadmin player &7[player] ignore add [targetPlayer] &6- add player to ignore list of given player"
    - "&f/pmadmin player &7[player] ignore remove [targetPlayer] &6- remove player from ignore list of given player"
    HELP_COMMAND_ADMIN_PLAYER_SPY
    :
    - "&f/pmadmin player &7[player] spy on/off &6- enable/disable spy mode for given player"
    HELP_COMMAND_ADMIN_PLAYER_TIPS
    :
    - "&f/pmadmin player &7[player] tips on/off &6- enable/disable plugin tips for given player"
    HELP_COMMAND_ADMIN_PLAYER_TOGGLE
    :
    - "&f/pmadmin player &7[player] toggle on/off &6- enable/disable sending/receiving messages for given player"
    HELP_COMMAND_ADMIN_PLAYER_SOUND
    :
    - "&f/pmadmin player &7[player] sound [soundNumber] &6- set incoming message sound for given player to one of predefined sounds"
    - "&f/pmadmin player &7[player] sound on/off &6- enable/disable sound notifications for given player"
    INFO_ADMIN_MESSAGES_CLEARED_PLAYER
    : "&fCleared unread messages of player &6<player>&f."
    INFO_ADMIN_IGNORE_ADDED_PLAYER
    : "&fAdded player &6<targetPlayer> &fto ignore list of player &6<player>&f."
    INFO_ADMIN_IGNORE_REMOVED_PLAYER
    : "&fRemoved player &6<targetPlayer> &ffrom ignore list of player &6<player>&f."
    INFO_ADMIN_SPY_ENABLED_PLAYER
    : "&fSpy mode enabled for player &6<player>&f."
    INFO_ADMIN_SPY_DISABLED_PLAYER
    : "&fSpy mode disabled for player &6<player>&f."
    INFO_ADMIN_TIPS_ENABLED_PLAYER
    : "&fPlugin tips enabled for player &6<player>&f."
    INFO_ADMIN_TIPS_DISABLED_PLAYER
    : "&fPlugin tips disabled for player &6<player>&f."
    INFO_ADMIN_MESSAGES_ENABLED_PLAYER
    : "&fMessages enabled for player &6<player>&f."
    INFO_ADMIN_MESSAGES_DISABLED_PLAYER
    : "&fMessages disabled for player &6<player>&f."
    INFO_ADMIN_SOUND_NOTIFICATIONS_ENABLED_PLAYER
    : "&fSound notifications enabled for player &6<player>&f."
    INFO_ADMIN_SOUND_NOTIFICATIONS_DISABLED_PLAYER
    : "&fSound notifications disabled for player &6<player>&f."
    INFO_ADMIN_SOUND_CHANGED_PLAYER
    : "&fChanged incoming message sound for player &6<player>&f to sound number &6<soundNumber>&f."
    INFO_FEATURE_UNAVAILABLE_PROXY_ONLY
    : "&fThis feature is unavailable on this server when using proxy mode. Use the proxy server to access this feature."
     

    (Velocity servers)
    Added text
    Code (YAML):
    INFO_HELP_HEADER :
    - "<white><b>PrivateMessages Help"
    - "<white>Page <gold><number> <white>of <gold><totalpages>"
    INFO_HELP_FOOTER
    :
    - "<gray><i>Use <gold><i>/pmhelp <gray><i>[page] <gold><i>to switch page."
    INFO_NO_HELP_ENTRIES
    : "<white>No help entries to show."
    HELP_COMMAND_PMTIPS
    :
    - "<white>/pmtips <gold>- enable/disable plugin tips"
    HELP_COMMAND_PMTOGGLE
    :
    - "<white>/pmtoggle <gold>- enable/disable sending/receiving messages"
    HELP_COMMAND_PMSOUND
    :
    - "<white>/pmsound <gold>- open sound preferences menu"
    HELP_COMMAND_PMRELOAD
    :
    - "<white>/pmreload <gold>- reload plugin configuration"
    HELP_COMMAND_PMSPY
    :
    - "<white>/pmspy <gold>- toggle spy mode"
    HELP_COMMAND_MESSAGECONSOLE
    :
    - "<white>/pmserver <gray>[message] <gold>- send message to console"
    HELP_COMMAND_MESSAGEPROXYCONSOLE
    :
    - "<white>/pmproxy <gray>[message] <gold>- send message to proxy console"
    INFO_IGNORED_PLAYERS_ALL_REPLACEMENT
    : "<all players on the server>"
    HELP_COMMAND_PMADMIN
    :
    - "<white>/pmadmin player <gray>[player] [option] [value] [-s <i>(optional)</i>] <gold>- edit player settings"
    HELP_COMMAND_PMADMIN_PLAYER
    :
    - "<white>/pmadmin player <gray>[player] clear <gold>- clear unread messages of given player"
    - "<white>/pmadmin player <gray>[player] ignore add/remove [targetPlayer] <gold>- add/remove player from ignore list of given player"
    - "<white>/pmadmin player <gray>[player] spy on/off <gold>- enable/disable spy mode for given player"
    - "<white>/pmadmin player <gray>[player] tips on/off <gold>- enable/disable plugin tips for given player"
    - "<white>/pmadmin player <gray>[player] toggle on/off <gold>- enable/disable sending/receiving messages for given player"
    - "<white>/pmadmin player <gray>[player] sound [soundNumber] <gold>- set incoming message sound for given player to one of predefined sounds"
    - "<white>/pmadmin player <gray>[player] sound on/off <gold>- enable/disable sound notifications for given player"
    - "<white>Add <gold>-s/-silent <white>flag to the end of the above commands to perform action without sending notification messages to target player."
    HELP_COMMAND_PMADMIN_PLAYER_IGNORE
    :
    - "<white>/pmadmin player <gray>[player] ignore add [targetPlayer] <gold>- add player to ignore list of given player"
    - "<white>/pmadmin player <gray>[player] ignore remove [targetPlayer] <gold>- remove player from ignore list of given player"
    HELP_COMMAND_PMADMIN_PLAYER_SPY
    :
    - "<white>/pmadmin player <gray>[player] spy on/off <gold>- enable/disable spy mode for given player"
    HELP_COMMAND_PMADMIN_PLAYER_TIPS
    :
    - "<white>/pmadmin player <gray>[player] tips on/off <gold>- enable/disable plugin tips for given player"
    HELP_COMMAND_PMADMIN_PLAYER_TOGGLE
    :
    - "<white>/pmadmin player <gray>[player] toggle on/off <gold>- enable/disable sending/receiving messages for given player"
    HELP_COMMAND_PMADMIN_PLAYER_SOUND
    :
    - "<white>/pmadmin player <gray>[player] sound [soundNumber] <gold>- set incoming message sound for given player to one of predefined sounds"
    - "<white>/pmadmin player <gray>[player] sound on/off <gold>- enable/disable sound notifications for given player"
    HELP_COMMAND_PMADMIN_PLAYER_CLEAR
    :
    - "<white>/pmadmin player <gray>[player] clear <gold>- clear unread messages of given player"INFO_ADMIN_MESSAGES_CLEARED_PLAYER
    : "&fCleared unread messages of player &6<player>&f."
    INFO_ADMIN_MESSAGES_CLEARED_PLAYER
    : "<white>Cleared unread messages of player <gold><player><white>."
    INFO_ADMIN_IGNORE_ADDED_PLAYER
    : "<white>Added player <gold><targetPlayer><white> to ignore list of player <gold><player><white>."
    INFO_ADMIN_IGNORE_REMOVED_PLAYER
    : "<white>Removed player <gold><targetPlayer><white> from ignore list of player <gold><player><white>."
    INFO_ADMIN_SPY_ENABLED_PLAYER
    : "<white>Spy mode enabled for player <gold><player><white>."
    INFO_ADMIN_SPY_DISABLED_PLAYER
    : "<white>Spy mode disabled for player <gold><player><white>."
    INFO_ADMIN_TIPS_ENABLED_PLAYER
    : "<white>Plugin tips enabled for player <gold><player><white>."
    INFO_ADMIN_TIPS_DISABLED_PLAYER
    : "<white>Plugin tips disabled for player <gold><player><white>."
    INFO_ADMIN_MESSAGES_ENABLED_PLAYER
    : "<white>Messages enabled for player <gold><player><white>."
    INFO_ADMIN_MESSAGES_DISABLED_PLAYER
    : "<white>Messages disabled for player <gold><player><white>."
    INFO_ADMIN_SOUND_NOTIFICATIONS_ENABLED_PLAYER
    : "<white>Sound notifications enabled for player <gold><player><white>."
    INFO_ADMIN_SOUND_NOTIFICATIONS_DISABLED_PLAYER
    : "<white>Sound notifications disabled for player <gold><player><white>."
    INFO_ADMIN_SOUND_CHANGED_PLAYER
    : "<white>Changed incoming message sound for player <gold><player><white> to sound number <gold><soundNumber><white>."
    INFO_FEATURE_UNAVAILABLE_PLUGIN_NOT_ON_BUKKIT
    : "<white>PrivateMessages needs to be installed on your current Bukkit server to use this feature."
    INFO_SOUND_NOTIFICATIONS_DISABLED
    : "<white>Sound notifications are now disabled."
    INFO_SOUND_NOTIFICATIONS_ENABLED
    : "<white>Sound notifications are now enabled."
    PROXY_CONSOLE_SENDER_NAME
    : "CONSOLE (proxy)"
     

    (BungeeCord servers)
    Added text
    Code (YAML):
    INFO_HELP_HEADER :
    - "&f&lPrivateMessages Help"
    - "&fPage &6<number> &fof &6<totalpages>"
    INFO_HELP_FOOTER
    :
    - "&7&oUse &6&o/pmhelp &7&o[page] &6&oto switch page."
    INFO_NO_HELP_ENTRIES
    : "&fNo help entries to show."
    HELP_COMMAND_PMTIPS
    :
    - "&f/pmtips &6- enable/disable plugin tips"
    HELP_COMMAND_PMTOGGLE
    :
    - "&f/pmtoggle &6- enable/disable sending/receiving messages"
    HELP_COMMAND_PMSOUND
    :
    - "&f/pmsound &6- open sound preferences menu"
    HELP_COMMAND_PMRELOAD
    :
    - "&f/pmreload &6- reload plugin configuration"
    HELP_COMMAND_PMSPY
    :
    - "&f/pmspy &6- toggle spy mode"
    HELP_COMMAND_MESSAGECONSOLE
    :
    - "&f/pmserver &6[message] &6- send message to console"
    HELP_COMMAND_MESSAGEPROXYCONSOLE
    :
    - "&f/pmproxy &7[message] &6- send message to proxy console"
    INFO_IGNORED_PLAYERS_ALL_REPLACEMENT
    : "<all players on the server>"
    HELP_COMMAND_PMADMIN
    :
    - "&f/pmadmin player &7[player] [option] [value] [-s &o(optional)&r&7] &6- edit player settings"
    HELP_COMMAND_PMADMIN_PLAYER
    :
    - "&f/pmadmin player &7[player] clear &6- clear unread messages of given player"
    - "&f/pmadmin player &7[player] ignore add/remove [targetPlayer] &6- add/remove player from ignore list of given player"
    - "&f/pmadmin player &7[player] spy on/off &6- enable/disable spy mode for given player"
    - "&f/pmadmin player &7[player] tips on/off &6- enable/disable plugin tips for given player"
    - "&f/pmadmin player &7[player] toggle on/off &6- enable/disable sending/receiving messages for given player"
    - "&f/pmadmin player &7[player] sound [soundNumber] &6- set incoming message sound for given player to one of predefined sounds"
    - "&f/pmadmin player &7[player] sound on/off &6- enable/disable sound notifications for given player"
    - "&fAdd &6-s/-silent &fflag to the end of the above commands to perform action without sending notification messages to target player."
    HELP_COMMAND_PMADMIN_PLAYER_IGNORE
    :
    - "&f/pmadmin player &7[player] ignore add [targetPlayer] &6- add player to ignore list of given player"
    - "&f/pmadmin player &7[player] ignore remove [targetPlayer] &6- remove player from ignore list of given player"
    HELP_COMMAND_PMADMIN_PLAYER_SPY
    :
    - "&f/pmadmin player &7[player] spy on/off &6- enable/disable spy mode for given player"
    HELP_COMMAND_PMADMIN_PLAYER_TIPS
    :
    - "&f/pmadmin player &7[player] tips on/off &6- enable/disable plugin tips for given player"
    HELP_COMMAND_PMADMIN_PLAYER_TOGGLE
    :
    - "&f/pmadmin player &7[player] toggle on/off &6- enable/disable sending/receiving messages for given player"
    HELP_COMMAND_PMADMIN_PLAYER_SOUND
    :
    - "&f/pmadmin player &7[player] sound [soundNumber] &6- set incoming message sound for given player to one of predefined sounds"
    - "&f/pmadmin player &7[player] sound on/off &6- enable/disable sound notifications for given player"
    HELP_COMMAND_PMADMIN_PLAYER_CLEAR
    :
    - "&f/pmadmin player &7[player] clear &6- clear unread messages of given player"INFO_ADMIN_MESSAGES_CLEARED_PLAYER
    : "&fCleared unread messages of player &6<player>&f."
    INFO_ADMIN_MESSAGES_CLEARED_PLAYER
    : "&fCleared unread messages of player &6<player>&f."
    INFO_ADMIN_IGNORE_ADDED_PLAYER
    : "&fAdded player &6<targetPlayer> &fto ignore list of player &6<player>&f."
    INFO_ADMIN_IGNORE_REMOVED_PLAYER
    : "&fRemoved player &6<targetPlayer> &ffrom ignore list of player &6<player>&f."
    INFO_ADMIN_SPY_ENABLED_PLAYER
    : "&fSpy mode enabled for player &6<player>&f."
    INFO_ADMIN_SPY_DISABLED_PLAYER
    : "&fSpy mode disabled for player &6<player>&f."
    INFO_ADMIN_TIPS_ENABLED_PLAYER
    : "&fPlugin tips enabled for player &6<player>&f."
    INFO_ADMIN_TIPS_DISABLED_PLAYER
    : "&fPlugin tips disabled for player &6<player>&f."
    INFO_ADMIN_MESSAGES_ENABLED_PLAYER
    : "&fMessages enabled for player &6<player>&f."
    INFO_ADMIN_MESSAGES_DISABLED_PLAYER
    : "&fMessages disabled for player &6<player>&f."
    INFO_ADMIN_SOUND_NOTIFICATIONS_ENABLED_PLAYER
    : "&fSound notifications enabled for player &6<player>&f."
    INFO_ADMIN_SOUND_NOTIFICATIONS_DISABLED_PLAYER
    : "&fSound notifications disabled for player &6<player>&f."
    INFO_ADMIN_SOUND_CHANGED_PLAYER
    : "&fChanged incoming message sound for player &6<player>&f to sound number &6<soundNumber>&f."
    INFO_FEATURE_UNAVAILABLE_PLUGIN_NOT_ON_BUKKIT
    : "&fPrivateMessages needs to be installed on your current Bukkit server to use this feature."
    INFO_SOUND_NOTIFICATIONS_DISABLED
    : "&fSound notifications are now disabled."
    INFO_SOUND_NOTIFICATIONS_ENABLED
    : "&fSound notifications are now enabled."
    PROXY_CONSOLE_SENDER_NAME
    : "CONSOLE (proxy)"
----------, Jun 20, 2026

Update 3.1 - Extended messages lookup, messages deletion feature and message sounds update

This update contains major changes. Please read carefully before updating from older versions!
Replacing existing plugin jar with a new one without further actions is safe thanks to old configurations compatibility, but you may miss out new features personalization.


Messages Deletion feature
Added ability do delete selected messages from command. Privileged user can precisely select what messages to delete using filters like player names and dates. Dedicated command to this feature: /pmdelete.
Additionally, as a protection layer, there is deletion confirmation feature (enabled by default in config.yml), where user has to execute /pmconfirm command before proceeding.
More about this here.

Changes to Messages History (/pmhistory) command
Messages history command (/pmhistory) has been updated to allow for more precise message filtering, using the same command arguments syntax as in /pmdelete command. Old syntax is still supported, allowing for basic messages filtering like before to keep all player-friendly.
Now it’s possible to control how message items look, by modifying their material identifiers in config.yml file.

Message Actions feature
When viewing messages in Messages History inventory, privileged user can click on selected message to perform further actions with it. Currently possible action is to delete selected message (permission is required). More expansion related to this feature is expected in upcoming updates.

Changes to notification sounds and Sound Inventory
Sound Inventory now includes 9 additional music discs added in Minecraft from versions 1.16 to 1.21. Music discs are randomly picked to represent each notification sound in inventory.

After opening „Sound Inventory”, the actively used sound is now marked by „ (active)” text added next to its display name. This text can be changed in lang.yml file.

Each item from Sound Inventory corresponding to given sound now allows for custom display name and description (lore).

Each notification sound can now have it’s own required permission (this feature is disabled by default).

Server owners can decide whether to show inaccessible notification sounds in Sound Inventory, allowing only to listen to these sounds.

Now it’s possible to compose notification sounds consisting of two or more separate sounds.

Added 29 new notification sounds to default sounds configuration (sounds.yml) – 4 of them are composed using more than one sound.

Changes to configuration files

config.yml

„TimeZone” key has moved from „MessagesHistory” to a root node.
Renamed „BungeeCord” key to „Proxy”.

All old names/mappings for above modified keys still work to keep plugin compatible with older configuration files, but this may change in the future so please update your config whenever possible.

Added 11 new entries (paste them into existing config.yml):

[Bukkit servers]

Code (YAML):
# Date-time formats accepted when searching for messages in commands like /pmdelete, /pmhistory
InCommandDateTimeFormat
:
- "MM.dd.yyyy-HH:mm:ss"
- "MM.dd.yyyy-HH:mm"
- "MM.dd.yyyy"
# Help item material displayed in Sound Details inventory
SoundDetailsHelpItem
: PAPER
# Navigation item 'Back' material
BackItem
: REDSTONE_BLOCK
# Navigation item 'Exit' material
ExitItem
: REDSTONE_BLOCK
# Item representing 'DELETE' action when Message Actions inventory is open
MessageActionDeleteItem
: LAVA_BUCKET
# Item representing first player when Messages History inventory is open
MessageItem1
: PAPER
# Item representing second player when Messages History inventory is open
MessageItem2
: MAP
# When set to true, all /pmdelete command invokations require confirmation using /pmconfirm command
MessagesDeletionByCommandRequiresConfirmation
: true
# When set to true, all 'DELETE' action invokations from Message Actions inventory require confirmation by clicking 'DELETE' item again.
MessagesDeletionByInventoryRequiresConfirmation
: true
# When set to true, each notification sound requires permission before it can be used by player
# Each permission node looks like this: pm.sound.<soundID> e.g. pm.sound.1 for a sound with ID 1
EachNotificationSoundRequiresPermission
: false
# When set to true, each notification sound a player hasn't permission to,
# will be displayed in Sound Inventory allowing to listen for sound but not to pick it.
DisplayInaccessibleSoundsInSoundInventory
: true
[Proxy servers]
Code (YAML):
# Date-time formats accepted when searching for messages in commands like /pmdelete
InCommandDateTimeFormat
:
- "MM.dd.yyyy-HH:mm:ss"
- "MM.dd.yyyy-HH:mm"
- "MM.dd.yyyy"
# When set to true, all /pmdelete command invokations require confirmation using /pmconfirm command
MessagesDeletionByCommandRequiresConfirmation
: true
lang.yml

[Bukkit servers]
Added 27 new entries (paste them into existing lang.yml):

Code (YAML):
INFO_GENERIC_ERROR : "<white>An error occurred. Details in server log."
INFO_MESSAGES_QUERY_INVALID_DATETIME_FORMAT
: "<white>Invalid datetime format. Accepted format: <gold><format>"
INFO_MESSAGES_QUERY_INVALID_EXPRESSION
: "<white>Invalid expression."
INFO_MESSAGES_QUERY_INVALID_MESSAGE_ID
: "<white>Invalid message ID."
INFO_MESSAGES_DELETED
: "<white>Deleted <gold><number> <white>message(s)."
INFO_DELETE_CONFIRMATION_REQUIRED
: "<white>You are about to delete <gold><number> <white>messages from database. This may result in irreversible data loss. To continue, type <gold>/pmconfirm delete<white>."
INFO_DELETE_CONFIRMATION_NO_MESSAGES
: "<white>You have no messages deletion action awaiting confirmation."
INFO_DELETE_NO_MESSAGES
: "<white>No messages to delete."
HELP_COMMAND_PMDELETE
:
- "<white>/pmdelete <gray>[message ID] <gold>- delete message with given ID"
- "<white>/pmdelete <gray>[message1ID,message2ID...] <gold>- delete group of messages with given IDs"
- "<white>/pmdelete <gray>[query] <gold>- delete all messages matching query"
- "<white>Possible query parameters
: <gold>BEFORE<white>, <gold>AFTER<white>, <gold>TO<white>, <gold>SINCE<white>, <gold>RANGE<white>, <gold> ALL "
- "
<white>Accepted datetime format : <gold><datetimeformat> "
- "
<white>Examples: "
- "
<white>/pmdelete Notch SINCE 05.11.2011 "
- "
<white>/pmdelete John,Mike RANGE 01.01.2015 12.31.2015 "
- "
<white>/pmdelete ALL "
HELP_COMMAND_PMCONFIRM:
- "
<white>/pmconfirm delete <gold>- confirm deletion of lastly selected messages "
INV_MESSAGES_HISTORY_MESSAGE_ENTRY_MORE:
- "
"
- "
<gray><i>Left-click here to see "
- "
<gray><i>possible actions. "
INV_MESSAGE_ACTIONS_TITLE: "
Message actions "
INV_MESSAGE_ACTIONS_DELETE_MESSAGE_ITEM_DISPLAYNAME: "
Delete "
INV_MESSAGE_ACTIONS_DELETE_MESSAGE_ITEM_LORE:
- "
Click here to "
- "
delete this message. "
INV_MESSAGE_ACTIONS_DELETE_MESSAGE_ITEM_LORE_CONFIRMATION:
- "
"
- "
<yellow>Click again to "
- "
<yellow>confirm deletion. "
INV_SOUND_ACTIVE_INDICATION: "
<green><i> (active ) "
INV_SOUND_DETAILS_TITLE: "
Sound details "
INV_SOUND_DETAILS_HELP_ITEM_NAME: "
<yellow>Help "
INV_SOUND_DETAILS_HELP_ITEM_LORE:
- "
<white>RightClick - listen "
INV_BACK_ITEM_DISPLAYNAME: "
Back "
INV_EXIT_ITEM_DISPLAYNAME: "
Exit "
TABCOMPLETE_EMPTY_MESSAGE_ID: "
<MESSAGE_ID> "
TABCOMPLETE_EMPTY_MESSAGE_IDS_GROUP: "
<MESSAGE_ID,MESSAGE2_ID ...> "
TABCOMPLETE_EMPTY_DATETIME: "
<DATETIME> "
TABCOMPLETE_EMPTY_START_DATETIME: "
<START_DATETIME> "
TABCOMPLETE_EMPTY_END_DATETIME: "
<END_DATETIME> "
TABCOMPLETE_EMPTY_PLAYER_NAMES_PAIR: "
<PLAYER_NAME,SECOND_PLAYER_NAME> "
Renamed keys:

„INV_MESSAGES_TITLE” to „INV_MESSAGES_HISTORY_TITLE”.

„INV_HISTORY_MESSAGE_ENTRY_NAME” to „INV_MESSAGES_HISTORY_MESSAGE_ENTRY_NAME”

„INV_HISTORY_MESSAGE_ENTRY_MESSAGE_LINE” to „INV_MESSAGES_HISTORY_MESSAGE_ENTRY_MESSAGE_LINE”

„INV_HISTORY_MESSAGE_ENTRY_DATE” to
„INV_MESSAGES_HISTORY_MESSAGE_ENTRY_DATE”

„INFO_HISTORY_DISABLED” to INFO_MESSAGES_HISTORY_DISABLED”

When loading plugin with older configuration, these keys will get auto-updated.

[Proxy servers]
Added 15 new entries (paste them into existing lang.yml):

Code (YAML):
INFO_MESSAGES_QUERY_INVALID_DATETIME_FORMAT : "<white>Invalid datetime format. Accepted format: <gold><format>"
INFO_MESSAGES_QUERY_INVALID_EXPRESSION
: "<white>Invalid expression."
INFO_MESSAGES_QUERY_INVALID_MESSAGE_ID
: "<white>Invalid message ID."
INFO_MESSAGES_DELETED
: "<white>Deleted <gold><number> <white>message(s)."
INFO_DELETE_CONFIRMATION_REQUIRED
: "<white>You are about to delete <gold><number> <white>messages from database. This may result in irreversible data loss. To continue, type <gold>/pmconfirm delete<white>."
INFO_DELETE_CONFIRMATION_NO_MESSAGES
: "<white>You have no messages deletion action awaiting confirmation."
INFO_DELETE_NO_MESSAGES
: "<white>No messages to delete."
HELP_COMMAND_PMDELETE
:
- "<white>/pmdelete <gray>[message ID] <gold>- delete message with given ID"
- "<white>/pmdelete <gray>[message1ID,message2ID...] <gold>- delete group of messages with given IDs"
- "<white>/pmdelete <gray>[query] <gold>- delete all messages matching query"
- "<white>Possible query parameters
: <gold>BEFORE<white>, <gold>AFTER<white>, <gold>TO<white>, <gold>SINCE<white>, <gold>RANGE<white>, <gold> ALL "
- "
<white>Accepted datetime format : <gold><datetimeformat> "
- "
<white>Examples: "
- "
<white>/pmdelete Notch SINCE 05.11.2011 "
- "
<white>/pmdelete John,Mike RANGE 01.01.2015 12.31.2015 "
- "
<white>/pmdelete ALL "
HELP_COMMAND_PMCONFIRM:
- "
<white>/pmconfirm delete <gold>- confirm deletion of lastly selected messages "
TABCOMPLETE_EMPTY_MESSAGE_ID: "
<MESSAGE_ID> "
TABCOMPLETE_EMPTY_MESSAGE_IDS_GROUP: "
<MESSAGE_ID,MESSAGE2_ID ...> "
TABCOMPLETE_EMPTY_DATETIME: "
<DATETIME> "
TABCOMPLETE_EMPTY_START_DATETIME: "
<START_DATETIME> "
TABCOMPLETE_EMPTY_END_DATETIME: "
<END_DATETIME> "
TABCOMPLETE_EMPTY_PLAYER_NAMES_PAIR: "
<PLAYER_NAME,SECOND_PLAYER_NAME> "
If you haven’t modified default configuration you can just delete this file and let plugin create new one to apply all changes.

Rearranged entries order to make navigation through language file more intuitive (this applies to freshly generated lang.yml).

sounds.yml

Updated file to include introduced DisplayName and Description modifications to notifications sounds items displayed in Sound Inventory and also extra 29 default sounds mentioned before.

Following code also shows how sounds consisting of more than one sound are constructed.

Code (YAML):
1 :
  # Each sound consists of sound name, volume and pitch separated by commas.
  # 2nd parameter is volume, 3rd parameter - pitch.
  # 4th parameter is delay (in ticks) before playing next sound in order - it is not required if there are no more sounds to play.
  # Each sound entry is separated by ';' sign.
  # In following example we have two noteblock plings playing with volume and pitch of 1 and delay of 3 ticks after first pling.
  # It's also possible to put sound name only without volume and pitch if only one sound entry is present - then volume and pitch use default value (1).
  Sound
: BLOCK_NOTE_BLOCK_PLING,1,1,3;BLOCK_NOTE_BLOCK_PLING,1,1
  DisplayName
: "2x Noteblock pling"
  Description
:
 - "Noteblock pling played twice with"
  - "a 3 ticks delay after first one."

If you haven’t modified default configuration you can just delete this file and let plugin create new one to apply all changes.


New permissions
pm.actions – access to message actions
pm.actions.delete – access to „delete message” action
pm.delete – access to /pmdelete command
pm.confirm – access to /pmconfirm command

Improvements
Players no longer receive post-join and post-unvanish notification about unread messages when they don’t have permission to use /pmread command.

More
Updated plugin help pages to include changes introducted with this update.
----------, Nov 2, 2025

  1. This update fixes issue with plugin messaging channel name length on very old Minecraft servers causing problems with running in proxy mode. Update affects every implementation of plugin (Bukkit, BungeeCord, Velocity).
  2. Version number has changed to 3.0.3 (Bukkit) / 3.0.2 (Velocity) / 3.0.1 (BungeeCord).
----------, Oct 4, 2025

  1. This update fixes security vulnerability on servers using MiniMessage chat formatting by limiting processed formatting tags to only basic ones (text color and decorations). This affects both Bukkit- and Velocity- version of plugin. It is planned in further updates to give server owners some level of control over this.
  2. Added couple missing default configuration fields for Storage section generated in config.yml file.
  3. Running plugin on Velocity now requires Java version 17 or higher.
  4. "Download now" link from this resource page now gives you direct download for "Bukkit" version of plugin. Other implementations can be found on plugin's dedicated page
  5. Version number has changed to 3.0.2 (Bukkit) and 3.0.1 (Velocity). Plugin for BungeeCord servers hasn't received any changes.
----------, Oct 3, 2025

Messages history - critical issue fix

Fixed lack of permission check in one of possible use scenarios of /pmhistory command resulting in possibility to read messages player isn't allowed to.
This affects only backend ("Bukkit") version of plugin.


Thanks to Irochi_ for reporting issue.
----------, Aug 22, 2025

Update 3.0 [NO LONGER BETA]

This update contains major changes. Please read carefully before upgrading from older versions!

  1. Added possibility to perform player data migration by command.
    /pmmigrate [old player name] [new player name]
    Optional third argument: --force, overwrites already existing data for given new player name
    Permission: pm.migrate & pm.migrate.force

  2. Added posibility to individually turn on/off plugin tips sent to players – currently these are tips related to changing sound notifications and clearing of unread offline messages. Player can decide whether to receive them or not. (Command: /pmtips, Permission: pm.tips)
    Additionally, server owners can decide whether to and how often send these tips: a) every once after first use of command by player (counting resets after server shutdown), b) send them only for the first time or c) don’t send them at all, ignoring player individual setting.
    How to configure this:
    config.yml → PluginTips: Enabled: true/false Mode: 1 / 2
    Enabled: if true, tips are being sent, if false, tips aren’t being sent
    Mode: 1 – send tip after first use of command/feature by player (resets on server shutdown)
    Mode: 2 - send tip after first use of command/feature and don’t do this again, even after server restart

  3. Extended Essentials integration. Now plugin detects if player is ignored by other player from Essentials /ignore command and prevents sending private messages. This does not prevent player from sending message if has bypass permission (pm.message.ignored). This behavior can be turned off in plugin config. [Integration.Essentials.RespectIgnore: true/false]. Proxy server will also get to know about ignored players from Essentials plugin if PrivateMessages plugin is running on backend server and uses MySQL as storage.
    Output of /pmignored command will also include players ignored on Essentials if this feature is enabled.

  4. Added possibility to use <sender> placeholder representing sender name in MESSAGE_FROM_FORMAT, MESSAGE_TO_FORMAT and MESSAGE_TO_OFFLINE_FORMAT messages in lang.yml file.

  5. Added new text lines to lang.yml (go to language configuration help page for legacy-formatted text):
    Code (YAML):
    INFO_NO_PLAYER_DATA : "<white>No data for player <gold><player> <white>found."
    INFO_PLAYER_DATA_EXISTS
    : "<white>Data for player <gold><player> <white>already exist."
    CONSOLE_SENDER_NAME
    : "CONSOLE"
    INFO_MIGRATE_SUCCESS
    : "<white>Migrated <gold><oldName> <white>data to new player name <gold><newName><white>."
    INFO_TIPS_NOW_ENABLED
    : "&fPlugin tips are now enabled."
    INFO_TIPS_NOW_DISABLED
    : "&fPlugin tips are now disabled."
    HELP_COMMAND_PMMIGRATE
    :
    - "<white>/pmmigrate <gray>[old player name] [new player name] <gold>- migrate player data "
    - "<white>/pmmigrate <gray>[old player name] [new player name] --force <gold>- migrate player data, overwriting existing data for given new name "

  6. Added new text lines to config.yml:
    Code (YAML):
    PluginTips:
      Enabled
    : true
      Mode
    : 1 # 1 - send tip after first use of command/feature by player (resets on server shutdown) 2 - send tip after first use of command/feature and don’t do this again, even after server restart
    Integration
    :
      Essentials
    :
        RespectIgnore
    : true # When player is ignored using Essentials's /ignore command plugin prevents him from sending messages to target player.

  7. Moved console command sender name customization from config.yml to lang.yml.

  8. Added Polish and Russian language file translations. You can get them from here.
----------, Jul 14, 2025

  1. Fixed a very old issue related to inventory handling where players can place their items in messages history / sound selection menu by shift-clicking. This update affects only backend (Bukkit) version of plugin.
----------, May 20, 2025

Update 3.0-BETA10 [BACKEND + VELOCITY PLUGIN HOTFIX]
  1. Fixed critical bug causing default config files not being created properly when plugin data folder doesn’t exist yet. This issue was present only on backend („Bukkit”) version of plugin.
  2. Fixed issue with creating MySQL connection on Velocity.
----------, May 6, 2025

  1. Added support for MiniMessage chat formatting (Format - Adventure Documentation (v4.20.0) ) for backend and for proxy-version of plugin (Only Velocity or compatible forks).

    This feature requires setting „MiniMessageChatFormatting” being set to „true” in config.yml (default is „false”). Also server running Minecraft version 1.17 or higher and Paper / Paper-compatible fork is a requirement .
    You can download new lang.yml file formatted using MiniMessage from project page or by renaming/deleting existing file within plugin data folder – plugin will place appropriate file depending on value set to „ MiniMessageChatFormatting” in config.yml. To convert your existing lang.yml file (if you have made any changes) you can use tools like this one: Legacy to MiniMessage Editor

    Add below code to config.yml.
    Code (YAML):
    MiniMessageChatFormatting : false # Requires Paper 1.17+ or compatible fork

  2. Now it’s possible to better control format of text displayed in messages inventory – this includes each message entry and page switch items. Add below code to lang.yml or re-generate a new one.
    Code (YAML):
    INV_HISTORY_MESSAGE_ENTRY_NAME : "<red><sender> <white> -> <green><recipient>"
    INV_HISTORY_MESSAGE_ENTRY_MESSAGE_LINE
    : "<yellow><text>"
    INV_HISTORY_MESSAGE_ENTRY_DATE
    : "<gray><date>"
    INV_PAGE_NUMBER
    : "<number>"
----------, Apr 27, 2025

  1. Added support for Minecraft versions up to 1.21.5.

    I recommend reading comment below to be better prepared for future Minecraft server updates!
    Please be aware that even if a plugin project page doesn’t state X version as „supported” it doesn’t mean plugin will break as soon as you try running it on a newer server version.
    PrivateMessages uses only very basic bukkit api calls and doesn’t rely on any version-specific code (excluding internal sound names which are controllable by server admins through sounds.yml file thus in case of change they aren’t forced to wait for an official update) and it’s very unlikely future updates to Bukkit/Spigot will bring any incompatibilities. That means, before asking questions like „Will this plugin get X version support” consider running it on server and checking if there are any issues – most likely there won’t be any.

  2. Added Velocity support (Configuration of plugin is identical as when running on BungeeCord).

  3. Added ability to replace console sender name with custom defined one
    If you are updating, add these lines to a config.yml file:
    Code (YAML):
    ConsoleSenderName : "CONSOLE"
  4. Added ability to completely turn off messages history:
    config.yml -> MessagesHistory -> Enabled: true/false (default is true)
    If you are updating, add these lines to a lang.yml file:
    Code (YAML):
    INFO_HISTORY_DISABLED : "Messages history is disabled."
    And this to a config.yml file:
    Code (YAML):
    MessagesHistory:
        Enabled
    : true

    * With Messages History disabled, offline messaging is not possible, even with "AllowSendingMessagesToOfflinePlayers" set to true in config.yml

  5. Added tab-completions for /pmhistory command. Also it's now possible to define own replacements for default tab-completions of /message, /pmignore, /pmread and /reply commands.
    If you are updating, add these lines to a lang.yml file:
    Code (YAML):
    TABCOMPLETE_EMPTY_PLAYER_NAME : "[player name]"
    TABCOMPLETE_EMPTY_MESSAGE_NUMBER
    : "[message number]"
    TABCOMPLETE_EMPTY_MESSAGE_TEXT
    : "[text]"

  6. Changes to plugin permissions

    Permissions pm.message.vanished and pm.reply.vanished have been removed. From now there is one permission replacing them:
    pm.vanishbypass. Any command and its tab-completion look for this permission when determining if command sender should be able to interact with or see certain player in tab suggestions. Currently this check applies to /message, /reply, /ignore and /pmhistory commands and will also apply to any future command interacting with other players.

    NOTICE: When using PremiumVanish, by default it hides all vanished players names from ALL tabcompletions on server if command sender doesn't have pv.see permission. You have 2 ways to get around of this:

    1. Give player who should see vanished names suggestions both pm.vanishbypass and pv.see permissions (Recommended way)

    2. Turn off tabcompletion hiding feature in PremiumVanish config (config.yml -> Advanced -> DisabledInvisibilityModules -> Comment "-TabComplete") and then execute /pv reload


  7. Changes to sound notifications system

    * Now plugin uses it's server-version detection to place valid default sounds configuration. This means you no longer have to rename default sound names if you are running older server implementations like 1.8, 1.12 etc. Plugin does all work for you.

    * Now it's possible to enable/disable sound notifications by individual players (click dedicated item in /pmsound). There is also separate permission to this feature: "pm.sound.toggle"

    * Fixed issues:
    1. Sound notifications not working when plugin is loaded for the first time
    2. Sound notifications inventory not updating after using /pmreload command

    Update lang.yml file with these lines:
    Code (YAML):
    INV_SOUND_TOGGLE_ITEM_NAME : "&eEnable/disable sound"
    INV_SOUND_TOGGLE_ITEM_LORE
    :
    - "&fLeft-click here to enable"
    - "&for disable sound"
    - "&fnotifications."
  8. Other changes

    * Fixed errors related to inventory click events on servers running 1.7.10 or older versions.
    * Fixed minor bugs related to plugin shutdown when using it on bungee server
    * Plugin is now released through separate .jars each for Bukkit/Spigot, BungeeCord and Velocity servers.


Thanks to everyone still using this plugin on their servers and who waited for updates. I’m open to your suggestions on how I can improve project more so you can enjoy using PrivateMessages even more. Feel free to let me know what you like (or not) about this update and what would you like to see in the future.
----------, Apr 18, 2025

Fixed issue causing improper sound playing and throwing IndexOutOfBoundsException in certain circumstances.
----------, Jun 24, 2022

- Fixed NPE on player join when bungeecord mode is disabled
- Fixed exception when trying to play message sound if none sounds are present in config.
- Fixed sound selection inventory loading in 1.16.2
----------, Aug 15, 2020

First, I would like to apologize all of you who had to wait so long for 1.16 support. There were many factors whose made significant delay, including private-life problems and keeping busy updating my own servers and other plugins to 1.16.
The cause of plugin break after releasing next major Minecraft version was easy to fix and I've made sure plugin will not break again because of the same issue without need of releasing dedicated update in 1.17 and onwards.

This is the biggest update since releasing first beta of new 3.0 release.

1. BungeeCord Support (Finally we have it!)
  • Requires use of MySQL (or other compatible to it) database.
  • Vanish support also works with BungeeCord. If you don't have any vanish plugins running on bungee, PM will try to find and get vanish info from servers running within network (this requires PM to be installed on all your servers).
  • Added configuration option "BungeeCord". Set it to true to enable this feature.
  • Read carefully main page of plugin to get it working properly.
2. 1.16 Support
  • Minecraft 1.16.-1.16.2 is now supported.

3. Changes & fixes
  • Fixed issue with sending % and $ signs.
  • Re-added missing notifications after unvanish from PrivateMessages 2.x versions
  • Added tab-completion of vanished players names
  • Added tab-completion to /pmignore command
  • Improved detection of unread messages. Now you will also get informed about messages which are waiting for save in database.
  • Added bStats. You can disable this by setting "Metrics" to "false" in config.yml

Configs won't update automatically.
Add these lines if updating from previous versions:
Code (YAML):
BungeeCord : false
Metrics
: true
and set them as you like.
----------, Aug 15, 2020

Added 1.15 support.
----------, Dec 11, 2019

- Added support for PremiumVanish.
- Improved stability of generating messages history. Now you can set how many messages plugin can generate on each second. By default, plugin won't generate more than 5000 messages per second.

config.yml:
Code (YAML):
MaxHistoryMessagesPerSecond : 5000

- Added button to move 50 pages at one click in messages history.
----------, Nov 2, 2019

- Fixed messages not storing in history when sent to offline players
- Fixed messages in some case starting with recipient name when using /msg [player]
- Fixed some NPE's
----------, Sep 21, 2019

Plugin has been rewritten from scratch to optimize some things and make further updating easier.
Minecraft 1.14.x is now supported.


Other changes:

- "config.yml" was completely changed. If you're updating from older versions re-generate this file!
- Database tables were changed. Old data is not compatible with this version of plugin. I recommend to delete old database file (xyz.db) or tables created previously in MySQL (or similar databases).
- Some commands/permissions look different than before. Check this in plugin descrpitoion..
- Fixed permission defaults
- New command: /pmtoggle - it allows you to disable sending and receiving messages. They will not show in messages history. Users with permission may bypass this (look at permissions section)
- "Messages History" inventory now allows you to skip 10 pages at once.
- The default sound notification is now the first sound defined in sounds.yml file
- "Sound select" inventory now includes help item
- Optimized saving messages in database. You can define save interval in seconds through config.yml
- You can now define timezone used by messages history through config.yml
- Improved sending messages to offline players.



This is beta version of plugin. Tested on live server with dozens of players. None issues were observed. I'm going to re-add few minor options left from previous versions before making "full release".
----------, Jul 7, 2019

- Vault is no longer needed for permissions support.
- Fixed other dependency issues.
----------, Dec 11, 2018

1) This update adds SocialSpy. Use /pmspy to activate/deactivate. Requires admin permission.
You have to type /pmsg update before using this feature! (SQL tables will be updated.).Don't have to do this if not used this plugin before.

Add these lines to lang.yml:
Code (YAML):
SpyMessageFormat : "&8[PM] <sender> to <recipient>: <message>"
SpyEnabled
: "&6&l[&f&lPM&6&l] &fSocialSpy is now enabled."
SpyDisabled
: "&6&l[&f&lPM&6&l] &fSocialSpy is now disabled."



2) HikariCP is now used in SQLite database (before it was used only in MySQL)

3) Player tab-completion is now really fixed! And works better than ever before.
----------, Oct 20, 2018

- Fixed player tabcompleting
- Removed console spam
----------, Sep 25, 2018

Update to 1.13.1
Support for older versions is now included as it was before 1.13.
Additionally, I've fixed many connection bugs with MySQL.
----------, Sep 23, 2018

This update fixes bug causing plugin to not work when vanish support is disabled.

Note:

The next update will bring back support for versions older than 1.13 and will have also last fixes.
----------, Aug 8, 2018

This update is only for 1.13!

Other:
- Improved MySQL handling
----------, Jul 26, 2018

Make a backup of "Messages" section from your config.yml before updating!
How to update config.yml from 1.1 to 2.0: /pmsg update

New feature: "Messages History". Now you can read all your conversations in GUI
Main command: /pmhistory
* View all your conversations with all players ( /pmhistory)
* View all your conversations with certain player ( /pmhistory <playername>)
* View all of player conversations with certain player ( /pmhistory <player1> <player2>)
* View all of player conversations with all players ( /pmhistory <player1> *)
This feature is enabled by default and players can see only their own conversations. You can disable this by negating players "pm.history" permission.

[​IMG]

Other:
- Better tab-completion
- Separated "Messages" section from config.yml and moved to new lang.yml
- Dropped support for "YAML" storage type
- Other small fixes & improvements


Notice: The jar file is much bigger than should it be, it's because of my IDE was temporarily misconfigured. This doesn't affect anything.
----------, Apr 20, 2018

>> Re-generate config.yml or type "/pmsg update" to update config from 1.0 to 1.1 without data loss.

Fixes:
- Removed some forgotten debug messages
- Fixed plugin reloading

Addons/Improvements:
- Prevent sending messages to yourself
- Added option to disable offline messaging
- Added option to change the way offline messaging works (config.yml -> OfflineMessaging.Type)
"default" - message is sent by /m, /r etc.
"command" - message is sent by /omsg (or /om) - when player tries to use e.g. /m he gets notified to use /omsg...
- Added notifications about new messages for players who unvanish
- Added 1 sound to sounds.yml (if you want it you have to re-generate sounds.yml)
----------, Apr 9, 2018

Resource Information
Author:
----------
Total Downloads: 13,613
First Release: Mar 3, 2018
Last Update: Jun 20, 2026
Category: ---------------
All-Time Rating:
23 ratings
Find more info at maciejnierzwicki.pl...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings