
DiscordGate
Require Discord account linking before players can join. Integrates with BaxiBot
Автор: Red_wolf24676873обновлён 28 окт. 2026 г.
УправлениеОбщениеУтилиты
Описание
DiscordGate
Gate your Minecraft server behind Discord. Only linked players can join.
Powered by BaxiBot.
Flow
- Player joins - kicked with code
/mc link <code>in Discord- Baxi verifies - whitelisted
- Player can join normally
Features
- Discord-gated whitelist
- Bedrock/Geyser compatible
/dg(status/code),/dgunlink- Auto-role, announce channel, DM on link
- MC ↔ Discord chat bridge
- Velocity standalone support
Commands
In-game
| Command | Perm | Description |
|---|---|---|
/dg | all | Status/code |
/dg unlink | all | Unlink |
/dg announce [--discord] <msg> | admin | Broadcast |
/dg reload / lock / unlock | admin | Server control |
/dg admin link/unlink <player> | admin | Manual link |
Discord
/mc link <code> · /mc unlink · /mc status · /mc admin unlink/lookup <user>
Setup — Paper
port: 4321
bind-address: "0.0.0.0"
secret: "your-secret"
Dashboard → MC Link → API URL + secret → enable.
Setup - Velocity
BaxiBot - Velocity :4321 → Backends
port=4321
bind-address=0.0.0.0
secret=your-secret
kick-message=<red>Not linked!</red> /mc link {token}
token-ttl-minutes=10
Backends: white-list=false, not internet-facing.
Cross-chat (Velocity network)
Needs both plugins. Same secret everywhere.
Each Paper backend:
chat-bridge-enabled: true
chat-relay-source: "paper"
Velocity:
chat-bridge-enabled=true
chat-relay-source=paper
Dashboard: enable cross-chat, set channel + webhook URL.
Troubleshooting
- No MC-Discord: check Paper log for 401 (secret mismatch)
- No Discord→MC: dashboard API URL not pointing at Velocity
- Duplicate messages:
chat-relay-sourcemissing on Velocity
Requirements
- Paper 1.21.1+ or Velocity 3.3+ (with Paper backend)
- BaxiBot in your Discord server
Галерея
Последние версии
Все версии →release
DiscordGate 1.5.4 (Velocity)
1.5.4+velocity28 окт. 2026 г.5Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3velocity
Что нового
## Unreleased — Freeze instead of kick
### ⚠️ Read before updating
Unlinked players are **no longer kicked** on join. On Paper they now stay on the server, frozen, until they link. `kick-message` is gone from the Paper `config.yml` — it is replaced by the `freeze-*` keys (a leftover `kick-message` is ignored). Velocity keeps kicking unless you set a `limbo-server` (see below).
### New
- **Freeze instead of kick (Paper).** Unlinked players join, can look around but can't move, build, break, fight, pick up, chat or run commands (`/dg` still works) and take no damage. They are released the moment the link goes through — via Discord, the API or `/dg admin link` — and get the usual welcome message.
- **Tells you what to do.** Chat message, title and a repeating action bar with the link code. The chat message is repeated every `freeze-reminder-seconds` (30).
- **One-click link.** The chat message carries `https://<bot>/discordgate/<code>` (click opens the browser, no typing). The code is clickable too and copies `/mc link <code>`. `link-url` overrides the address; with neither `link-url` nor `bot-api-url` the link line is dropped.
- **Vanilla whitelist no longer hides the prompt.** With `white-list=true`, unlinked players used to be turned away before they could be told how to link; they are now let in and frozen (bans and full-server still apply).
- **Unlinking freezes instead of kicking** — `/dg unlink`, `/dg admin unlink` and `/mc unlink` put an online player straight back into the freeze with a fresh code.
- **Velocity: `limbo-server`.** A proxy can't hold a player in place, so unlinked players are parked on a limbo server of your choice (e.g. NanoLimbo) and get the same prompt there; once linked they are sent to `limbo-return-server` (default: first try-order server). Without `limbo-server` the proxy kicks as before — now with the clickable-link text — rather than let unlinked players onto a real server.
### Fixed
- Velocity: the default `kick-message` / `locked-message` used a doubled backslash and printed a literal `\n` instead of a line break.
- `/dg` for an unlinked player shows the same prompt (with link) as the freeze.
## v1.5.1 — Link-Code Fix
### Fixed
- **Link code no longer changes on every join attempt.** Each connection attempt minted a new code and invalidated the previous one, so the code on the kick screen a player was about to type could already be dead — reported as "the code is not the actual code" / "invalid or expired right after I got it". Re-issuing now returns the *same* code with a refreshed expiry until it runs out (`token-ttl-minutes`).
- `{code}` and `{token}` are now both accepted in `kick-message` on both platforms. Paper only replaced `{code}`, Velocity only `{token}`, so a config copied across platforms put the literal placeholder on the kick screen.
- A failed `GET /dg/token/{code}` is logged (`Token lookup miss: <code> (N pending)`), so a support case can tell a wrong code apart from a bot that never reached the server.
## v1.5.0 — Status Board & Latest MC
### ⚠️ Read before updating
The HTTP API now **refuses to start** while `secret` is still `CHANGE-ME` or empty. Anyone who knew the default could whitelist themselves through `/dg/whitelist`. Set a real secret first — otherwise the plugin loads but the API stays offline.
### New
- **Runs on the latest Minecraft.** Built against the Paper 26.2 API, still supported down to **1.20.6**.
- **`GET /dg/stats`** — one call for a status snapshot: online state, platform + MC version, uptime, players, TPS/MSPT, and the per-backend split on Velocity.
- **ViaVersion aware.** Reports which client versions can actually connect. Detected at runtime — ViaVersion/ViaBackwards/ViaRewind stay optional.
- **Live status board in Discord.** BaxiBot keeps a self-updating embed in a channel you pick. Pick it under **MC Link** in the dashboard.
- **`/mc whois`** — look up who owns a Minecraft name, or which account a member has, skin head included. Open to everyone, unlike `/mc admin lookup`.
- **`events-relay-source`** — join/quit relaying no longer piggybacks on `chat-relay-source`. Leave it unset to keep current behaviour.
### Fixed
- Update notice in-game checked an unregistered permission (`discordgate.admin`), so only OPs ever saw it — now `dg.admin`.
- API server leaked two threads on every `/reload`.
### Internal
Paper and Velocity now share one code base for link storage, HTTP handling and bot calls instead of two near-identical copies. No behaviour change — data files and every endpoint are untouched.
release
DiscordGate 1.5.4 (Paper)
1.5.428 окт. 2026 г.6Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3folia, paper, purpur
Что нового
## Unreleased — Freeze instead of kick
### ⚠️ Read before updating
Unlinked players are **no longer kicked** on join. On Paper they now stay on the server, frozen, until they link. `kick-message` is gone from the Paper `config.yml` — it is replaced by the `freeze-*` keys (a leftover `kick-message` is ignored). Velocity keeps kicking unless you set a `limbo-server` (see below).
### New
- **Freeze instead of kick (Paper).** Unlinked players join, can look around but can't move, build, break, fight, pick up, chat or run commands (`/dg` still works) and take no damage. They are released the moment the link goes through — via Discord, the API or `/dg admin link` — and get the usual welcome message.
- **Tells you what to do.** Chat message, title and a repeating action bar with the link code. The chat message is repeated every `freeze-reminder-seconds` (30).
- **One-click link.** The chat message carries `https://<bot>/discordgate/<code>` (click opens the browser, no typing). The code is clickable too and copies `/mc link <code>`. `link-url` overrides the address; with neither `link-url` nor `bot-api-url` the link line is dropped.
- **Vanilla whitelist no longer hides the prompt.** With `white-list=true`, unlinked players used to be turned away before they could be told how to link; they are now let in and frozen (bans and full-server still apply).
- **Unlinking freezes instead of kicking** — `/dg unlink`, `/dg admin unlink` and `/mc unlink` put an online player straight back into the freeze with a fresh code.
- **Velocity: `limbo-server`.** A proxy can't hold a player in place, so unlinked players are parked on a limbo server of your choice (e.g. NanoLimbo) and get the same prompt there; once linked they are sent to `limbo-return-server` (default: first try-order server). Without `limbo-server` the proxy kicks as before — now with the clickable-link text — rather than let unlinked players onto a real server.
### Fixed
- Velocity: the default `kick-message` / `locked-message` used a doubled backslash and printed a literal `\n` instead of a line break.
- `/dg` for an unlinked player shows the same prompt (with link) as the freeze.
## v1.5.1 — Link-Code Fix
### Fixed
- **Link code no longer changes on every join attempt.** Each connection attempt minted a new code and invalidated the previous one, so the code on the kick screen a player was about to type could already be dead — reported as "the code is not the actual code" / "invalid or expired right after I got it". Re-issuing now returns the *same* code with a refreshed expiry until it runs out (`token-ttl-minutes`).
- `{code}` and `{token}` are now both accepted in `kick-message` on both platforms. Paper only replaced `{code}`, Velocity only `{token}`, so a config copied across platforms put the literal placeholder on the kick screen.
- A failed `GET /dg/token/{code}` is logged (`Token lookup miss: <code> (N pending)`), so a support case can tell a wrong code apart from a bot that never reached the server.
## v1.5.0 — Status Board & Latest MC
### ⚠️ Read before updating
The HTTP API now **refuses to start** while `secret` is still `CHANGE-ME` or empty. Anyone who knew the default could whitelist themselves through `/dg/whitelist`. Set a real secret first — otherwise the plugin loads but the API stays offline.
### New
- **Runs on the latest Minecraft.** Built against the Paper 26.2 API, still supported down to **1.20.6**.
- **`GET /dg/stats`** — one call for a status snapshot: online state, platform + MC version, uptime, players, TPS/MSPT, and the per-backend split on Velocity.
- **ViaVersion aware.** Reports which client versions can actually connect. Detected at runtime — ViaVersion/ViaBackwards/ViaRewind stay optional.
- **Live status board in Discord.** BaxiBot keeps a self-updating embed in a channel you pick. Pick it under **MC Link** in the dashboard.
- **`/mc whois`** — look up who owns a Minecraft name, or which account a member has, skin head included. Open to everyone, unlike `/mc admin lookup`.
- **`events-relay-source`** — join/quit relaying no longer piggybacks on `chat-relay-source`. Leave it unset to keep current behaviour.
### Fixed
- Update notice in-game checked an unregistered permission (`discordgate.admin`), so only OPs ever saw it — now `dg.admin`.
- API server leaked two threads on every `/reload`.
### Internal
Paper and Velocity now share one code base for link storage, HTTP handling and bot calls instead of two near-identical copies. No behaviour change — data files and every endpoint are untouched.
release
DiscordGate 1.5.3 (Velocity)
1.5.3+velocity23 окт. 2026 г.12Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3velocity
Что нового
## Unreleased — Freeze instead of kick
### ⚠️ Read before updating
Unlinked players are **no longer kicked** on join. On Paper they now stay on the server, frozen, until they link. `kick-message` is gone from the Paper `config.yml` — it is replaced by the `freeze-*` keys (a leftover `kick-message` is ignored). Velocity keeps kicking unless you set a `limbo-server` (see below).
### New
- **Freeze instead of kick (Paper).** Unlinked players join, can look around but can't move, build, break, fight, pick up, chat or run commands (`/dg` still works) and take no damage. They are released the moment the link goes through — via Discord, the API or `/dg admin link` — and get the usual welcome message.
- **Tells you what to do.** Chat message, title and a repeating action bar with the link code. The chat message is repeated every `freeze-reminder-seconds` (30).
- **One-click link.** The chat message carries `https://<bot>/discordgate/<code>` (click opens the browser, no typing). The code is clickable too and copies `/mc link <code>`. `link-url` overrides the address; with neither `link-url` nor `bot-api-url` the link line is dropped.
- **Vanilla whitelist no longer hides the prompt.** With `white-list=true`, unlinked players used to be turned away before they could be told how to link; they are now let in and frozen (bans and full-server still apply).
- **Unlinking freezes instead of kicking** — `/dg unlink`, `/dg admin unlink` and `/mc unlink` put an online player straight back into the freeze with a fresh code.
- **Velocity: `limbo-server`.** A proxy can't hold a player in place, so unlinked players are parked on a limbo server of your choice (e.g. NanoLimbo) and get the same prompt there; once linked they are sent to `limbo-return-server` (default: first try-order server). Without `limbo-server` the proxy kicks as before — now with the clickable-link text — rather than let unlinked players onto a real server.
### Fixed
- Velocity: the default `kick-message` / `locked-message` used a doubled backslash and printed a literal `\n` instead of a line break.
- `/dg` for an unlinked player shows the same prompt (with link) as the freeze.
## v1.5.1 — Link-Code Fix
### Fixed
- **Link code no longer changes on every join attempt.** Each connection attempt minted a new code and invalidated the previous one, so the code on the kick screen a player was about to type could already be dead — reported as "the code is not the actual code" / "invalid or expired right after I got it". Re-issuing now returns the *same* code with a refreshed expiry until it runs out (`token-ttl-minutes`).
- `{code}` and `{token}` are now both accepted in `kick-message` on both platforms. Paper only replaced `{code}`, Velocity only `{token}`, so a config copied across platforms put the literal placeholder on the kick screen.
- A failed `GET /dg/token/{code}` is logged (`Token lookup miss: <code> (N pending)`), so a support case can tell a wrong code apart from a bot that never reached the server.
## v1.5.0 — Status Board & Latest MC
### ⚠️ Read before updating
The HTTP API now **refuses to start** while `secret` is still `CHANGE-ME` or empty. Anyone who knew the default could whitelist themselves through `/dg/whitelist`. Set a real secret first — otherwise the plugin loads but the API stays offline.
### New
- **Runs on the latest Minecraft.** Built against the Paper 26.2 API, still supported down to **1.20.6**.
- **`GET /dg/stats`** — one call for a status snapshot: online state, platform + MC version, uptime, players, TPS/MSPT, and the per-backend split on Velocity.
- **ViaVersion aware.** Reports which client versions can actually connect. Detected at runtime — ViaVersion/ViaBackwards/ViaRewind stay optional.
- **Live status board in Discord.** BaxiBot keeps a self-updating embed in a channel you pick. Pick it under **MC Link** in the dashboard.
- **`/mc whois`** — look up who owns a Minecraft name, or which account a member has, skin head included. Open to everyone, unlike `/mc admin lookup`.
- **`events-relay-source`** — join/quit relaying no longer piggybacks on `chat-relay-source`. Leave it unset to keep current behaviour.
### Fixed
- Update notice in-game checked an unregistered permission (`discordgate.admin`), so only OPs ever saw it — now `dg.admin`.
- API server leaked two threads on every `/reload`.
### Internal
Paper and Velocity now share one code base for link storage, HTTP handling and bot calls instead of two near-identical copies. No behaviour change — data files and every endpoint are untouched.
release
DiscordGate 1.5.3 (Paper)
1.5.323 окт. 2026 г.17Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3folia, paper, purpur
Что нового
## Unreleased — Freeze instead of kick
### ⚠️ Read before updating
Unlinked players are **no longer kicked** on join. On Paper they now stay on the server, frozen, until they link. `kick-message` is gone from the Paper `config.yml` — it is replaced by the `freeze-*` keys (a leftover `kick-message` is ignored). Velocity keeps kicking unless you set a `limbo-server` (see below).
### New
- **Freeze instead of kick (Paper).** Unlinked players join, can look around but can't move, build, break, fight, pick up, chat or run commands (`/dg` still works) and take no damage. They are released the moment the link goes through — via Discord, the API or `/dg admin link` — and get the usual welcome message.
- **Tells you what to do.** Chat message, title and a repeating action bar with the link code. The chat message is repeated every `freeze-reminder-seconds` (30).
- **One-click link.** The chat message carries `https://<bot>/discordgate/<code>` (click opens the browser, no typing). The code is clickable too and copies `/mc link <code>`. `link-url` overrides the address; with neither `link-url` nor `bot-api-url` the link line is dropped.
- **Vanilla whitelist no longer hides the prompt.** With `white-list=true`, unlinked players used to be turned away before they could be told how to link; they are now let in and frozen (bans and full-server still apply).
- **Unlinking freezes instead of kicking** — `/dg unlink`, `/dg admin unlink` and `/mc unlink` put an online player straight back into the freeze with a fresh code.
- **Velocity: `limbo-server`.** A proxy can't hold a player in place, so unlinked players are parked on a limbo server of your choice (e.g. NanoLimbo) and get the same prompt there; once linked they are sent to `limbo-return-server` (default: first try-order server). Without `limbo-server` the proxy kicks as before — now with the clickable-link text — rather than let unlinked players onto a real server.
### Fixed
- Velocity: the default `kick-message` / `locked-message` used a doubled backslash and printed a literal `\n` instead of a line break.
- `/dg` for an unlinked player shows the same prompt (with link) as the freeze.
## v1.5.1 — Link-Code Fix
### Fixed
- **Link code no longer changes on every join attempt.** Each connection attempt minted a new code and invalidated the previous one, so the code on the kick screen a player was about to type could already be dead — reported as "the code is not the actual code" / "invalid or expired right after I got it". Re-issuing now returns the *same* code with a refreshed expiry until it runs out (`token-ttl-minutes`).
- `{code}` and `{token}` are now both accepted in `kick-message` on both platforms. Paper only replaced `{code}`, Velocity only `{token}`, so a config copied across platforms put the literal placeholder on the kick screen.
- A failed `GET /dg/token/{code}` is logged (`Token lookup miss: <code> (N pending)`), so a support case can tell a wrong code apart from a bot that never reached the server.
## v1.5.0 — Status Board & Latest MC
### ⚠️ Read before updating
The HTTP API now **refuses to start** while `secret` is still `CHANGE-ME` or empty. Anyone who knew the default could whitelist themselves through `/dg/whitelist`. Set a real secret first — otherwise the plugin loads but the API stays offline.
### New
- **Runs on the latest Minecraft.** Built against the Paper 26.2 API, still supported down to **1.20.6**.
- **`GET /dg/stats`** — one call for a status snapshot: online state, platform + MC version, uptime, players, TPS/MSPT, and the per-backend split on Velocity.
- **ViaVersion aware.** Reports which client versions can actually connect. Detected at runtime — ViaVersion/ViaBackwards/ViaRewind stay optional.
- **Live status board in Discord.** BaxiBot keeps a self-updating embed in a channel you pick. Pick it under **MC Link** in the dashboard.
- **`/mc whois`** — look up who owns a Minecraft name, or which account a member has, skin head included. Open to everyone, unlike `/mc admin lookup`.
- **`events-relay-source`** — join/quit relaying no longer piggybacks on `chat-relay-source`. Leave it unset to keep current behaviour.
### Fixed
- Update notice in-game checked an unregistered permission (`discordgate.admin`), so only OPs ever saw it — now `dg.admin`.
- API server leaked two threads on every `/reload`.
### Internal
Paper and Velocity now share one code base for link storage, HTTP handling and bot calls instead of two near-identical copies. No behaviour change — data files and every endpoint are untouched.
release
DiscordGate 1.5.2 (Velocity)
1.5.2+velocity19 окт. 2026 г.14Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3velocity
Что нового
## Unreleased — Freeze instead of kick
### ⚠️ Read before updating
Unlinked players are **no longer kicked** on join. On Paper they now stay on the server, frozen, until they link. `kick-message` is gone from the Paper `config.yml` — it is replaced by the `freeze-*` keys (a leftover `kick-message` is ignored). Velocity keeps kicking unless you set a `limbo-server` (see below).
### New
- **Freeze instead of kick (Paper).** Unlinked players join, can look around but can't move, build, break, fight, pick up, chat or run commands (`/dg` still works) and take no damage. They are released the moment the link goes through — via Discord, the API or `/dg admin link` — and get the usual welcome message.
- **Tells you what to do.** Chat message, title and a repeating action bar with the link code. The chat message is repeated every `freeze-reminder-seconds` (30).
- **One-click link.** The chat message carries `https://<bot>/discordgate/<code>` (click opens the browser, no typing). The code is clickable too and copies `/mc link <code>`. `link-url` overrides the address; with neither `link-url` nor `bot-api-url` the link line is dropped.
- **Vanilla whitelist no longer hides the prompt.** With `white-list=true`, unlinked players used to be turned away before they could be told how to link; they are now let in and frozen (bans and full-server still apply).
- **Unlinking freezes instead of kicking** — `/dg unlink`, `/dg admin unlink` and `/mc unlink` put an online player straight back into the freeze with a fresh code.
- **Velocity: `limbo-server`.** A proxy can't hold a player in place, so unlinked players are parked on a limbo server of your choice (e.g. NanoLimbo) and get the same prompt there; once linked they are sent to `limbo-return-server` (default: first try-order server). Without `limbo-server` the proxy kicks as before — now with the clickable-link text — rather than let unlinked players onto a real server.
### Fixed
- Velocity: the default `kick-message` / `locked-message` used a doubled backslash and printed a literal `\n` instead of a line break.
- `/dg` for an unlinked player shows the same prompt (with link) as the freeze.
## v1.5.1 — Link-Code Fix
### Fixed
- **Link code no longer changes on every join attempt.** Each connection attempt minted a new code and invalidated the previous one, so the code on the kick screen a player was about to type could already be dead — reported as "the code is not the actual code" / "invalid or expired right after I got it". Re-issuing now returns the *same* code with a refreshed expiry until it runs out (`token-ttl-minutes`).
- `{code}` and `{token}` are now both accepted in `kick-message` on both platforms. Paper only replaced `{code}`, Velocity only `{token}`, so a config copied across platforms put the literal placeholder on the kick screen.
- A failed `GET /dg/token/{code}` is logged (`Token lookup miss: <code> (N pending)`), so a support case can tell a wrong code apart from a bot that never reached the server.
## v1.5.0 — Status Board & Latest MC
### ⚠️ Read before updating
The HTTP API now **refuses to start** while `secret` is still `CHANGE-ME` or empty. Anyone who knew the default could whitelist themselves through `/dg/whitelist`. Set a real secret first — otherwise the plugin loads but the API stays offline.
### New
- **Runs on the latest Minecraft.** Built against the Paper 26.2 API, still supported down to **1.20.6**.
- **`GET /dg/stats`** — one call for a status snapshot: online state, platform + MC version, uptime, players, TPS/MSPT, and the per-backend split on Velocity.
- **ViaVersion aware.** Reports which client versions can actually connect. Detected at runtime — ViaVersion/ViaBackwards/ViaRewind stay optional.
- **Live status board in Discord.** BaxiBot keeps a self-updating embed in a channel you pick. Pick it under **MC Link** in the dashboard.
- **`/mc whois`** — look up who owns a Minecraft name, or which account a member has, skin head included. Open to everyone, unlike `/mc admin lookup`.
- **`events-relay-source`** — join/quit relaying no longer piggybacks on `chat-relay-source`. Leave it unset to keep current behaviour.
### Fixed
- Update notice in-game checked an unregistered permission (`discordgate.admin`), so only OPs ever saw it — now `dg.admin`.
- API server leaked two threads on every `/reload`.
### Internal
Paper and Velocity now share one code base for link storage, HTTP handling and bot calls instead of two near-identical copies. No behaviour change — data files and every endpoint are untouched.
release
DiscordGate 1.5.2 (Paper)
1.5.219 окт. 2026 г.14Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3folia, paper, purpur
Что нового
## Unreleased — Freeze instead of kick
### ⚠️ Read before updating
Unlinked players are **no longer kicked** on join. On Paper they now stay on the server, frozen, until they link. `kick-message` is gone from the Paper `config.yml` — it is replaced by the `freeze-*` keys (a leftover `kick-message` is ignored). Velocity keeps kicking unless you set a `limbo-server` (see below).
### New
- **Freeze instead of kick (Paper).** Unlinked players join, can look around but can't move, build, break, fight, pick up, chat or run commands (`/dg` still works) and take no damage. They are released the moment the link goes through — via Discord, the API or `/dg admin link` — and get the usual welcome message.
- **Tells you what to do.** Chat message, title and a repeating action bar with the link code. The chat message is repeated every `freeze-reminder-seconds` (30).
- **One-click link.** The chat message carries `https://<bot>/discordgate/<code>` (click opens the browser, no typing). The code is clickable too and copies `/mc link <code>`. `link-url` overrides the address; with neither `link-url` nor `bot-api-url` the link line is dropped.
- **Vanilla whitelist no longer hides the prompt.** With `white-list=true`, unlinked players used to be turned away before they could be told how to link; they are now let in and frozen (bans and full-server still apply).
- **Unlinking freezes instead of kicking** — `/dg unlink`, `/dg admin unlink` and `/mc unlink` put an online player straight back into the freeze with a fresh code.
- **Velocity: `limbo-server`.** A proxy can't hold a player in place, so unlinked players are parked on a limbo server of your choice (e.g. NanoLimbo) and get the same prompt there; once linked they are sent to `limbo-return-server` (default: first try-order server). Without `limbo-server` the proxy kicks as before — now with the clickable-link text — rather than let unlinked players onto a real server.
### Fixed
- Velocity: the default `kick-message` / `locked-message` used a doubled backslash and printed a literal `\n` instead of a line break.
- `/dg` for an unlinked player shows the same prompt (with link) as the freeze.
## v1.5.1 — Link-Code Fix
### Fixed
- **Link code no longer changes on every join attempt.** Each connection attempt minted a new code and invalidated the previous one, so the code on the kick screen a player was about to type could already be dead — reported as "the code is not the actual code" / "invalid or expired right after I got it". Re-issuing now returns the *same* code with a refreshed expiry until it runs out (`token-ttl-minutes`).
- `{code}` and `{token}` are now both accepted in `kick-message` on both platforms. Paper only replaced `{code}`, Velocity only `{token}`, so a config copied across platforms put the literal placeholder on the kick screen.
- A failed `GET /dg/token/{code}` is logged (`Token lookup miss: <code> (N pending)`), so a support case can tell a wrong code apart from a bot that never reached the server.
## v1.5.0 — Status Board & Latest MC
### ⚠️ Read before updating
The HTTP API now **refuses to start** while `secret` is still `CHANGE-ME` or empty. Anyone who knew the default could whitelist themselves through `/dg/whitelist`. Set a real secret first — otherwise the plugin loads but the API stays offline.
### New
- **Runs on the latest Minecraft.** Built against the Paper 26.2 API, still supported down to **1.20.6**.
- **`GET /dg/stats`** — one call for a status snapshot: online state, platform + MC version, uptime, players, TPS/MSPT, and the per-backend split on Velocity.
- **ViaVersion aware.** Reports which client versions can actually connect. Detected at runtime — ViaVersion/ViaBackwards/ViaRewind stay optional.
- **Live status board in Discord.** BaxiBot keeps a self-updating embed in a channel you pick. Pick it under **MC Link** in the dashboard.
- **`/mc whois`** — look up who owns a Minecraft name, or which account a member has, skin head included. Open to everyone, unlike `/mc admin lookup`.
- **`events-relay-source`** — join/quit relaying no longer piggybacks on `chat-relay-source`. Leave it unset to keep current behaviour.
### Fixed
- Update notice in-game checked an unregistered permission (`discordgate.admin`), so only OPs ever saw it — now `dg.admin`.
- API server leaked two threads on every `/reload`.
### Internal
Paper and Velocity now share one code base for link storage, HTTP handling and bot calls instead of two near-identical copies. No behaviour change — data files and every endpoint are untouched.
release
DiscordGate 1.5.1 (Velocity)
1.5.1+velocity11 окт. 2026 г.6Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3velocity
Что нового
## v1.5.1 — Link-Code Fix
### Fixed
- **Link code no longer changes on every join attempt.** Each connection attempt minted a new code and invalidated the previous one, so the code on the kick screen a player was about to type could already be dead — reported as "the code is not the actual code" / "invalid or expired right after I got it". Re-issuing now returns the *same* code with a refreshed expiry until it runs out (`token-ttl-minutes`).
- `{code}` and `{token}` are now both accepted in `kick-message` on both platforms. Paper only replaced `{code}`, Velocity only `{token}`, so a config copied across platforms put the literal placeholder on the kick screen.
- A failed `GET /dg/token/{code}` is logged (`Token lookup miss: <code> (N pending)`), so a support case can tell a wrong code apart from a bot that never reached the server.
## v1.5.0 — Status Board & Latest MC
### ⚠️ Read before updating
The HTTP API now **refuses to start** while `secret` is still `CHANGE-ME` or empty. Anyone who knew the default could whitelist themselves through `/dg/whitelist`. Set a real secret first — otherwise the plugin loads but the API stays offline.
### New
- **Runs on the latest Minecraft.** Built against the Paper 26.2 API, still supported down to **1.20.6**.
- **`GET /dg/stats`** — one call for a status snapshot: online state, platform + MC version, uptime, players, TPS/MSPT, and the per-backend split on Velocity.
- **ViaVersion aware.** Reports which client versions can actually connect. Detected at runtime — ViaVersion/ViaBackwards/ViaRewind stay optional.
- **Live status board in Discord.** BaxiBot keeps a self-updating embed in a channel you pick. Pick it under **MC Link** in the dashboard.
- **`/mc whois`** — look up who owns a Minecraft name, or which account a member has, skin head included. Open to everyone, unlike `/mc admin lookup`.
- **`events-relay-source`** — join/quit relaying no longer piggybacks on `chat-relay-source`. Leave it unset to keep current behaviour.
### Fixed
- Update notice in-game checked an unregistered permission (`discordgate.admin`), so only OPs ever saw it — now `dg.admin`.
- API server leaked two threads on every `/reload`.
### Internal
Paper and Velocity now share one code base for link storage, HTTP handling and bot calls instead of two near-identical copies. No behaviour change — data files and every endpoint are untouched.
release
DiscordGate 1.5.1 (Paper)
1.5.111 окт. 2026 г.20Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3folia, paper, purpur
Что нового
## v1.5.1 — Link-Code Fix
### Fixed
- **Link code no longer changes on every join attempt.** Each connection attempt minted a new code and invalidated the previous one, so the code on the kick screen a player was about to type could already be dead — reported as "the code is not the actual code" / "invalid or expired right after I got it". Re-issuing now returns the *same* code with a refreshed expiry until it runs out (`token-ttl-minutes`).
- `{code}` and `{token}` are now both accepted in `kick-message` on both platforms. Paper only replaced `{code}`, Velocity only `{token}`, so a config copied across platforms put the literal placeholder on the kick screen.
- A failed `GET /dg/token/{code}` is logged (`Token lookup miss: <code> (N pending)`), so a support case can tell a wrong code apart from a bot that never reached the server.
## v1.5.0 — Status Board & Latest MC
### ⚠️ Read before updating
The HTTP API now **refuses to start** while `secret` is still `CHANGE-ME` or empty. Anyone who knew the default could whitelist themselves through `/dg/whitelist`. Set a real secret first — otherwise the plugin loads but the API stays offline.
### New
- **Runs on the latest Minecraft.** Built against the Paper 26.2 API, still supported down to **1.20.6**.
- **`GET /dg/stats`** — one call for a status snapshot: online state, platform + MC version, uptime, players, TPS/MSPT, and the per-backend split on Velocity.
- **ViaVersion aware.** Reports which client versions can actually connect. Detected at runtime — ViaVersion/ViaBackwards/ViaRewind stay optional.
- **Live status board in Discord.** BaxiBot keeps a self-updating embed in a channel you pick. Pick it under **MC Link** in the dashboard.
- **`/mc whois`** — look up who owns a Minecraft name, or which account a member has, skin head included. Open to everyone, unlike `/mc admin lookup`.
- **`events-relay-source`** — join/quit relaying no longer piggybacks on `chat-relay-source`. Leave it unset to keep current behaviour.
### Fixed
- Update notice in-game checked an unregistered permission (`discordgate.admin`), so only OPs ever saw it — now `dg.admin`.
- API server leaked two threads on every `/reload`.
### Internal
Paper and Velocity now share one code base for link storage, HTTP handling and bot calls instead of two near-identical copies. No behaviour change — data files and every endpoint are untouched.
release
DiscordGate 1.5.1 (Velocity)
1.5.1+velocity11 окт. 2026 г.4Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2velocity
Что нового
## v1.5.1 — Link-Code Fix
### Fixed
- **Link code no longer changes on every join attempt.** Each connection attempt minted a new code and invalidated the previous one, so the code on the kick screen a player was about to type could already be dead — reported as "the code is not the actual code" / "invalid or expired right after I got it". Re-issuing now returns the *same* code with a refreshed expiry until it runs out (`token-ttl-minutes`).
- `{code}` and `{token}` are now both accepted in `kick-message` on both platforms. Paper only replaced `{code}`, Velocity only `{token}`, so a config copied across platforms put the literal placeholder on the kick screen.
- A failed `GET /dg/token/{code}` is logged (`Token lookup miss: <code> (N pending)`), so a support case can tell a wrong code apart from a bot that never reached the server.
## v1.5.0 — Status Board & Latest MC
### ⚠️ Read before updating
The HTTP API now **refuses to start** while `secret` is still `CHANGE-ME` or empty. Anyone who knew the default could whitelist themselves through `/dg/whitelist`. Set a real secret first — otherwise the plugin loads but the API stays offline.
### New
- **Runs on the latest Minecraft.** Built against the Paper 26.2 API, still supported down to **1.20.6**.
- **`GET /dg/stats`** — one call for a status snapshot: online state, platform + MC version, uptime, players, TPS/MSPT, and the per-backend split on Velocity.
- **ViaVersion aware.** Reports which client versions can actually connect. Detected at runtime — ViaVersion/ViaBackwards/ViaRewind stay optional.
- **Live status board in Discord.** BaxiBot keeps a self-updating embed in a channel you pick. Pick it under **MC Link** in the dashboard.
- **`/mc whois`** — look up who owns a Minecraft name, or which account a member has, skin head included. Open to everyone, unlike `/mc admin lookup`.
- **`events-relay-source`** — join/quit relaying no longer piggybacks on `chat-relay-source`. Leave it unset to keep current behaviour.
### Fixed
- Update notice in-game checked an unregistered permission (`discordgate.admin`), so only OPs ever saw it — now `dg.admin`.
- API server leaked two threads on every `/reload`.
### Internal
Paper and Velocity now share one code base for link storage, HTTP handling and bot calls instead of two near-identical copies. No behaviour change — data files and every endpoint are untouched.
release
DiscordGate 1.5.1 (Paper)
1.5.111 окт. 2026 г.4Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2folia, paper, purpur
Что нового
## v1.5.1 — Link-Code Fix
### Fixed
- **Link code no longer changes on every join attempt.** Each connection attempt minted a new code and invalidated the previous one, so the code on the kick screen a player was about to type could already be dead — reported as "the code is not the actual code" / "invalid or expired right after I got it". Re-issuing now returns the *same* code with a refreshed expiry until it runs out (`token-ttl-minutes`).
- `{code}` and `{token}` are now both accepted in `kick-message` on both platforms. Paper only replaced `{code}`, Velocity only `{token}`, so a config copied across platforms put the literal placeholder on the kick screen.
- A failed `GET /dg/token/{code}` is logged (`Token lookup miss: <code> (N pending)`), so a support case can tell a wrong code apart from a bot that never reached the server.
## v1.5.0 — Status Board & Latest MC
### ⚠️ Read before updating
The HTTP API now **refuses to start** while `secret` is still `CHANGE-ME` or empty. Anyone who knew the default could whitelist themselves through `/dg/whitelist`. Set a real secret first — otherwise the plugin loads but the API stays offline.
### New
- **Runs on the latest Minecraft.** Built against the Paper 26.2 API, still supported down to **1.20.6**.
- **`GET /dg/stats`** — one call for a status snapshot: online state, platform + MC version, uptime, players, TPS/MSPT, and the per-backend split on Velocity.
- **ViaVersion aware.** Reports which client versions can actually connect. Detected at runtime — ViaVersion/ViaBackwards/ViaRewind stay optional.
- **Live status board in Discord.** BaxiBot keeps a self-updating embed in a channel you pick. Pick it under **MC Link** in the dashboard.
- **`/mc whois`** — look up who owns a Minecraft name, or which account a member has, skin head included. Open to everyone, unlike `/mc admin lookup`.
- **`events-relay-source`** — join/quit relaying no longer piggybacks on `chat-relay-source`. Leave it unset to keep current behaviour.
### Fixed
- Update notice in-game checked an unregistered permission (`discordgate.admin`), so only OPs ever saw it — now `dg.admin`.
- API server leaked two threads on every `/reload`.
### Internal
Paper and Velocity now share one code base for link storage, HTTP handling and bot calls instead of two near-identical copies. No behaviour change — data files and every endpoint are untouched.



