PrivateMessages [1.7-1.21] icon

PrivateMessages [1.7-1.21] -----

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



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

This update contains major changes. Please read carefully before upgrading 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
Resource Information
Author:
----------
Total Downloads: 13,091
First Release: Mar 3, 2018
Last Update: Nov 2, 2025
Category: ---------------
All-Time Rating:
23 ratings
Find more info at maciejnierzwicki.pl...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings