COWMODSКаталог модов
XRank

ВЕРСИИ (5)

alpha

Fixes

1.2-alpha
23 авг. 2026 г.59Minecraft: 1.10, 1.10.1, 1.10.2, 1.11, 1.11.1, 1.11.2, 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 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.10, 1.21.11, 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.7.10, 1.8, 1.8.1, 1.8.2, 1.8.3, 1.8.4, 1.8.5, 1.8.6, 1.8.7, 1.8.8, 1.8.9, 1.9, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 26.1, 26.1.1, 26.1.2, 26.2bukkit, folia, paper, purpur, spigot
Скачать
Что нового
### Added - **Full Folia support** — server detection via `RegionizedServer` class, with all player-entity operations dispatched through the region scheduler (`RegionScheduler.run`) via reflection - **`runOnRegion` scheduling helper** — dispatches player operations to the correct region thread on Folia, falls back to the main thread on Bukkit-based servers ### Changed - **Chat format handling** — `onChat` now builds the message strictly from `chat-format`, manually substituting `%rank%` → rank display text, `%name%` → player name, `%message%` → `%2$s` placeholder. The previous approach collapsed `%rank%`/`%name%` into `%1$s` (the displayName), which caused separators/ordering in `chat-format` (e.g. `%rank% / %name%`) to be ignored or duplicated - **`applyDisplayName`** — added a space between the rank text and the player name so system messages / chat prefixes have a natural separator ### Fixed - **`UnknownFormatConversionException` on chat** (`Conversion = '§'` / `'&'`) — the old code left `%rank%`/`%name%` residue which `setFormat`'s internal `String.format` choked on; the new manual substitution leaves only the legal `%2$s` placeholder, and `§` is a literal character safe from `String.format` - **Chat prefix duplicating / `chat-format` ignored** — `%rank% / %name%` now renders as `[Ranks] / Player > Message` or something like that, exactly as configured - **Folia: nametag failing with `UnsupportedOperationException`** — root-caused via stack traces: Folia 26 fully disables the Bukkit scoreboard API (`registerNewTeam` on the main board **and** `getNewScoreboard()` both throw). The scoreboard-based nametag is skipped on Folia (no crash), while Tab / chat / system messages continue to work - **Folia: `supportsLongTabName` misdetection** — Folia's version string isn't matched by the `1.x` regex, so the Tab length limit fell back to 16; now uses the `hasAdventure` capability check (Folia 26 has Adventure), so Tab correctly uses the 64-char limit ### Removed - *(nothing)*
release

Finally Fixed

1.1-rls
22 авг. 2026 г.146Minecraft: 1.10, 1.10.1, 1.10.2, 1.11, 1.11.1, 1.11.2, 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 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.10, 1.21.11, 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.8, 1.8.1, 1.8.2, 1.8.3, 1.8.4, 1.8.5, 1.8.6, 1.8.7, 1.8.8, 1.8.9, 1.9, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 26.1, 26.1.1, 26.1.2, 26.2bukkit, folia, paper, purpur, spigot
Скачать
Что нового
### Added - **`lastRankStyle` helper** — extracts the last full style segment (color + format codes like `§6§l`) from a rank, used to make the player-name segment in `displayName` inherit the rank's formatting ### Changed - **Chat format handling (modern versions)** — `%rank%` / `%name%` combinations are now unified into `%1$s` (which expands to displayName already containing rank + name), eliminating prefix duplication and `%xxx%` residue - **`applyScoreboard`** — `setColor` now receives the §-translated rank (`rankColored`) instead of the raw `&` string, so `Team#setColor` actually applies - **`applyDisplayName`** — player-name segment now carries the rank's trailing style (color + bold) via `lastRankStyle`, so the name in system messages / chat follows the rank formatting ### Fixed - **`UnknownFormatConversionException` on chat (`Conversion = '§'` / `'&'`)** — `setFormat` internally runs `String.format`, which chokes on leftover `%rank%`/`%name%` placeholders; all rank/name placeholders are now replaced with `%1$s`/`%2$s` before calling `setFormat`, so it no longer throws - **System messages (death / tp) showing white player names** — the root cause was `lastRankColor` receiving the raw `&`-form rank (which only scans `§`), returning `null` and silently skipping `Team#setColor`; now receives the §-translated rank, so the name color in death/tp messages correctly inherits the rank color (color only, not bold — a `setColor` limitation on modern versions) - **`applyDisplayName` name segment white** — the last rank style (color + format) is now appended before the player name, so the name inherits the rank formatting ### Removed - *(nothing)*
beta

More Stable

1.1-beta
21 авг. 2026 г.5Minecraft: 1.10, 1.10.1, 1.10.2, 1.11, 1.11.1, 1.11.2, 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 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.10, 1.21.11, 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.8, 1.8.1, 1.8.2, 1.8.3, 1.8.4, 1.8.5, 1.8.6, 1.8.7, 1.8.8, 1.8.9, 1.9, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 26.1, 26.1.1, 26.1.2, 26.2bukkit, folia, paper, purpur, spigot
Скачать
Что нового
### Added - **`%xrank_rank_count%` placeholder** — returns the number of effective ranks a player currently has - **`%xrank_rank_<index>%` placeholder** — returns the Nth rank (0-based); returns empty when out of range - **YAML `ReentrantReadWriteLock`** — read operations (`getRanks`, `getName`, `loadAll`) no longer block each other; only writes take the exclusive lock - **MySQL connection heartbeat with auto-reconnect** — connection validity is verified with `SELECT 1` after 5s of idle time (refreshed on every successful read/write), so dead connections from `wait_timeout` / firewall drops are detected and re-established automatically ### Changed - **PAPI expansion metadata now reads from `plugin.yml`** — `getIdentifier()` returns the plugin name forced to lowercase (stable `%xrank_*%` regardless of case), `getAuthor()` joins the full authors list (multi-coauthor support), `getVersion()` follows the plugin version - **`%xrank_prefix%` / `%xrank_suffix%`** remain format-derived, now correctly rendering colors ### Fixed - **Legacy color codes (`&`) showing literally on modern versions** — `applyDisplayName()` and the high-version chat branch now translate `&` → `§` before handing the string to Adventure's `LegacyComponentSerializer` / `setFormat`, so `&6&l` properly renders as gold bold instead of literal `&6&l` white text - (verified) 1.8.8 legacy path unaffected — NMS reflection branch already handled correctly ### Removed - *(nothing)*
alpha

Extreme

