
StatusPlugin
A status plugin that allows your users to set preconfigured statuses like in CraftAttack!
Автор: Markap7,7 тыс.22обновлён 9 окт. 2026 г.
ОбщениеУтилиты
Описание

ᴛᴇꜱᴛᴇᴅ ᴏɴʟу ᴏɴ ᴘᴀᴘᴇʀ ᴀɴᴅ ᴘᴀᴘᴇʀ ғᴏʀᴋꜱ
The status plugin allows players to use pre-made statuses with the command /status. These different statuses can be set in a file.
TAB LIST

CHAT

✨ Features
- Advanced Formatting: Full MiniMessage support (gradients, hex colors, hover events) for chat, tablist, and nametags..
- Status System: Create custom statuses (Admin, VIP, etc.) with unique prefixes.
- Tab List Control:
- Animated headers/footers.
- Rotating Messages: Add scrolling lines with
<rotating>. - Sorting: Sort players by rank (Owner > Admin > Member > AFK > NO STATUS).
- Stats: Display deaths, country, TPS, Ping ... .
- Country Display: Automatically show player flags/countries in tab/chat (GeoIP).
- Death Tracking: count and display player deaths with custom formatting
[☠ 5]. - Integrations:
- PlaceholderAPI: Full support for placeholders.
- LibertyBans: Custom mute/ban notification styling.
- TAB: seamless compatibility if you prefer using TAB plugin.
- Use of Paper's modern chat system for maximum compatibility with other plugins.
📦 Installation
- Download the latest JAR.
- Drop it into your server's
pluginsfolder. - Restart the server.
- Edit
plugins/StatusPlugin/config.ymlto your liking.
🧩 Configuration
config.yml: Main settings (Chat, Integrations, GeoIP).status-options.yml: Define your statuses and their formats.tablist.yml: Configure header, footer, and player list format.language.yml: Translate all plugin messages.
Server-wide Placeholders
- %statusplugin_performance% - Server TPS performance (colored)
- %statusplugin_mspt% - Server MSPT (Average Tick Time)
- %statusplugin_total_deaths% - Total server deaths (formatted with K/M suffixes)
- %statusplugin_total_deaths_raw% - Total server deaths (raw number)
Player-specific Placeholders
- %statusplugin_status% - Player's formatted status display
- %statusplugin_status_raw% - Player's raw status key
- %statusplugin_deaths% - Player's death count
- %statusplugin_deaths_formatted% - Player's death count formatted with a skull icon (e.g. [☠ 5])
- %statusplugin_country% - Player's country name
- %statusplugin_countrycode% - Player's country code
This project is licensed under a Custom License.
Последние версии
Все версии →release
StatusPlugin 7.1.5
7.1.59 окт. 2026 г.666Minecraft: 26.1, 26.1.1, 26.1.2, 26.2, 26.3paper
Что нового
Small fixes...
release
Performance update - see changelog
7.1.43 окт. 2026 г.119Minecraft: 26.2, 26.3paper, purpur
Что нового
# Changed
- Tab list refresh computes **server-wide placeholders** (online count, world counts, TPS, time, …) once per refresh instead of once per line and player, and parses header/footer lines without player-specific placeholders only once. With **100 players** a refresh **dropped from ~110 ms** to **~6 ms** on the main thread.
- List names, nametag team prefixes and header/footer are only sent when they changed. Previously every refresh broadcast ~20,000 packets at 100 players **(~0.7 MB/s)**; now only the header/footer is re-sent.
- Joining no longer refreshes every online player's tab list; others only get an updated header/footer (online count) on the next tick, shared by all joins in that tick. The online count now also updates right after a player quits.
- Chat messages are rendered once instead of once per viewer (ChatRenderer.viewerUnaware), ~100× less work per message at 100 players. This also avoids one main-thread PlaceholderAPI lookup per viewer when the chat format contains PAPI placeholders.
- Parsed status, death count, name/status color and URL hover components are cached instead of re-parsed on every use; config values like tablist.enabled, chat.enabled and the sorting priority are read once per (re)load.
- The tab refresh only re-renders a list name or sort team when the player's status, deaths or country changed (list names using PlaceholderAPI are still re-rendered every time). Names and teams changed by other plugins are still restored on the next refresh.
- Player statuses and status requests are saved in the background (at most every 5 seconds) instead of rewriting the whole file on the main thread for every /status, /status-clear, suggestion, accept/deny and first join with a default status. Data is still saved immediately on reload and shutdown.
- The LibertyBans mute check uses LibertyBans' cache of online players' mutes instead of a database query per chat message. It now also catches IP mutes, the same mutes LibertyBans itself enforces (BETA).
# Fixed
- A chat message or placeholder request during /status-admin reload (or while a status suggestion is accepted) could briefly see no status for a player.
# Added
- benchmark/: test-server benchmark with 100 bots, plus a check that two plugin versions render identical tab lists, nametags and chat (see benchmark/README.md on github). This is more an internal change.
## Notice:
I can't say with 100% certainty exactly how much of a performance improvement this update will bring to your specific server. However, performance should be significantly better than before, especially with more players.
Since I had to make some deep changes to the code for this update, there may be some bugs. All core functions have been thoroughly tested and the plugin has passed all internal tests. Nevertheless, I haven’t had enough time yet to test every function extensively. Even so, this build is labeled as a “Release” rather than a “Beta” because the performance boost benefits everyone.
-> If you had the previous version of the plugin, you just need to replace the JAR file.
release
StatusPlugin 7.1.3
7.1.39 сент. 2026 г.133Minecraft: 26.2paper, purpur
Что нового
## [7.1.3] - 2026-09-09
### Fixed
- Fixed `java.lang.IllegalStateException: zip file closed` error in the `OkHttp TaskRunner` thread during plugin disablement or server shutdown by removing shaded OkHttp background threads and switching to the standard library HTTP client.
### Changed
- Migrated all HTTP requests in `VersionChecker` (Modrinth update checking) and `CountryManager` (IP geolocation lookup) to native JDK `java.net.http.HttpClient`.
- Cleaned up HTTP resource teardown using modern `HttpClient.close()`.
### Removed
- Removed dependencies on `com.squareup.okhttp3:okhttp`, `okio`, and `kotlin-stdlib`, significantly reducing shaded plugin JAR size from ~2.8 MB to ~159 KB (~94% reduction).
release
StatusPlugin 7.1.2
7.1.26 сент. 2026 г.25Minecraft: 26.2paper, purpur
Что нового
## [7.1.2]
### Added
- New setting `requests.append-clear-color` (default: `true`) to automatically append a clear color code (`<reset>`) at the end of suggested statuses, ensuring the player's name does not inherit the status color in chat or tablist/nametag.
release
StatusPlugin 7.1.1
7.1.16 сент. 2026 г.4Minecraft: 26.2paper
Что нового
## [7.1.1] - 2026-09-06
### Added
- Recommended color code generator website setting (`requests.generator-website`) in `config.yml` (default: `https://www.birdflop.com/resources/rgb/`), shown with an interactive clickable link in `/status-suggest info` (hidden if set to empty).
- Dedicated aliases for commands: `/statusadmin`, `/statussuggest`, `/statusclear`, `/statuspreview`, and `/st`.
- Automated unit test suite in `StatusAdminCommandTest`.
### Fixed
- Fixed `ArrayIndexOutOfBoundsException` when tab-completing `/status-admin` with empty or null argument arrays.
- Fixed format examples in `/status-suggest info` translating the syntax code on the left into color instead of showing literal tags.
- Hardened all command suggestion handlers against empty or null arguments.
release
7.1
7.16 сент. 2026 г.29Minecraft: 26.1, 26.1.1, 26.1.2, 26.2paper, purpur
Что нового
## [7.1] - 2026-09-06
### Added
- **Status Suggestion System**:
- `/status-suggest <format>`: Allows players to submit custom status suggestions directly in-game.
- `/status-suggest info`: Provides guidelines, submission limits, syntax examples, and live preview rendering.
- Bracket requirement enforcement (must start with `[` and end with `]`), configurable in `config.yml`.
- Configurable minimum/maximum length constraints (excluding color/formatting tags) and submission throttling per player.
- Interactive admin review tools:
- `/status-admin requests list` featuring interactive MiniMessage click actions (`[✔ Accept]`, `[✖ Deny]`).
- `/status-admin requests accept <id> <name>`: Automatically injects accepted status into `status-options.yml`, assigns it to the submitter, and notifies them.
- `/status-admin requests deny <id> <reason>`: Rejects the submission with an admin-specified explanation.
- Offline player notification delivery upon reconnection for approved or rejected requests.
- Persistent data storage for suggestion tracking in `status-requests.yml`.
- **Internal Testing & Quality Assurance**:
- Configured JUnit 5 (`junit-jupiter`) in Gradle build script.
- Added unit test suite (`ColorUtilTest`) validating MiniMessage gradients, Bukkit legacy hex format (`&x&r&r...`), bracket detection, and suggestion lifecycle records.
- **Permission Declarations**:
- Added explicit permission trees to `paper-plugin.yml` (`statusplugin.admin`, `statusplugin.reload`, `statusplugin.mod`).
### Changed
- **Platform & Toolchain Migration**:
- Updated target Paper API to `26.2.build.+` with `api-version: '26.2'`.
- Configured Gradle Java toolchain for Java 25.
- Enabled compiler warnings (`-Xlint:all`, `-Xlint:-processing`) and resource filtering for `paper-plugin.yml`.
- **Scoreboard Team & Sorting Management**:
- Overhauled team management in `TabListManager` and `NametagManager` to prevent team collision and scoreboard pollution.
- Added startup and shutdown cleanup routines targeting stale `sp_` and `sp_sort_` scoreboard teams.
- Enforced thread-safe operations for scoreboard modifications and tab list header/footer updates.
- **Color & Placeholder Utilities**:
- Added support for Bukkit legacy hex syntax (`&x&6&5&F&F&6&4`), standard hex (`&#rrggbb`), and MiniMessage tags.
- Hardened `PlaceholderUtil` against asynchronous execution with main-thread synchronization dispatch.
- Added HTTP resource disposal (`OkHttpClient` connection pool & dispatcher cleanup) in `VersionChecker.shutdown()`.
### Fixed
- Fixed integer overflow potential with rotating tab list index (`rotatingIndex.get() & Integer.MAX_VALUE`).
- Fixed duplicate read timeout initialization in `VersionChecker`.
- Fixed tab list list-name async invocation warning by checking `Bukkit.isPrimaryThread()`.
release
StatusPlugin 7.0.10
7.0.105 июн. 2026 г.381Minecraft: 26.1, 26.1.1, 26.1.2paper, purpur
Что нового
Bump version to v7.0.10 and migrate to Paper 26.x
release
StatusPlugin 7.0.9
7.0.918 янв. 2026 г.1,2 тыс.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.11paper, purpur
Что нового
Status-Based Name Coloring: Players can now have their names colored in both Chat and the Tab List based on their active status.
release
StatusPlugin 7.0.8
7.0.818 янв. 2026 г.29Minecraft: 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.11paper, purpur
Что нового
Updated TabListManager.java to filter out players with vanished metadata from:
%online% placeholder calculation.
%overworld%, %nether%, %end% placeholders.
release
StatusPlugin 7.0.7
7.0.718 янв. 2026 г.22Minecraft: 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.11paper, purpur
Что нового
feat: Modular chat colors
under chat formatting:
# Modular chat colors per status
status-colors:
enabled: true
# <StatusID>: <Color/Format>
colors:
ADMIN: "<red>"
-> backup your old config!