
LPC Minimessage - Chat Formatter
A chat formatting with Minimessage Support plugin for LuckPerms.
Автор: Ayont92,3 тыс.82обновлён 5 июл. 2026 г.
ДекорОбщение
Описание

LPC – LuckPerms Chat Formatter ✨
A flexible chat formatting plugin with MiniMessage support for LuckPerms
Modern chat formatting powered by MiniMessage, full LuckPerms metadata support, group/track formats, and PlaceholderAPI.
🧩 Compatibility
| Minecraft | 26.1.2 |
| Server | Paper (recommended) or Spigot |
| Java | 25+ |
🔧 Requirements
- LuckPerms (Required) – Permissions plugin
- PlaceholderAPI (Optional) – Additional placeholders
✅ Features
Formatting
- Full MiniMessage support, with group- and track-specific formats
- Optional PlaceholderAPI integration and
[item]placeholder (hover tooltip on Paper) - Per-rank message styling and per-rank gradient names (
{gradient-name}) - Per-world toggle via
disabled-worlds
Social (on by default)
- @Mention pings – highlight online names + sound/action-bar ping (Paper)
- Emoji shortcuts – e.g.
:heart:→ ❤ (fully configurable) - Clickable links – URLs become
openUrllinks on Paper, coloured on Spigot
Moderation (off by default)
- Anti-spam cooldown, repeated-message blocker, caps filter, profanity mask, anti-advertising
- Per-player mute (
/lpc mute) + LuckPerms mute node for punishment plugins
Server messages (off by default)
- MiniMessage join / quit / first-join / death messages
Quality of life
/lpc reload · version · help · mute · unmutewith tab completion- Built-in Modrinth update checker
- Safe by design – player messages can never inject
click/hover/command components - Works on both Paper (Adventure rendering) and Spigot (legacy fallback)
⌨️ Commands
| Command | Permission | Description |
|---|---|---|
/lpc reload | lpc.reload | Reload the configuration |
/lpc version | – | Show the installed version |
/lpc help | – | List available commands |
/lpc mute <player> [duration] | lpc.mute | Mute a player (e.g. 10m, 2h; omit for permanent) |
/lpc unmute <player> | lpc.mute | Unmute a player |
🧑💼 Permissions
| Permission | Default | Description |
|---|---|---|
lpc.reload | op | Reload the configuration |
lpc.chatcolor | false | Use colour codes & cosmetic MiniMessage tags in chat |
lpc.itemplaceholder | false | Use the [item] placeholder in chat |
lpc.update | op | Receive an update notification on join |
lpc.emoji | true | Use emoji shortcuts (only enforced if emoji.require-permission) |
lpc.chatlinks | true | Have URLs turned into clickable links |
lpc.mention.exempt | false | Opt out of receiving mention pings |
lpc.mute | op | Use /lpc mute and /lpc unmute |
lpc.muted | false | Marks a player as muted (usually set by a punishment plugin) |
lpc.bypass.spam / .repeat / .caps / .profanity / .advert | op | Bypass the matching moderation filter |
ℹ️ Even with
lpc.chatcolor, only cosmetic tags (colours, decorations, and optionally gradients/rainbow) are honoured in player messages. Interactive tags (click,hover,insertion, …) are always stripped.
⚙️ Configuration (config.yml)
# Main chat format (MiniMessage!)
chat-format: "{prefix}{name}<dark_gray> »<reset> {message}"
# Per-group formats (optional)
group-formats:
# default: "<gray>[User]</gray> {name}<dark_gray> »<reset> {message}"
# admin: "<red>[Admin]</red> {name}<dark_gray> »<reset> {message}"
# Per-track formats (optional) – groups take priority over tracks
track-formats:
# staff_track: "<gold>[Staff]</gold> {name}<dark_gray> »<reset> {message}"
# Enable the [item] placeholder
use-item-placeholder: true
# Allow <gradient> / <rainbow> for players with lpc.chatcolor
allow-gradient-tags: true
# Worlds where LPC does NOT format chat
disabled-worlds: []
# Check Modrinth for updates on startup
update-checker: true
# Reload message
reload-message: "<green>Reloaded LPC configuration!"
🪄 Available Placeholders
| Placeholder | Description |
|---|---|
{message} | The chat message (inserted safely, never re-parsed) |
{name} | Player's name |
{displayname} | Display name / nickname |
{world} | Player's current world |
{prefix} / {suffix} | Highest priority prefix / suffix |
{prefixes} / {suffixes} | All prefixes / suffixes, highest priority first |
{username-color} / {message-color} | Colour values from LuckPerms meta |
ℹ️ All colour values (prefix, suffix, etc.) must be in MiniMessage format – no legacy codes (
&a,§b).
🚀 Installation
- Stop your server
- Drop
LPC-<version>.jarinto your/pluginsfolder - Start the server to generate
config.yml - Edit the config to your liking
- Run
/lpc reloadto apply changes ✅
🛠️ Building
./gradlew shadowJar
# output: build/libs/LPC-<version>.jar
Requires JDK 25.
📌 Notes
- Not affiliated with LuckPerms – please do not contact the LuckPerms author for support.
- Legacy version available at: GitHub Legacy LPC
📸 Previews
Chat Format Example