1.1-alpha
20 авг. 2026 г.4Minecraft: 1.10, 1.10.1, 1.10.2, 1.11, 1.11.1, 1.11.2, 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 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.10, 1.21.11, 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.8, 1.8.1, 1.8.2, 1.8.3, 1.8.4, 1.8.5, 1.8.6, 1.8.7, 1.8.8, 1.8.9, 1.9, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 26.1, 26.1.1, 26.1.2, 26.2bukkit, folia, paper, purpur, spigot
Скачать
Что нового
### Added - **MySQL & SQLite storage backends**, selectable via `storage.type` in config - **Automatic bidirectional migration** between YAML / SQLite / MySQL on storage type switch; YAML is backed up to `data.yml.bak` (never deleted) - **Developer API**: `getPlayerRanks()`, `setPlayerRanks()`, `addRank()`, `removeRank()` — fully async via `CompletableFuture` with a dedicated thread pool - **`RankChangeEvent`** so other plugins can listen to rank changes (old/new ranks) - **`allow_to_use_api`** config option to disable the public API - **PlaceholderAPI expansion** (optional dependency): `%xrank_ranks%`, `%xrank_ranks_raw%`, `%xrank_has_rank%`, `%xrank_prefix%`, `%xrank_suffix%` - **TAB plugin detection** — xrank yields TabList rendering to TAB when present and exposes ranks via PAPI instead - **`display-name-enabled` option** — `Player#displayName` is set so system messages (`/tp`, death messages, etc.) show the rank prefix; uses Adventure API on modern Paper and NMS reflection on legacy versions - **`-online` / `-offline` batch targets** alongside `-all` for `give`, `remove`, and `list` - **Team name collision fallback** — team names use `xr_` + UUID hash with `_1`..`_99` retry, so registration never throws - **Nametag color inheritance** — the team color is derived from the last effective color code in the rank, so nametag/name text matches the rank color (respects `&r`) - **Tab name length guard** — protocol-length check on both old (16) and new (64) versions; if exceeded, Tab falls back to the plain name and logs a warning - **Periodic cleanup** of expired remove-confirmation records (every 60s) - **Debug logging** for storage switches, migrations, joins, commands, and server detection - **UUID + name hybrid storage** — ranks are keyed by UUID with a redundant name column, so ranks follow a player across name changes ### Changed - **Storage keying** — switched from name-based to UUID + name hybrid - **Chat handling** — switched from `setCancelled(true)` + manual broadcast to `setFormat`, coexisting with other chat plugins - **Scoreboard** — switched from per-player independent scoreboards to the shared main scoreboard with per-player teams (no longer hijacks the player's scoreboard) - **Chat prefix logic** — modern versions rely on `%1$s` (displayName already contains the prefix); legacy versions assemble the prefix manually - **PAPI expansion metadata** — `getIdentifier()` / `getAuthor()` / `getVersion()` now read from `plugin.yml` (identifier forced lowercase; author supports multiple co-authors via the full authors list) - **Config philosophy** — all player-facing messages come from config (`messages.<lang>`), with `fixConfig` merging missing keys from the bundled config; `ranks` is intentionally never auto-filled - **Branding** — version display parses `-alpha`/`-beta`/`-rls` suffixes for color; `/xrank` with no/unknown args shows version info ### Fixed - **Chat double prefix** — rank prefix could appear twice on versions where `%1$s` expands to displayName - **`modifyRanks` double invocation** in `remove` — replaced with a single pass returning a `ModifyResult` (old/new/changed) - **`truncate` dropping the rest of the string** when an RGB color code didn't fit — now skips the code and keeps subsequent characters - **`saveData()` being a no-op** — now actually flushes the storage - **`{tag}` placeholder leaking into output** — removed unused placeholder from list format - **`(无头衔)` colliding with a real rank named that** — no-rank state now uses a dedicated message (`list-no-ranks`) - **`TreeSet<String>` type error** in name→UUID maps - **PAPI `register()` resolution** — switched to `PlaceholderAPI.registerExpansion` (with `ExpansionManager` fallback for older PAPI) - **RGB length accounting in truncation** — RGB codes counted as 14 protocol chars - **Legacy versions** — 1.8.8 verified working (system messages via NMS reflection, chat prefix via legacy branch) ### Removed - **`help` subcommand and help page** — redundant with tab-completion - **`list-default-tag`** — default ranks are no longer listed as records (list reflects only stored ranks) - **Chat takeover** — `setCancelled(true)` + manual broadcast removed in favor of `setFormat` - **Per-player independent scoreboards** — replaced by the shared scoreboard approach
release

The First Version

1.0-rls
19 авг. 2026 г.10Minecraft: 1.10, 1.10.1, 1.10.2, 1.11, 1.11.1, 1.11.2, 1.12, 1.12.1, 1.12.2, 1.13, 1.13.1, 1.13.2, 1.14, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.15, 1.15.1, 1.15.2, 1.16, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 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.10, 1.21.11, 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.8, 1.8.1, 1.8.2, 1.8.3, 1.8.4, 1.8.5, 1.8.6, 1.8.7, 1.8.8, 1.8.9, 1.9, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 26.1, 26.1.1, 26.1.2, 26.2bukkit, folia, paper, purpur, spigot
Скачать
Что нового
The plugin is done! _Todo: MySQL / SQLite / YAML_