Per-player AI chat translation and country flags. Paper, Folia, Velocity, BungeeCord.
One chat. Every language. A little more of home.
BetterChat translates player chat into each listener's chosen language and shows a country flag beside player names. Players who speak different languages can share one chat, and everyone reads it in their own.
See it in action
Switch language at any time and the same conversation follows you. Here: romanized Bengali, then Russian.
Each player reads the chat in their own language, with the sender's flag beside the name.
/bc menu opens one screen for your language, your flag and automatic country detection.
A paged, searchable list. Your current choice is highlighted with a check mark.
Type a name or code to filter the list, for example japanese.
249 country flags plus the global Earth flag, in paged lists.
Type part of a country name to narrow the list.
The console logs the original message and the translated line for each language.
Features
- Recipient-aware translation: only the languages your real listeners need are requested, not every language on the server.
- Many AI providers: Gemini, OpenAI-compatible APIs, Anthropic, xAI, Groq, OpenRouter and local Ollama.
- Resilient: multiple keys and models per provider, automatic fallback, request batching and caching. A key that returns HTTP 429 is skipped until restart.
- Any language: Minecraft locales, Java's ISO-639 list, and custom names or codes. Languages outside Minecraft's locale list are returned in Latin-letter romanization (Bengali becomes
Ekhane Asho). - Easy menus:
/bc menuopens a settings screen with searchable, paged language and flag pickers and an automatic-country toggle. /translate <language> <text>: one-off translations through the same queue and cache.- Country flags: 249 country flags plus a global Earth flag in chat, the tab list and optional overhead nametags.
- Flag resource pack: a generated pack with crisp flag glyphs from Twemoji artwork. Unicode emoji are the fallback.
- Player control: set language and flag, or opt out of translation with
/translation offto always see the original. - Optional IP-based country detection: plus language and country blacklists.
- Integrations: PlaceholderAPI, LuckPerms and Vault groups, VentureChat (local channels), and formatters that use Paper's
ChatRenderer. - Networks: Velocity and BungeeCord jars with shared MariaDB storage and HMAC-signed chat relay. SQLite for a single server.
- Modern: MiniMessage formats, Adventure components and Folia support.
Requirements
- Java 25
- Paper 26.2 / 26.3 or compatible Folia
- MariaDB for proxy mode (SQLite for a standalone server)
- A translation provider key or a reachable Ollama endpoint (optional until you enable translation)
Quick start
- Put
BetterChat-Paper-*.jarinplugins/and start the server once. - Open
plugins/BetterChat/ai.yml, add a provider key undertranslation.providers, and setchat.translation-enabled: true. - Restart, then use
/bc menuto choose a language and flag. - Recommended: set up the flag resource pack (see below) so flags show as crisp glyphs.
Proxy networks: install the Velocity or BungeeCord jar on the proxy and the Paper jar on every backend. Use the same MariaDB database and the same 32+ character secret everywhere.
Flag resource pack (recommended)
Flags look best with the included resource pack: 249 country flags and a rectangular Earth flag, drawn as crisp glyphs in the betterchat:flags font from Twemoji artwork. The pack is optional. Without it, BetterChat falls back to Unicode flag emoji, and the flag buttons in the menus show emoji instead of glyphs.
- Download
BetterChat-Flags-*.zipfrom the release assets. Its SHA-1 is inRESOURCE-PACK-SHA1.txtin the same bundle. - Upload the ZIP to a public HTTPS URL that returns the file directly. A file path on your server is not enough.
- One pack covers Minecraft Java 26.2 and 26.3 (resource pack formats 88.0 to 97.1).
Option A: send it with Paper (simplest)
resource-pack=https://example.com/BetterChat-Flags.zip
resource-pack-sha1=YOUR_40_CHARACTER_SHA1
resource-pack-prompt=Install BetterChat Flags to see country flags.
require-resource-pack=false
Then set flags.resource-pack.use-glyphs: true in plugins/BetterChat/config.yml and leave flags.resource-pack.enabled: false so the pack isn't sent twice.
Option B: let BetterChat send it
flags:
resource-pack:
enabled: true
url: 'https://example.com/BetterChat-Flags.zip'
sha1: 'YOUR_40_CHARACTER_SHA1'
prompt: 'Install BetterChat Flags to see country flags.'
required: false
use-glyphs: true
Good to know
- If both options use the same URL, BetterChat detects it and avoids a duplicate prompt.
- On a proxy network, repeat your chosen setup on every backend so players get the same font everywhere.
- Keep
required: falseunless you want to block players who don't accept the pack. - Flags show as letters or empty boxes? The pack isn't installed yet, or
use-glyphsis off. The emoji fallback works until the pack is hosted and accepted. - Other chat plugins:
%betterchat_flag_glyph%only renders correctly if that plugin applies thebetterchat:flagsfont. Otherwise use%betterchat_flag%(emoji).
Commands and permissions
| Command | Description |
|---|---|
/bc or /bc menu |
Open the settings menu (language, flag, auto country) |
/bc language <language> |
Set your language by code or name (en_us, bn, Toki Pona) |
/bc flag <country|earth> |
Set your flag by code or name, or earth / global |
/translation <on|off> |
Receive translated chat, or always the original |
/translate <language> <text> |
Translate one message |
/bc auto [on|off] |
Toggle IP-based country detection |
/bc set <player> <language|flag> <value> |
Admin: change a player's preference |
/bc reload |
Admin: reload configuration |
betterchat.use and betterchat.translate are granted to everyone by default. betterchat.admin (op) covers /bc set and /bc reload.
Privacy
When translation is on, chat text is sent to the provider you configure, so review that provider's data terms. The optional IP lookup sends the player's IP to the configured endpoint (default ipapi.co) and does not store it. bStats is anonymous and can be disabled in the config.
Links
Source and documentation | Report an issue
Flag artwork: Twemoji, CC BY 4.0. BetterChat is not affiliated with Twemoji or VentureChat.
Pinned Versions
- R26.1–26.31.214.2.1
Pages
Members
1Owner