[ITEM] Placeholder Example

🚀 Installation
- Stop your server
- Place the
LPC.jarinto your/pluginsfolder - Start the server to generate configuration files
- Edit the
config.ymlto your liking - Use
/lpc reloadto apply your changes ✅
Галерея
Последние версии
Все версии →release
LPC Minimessage - Chat Formatter 4.4.0
4.4.05 июл. 2026 г.28,3 тыс.Minecraft: 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.2bukkit, folia, paper, purpur, spigot
Что нового
## LPC 4.4.0 — one jar for everything
No more picking the right build. LPC 4.4.0 ships a **single universal jar** that runs on **Paper 1.21.x (incl. 1.21.11) AND Paper 26.2**. Just download `LPC-4.4.0.jar` and it works on your server, whatever the version.
### Why one jar works
Compiled once against Paper 1.21 / Adventure 4 / Java 21 (`api-version: 1.21`):
- `api-version: 1.21` is accepted by Paper 26.2 (forward-compatibility)
- Java 21 bytecode runs on Java 25
- the Adventure APIs LPC uses stay binary-compatible across Adventure 4 → 5
A new `crossCompatTest` CI task proves this every build by running the Adventure-4-compiled tests against an Adventure 5 runtime — the exact thing a Paper 26.2 server does. (It already caught and fixed one real incompatibility.)
### 🐛 [item] permission fix
`[item]` needs the `lpc.itemplaceholder` permission — which previously defaulted to `false`, tripping up users (even admins) who only enabled the config. Now:
- `lpc.itemplaceholder` defaults to **`op`** → ops can use `[item]` immediately
- players who type `[item]` without the permission get a friendly **in-chat hint**
- to enable `[item]` for everyone: `/lp group default permission set lpc.itemplaceholder true`
### Platform detection
- startup log: `Running on Paper (API 1.21-R0.1) on Java 21 [Paper/Adventure chat]`
- `/lpc version` now shows the build target **and** the live runtime (API + Java) — great for support
### Still includes
- the 4.2.0 chat click/hover/insertion exploit fix (defence-in-depth sanitizer)
- MiniMessage chat formatting, LuckPerms group/track formats, PlaceholderAPI, @mentions, emojis, clickable links, [item], moderation toolkit
### Requirements
- [LuckPerms](https://luckperms.net/) (required) · [PlaceholderAPI](https://www.spigotmc.org/resources/placeholderapi.6245/) (optional)
- Paper 1.21.x – 26.2, Folia or Spigot · Java 21+
**Full changelog:** https://github.com/Ayont/LPC-with-minimessage/compare/4.3.0...4.4.0
release
LPC Minimessage - Chat Formatter 4.3.0
4.3.0-legacy4 июл. 2026 г.701Minecraft: 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.11bukkit, folia, paper, purpur, spigot
Что нового
## LPC 4.3.0 — Multi-version support (Paper 1.21.x **and** 26.2)
This release ships **two jars** so LPC runs on both old and new servers. Pick the one for your platform on the [Modrinth download page](https://modrinth.com/plugin/lpc-chat) (Modrinth's game-version filter shows the right one automatically):
| Build | Minecraft | Java | Adventure | api-version |
|---|---|---|---|---|
| **`LPC-4.3.0.jar`** *(default)* | 26.2 | 25 | 5.2.0 | 26.2 |
| **`LPC-4.3.0-legacy.jar`** | 1.21.x *(incl. 1.21.11)* | 21 | 4.23.0 | 1.21 |
### Why two jars?
Adventure 4 (bundled by Paper 1.21) and Adventure 5 (bundled by Paper 26.2) are **binary-incompatible** — a single jar cannot reliably run on both. The same LPC source now compiles + passes all tests against **both** Adventure versions; the Gradle `-Ptarget=modern|legacy` switch selects the platform.
### 🔒 Still includes the 4.2.0 security fix
The defence-in-depth `ComponentSanitizer` (strips click/hover/insertion from player & item-name output) is in **both** builds.
### Bug fixes & UX
- Fixes the recurring **\"Unsupported API version\"** / **\"plugin won't load on 1.21.11\"** reports — use the `-legacy` jar on Paper 1.21.x / Java 21.
- `/lpc version` now reports the **build target** (e.g. `Build: Minecraft 1.21.x · Java 21 · Adventure 4.23.0 (legacy)`) so support can tell which jar you installed.
- `build.yml` CI runs a modern + legacy matrix on every PR.
### Installation
- **Paper 26.2 / Java 25** → download `LPC-4.3.0.jar`
- **Paper 1.21.x / Java 21** (incl. 1.21.11) → download `LPC-4.3.0-legacy.jar`
Requires [LuckPerms](https://luckperms.net/). [PlaceholderAPI](https://www.spigotmc.org/resources/placeholderapi.6245/) optional.
**Full changelog:** https://github.com/Ayont/LPC-with-minimessage/compare/4.2.0...4.3.0
release
LPC Minimessage - Chat Formatter 4.3.0
4.3.04 июл. 2026 г.204Minecraft: 26.2bukkit, folia, paper, purpur, spigot
Что нового
## LPC 4.3.0 — Multi-version support (Paper 1.21.x **and** 26.2)
This release ships **two jars** so LPC runs on both old and new servers. Pick the one for your platform on the [Modrinth download page](https://modrinth.com/plugin/lpc-chat) (Modrinth's game-version filter shows the right one automatically):
| Build | Minecraft | Java | Adventure | api-version |
|---|---|---|---|---|
| **`LPC-4.3.0.jar`** *(default)* | 26.2 | 25 | 5.2.0 | 26.2 |
| **`LPC-4.3.0-legacy.jar`** | 1.21.x *(incl. 1.21.11)* | 21 | 4.23.0 | 1.21 |
### Why two jars?
Adventure 4 (bundled by Paper 1.21) and Adventure 5 (bundled by Paper 26.2) are **binary-incompatible** — a single jar cannot reliably run on both. The same LPC source now compiles + passes all tests against **both** Adventure versions; the Gradle `-Ptarget=modern|legacy` switch selects the platform.
### 🔒 Still includes the 4.2.0 security fix
The defence-in-depth `ComponentSanitizer` (strips click/hover/insertion from player & item-name output) is in **both** builds.
### Bug fixes & UX
- Fixes the recurring **\"Unsupported API version\"** / **\"plugin won't load on 1.21.11\"** reports — use the `-legacy` jar on Paper 1.21.x / Java 21.
- `/lpc version` now reports the **build target** (e.g. `Build: Minecraft 1.21.x · Java 21 · Adventure 4.23.0 (legacy)`) so support can tell which jar you installed.
- `build.yml` CI runs a modern + legacy matrix on every PR.
### Installation
- **Paper 26.2 / Java 25** → download `LPC-4.3.0.jar`
- **Paper 1.21.x / Java 21** (incl. 1.21.11) → download `LPC-4.3.0-legacy.jar`
Requires [LuckPerms](https://luckperms.net/). [PlaceholderAPI](https://www.spigotmc.org/resources/placeholderapi.6245/) optional.
**Full changelog:** https://github.com/Ayont/LPC-with-minimessage/compare/4.2.0...4.3.0
release
LPC 4.2.0 — Minecraft 26.2 / Adventure 5 / Veylor-Development
4.2.01 июл. 2026 г.1 тыс.Minecraft: 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.2bukkit, folia, paper, purpur, spigot
Что нового
### Security (important — fixes chat click-command exploit)
- **Defence-in-depth sanitizer** against chat click / hover / insertion exploits. A new `ComponentSanitizer` recursively strips `clickEvent` / `hoverEvent` / `insertion` from **player message** and **item-name** output.
- Closes the exploit reported on Discord where players could type `<click:run_command:…>` that executes when clicked. The restricted cosmetic parser already rejected these tags; the sanitizer is a belt-and-suspenders guarantee that no interactive event can ever reach chat — even via nested children or a crafted anvil-renamed item.
- Cosmetic styling (colours, decorations) is preserved. Legacy/Spigot output is inherently safe (serializes to `§`-codes that cannot carry events).
- Tests: 43 (incl. 7 new sanitizer cases), 0 failures.
### Platform
- **Minecraft 26.2** (Paper 26.2), `api-version: 26.2`
- **Adventure 5.2.0** — the version Paper 26.2 bundles (Paper 26.1 shipped Adventure 4.x, so 4.2.0 requires Paper 26.2+)
- **Java 25**
> ⚠️ If you get `Unsupported API version 26.2` or the plugin won't load: update to **Paper 26.2 + Java 25**. Older servers (1.21.x / Java 21) cannot run this build.
### Dependency updates (folds in the open Renovate PRs)
- LuckPerms `5.4 → 5.5`, PlaceholderAPI `2.11.6 → 2.12.2`, Gson `2.13.2 → 2.14.0`, JUnit `5.11.4 → 5.14.4`, Gradle `8.14 → 8.14.5`, `actions/setup-java v5`, `gradle/actions v6`
### Build & CI
- **New `build.yml`** runs `clean build` on every push/PR (there was no CI before).
- Fixed `publish.yml`: Gradle 8.14 cannot run on Java 25 (its Groovy rejects class file major 69), so Gradle now runs on **Java 21** and compiles via the **Java 25 toolchain** (auto-provisioned by the new `foojay-resolver-convention`).
### Branding & UX
- Author rebranded **Varilx-Development → Veylor-Development** (the team behind veylor.net — free plugins on Modrinth).
- `/lpc version` now reports the detected platform + target (MC 26.2 · Java 25 · Adventure 5).
- README: compatibility table + "Unsupported API version" guidance + a direct answer to "can players use MiniMessage in chat?".
### Issues closed
- #22 (PlaceholderAPI placeholder in `chat-format` crashing) — fixed by the 2.0 pipeline.
- #26 (non-op parsing placeholders) — fixed; player messages are never passed through PlaceholderAPI.
- #37 (/msg question) — answered; LPC is a chat formatter, pair it with EssentialsX/HuskChat.
**Full changelog:** https://github.com/Ayont/LPC-with-minimessage/compare/4.1.0...4.2.0
release
LPC Minimessage - Chat Formatter 4.1.0
4.1.016 июн. 2026 г.4,6 тыс.Minecraft: 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.2bukkit, folia, paper, purpur, spigot
Что нового

## 4.1.0 — Folia Support
**Minecraft:** 26.1.2 · **Java:** 25 · **API version:** 26.1.2
Native Folia support with region-aware scheduling while retaining full Paper/Spigot compatibility.
### Added
- `folia-supported: true` in `plugin.yml`.
- Cross-platform scheduler abstraction in `de.ayont.lpc.scheduler`:
- `Scheduler` interface with `run`, `runAsync`, `runDelayed` and `runOnEntity`.
- `PaperSchedulerImpl` using `GlobalRegionScheduler`, `AsyncScheduler` and `EntityScheduler`.
- `BukkitSchedulerImpl` fallback for plain Spigot/Bukkit.
- Runtime platform detection via `Schedulers.create(...)`.
- Folia detection in `LPC` with dedicated log output.
- `onDisable` cancels all scheduled tasks cleanly.
### Changed
- `UpdateChecker` now schedules its network request via `plugin.getScheduler().runAsync(...)`.
- `MentionService.pingAll` now schedules per-target pings via `plugin.getScheduler().runOnEntity(...)`.
### Compatibility
- Verified on Folia 26.1.2 build 8.
- Paper/Spigot fallback remains intact.
> **Note:** LPC itself is now Folia-compatible, but LuckPerms must also be a Folia-compatible build, otherwise Folia will refuse to load the dependency.
release
LPC Minimessage - Chat Formatter 4.0.0
4.0.015 июн. 2026 г.649Minecraft: 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.2bukkit, paper, purpur, spigot
Что нового
# Changelog
## 4.0.0
**Released:** 2026-06-15
**Minecraft:** 26.1.2 · **Java:** 25 · **API version:** 26.1.2
Major rewrite release with a new MiniMessage chat formatter, an integrated moderation toolkit, and a much more flexible configuration.
### Added
- **New MiniMessage chat formatter** with a clear separation between trusted format strings and player messages.
- **Group & track formats** per LuckPerms group or track (`group-formats`, `track-formats`).
- **`[item]` placeholder** – shows the held item in chat (hover tooltip on Paper).
- **Placeholder support:** `{prefix}`, `{suffix}`, `{prefixes}`, `{suffixes}`, `{world}`, `{displayname}`, `{username-color}`, `{message-color}`, and `{gradient-name}`.
- **Optional PlaceholderAPI integration** for formats.
- **@Mentions** with highlighting, sound + action-bar ping on Paper (Spigot gets highlighting only).
- **Emoji replacement** via configurable shortcuts like `:heart:` → ❤.
- **Clickable links** in chat (`openUrl`, clickable on Paper, colored/underlined on Spigot).
- **Per-rank message styles** – groups/tracks can get their own message coloring without needing MiniMessage permissions.
- **Gradient names** via LuckPerms meta or per group (`{gradient-name}`).
- **Join / quit / first-join / death messages** in MiniMessage format, individually toggleable.
- **Integrated moderation toolkit** (all toggleable):
- Anti-spam cooldown
- Repeat-message filter
- Caps filter (BLOCK or LOWERCASE)
- Profanity filter (BLOCK or MASK)
- Anti-advertising / anti-IP (BLOCK or REDACT)
- **Mute system** with `/lpc mute <player> [duration]` and `/lpc unmute <player>`, plus support for external mute permission nodes.
- **Modrinth update checker** with in-game notification for players with `lpc.update`.
- **Paper & Spigot compatibility** with automatic fallback to legacy rendering.
- **Unit tests** for emoji replacement, legacy colors, mentions, player messages, URL linkification, moderation text checks, and version comparison.
### Changed
- Complete rewrite of chat rendering: player messages are inserted as pre-built components and are never re-parsed.
- Interactive tags (`click`, `hover`, `insertion`, …) in player messages are always stripped.
- Default config bumped to `config-version: 3`.
### Security
- Player messages cannot inject MiniMessage tags or PlaceholderAPI placeholders.
- Prefix/suffix values and format strings are parsed in a trusted context.
- Gradient specifications are validated against an allowed character set.
### Permissions
- `lpc.reload`, `lpc.chatcolor`, `lpc.itemplaceholder`, `lpc.update`
- `lpc.emoji`, `lpc.chatlinks`, `lpc.mention.exempt`
- `lpc.mute`, `lpc.muted`
- `lpc.bypass.spam`, `lpc.bypass.repeat`, `lpc.bypass.caps`, `lpc.bypass.profanity`, `lpc.bypass.advert`
### Known Limitations
- Legacy color codes (`&a`, `§b`) in prefixes/suffixes are not supported – use MiniMessage.
release
LPC Minimessage - Chat Formatter 3.7.0
3.7.017 окт. 2025 г.37,2 тыс.Minecraft: 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.10bukkit, paper, purpur, spigot
Что нового
# 1.21.10 SUPPORT!
>
release
LPC Minimessage - Chat Formatter 3.6.9
3.6.912 мая 2025 г.12,5 тыс.Minecraft: 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.5bukkit, paper, purpur, spigot
Что нового
# SPIGOT SUPPORT (BETA) and **1.21.5** Support!
- Updated to the newest Gradle #8
### Important: Hoverevent with the **Spigot** is at the moment not working!

release
LPC Minimessage - Chat Formatter 3.6.8
3.6.830 дек. 2024 г.2,7 тыс.Minecraft: 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.4paper, purpur
Что нового
# [3.6.8 UPDATE 1.21.4 SUPPORT](https://modrinth.com/plugin/lpc-minimessage-chat-formatter/changelog)
### - Some Fixes and 1.21.4 Supprot!
**Support my New Project: https://dev.varilx.de/**
release
LPC Minimessage - Chat Formatter 3.6.8
3.6.830 дек. 2024 г.409Minecraft: 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.4paper, purpur
Что нового
# [3.6.8 UPDATE 1.21.4 SUPPORT](https://modrinth.com/plugin/lpc-minimessage-chat-formatter/changelog)
### - Some Fixes and 1.21.4 Supprot!
*Support my New Project: https://dev.varilx.de/
![[ITEM] Placeholder](https://cdn.modrinth.com/data/LOlAU5yB/images/f48ddb9b0ab505f4293324bde2816de20d5bbeec_350.webp)

