
Celestial Whitelister
A Paper plugin for whitelist management that integrates with LuckPerms
Celestial Whitelister
A Paper plugin that lets players whitelist themselves through a Discord /whitelist slash command. When someone uses the command, the plugin adds them to the Minecraft server whitelist and assigns a LuckPerms group based on their Discord roles.
Requirements
- Paper 1.21.4+
- LuckPerms
- A Discord bot token (how to create one)
Installation
- Drop the plugin JAR into your server's
plugins/folder. - Start the server once to generate the default
config.yml. - Edit
plugins/CelestialWhitelister/config.ymlwith your Discord bot token and role mappings. - Restart the server or run
/celestialwhitelister reload.
Make sure your Discord bot has been invited to your guild with the applications.commands and bot scopes.
How It Works
- A member runs
/whitelist <nickname>in your Discord server. - The plugin checks whether the member is allowed to use the command (channel and role restrictions, if enabled).
- It looks up which LuckPerms group the member should receive based on their Discord roles and the
role-groupsmapping. - It resolves the Minecraft username to a UUID, adds the player to the server whitelist, and assigns the LuckPerms group.
- The member receives a private (ephemeral) response in Discord confirming the result.
Configuration
The config file is located at plugins/CelestialWhitelister/config.yml.
# Discord bot token
discord-token: "YOUR_BOT_TOKEN_HERE"
# Language for plugin messages. Must match the name of a .ftl file
# in the messages folder (e.g. "en" for en.ftl, "es" for es.ftl).
language: "en"
# Mapping of Discord role IDs to LuckPerms group names.
# Players will be added to the LuckPerms group corresponding to
# the highest role they have from this list.
# Format: "discord_role_id": "luckperms_group_name"
role-groups:
"123456789012345678": "vip"
"987654321098765432": "member"
# The default LuckPerms group to assign if the user has none of the mapped roles.
# Leave empty to not assign any group if no roles match.
default-group: "default"
# UUID resolution, only applies to offline-mode servers.
# When enabled, the plugin will try to resolve the player's online (Mojang) UUID first,
# falling back to an offline UUID if the player doesn't have a Mojang account.
# On online-mode servers, online UUIDs are always used regardless of this setting.
force-online-uuids: false
# Channel restriction, when enabled, the /whitelist command will only work
# in the listed Discord channel IDs.
channel-restriction:
enabled: false
channels:
- "111111111111111111"
- "222222222222222222"
# Role requirement, when enabled, users must have at least one of the listed
# Discord role IDs to use /whitelist. This is checked independently of the
# role-groups mapping above.
required-roles:
enabled: false
roles:
- "333333333333333333"
- "444444444444444444"
# One-time whitelist restriction. When enabled, each Discord user can only
# use /whitelist once. Their entry is stored in a local SQLite database.
# Users can change their whitelisted nickname using /changenick instead.
one-time-whitelist: true
## Localization
CelestialWhitelister supports multiple languages using Project Fluent, a localization framework designed for natural, fluent translations.
### Supported Languages
Currently supported languages:
- **English** (en)
- **Spanish** (es)
The plugin automatically selects the appropriate language file based on the `.ftl` files present in the `messages/` directory.
### Translation Files
Translation files are stored at `plugins/CelestialWhitelister/messages/` in Project Fluent format (`.ftl`).
Each language has its own file:
- `en.ftl` - English messages
- `es.ftl` - Spanish messages
### Adding a New Language
To add a new language:
1. Create a new `.ftl` file in `plugins/CelestialWhitelister/messages/` using the language code as the filename (e.g., `fr.ftl` for French).
2. Translate all message keys from the English `en.ftl` file.
3. Reload the plugin with `/celestialwhitelister reload`.
All `.ftl` files in the messages directory are automatically loaded and processed in alphabetical order.
### Options
| Option | Description |
|---|----------------------------------------------------------------------------------------------------------------------------------|
| `discord-token` | The bot token from the Discord Developer Portal. |
| `language` | The language for plugin messages. Must match a `.ftl` file in the messages folder (e.g., `"en"` for `en.ftl`). |
| `role-groups` | A map of Discord role ID to LuckPerms group name. The first role the member has that appears in this map determines their group. |
| `default-group` | The LuckPerms group assigned when no role matches. Set to `""` to reject users with no matching role instead. |
| `force-online-uuids` | When enabled on an **offline mode** server, the plugin will try to resolve the player's online (Mojang) UUID first, |
| `channel-restriction.enabled` | When `true`, the `/whitelist` command only works in the listed channels. |
| `channel-restriction.channels` | List of Discord channel IDs where the command is allowed. |
| `required-roles.enabled` | When `true`, members must have at least one of the listed roles to use the command. |
| `required-roles.roles` | List of Discord role IDs required to use `/whitelist`. |
| `one-time-whitelist` | When `true`, each Discord user can only whitelist once. Use `/changenick` to change the whitelisted nickname. |
## Commands
### In-game
| Command | Alias | Description |
|---|---|---|
| `/celestialwhitelister reload` | `/cw reload` | Reloads the config and restarts the Discord bot. |
### Discord
| Command | Description |
|---|---|
| `/whitelist <nickname>` | Whitelist a Minecraft player and assign their LuckPerms group. |
| `/changenick <nickname>` | Change your whitelisted nickname (only available when `one-time-whitelist` is enabled). |
## Permissions
| Permission | Description | Default |
|---|---|---|
| `celestialwhitelister.reload` | Allows using `/celestialwhitelister reload`. | OP |
## Building
Requires Java 21+.
```sh
./gradlew build
The compiled JAR will be in build/libs/.
Сервер для плагина Celestial Whitelister - как у профи
Плагин Celestial Whitelister создан для серверов: на своём сервере вы настраиваете его под себя и решаете, кому играть. Создать сервер с плагином Celestial Whitelister для друзей можно за пару минут - BungeeHost всё уже подготовил.
