BlueMapWebChat

A BlueMap web chat plugin with real-time chat, replies, custom emojis, media previews, and DiscordSRV support.

File Details

BlueMapWebChat-4.3.0.jar

  • R
  • Jun 29, 2026
  • 12.49 MB
  • 9
  • 26.2+16

File Name

BlueMapWebChat-4.3.0.jar

Supported Versions

  • 26.2
  • 26.1.2
  • 26.1.1
  • 26.1
  • 1.21.5-Snapshot
  • 1.21.11
  • 1.21.10
  • 1.21.9
  • 1.21.8
  • 1.21.7
  • 1.21.6
  • 1.21.5
  • 1.21.4
  • 1.21.3
  • 1.21.2
  • 1.21.1
  • 1.21

## 4.3.0

### Startup safety

- Added a top-level master switch for newly generated configs. New `config.yml` files start disabled so BlueMapWebChat only creates configuration files until the administrator reviews settings and opts in.
- Existing configs without the `enabled` key are treated as enabled for upgrade compatibility.

```yml
# Master switch for BlueMapWebChat.
# New generated configs default to false so the plugin creates config.yml first
# without starting web/chat services or cleanup tasks. /bmchat reload remains available.
# Existing configs that do not have this key are treated as enabled for upgrade compatibility.
enabled: false
```

When `enabled: false`, the plugin does not start the HTTP server, web addon installer, chat listeners, Discord bridge, upload/emoji directory initialization, direct-message store, or cleanup tasks. Set `enabled: true` after reviewing retention/storage/exposure settings.

### Thread-style direct messages

- Changed the in-game DM sent confirmation to use the new `command.dmSentEcho` key so existing language files still show the sent body (`to: {player} {message}`).
- Added optional 1:1 direct message threads for linked/known Minecraft players.
- Direct message targets are limited to players with a stored UUID/name, usually from joining the server at least once or linking a web account.
- Messages are stored by UUID and displayed as `display name (real account name)` where both values are available.
- A->B and B->A messages always use the same thread by using a deterministic pair of UUIDs.
- Added a web message-box button with unread badge, player search, thread list, conversation view, and reply-style message sending inside each 1:1 thread.
- Added `/bmchat dm <player> <message>` and `/bmchat dm list` for game-side direct message sending and unread/thread summary checks.
- Added per-user unread tracking, web SSE direct-message refresh events, join-time unread notices, and online recipient notices.
- Direct-message storage uses an independent private-message store from public chat history, so public chat retention and private-message retention can be managed independently.
- Added `direct-message.storage`, `direct-message.jsonl-file`, and `direct-message.sqlite-file`. With `storage: "auto"`, DM storage follows `chat.history-storage: "jsonl"`; otherwise it uses SQLite.
- Added `direct-message.confirm-hide` to control whether the web message box asks for confirmation before hiding a DM message.
- Shows `direct-message.retention-days` next to the DM message-box title. `0` is displayed as no time limit.
- Added shared `:emoji` + Tab autocomplete for both public chat and direct-message input fields.
- Direct-message sender/time meta now uses the same display-name/time toggle behavior as public chat and removes the extra dot separator.

New direct message configuration:

```yml
direct-message:
  # Thread-style 1:1 direct messages.
  # Only players that have joined or linked at least once and have a stored UUID/name can be selected.
  # Messages are stored by UUID, while the UI shows display name (real account name).
  # This feature uses its own private message store and is disabled by default because it stores private messages.
  enabled: false

  # auto = follow chat.history-storage when it is jsonl, otherwise use sqlite.
  # sqlite = recommended database storage.
  # jsonl = append-only JSONL file storage, useful when chat history also uses JSONL.
  storage: "auto"

  # 0 = no time limit. A positive value is shown next to the DM window title and
  # physically removes old DM messages after that many days.
  retention-days: 0

  # 0 = unlimited by count. When set, only the newest N messages are kept per 1:1 thread.
  max-messages-per-thread: 0

  # 0 = unlimited. Recommended: 300-1000.
  max-message-length: 500

  # Allow sending DMs from the web UI.
  allow-web-send: true
  # Allow sending DMs from /bmchat dm in game.
  allow-game-send: true

  # Notify players about unread DMs when they join.
  notify-on-login: true
  # Notify online players immediately when a new DM arrives.
  notify-on-message: true
  # Show unread DM count badge in the web UI.
  web-unread-badge: true

  # Ask before hiding a DM message from the web message box.
  confirm-hide: true

  # JSONL file for private 1:1 message threads when storage is jsonl. Relative paths are stored under the plugin data folder.
  jsonl-file: "direct-messages.jsonl"
  # SQLite file for private 1:1 message threads when storage is sqlite. Relative paths are stored under the plugin data folder.
  sqlite-file: "direct-messages.db"
```

Upgrade note:

- Existing `config.yml` files are not rewritten automatically. To use direct messages after upgrading, merge the `direct-message` block above into your existing config.
- Because 4.2.0 and 4.3.0 include large configuration changes, if manual merging is difficult, stop the server, back up and delete `plugins/BlueMapWebChat/config.yml`, start the server once to regenerate it, and then reapply your custom settings manually.
- New generated configs now start with top-level `enabled: false`. This prevents web/chat services and cleanup tasks from running until the administrator reviews the generated config and sets `enabled: true`.
- If `direct-message.storage: "auto"` and `chat.history-storage: "jsonl"`, DMs are stored in `direct-messages.jsonl`. Otherwise `auto` uses SQLite.
- If direct messages are enabled with SQLite storage, include `direct-messages.db`, `direct-messages.db-wal`, and `direct-messages.db-shm` in backup plans.
- If direct messages are enabled with JSONL storage, include `direct-messages.jsonl` in backup plans.