Skip to content

Direct Messages

KOKOTO-DEV edited this page Aug 15, 2026 · 3 revisions

Direct Messages

BlueMapWebChat 4.7.0 · Minecraft 1.18–26.2 · Java 17 baseline

15. Direct Messages

DM is disabled by default.

direct-message:
  enabled: true
  storage: "auto"
  retention-days: 0
  max-messages-per-thread: 0
  max-message-length: 500
  allow-web-send: true
  allow-game-send: true
  capture-game-whispers: true
  notify-on-login: true
  notify-on-message: true
  web-unread-badge: true
  confirm-hide: true

Recipients must be known by UUID. In addition to local join and linked-account records, a relayed game or linked-web message with playerUuid registers the sender's display name and real Minecraft name in the new-conversation recipient search. This allows a remote-server sender seen in public chat to be found through the normal DM search and sent through the existing DM path. The latest identity is retained in known-display-names.yml and remains searchable after restart. Guest and Discord messages without a player UUID are not registered. With storage: auto, DM uses JSONL only when public chat storage is JSONL; otherwise it uses SQLite. You may explicitly select sqlite or jsonl.

Game commands:

/bmchat dm
/bmchat dm list [pageSize]
/bmchat dm unread [pageSize]
/bmchat dm list next
/bmchat dm list prev
/bmchat dm <player> <message>
/bmchat dm read <player> [pageSize]
/bmchat dm next
/bmchat dm prev
/bmchat dm hide <messageId>

Permission:

bluemapwebchat.dm

15.1 Capture Minecraft Whispers

When capture-game-whispers: true, the following commands are copied into the same BMChat DM thread:

/w /msg /tell /whisper /m /pm /message /t

BlueMapWebChat does not replace a normal same-server Minecraft whisper. It records a copy for both sender and recipient. For a remote target, use name@server-id; the same aliases are rewritten to /bmchat dm name@server-id <message> and sent through the signed cross-server DM relay. An unqualified /bmchat dm <name> resolves only to a player on the current server. /r and /reply are not intercepted because they contain no target and remain owned by the server's existing whisper plugin.

15.2 Delivery and read status

Normal successful delivery is not labeled. Sending appears only while a local send request is pending, and Failed · Retry appears only when delivery cannot be confirmed. These compact states are displayed beside the message timestamp. Read status is shown beside the timestamp for every DM message: Unread means the single recipient has not read the message yet, and means the recipient has read it. Group chat remains count-based. For cross-server DMs, the recipient server returns the read acknowledgement through the authenticated relay so the same status is reflected on the message origin. The latest acknowledgement is idempotent and is re-sent when the conversation is viewed, allowing a transient relay or HTTP failure to repair on a later view.

Clone this wiki locally