Skip to content

Feature Menu Chat

Brennan Hatton edited this page Jul 31, 2026 · 3 revisions

Talk with the dev from the main menu

Since: PR #618 (first release after v0.381.0)

Direct two-way chat with the developer, right on the title screen — no Discord app needed.

What players see

  • The envelope button. Once the dev has sent you a message, a small envelope button (the vanilla Realms invite icon) appears above the accessibility button on the title screen. Players who have never been messaged see nothing — there is no empty chat dock.
  • Unread callout + pulse. When there are unread messages, a popup appears beside the envelope — The Dev sent you a message: "…" quoting the first ten characters of the oldest unread message — and the envelope's border pulses (the Discord button's own pulse stands down while it does, so only one element breathes at a time). Opening the chat clears both.
  • The chat window. Clicking the envelope opens a dedicated conversation screen: newest messages at the bottom, live updates every few seconds while it's open, a send box at the bottom (Enter to send), and a Done button / Esc to leave. Messages sent while the relay is unreachable are queued in a local outbox and delivered automatically on the next opportunity — at-least-once, never silently lost.
  • Conversation only. The window shows the dev's replies, the player's own dev-tagged in-game chat (@dev …) or menu-sent messages, and feedback-survey answers in compact form ("Bug — Other" plus the comment). Automated traffic — advancements, death/disconnect reports, difficulty and Free Play notices, join lines, bug-report log attachments — is filtered out.

What the dev sees (Discord side)

Each player's messages live in their per-player thread (created by Discord Presence). Two receipt reactions are added by the relay bot:

Reaction Meaning
✅ The message has been loaded by the player's client (they reached the main menu)
👀 The player actually read it (it scrolled into view in the chat UI)

Replying from the dashboard

Since: dp-relay PR #277 (v0.93.0)

Replies can also be sent from the relay's own Chat page (#/chats) instead of Discord, which is where the dev can already see every conversation, who is waiting, and what is unread. A reply sent that way arrives in the title-screen panel exactly like a Discord one — same sender name, same unread popup and pulse.

Two differences a player might notice, both because the message is posted by the bot rather than by a person:

  • It does not trigger the in-world @Dev prompt. If you're playing when it's sent, it waits in the title-screen panel rather than asking to come into your chat (see below).
  • It isn't in the backscroll on a later launch. The panel shows it once, when it arrives; the conversation history it rebuilds on each launch filters bot posts out.

Both are MenuChatFilter rules and would need a mod-side change to lift.

Notes

  • Everything is gated on the Discord Presence network-access consent; players who declined networking never see the panel and no requests are made.
  • Client-side only: no new packets, no server code, no mixins. The client talks to the dp-relay (/chat/history, /chat/send, /chat/inbox, /chat/seen) keyed by the launcher's Minecraft UUID; dev builds route to the dev capability, releases to the live one.
  • Receipt reactions are dispatched ≥400 ms apart client-side to respect Discord's per-channel reaction rate limit.

Key classes: client/chat/MenuChatButtonHandler (envelope + popup), MenuChatScreen (window), MenuChatFilter (conversation rules), ChatOutbox (durable sends), ChatReceipts (✅/👀 queue).

Talking to the dev while you're in a world

Since: PR #633 (first release v0.385.0)

The panel above covers the title screen. If the dev messages you while you're actually playing in a world, that message doesn't just silently wait in the panel — a one-time consent prompt appears in your in-game chat first:

The Developer wants to send you a message, type @Dev to accept.

  • Accept with @Dev. Typing it delivers the held message (and any others sent since) into your chat as [Developer] …. From then on, further messages from the dev show up automatically — no more prompts — for the rest of that world session, or for 20 minutes after your last message to the dev (whichever is later). The window slides on any chat you send after accepting, or any message you send from the title-screen panel above.
  • Don't accept, and the message never appears in your in-game chat — but it's still sitting in the title-screen panel, exactly as described above, so nothing is lost.

Key classes: event/DevMessageConsent (server-side hold/prompt/deliver + consent-window rule), client/DevMessageConsentClient (persists consent across world reloads), net/ConsentSyncPacket + net/ConsentUpdatePacket (client↔server consent sync).

Clone this wiki locally