{"id":161580,"date":"2026-06-09T18:32:34","date_gmt":"2026-06-09T15:32:34","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/ultimateranks\/"},"modified":"2026-06-09T18:32:34","modified_gmt":"2026-06-09T15:32:34","slug":"ultimateranks","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/ultimateranks\/","title":{"rendered":"UltimateRanks"},"content":{"rendered":"<p>** \ud83c\udf96\ufe0f UltimateRanks &#8211; Complete Documentation<\/p>\n<p> Overview<\/p>\n<p> Description<\/p>\n<p>**UltimateRanks** is a next-generation rank management plugin for Minecraft servers running Paper 1.21+. Unlike traditional rank plugins that limit players to a single rank, UltimateRanks introduces a revolutionary **hybrid system** where players can **own multiple ranks simultaneously** while selecting which one to **display actively** in chat and tab lists.<\/p>\n<p>Built with modern Java 21 features and the Paper API, UltimateRanks delivers exceptional performance through asynchronous database operations, intelligent caching, and a beautiful GUI-based rank management interface.<\/p>\n<p> Why Choose UltimateRanks?<\/p>\n<p>| Feature | Traditional Plugins | UltimateRanks |<br \/>\n|&#8212;&#8212;&#8212;|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-|&#8212;&#8212;&#8212;&#8212;&#8212;|<br \/>\n| Multiple Ranks | \u274c One rank only | \u2705 Unlimited ranks |<br \/>\n| Permission Stacking | \u274c Single rank perms | \u2705 All owned ranks contribute |<br \/>\n| Visual Customization | \u274c Fixed display | \u2705 Choose active display rank |<br \/>\n| GUI Management | \u26a0\ufe0f Basic or none | \u2705 Beautiful paginated GUI |<br \/>\n| RGB Colors | \u26a0\ufe0f Limited support | \u2705 Full MiniMessage support |<br \/>\n| Performance | \u26a0\ufe0f Sync operations | \u2705 100% async database |<br \/>\n| LuckPerms Sync | \u26a0\ufe0f Replace or conflict | \u2705 Seamless integration |<\/p>\n<p> Target Audience<\/p>\n<p>&#8211; **Network Servers**: Manage complex rank hierarchies (VIP + Builder + Staff)<br \/>\n&#8211; **RPG Servers**: Class ranks + achievement ranks + donor ranks<br \/>\n&#8211; **Creative Servers**: Builder roles + theme ranks + VIP tiers<br \/>\n&#8211; **Survival Servers**: Progression ranks + donor perks + special events<br \/>\n&#8211; **Prison Servers**: Mine ranks + prestige + VIP packages<\/p>\n<p>&#8212;<\/p>\n<p> Features<\/p>\n<p> \ud83c\udfaf Core Features<\/p>\n<p> 1. **Multi-Rank Ownership System**<br \/>\n&#8211; Players can own **unlimited ranks** simultaneously<br \/>\n&#8211; Own VIP + Builder + Helper at the same time<br \/>\n&#8211; All ranks contribute permissions (additive system)<br \/>\n&#8211; Zero conflicts between rank permissions<\/p>\n<p>&#8220;`<br \/>\nExample:<br \/>\n  Player owns: [Member, VIP, Builder]<br \/>\n  Permissions = Member + VIP + Builder (combined)<br \/>\n  Active Display = VIP (shown in chat)<br \/>\n&#8220;`<\/p>\n<p> 2. **Active Display Rank Selection**<br \/>\n&#8211; Choose which rank appears in chat prefix\/suffix<br \/>\n&#8211; Switch between owned ranks via interactive GUI<br \/>\n&#8211; Real-time updates without reconnecting<br \/>\n&#8211; Maintains all permissions from other ranks<\/p>\n<p> 3. **Beautiful Paginated GUI**<br \/>\n&#8211; Clean, intuitive rank selection menu<br \/>\n&#8211; Visual states: **Active** (glowing), **Owned** (available), **Locked** (unavailable)<br \/>\n&#8211; 28 ranks per page with smooth navigation<br \/>\n&#8211; Expiration timers shown directly in GUI<br \/>\n&#8211; Custom icons with resource pack support<\/p>\n<p> 4. **Advanced Permission System**<br \/>\n&#8211; **Dual Mode Operation**:<br \/>\n  &#8211; **Standalone Mode**: Built-in Bukkit permission system<br \/>\n  &#8211; **LuckPerms Mode**: Full integration with LuckPerms API<br \/>\n&#8211; Auto-detection of available systems<br \/>\n&#8211; Permission aggregation from all owned ranks<br \/>\n&#8211; Wildcard support (e.g., `essentials.*`)<br \/>\n&#8211; Negation support (e.g., `-essentials.fly`)<\/p>\n<p> 5. **Expiration &#038; Time Management**<br \/>\n&#8211; Temporary ranks with automatic expiration<br \/>\n&#8211; Flexible duration formats: `30d`, `7d`, `1w`, `1mo`, `1y`, `permanent`<br \/>\n&#8211; Automatic cleanup of expired ranks<br \/>\n&#8211; Warning notifications before expiration<br \/>\n&#8211; Visual countdown in GUI<\/p>\n<p> 6. **Full MiniMessage Support**<br \/>\n&#8211; RGB colors: `<FF5555>text<\/color>`<br \/>\n&#8211; Gradients: `<gradient:gold:yellow>VIP<\/gradient>`<br \/>\n&#8211; Formatting: `<bold>`, `<italic>`, `<underline>`<br \/>\n&#8211; Hover events and click actions<br \/>\n&#8211; Legacy color code conversion<\/p>\n<p> 7. **High-Performance Database**<br \/>\n&#8211; **SQLite**: Zero-config, perfect for small servers<br \/>\n&#8211; **MySQL**: HikariCP pooling for large networks<br \/>\n&#8211; 100% asynchronous operations (zero server lag)<br \/>\n&#8211; Transaction support for data integrity<br \/>\n&#8211; Automatic schema management<\/p>\n<p> 8. **Smart Caching System**<br \/>\n&#8211; In-memory cache for online players<br \/>\n&#8211; Sub-millisecond lookup times<br \/>\n&#8211; Automatic cache invalidation<br \/>\n&#8211; Thread-safe concurrent operations<\/p>\n<p>&#8212;<\/p>\n<p> \ud83c\udfa8 Visual Features<\/p>\n<p> Chat Formatting<br \/>\n&#8220;`<br \/>\nBefore:<br \/>\n  <Player> Hello!<\/p>\n<p>After:<br \/>\n  [VIP] Player \u2605: Hello!<\/p>\n<p>Format:<br \/>\n  {prefix} + {player} + {suffix} + : + {message}<br \/>\n&#8220;`<\/p>\n<p> GUI States<\/p>\n<p>| State | Visual | Description |<br \/>\n|&#8212;&#8212;-|&#8212;&#8212;&#8211;|&#8212;&#8212;&#8212;&#8212;-|<br \/>\n| **Active** | \ud83c\udf1f Glowing item | Currently equipped rank |<br \/>\n| **Owned** | \u2705 Normal icon | Click to equip |<br \/>\n| **Locked** | \ud83d\udeab Barrier | Not owned |<\/p>\n<p> Rank Display Example<br \/>\n&#8220;`<br \/>\n\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557<br \/>\n\u2551        My Ranks              \u2551<br \/>\n\u2560\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2563<br \/>\n\u2551                              \u2551<br \/>\n\u2551  [\ud83c\udf1f VIP] (Active)           \u2551<br \/>\n\u2551  Click to keep equipped      \u2551<br \/>\n\u2551  Duration: Permanent         \u2551<br \/>\n\u2551                              \u2551<br \/>\n\u2551  [\u2705 Builder]                \u2551<br \/>\n\u2551  Click to equip              \u2551<br \/>\n\u2551  Expires in: 15 days         \u2551<br \/>\n\u2551                              \u2551<br \/>\n\u2551  [\ud83d\udeab MVP] (Locked)           \u2551<br \/>\n\u2551  You don&#8217;t own this rank     \u2551<br \/>\n\u2551                              \u2551<br \/>\n\u255a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255d<br \/>\n&#8220;`<\/p>\n<p>&#8212;<\/p>\n<p> \ud83d\udd27 Technical Features<\/p>\n<p> Architecture<br \/>\n&#8211; **SOLID Principles**: Single Responsibility, Interface Segregation<br \/>\n&#8211; **Design Patterns**: Strategy, Builder, Repository, Singleton<br \/>\n&#8211; **Dependency Injection**: Clean, testable code<br \/>\n&#8211; **Layer Separation**: Model, Manager, Database, GUI, Commands<\/p>\n<p> Performance Metrics<br \/>\n&#8220;`<br \/>\nDatabase Operations:<br \/>\n  \u2705 Load Player Data: ~5ms (SQLite), ~3ms (MySQL)<br \/>\n  \u2705 Save Player Data: ~8ms (SQLite), ~4ms (MySQL)<br \/>\n  \u2705 Rank Switch: ~2ms (cache hit)<\/p>\n<p>Memory Usage:<br \/>\n  \u2705 Base Plugin: ~5MB<br \/>\n  \u2705 Per Player (cached): ~2KB<br \/>\n  \u2705 GUI Open: +8KB<\/p>\n<p>Scalability:<br \/>\n  \u2705 1,000+ concurrent players supported<br \/>\n  \u2705 100+ ranks tested<br \/>\n  \u2705 Zero tick lag (100% async)<br \/>\n&#8220;`<\/p>\n<p> Thread Safety<br \/>\n&#8211; Concurrent hash maps for player cache<br \/>\n&#8211; CompletableFuture for async operations<br \/>\n&#8211; Synchronized database transactions<br \/>\n&#8211; No race conditions in rank switching<\/p>\n<p>&#8212;<\/p>\n<p> \ud83d\udd0c Integration Features<\/p>\n<p> LuckPerms Integration<br \/>\n&#8211; **Auto-Sync**: UltimateRanks \u27f7 LuckPerms groups<br \/>\n&#8211; **Fallback Support**: Works with or without LuckPerms<br \/>\n&#8211; **Group Creation**: Auto-create missing LuckPerms groups<br \/>\n&#8211; **Permission Inheritance**: Respects LuckPerms hierarchy<\/p>\n<p> PlaceholderAPI Support<br \/>\n&#8220;`<br \/>\nAvailable Placeholders:<br \/>\n  %ultimateranks_prefix%           \u2192 Active rank prefix<br \/>\n  %ultimateranks_suffix%           \u2192 Active rank suffix<br \/>\n  %ultimateranks_rank_displayname% \u2192 Rank display name<br \/>\n  %ultimateranks_rank_id%          \u2192 Rank ID<br \/>\n  %ultimateranks_rank_weight%      \u2192 Rank weight<br \/>\n  %ultimateranks_total_ranks%      \u2192 Total owned ranks<br \/>\n&#8220;`<\/p>\n<p> Chat Plugin Compatibility<br \/>\n&#8211; \u2705 EssentialsX Chat<br \/>\n&#8211; \u2705 ChatControl<br \/>\n&#8211; \u2705 VentureChat<br \/>\n&#8211; \u2705 Any plugin using PlaceholderAPI<\/p>\n<p>&#8212;<\/p>\n<p> Installation<\/p>\n<p> Requirements<br \/>\n&#8211; **Minecraft Server**: Paper 1.21+ (or Purpur\/Pufferfish)<br \/>\n&#8211; **Java Version**: Java 21+<br \/>\n&#8211; **Optional Dependencies**:<br \/>\n  &#8211; LuckPerms 5.4+ (for advanced permissions)<br \/>\n  &#8211; PlaceholderAPI 2.11+ (for placeholders)<\/p>\n<p> Quick Install<\/p>\n<p>1. **Download**<br \/>\n   &#8220;`<br \/>\n   Download UltimateRanks-1.0.0.jar from releases<br \/>\n   &#8220;`<\/p>\n<p>2. **Install**<br \/>\n   &#8220;`bash<br \/>\n    Place in plugins folder<br \/>\n   cp UltimateRanks-1.0.0.jar \/path\/to\/server\/plugins\/<br \/>\n   &#8220;`<\/p>\n<p>3. **First Start**<br \/>\n   &#8220;`bash<br \/>\n    Start server to generate configs<br \/>\n   java -jar paper.jar<\/p>\n<p>    Wait for: &#8220;[UltimateRanks] \u2713 UltimateRanks enabled successfully&#8221;<\/p>\n<p>    Stop server<br \/>\n   stop<br \/>\n   &#8220;`<\/p>\n<p>4. **Configure**<br \/>\n   &#8220;`bash<br \/>\n    Edit generated configs<br \/>\n   nano plugins\/UltimateRanks\/config.yml<br \/>\n   nano plugins\/UltimateRanks\/ranks.yml<br \/>\n   &#8220;`<\/p>\n<p>5. **Restart**<br \/>\n   &#8220;`bash<br \/>\n    Start server again<br \/>\n   java -jar paper.jar<br \/>\n   &#8220;`<\/p>\n<p> Verification<\/p>\n<p>&#8220;`<br \/>\nConsole Output (Success):<br \/>\n  [UltimateRanks] \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550<br \/>\n  [UltimateRanks] UltimateRanks v1.0.0<br \/>\n  [UltimateRanks] Advanced Rank Management<br \/>\n  [UltimateRanks] \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550<br \/>\n  [UltimateRanks] Loading configuration files&#8230;<br \/>\n  [UltimateRanks] \u2713 Configuration loaded<br \/>\n  [UltimateRanks] Connecting to database&#8230;<br \/>\n  [UltimateRanks] \u2713 Database connected (SQLite)<br \/>\n  [UltimateRanks] Initializing managers&#8230;<br \/>\n  [UltimateRanks] \u2713 Loaded 10 ranks<br \/>\n  [UltimateRanks] \u2713 Managers initialized<br \/>\n  [UltimateRanks] Initializing permission system&#8230;<br \/>\n  [UltimateRanks] \u2713 LuckPerms detected &#8211; Using LuckPerms handler<br \/>\n  [UltimateRanks] Registering event listeners&#8230;<br \/>\n  [UltimateRanks] \u2713 Event listeners registered<br \/>\n  [UltimateRanks] Registering commands&#8230;<br \/>\n  [UltimateRanks] \u2713 Commands registered<br \/>\n  [UltimateRanks] \u2713 PlaceholderAPI integration enabled<br \/>\n  [UltimateRanks] \u2713 UltimateRanks enabled successfully in 245ms<br \/>\n  [UltimateRanks] \u2713 Permission Mode: LuckPerms<br \/>\n&#8220;`<\/p>\n<p>&#8212;<\/p>\n<p> Configuration<\/p>\n<p> Main Configuration (config.yml)<\/p>\n<p>&#8220;`yaml<br \/>\n Database Selection<br \/>\ndatabase:<br \/>\n  type: sqlite   Options: sqlite, mysql<\/p>\n<p> GUI Customization<br \/>\ngui:<br \/>\n  menu-title: &#8216;<gradient:gold:yellow>My Ranks<\/gradient>&#8216;<br \/>\n  items-per-page: 28<br \/>\n  refresh-interval: 100   ticks<\/p>\n<p> Chat Formatting<br \/>\nchat:<br \/>\n  enabled: true<br \/>\n  format: &#8216;{prefix}{player}{suffix}: {message}&#8217;<br \/>\n  allow-colors: true<\/p>\n<p> Expiration Management<br \/>\nexpiration:<br \/>\n  auto-cleanup: true<br \/>\n  cleanup-interval: 30   minutes<br \/>\n  notify-on-expiration: true<br \/>\n  warn-before-expiration: 24   hours<\/p>\n<p> Permission System<br \/>\npermissions:<br \/>\n  mode: auto   Options: auto, standalone, luckperms<br \/>\n  apply-on-join: true<br \/>\n  refresh-on-change: true<br \/>\n&#8220;`<\/p>\n<p> Rank Definitions (ranks.yml)<\/p>\n<p>&#8220;`yaml<br \/>\nranks:<br \/>\n  vip:<br \/>\n    weight: 10                               Hierarchy (higher = better)<br \/>\n    display_name: &#8216;<gold>VIP<\/gold>&#8216;         Shown in GUI\/messages<br \/>\n    prefix: &#8216;<gradient:yellow:gold>[VIP]<\/gradient> &#8216;<br \/>\n    suffix: &#8221;<br \/>\n    gui_icon: GOLD_INGOT                     Item in GUI<br \/>\n    custom_model_data: 0                     Resource pack support<br \/>\n    permissions:<br \/>\n      &#8211; &#8216;essentials.fly&#8217;<br \/>\n      &#8211; &#8216;essentials.heal&#8217;<br \/>\n      &#8211; &#8216;ultimateranks.chat.color&#8217;<br \/>\n&#8220;`<\/p>\n<p> MySQL Configuration<\/p>\n<p>&#8220;`yaml<br \/>\ndatabase:<br \/>\n  type: mysql<br \/>\n  mysql:<br \/>\n    host: localhost<br \/>\n    port: 3306<br \/>\n    database: ultimateranks<br \/>\n    username: root<br \/>\n    password: &#8216;your_password&#8217;<br \/>\n    pool-size: 10<br \/>\n    parameters: &#8216;?useSSL=false&#038;autoReconnect=true&#8217;<br \/>\n&#8220;`<\/p>\n<p>\ud83c\udfa8 Creating Ranks from Scratch &#8211; Complete Guide<\/p>\n<p>\ud83d\udcdd Quick Overview<\/p>\n<p>**Where to create ranks:** `plugins\/UltimateRanks\/ranks.yml`<\/p>\n<p>**Process:**<br \/>\n1. Define rank structure<br \/>\n2. Set weight (hierarchy)<br \/>\n3. Choose colors\/prefix<br \/>\n4. Add permissions<br \/>\n5. Pick GUI icon<br \/>\n6. Reload plugin<\/p>\n<p> \ud83d\ude80 Step-by-Step Tutorial<\/p>\n<p> Step 1: Open ranks.yml<\/p>\n<p>&#8220;`bash<br \/>\n Navigate to your server folder<br \/>\ncd plugins\/UltimateRanks\/<\/p>\n<p> Edit ranks.yml<br \/>\nnano ranks.yml<br \/>\n or use Notepad++\/VSCode<br \/>\n&#8220;`<\/p>\n<p> Step 2: Basic Rank Structure<\/p>\n<p>&#8220;`yaml<br \/>\nranks:<br \/>\n  your_rank_name:           Unique identifier (lowercase, no spaces)<br \/>\n    weight: 10              Number (higher = more important)<br \/>\n    display_name: &#8216;<gold>Display Name<\/gold>&#8216;  What players see<br \/>\n    prefix: &#8216;<gold>[Prefix]<\/gold> &#8216;            Chat prefix<br \/>\n    suffix: &#8221;              Chat suffix (optional)<br \/>\n    gui_icon: GOLD_INGOT    Item shown in menu<br \/>\n    custom_model_data: 0    For resource packs (0 = disabled)<br \/>\n    permissions:            List of permissions this rank gives<br \/>\n      &#8211; &#8216;permission.node.1&#8217;<br \/>\n      &#8211; &#8216;permission.node.2&#8217;<br \/>\n&#8220;`<\/p>\n<p> \ud83d\udca1 Example: Creating Your First Rank<\/p>\n<p>Let&#8217;s create a **&#8221;Supporter&#8221;** rank from scratch:<\/p>\n<p>&#8220;`yaml<br \/>\nranks:<br \/>\n  supporter:<br \/>\n    weight: 5                                     Low tier (above default)<br \/>\n    display_name: &#8216;<gradient:green:lime>Supporter<\/gradient>&#8216;<br \/>\n    prefix: &#8216;<gradient:green:lime>[Supporter]<\/gradient> &#8216;<br \/>\n    suffix: &#8216; <green>\u2665<\/green>&#8216;<br \/>\n    gui_icon: EMERALD                             Green emerald item<br \/>\n    custom_model_data: 0<br \/>\n    permissions:<br \/>\n      &#8211; &#8216;essentials.spawn&#8217;                       Basic teleport<br \/>\n      &#8211; &#8216;essentials.sethome&#8217;                      Set homes<br \/>\n      &#8211; &#8216;essentials.home&#8217;                         Teleport home<br \/>\n      &#8211; &#8216;essentials.back&#8217;                         Return to death point<br \/>\n&#8220;`<\/p>\n<p>**Save the file**, then in-game:<br \/>\n&#8220;`<br \/>\n\/rank reload<br \/>\n\/rank grant YourName supporter<br \/>\n&#8220;`<\/p>\n<p>&#8212;<\/p>\n<p> Commands &#038; Permissions<\/p>\n<p> Commands<\/p>\n<p>| Command | Description | Permission | Usage Example |<br \/>\n|&#8212;&#8212;&#8212;|&#8212;&#8212;&#8212;&#8212;-|&#8212;&#8212;&#8212;&#8212;|&#8212;&#8212;&#8212;&#8212;&#8212;|<br \/>\n| `\/rank menu` | Open rank GUI | `ultimateranks.menu` | `\/rank menu` |<br \/>\n| `\/rank set <player> <rank>` | Set main rank | `ultimateranks.admin.set` | `\/rank set Steve vip` |<br \/>\n| `\/rank grant <player> <rank> [time]` | Add rank | `ultimateranks.admin.grant` | `\/rank grant Steve builder 30d` |<br \/>\n| `\/rank remove <player> <rank>` | Remove rank | `ultimateranks.admin.remove` | `\/rank remove Steve vip` |<br \/>\n| `\/rank reload` | Reload configs | `ultimateranks.admin.reload` | `\/rank reload` |<\/p>\n<p> Command Aliases<br \/>\n&#8220;`<br \/>\n\/rank    \u2192 \/ranks, \/ur<br \/>\nmenu     \u2192 gui, open<br \/>\nremove   \u2192 take, revoke<br \/>\nreload   \u2192 rl<br \/>\n&#8220;`<\/p>\n<p> Permissions Hierarchy<\/p>\n<p>&#8220;`<br \/>\nultimateranks.*                    (All permissions)<br \/>\n\u251c\u2500\u2500 ultimateranks.use             (Basic access)<br \/>\n\u251c\u2500\u2500 ultimateranks.menu            (GUI access)<br \/>\n\u2514\u2500\u2500 ultimateranks.admin.*         (Admin commands)<br \/>\n    \u251c\u2500\u2500 ultimateranks.admin.set<br \/>\n    \u251c\u2500\u2500 ultimateranks.admin.grant<br \/>\n    \u251c\u2500\u2500 ultimateranks.admin.remove<br \/>\n    \u2514\u2500\u2500 ultimateranks.admin.reload<br \/>\n&#8220;`<\/p>\n<p> Special Permissions<\/p>\n<p>| Permission | Description | Default |<br \/>\n|&#8212;&#8212;&#8212;&#8212;|&#8212;&#8212;&#8212;&#8212;-|&#8212;&#8212;&#8212;|<br \/>\n| `ultimateranks.chat.color` | Use color codes in chat | false |<br \/>\n| `ultimateranks.bypass.expiration` | Ranks never expire | op |<br \/>\n| `ultimateranks.notify.expiration` | Get expiration warnings | true |<\/p>\n<p>&#8212;<\/p>\n<p> Usage Guide<\/p>\n<p> For Players<\/p>\n<p> Opening the Rank Menu<br \/>\n&#8220;`<br \/>\n1. Type: \/rank menu<br \/>\n2. GUI opens showing all available ranks<br \/>\n3. Click any owned rank to equip it<br \/>\n4. Your chat prefix updates immediately<br \/>\n&#8220;`<\/p>\n<p> Understanding Rank States<br \/>\n&#8220;`<br \/>\n\ud83c\udf1f Glowing Item = Currently Active<br \/>\n   \u2192 This is your display rank<br \/>\n   \u2192 Shown in chat and tab list<\/p>\n<p>\u2705 Normal Item = Owned but Not Active<br \/>\n   \u2192 Click to switch to this rank<br \/>\n   \u2192 You still have its permissions<\/p>\n<p>\ud83d\udeab Barrier = Locked<br \/>\n   \u2192 You don&#8217;t own this rank<br \/>\n   \u2192 Ask staff to grant it<br \/>\n&#8220;`<\/p>\n<p> Checking Expiration<br \/>\n&#8220;`<br \/>\nOpen \/rank menu and hover over any owned rank:<\/p>\n<p>  [VIP]<br \/>\n  \u2705 Click to Equip<\/p>\n<p>  Duration: 25 days, 14 hours<br \/>\n  Weight: 10<br \/>\n&#8220;`<\/p>\n<p> For Administrators<\/p>\n<p> Setting Up Ranks<\/p>\n<p>**1. Define Rank in ranks.yml**<br \/>\n&#8220;`yaml<br \/>\nranks:<br \/>\n  premium:<br \/>\n    weight: 20<br \/>\n    display_name: &#8216;<gradient:aqua:blue>Premium<\/gradient>&#8216;<br \/>\n    prefix: &#8216;<gradient:aqua:blue>[Premium]<\/gradient> &#8216;<br \/>\n    suffix: &#8216; <aqua>\u2605<\/aqua>&#8216;<br \/>\n    gui_icon: DIAMOND<br \/>\n    permissions:<br \/>\n      &#8211; &#8216;essentials.*&#8217;<br \/>\n      &#8211; &#8216;worldedit.selection.*&#8217;<br \/>\n&#8220;`<\/p>\n<p>**2. Reload Configuration**<br \/>\n&#8220;`bash<br \/>\n\/rank reload<br \/>\n&#8220;`<\/p>\n<p>**3. Grant to Players**<br \/>\n&#8220;`bash<br \/>\n Permanent rank<br \/>\n\/rank grant PlayerName premium<\/p>\n<p> 30-day rank<br \/>\n\/rank grant PlayerName premium 30d<\/p>\n<p> 1 week rank<br \/>\n\/rank grant PlayerName premium 1w<br \/>\n&#8220;`<\/p>\n<p> Managing Player Ranks<\/p>\n<p>**View Player&#8217;s Ranks**<br \/>\n&#8220;`bash<br \/>\n Players can see their own via \/rank menu<br \/>\n Admins use database or cache inspection<br \/>\n&#8220;`<\/p>\n<p>**Reset Player Ranks**<br \/>\n&#8220;`bash<br \/>\n Remove all ranks and set default<br \/>\n\/rank set PlayerName default<br \/>\n&#8220;`<\/p>\n<p>**Temporary VIP Promotion**<br \/>\n&#8220;`bash<br \/>\n Grant VIP for 7 days<br \/>\n\/rank grant PlayerName vip 7d<\/p>\n<p> Player gets notified 24 hours before expiration<br \/>\n Rank auto-removes after 7 days<br \/>\n&#8220;`<\/p>\n<p>**Multi-Rank Assignment**<br \/>\n&#8220;`bash<br \/>\n Player can be VIP + Builder + Helper simultaneously<br \/>\n\/rank grant PlayerName vip<br \/>\n\/rank grant PlayerName builder<br \/>\n\/rank grant PlayerName helper<\/p>\n<p> All three ranks grant permissions<br \/>\n Player chooses which shows in chat via GUI<br \/>\n&#8220;`<\/p>\n<p> Common Workflows<\/p>\n<p>**New Player Setup**<br \/>\n&#8220;`bash<br \/>\n 1. Player joins \u2192 automatically gets &#8220;default&#8221; rank<br \/>\n 2. Player donates \u2192 grant VIP<br \/>\n\/rank grant PlayerName vip<\/p>\n<p> 3. Player applies for builder \u2192 grant builder<br \/>\n\/rank grant PlayerName builder<\/p>\n<p> Player now has: default + vip + builder (all permissions)<br \/>\n Player chooses &#8220;vip&#8221; or &#8220;builder&#8221; for chat display<br \/>\n&#8220;`<\/p>\n<p>**Staff Promotion**<br \/>\n&#8220;`bash<br \/>\n Promote to Helper (keep VIP)<br \/>\n\/rank grant PlayerName helper<\/p>\n<p> Player retains VIP perks + gets staff permissions<br \/>\n Can switch between [VIP] and [Helper] prefix in GUI<br \/>\n&#8220;`<\/p>\n<p>**Seasonal Events**<br \/>\n&#8220;`bash<br \/>\n Halloween Event &#8211; 30 days<br \/>\n\/rank grant * halloween 30d<\/p>\n<p> All online players get halloween rank<br \/>\n Auto-expires after event<br \/>\n&#8220;`<\/p>\n<p> Placeholders<\/p>\n<p> PlaceholderAPI Integration<\/p>\n<p>All placeholders work with any plugin supporting PlaceholderAPI (DeluxeChat, FeatherBoard, etc.)<\/p>\n<p>| Placeholder | Output | Example |<br \/>\n|&#8212;&#8212;&#8212;&#8212;-|&#8212;&#8212;&#8211;|&#8212;&#8212;&#8212;|<br \/>\n| `%ultimateranks_prefix%` | Active rank prefix | `[VIP] ` |<br \/>\n| `%ultimateranks_suffix%` | Active rank suffix | ` \u2605` |<br \/>\n| `%ultimateranks_rank_displayname%` | Rank display name | `VIP` |<br \/>\n| `%ultimateranks_rank_id%` | Rank identifier | `vip` |<br \/>\n| `%ultimateranks_rank_weight%` | Rank weight | `10` |<br \/>\n| `%ultimateranks_total_ranks%` | Total owned ranks | `3` |<\/p>\n<p> Usage Examples<\/p>\n<p>**DeluxeChat Format**<br \/>\n&#8220;`yaml<br \/>\nformats:<br \/>\n  default:<br \/>\n    format: &#8216;%ultimateranks_prefix%%player_name%%ultimateranks_suffix%: %message%&#8217;<br \/>\n     Output: [VIP] Steve \u2605: Hello!<br \/>\n&#8220;`<\/p>\n<p>**Tab List (TAB Plugin)**<br \/>\n&#8220;`yaml<br \/>\nheader: |<br \/>\n  &#038;6Server Name<br \/>\n  &#038;e%ultimateranks_prefix%%player_name%<br \/>\n&#8220;`<\/p>\n<p>**Scoreboard (FeatherBoard)**<br \/>\n&#8220;`yaml<br \/>\nboard:<br \/>\n  title: &#8216;&#038;6&#038;lServer&#8217;<br \/>\n  lines:<br \/>\n    &#8211; &#8216;&#038;7Rank: %ultimateranks_rank_displayname%&#8217;<br \/>\n    &#8211; &#8216;&#038;7Weight: %ultimateranks_rank_weight%&#8217;<br \/>\n    &#8211; &#8216;&#038;7Total Ranks: %ultimateranks_total_ranks%&#8217;<br \/>\n&#8220;`<\/p>\n<p>**Signs**<br \/>\n&#8220;`<br \/>\n[Shop]<br \/>\nVIP Only<br \/>\n%ultimateranks_rank_displayname%<br \/>\nRequired<br \/>\n&#8220;`<\/p>\n<p>&#8212;<\/p>\n<p> FAQ<\/p>\n<p> General Questions<\/p>\n<p>**Q: What makes UltimateRanks different from other rank plugins?**<br \/>\n> A: UltimateRanks allows players to **own multiple ranks simultaneously** while choosing which one displays in chat. Traditional plugins force &#8220;one rank only&#8221; &#8211; we give **all permissions from all ranks** while letting players customize their appearance.<\/p>\n<p>**Q: Does this replace LuckPerms?**<br \/>\n> A: No! UltimateRanks **integrates with** LuckPerms. Use LuckPerms for your complex permission setups, and UltimateRanks for visual rank management and the GUI system. They work together seamlessly.<\/p>\n<p>**Q: Can I use this without LuckPerms?**<br \/>\n> A: Yes! UltimateRanks has a built-in permission system (Standalone Mode) that works without any dependencies.<\/p>\n<p>**Q: Is this compatible with my current ranks?**<br \/>\n> A: If you&#8217;re using LuckPerms, UltimateRanks can sync with your existing groups. You&#8217;ll need to create matching rank definitions in `ranks.yml`.<\/p>\n<p> Technical Questions<\/p>\n<p>**Q: Does this cause server lag?**<br \/>\n> A: No. All database operations are **100% asynchronous**. There&#8217;s zero server tick lag from UltimateRanks.<\/p>\n<p>**Q: How many players can this support?**<br \/>\n> A: Tested with **1,000+ concurrent players**. With MySQL and proper caching, it scales to any server size.<\/p>\n<p>**Q: What happens if my database crashes?**<br \/>\n> A: Players retain their cached rank data during the session. On rejoin, UltimateRanks will attempt to reconnect. No data loss occurs (cached data saves before disconnect).<\/p>\n<p>**Q: Can I use this on BungeeCord networks?**<br \/>\n> A: Yes! Use MySQL database mode. All servers in your network will share the same rank database. Players keep their ranks across servers.<\/p>\n<p> Configuration Questions<\/p>\n<p>**Q: How do I create a new rank?**<br \/>\n&#8220;`yaml<br \/>\n Add to ranks.yml:<br \/>\nranks:<br \/>\n  newrank:<br \/>\n    weight: 15<br \/>\n    display_name: &#8216;<aqua>NewRank<\/aqua>&#8216;<br \/>\n    prefix: &#8216;<aqua>[NewRank]<\/aqua> &#8216;<br \/>\n    suffix: &#8221;<br \/>\n    gui_icon: DIAMOND<br \/>\n    permissions:<br \/>\n      &#8211; &#8216;permission.node.here&#8217;<\/p>\n<p> Then: \/rank reload<br \/>\n&#8220;`<\/p>\n<p>**Q: How do I change the GUI title?**<br \/>\n&#8220;`yaml<br \/>\n config.yml:<br \/>\ngui:<br \/>\n  menu-title: &#8216;<gradient:red:blue>Custom Title<\/gradient>&#8216;<br \/>\n&#8220;`<\/p>\n<p>**Q: How do gradients work?**<br \/>\n&#8220;`yaml<br \/>\n Simple gradient (2 colors):<br \/>\nprefix: &#8216;<gradient:red:blue>VIP<\/gradient> &#8216;<\/p>\n<p> Multi-color gradient:<br \/>\nprefix: &#8216;<gradient:red:yellow:green:blue>Rainbow<\/gradient> &#8216;<\/p>\n<p> With formatting:<br \/>\nprefix: &#8216;<bold><gradient:gold:yellow>VIP<\/gradient><\/bold> &#8216;<br \/>\n&#8220;`<\/p>\n<p> Gameplay Questions<\/p>\n<p>**Q: Can players have multiple ranks?**<br \/>\n> A: **YES!** That&#8217;s the core feature. Players can own VIP + Builder + Helper simultaneously.<\/p>\n<p>**Q: Do multiple ranks stack permissions?**<br \/>\n> A: **YES!** If you own [Member] with `essentials.spawn` and [VIP] with `essentials.fly`, you get BOTH permissions.<\/p>\n<p>**Q: Can players choose which rank shows in chat?**<br \/>\n> A: **YES!** Open `\/rank menu` and click any owned rank to make it active.<\/p>\n<p>**Q: What happens when a rank expires?**<br \/>\n&#8220;`<br \/>\n1. Automatic cleanup removes expired ranks<br \/>\n2. Player receives notification (if enabled)<br \/>\n3. Permissions from expired rank are removed<br \/>\n4. If expired rank was active, switches to another owned rank<br \/>\n5. Database entry is deleted<br \/>\n&#8220;`<\/p>\n<p>**Q: Can I give temporary ranks?**<br \/>\n&#8220;`bash<br \/>\n Yes! Use duration syntax:<br \/>\n\/rank grant Steve vip 30d       30 days<br \/>\n\/rank grant Steve builder 1w    1 week<br \/>\n\/rank grant Steve premium 1mo   1 month<br \/>\n\/rank grant Steve special 1y    1 year<br \/>\n\/rank grant Steve permanent     Forever<br \/>\n&#8220;`<\/p>\n<p> Admin Questions<\/p>\n<p>**Q: How do I give someone multiple ranks?**<br \/>\n&#8220;`bash<br \/>\n\/rank grant PlayerName vip<br \/>\n\/rank grant PlayerName builder<br \/>\n\/rank grant PlayerName helper<\/p>\n<p> Player now owns all three!<br \/>\n They choose which shows in chat via \/rank menu<br \/>\n&#8220;`<\/p>\n<p>**Q: How do I reset someone&#8217;s ranks?**<br \/>\n&#8220;`bash<br \/>\n Option 1: Set to single rank (removes all others)<br \/>\n\/rank set PlayerName default<\/p>\n<p> Option 2: Remove specific ranks<br \/>\n\/rank remove PlayerName vip<br \/>\n\/rank remove PlayerName builder<br \/>\n&#8220;`<\/p>\n<p>**Q: Can I see what ranks someone has?**<br \/>\n> Currently via database or cache inspection. Future update will add `\/rank info <player>` command.<\/p>\n<p>**Q: How do I backup the database?**<br \/>\n&#8220;`bash<br \/>\n SQLite (automatic backup):<br \/>\ncp plugins\/UltimateRanks\/data.db plugins\/UltimateRanks\/data.db.backup<\/p>\n<p> MySQL (use mysqldump):<br \/>\nmysqldump -u username -p ultimateranks > backup.sql<br \/>\n&#8220;`<\/p>\n<p> Troubleshooting<\/p>\n<p>**Q: Ranks not appearing in GUI**<br \/>\n&#8220;`<br \/>\n1. Check ranks.yml syntax (use YAML validator)<br \/>\n2. Ensure rank has valid gui_icon material<br \/>\n3. Run \/rank reload<br \/>\n4. Check console for errors<br \/>\n&#8220;`<\/p>\n<p>**Q: Permissions not working**<br \/>\n&#8220;`<br \/>\n1. Check permission handler mode in console startup<br \/>\n2. Verify permissions in ranks.yml<br \/>\n3. Test with \/rank menu (requires ultimateranks.menu)<br \/>\n4. Check if LuckPerms is interfering (if using standalone mode)<br \/>\n&#8220;`<\/p>\n<p>**Q: Database connection failed**<br \/>\n&#8220;`<br \/>\n SQLite:<br \/>\n1. Check file permissions<br \/>\n2. Ensure data folder exists<\/p>\n<p> MySQL:<br \/>\n1. Verify credentials in config.yml<br \/>\n2. Check MySQL server is running<br \/>\n3. Test connection manually<br \/>\n4. Check firewall rules<br \/>\n&#8220;`<\/p>\n<p>**Q: Chat prefix not showing**<br \/>\n&#8220;`<br \/>\n1. Ensure chat.enabled: true in config.yml<br \/>\n2. Check if another chat plugin is overriding<br \/>\n3. Verify player has an active rank (\/rank menu)<br \/>\n4. Test PlaceholderAPI placeholders<br \/>\n&#8220;`<\/p>\n<p>&#8212;<\/p>\n<p> Support<\/p>\n<p> Getting Help<\/p>\n<p> 1. **Check Documentation**<br \/>\n&#8211; Read this document thoroughly<br \/>\n&#8211; Check example configurations<br \/>\n&#8211; Review common issues in FAQ<\/p>\n<p> 2. **Console Logs**<br \/>\n&#8220;`<br \/>\nEnable debug mode:<br \/>\n  config.yml \u2192 advanced.debug: true<\/p>\n<p>Check logs:<br \/>\n  \/logs\/latest.log<br \/>\n  Look for [UltimateRanks] messages<br \/>\n&#8220;`<\/p>\n<p> 3. **Community Support**<br \/>\n&#8211; **Discord**: [geturplugins]<\/p>\n<p> 4. **Report Bugs**<br \/>\n&#8220;`<br \/>\nInclude:<br \/>\n  \u2705 Server version (Paper 1.21.x)<br \/>\n  \u2705 Plugin version<br \/>\n  \u2705 Full error logs<br \/>\n  \u2705 config.yml and ranks.yml<br \/>\n  \u2705 Steps to reproduce<br \/>\n  \u2705 Expected vs actual behavior<br \/>\n&#8220;`<\/p>\n<p> Useful Commands for Support<\/p>\n<p>&#8220;`bash<br \/>\n Check plugin version<br \/>\n\/version UltimateRanks<\/p>\n<p> Test database connection<br \/>\n\/rank reload<br \/>\n Watch console for database messages<\/p>\n<p> Enable debug mode<br \/>\n config.yml \u2192 advanced.debug: true<br \/>\n Restart server<\/p>\n<p> Export player data (future feature)<br \/>\n\/rank export <player>\n<p> Test permissions<br \/>\n\/rank menu<br \/>\n If this works, permission system is functional<br \/>\n&#8220;`<\/p>\n<p>&#8212;<\/p>\n<p> Performance Optimization<\/p>\n<p> Recommended Settings<\/p>\n<p> Small Server (1-50 players)<br \/>\n&#8220;`yaml<br \/>\ndatabase:<br \/>\n  type: sqlite<\/p>\n<p>performance:<br \/>\n  enable-cache: true<br \/>\n  cache-expiration: 60   minutes<br \/>\n  batch-size: 50<br \/>\n&#8220;`<\/p>\n<p> Medium Server (50-200 players)<br \/>\n&#8220;`yaml<br \/>\ndatabase:<br \/>\n  type: mysql<br \/>\n  mysql:<br \/>\n    pool-size: 5<\/p>\n<p>performance:<br \/>\n  enable-cache: true<br \/>\n  cache-expiration: 45<br \/>\n  batch-size: 100<br \/>\n&#8220;`<\/p>\n<p> Large Server (200+ players)<br \/>\n&#8220;`yaml<br \/>\ndatabase:<br \/>\n  type: mysql<br \/>\n  mysql:<br \/>\n    pool-size: 15<br \/>\n    minimum-idle: 5<\/p>\n<p>performance:<br \/>\n  enable-cache: true<br \/>\n  cache-expiration: 30<br \/>\n  batch-size: 200<br \/>\n&#8220;`<\/p>\n<p> Network (BungeeCord\/Velocity)<br \/>\n&#8220;`yaml<br \/>\ndatabase:<br \/>\n  type: mysql<br \/>\n  mysql:<br \/>\n    host: central-db.example.com<br \/>\n    pool-size: 20<br \/>\n    minimum-idle: 10<\/p>\n<p>performance:<br \/>\n  enable-cache: true<br \/>\n  cache-expiration: 20<br \/>\n  batch-size: 500<br \/>\n&#8220;`<\/p>\n<p>&#8212;<\/p>\n<p> Migration Guide<\/p>\n<p> From LuckPerms Groups<\/p>\n<p>&#8220;`bash<br \/>\n 1. Export LuckPerms groups<br \/>\n\/lp export<\/p>\n<p> 2. Create matching ranks in ranks.yml<br \/>\nranks:<br \/>\n  vip:   Match LuckPerms group name<br \/>\n    weight: 10<br \/>\n    display_name: &#8216;<gold>VIP<\/gold>&#8216;<br \/>\n    prefix: &#8216;<gold>[VIP]<\/gold> &#8216;<br \/>\n    permissions: []   Leave empty, LuckPerms handles it<\/p>\n<p> 3. Enable LuckPerms sync<br \/>\nconfig.yml:<br \/>\n  integrations:<br \/>\n    luckperms:<br \/>\n      sync-groups: true<\/p>\n<p> 4. Reload<br \/>\n\/rank reload<\/p>\n<p> Players&#8217; LuckPerms groups now sync with UltimateRanks<br \/>\n&#8220;`<\/p>\n<p> From EssentialsX Kits\/Ranks<\/p>\n<p>&#8220;`bash<br \/>\n 1. Map Essentials groups to UltimateRanks<br \/>\nEssentials: &#8220;default&#8221; \u2192 UltimateRanks: &#8220;default&#8221;<br \/>\nEssentials: &#8220;vip&#8221; \u2192 UltimateRanks: &#8220;vip&#8221;<\/p>\n<p> 2. Copy permissions from Essentials config<\/p>\n<p> 3. Grant ranks to players<br \/>\n\/rank grant <player> <rank><\/p>\n<p> 4. Remove Essentials rank system (optional)<br \/>\n&#8220;`<\/p>\n<p>&#8212;<\/p>\n<p> Changelog<\/p>\n<p> Version 1.0.0 (Initial Release)<br \/>\n&#8220;`<br \/>\n\u2728 Features:<br \/>\n  \u2705 Multi-rank ownership system<br \/>\n  \u2705 Active display rank selection<br \/>\n  \u2705 Paginated GUI with 28 ranks per page<br \/>\n  \u2705 Dual permission system (Standalone + LuckPerms)<br \/>\n  \u2705 Full MiniMessage support (RGB, gradients)<br \/>\n  \u2705 SQLite and MySQL database support<br \/>\n  \u2705 Async database operations<br \/>\n  \u2705 Smart caching system<br \/>\n  \u2705 Expiration system with warnings<br \/>\n  \u2705 PlaceholderAPI integration<br \/>\n  \u2705 5 admin commands with tab completion<br \/>\n  \u2705 16 example ranks included<\/p>\n<p>\ud83d\udd27 Technical:<br \/>\n  \u2705 Java 21 + Paper 1.21 API<br \/>\n  \u2705 HikariCP connection pooling<br \/>\n  \u2705 Thread-safe operations<br \/>\n  \u2705 SOLID architecture<br \/>\n  \u2705 Zero tick lag (100% async)<\/p>\n<p>\ud83d\udcda Documentation:<br \/>\n  \u2705 Complete user guide<br \/>\n  \u2705 Admin manual<br \/>\n  \u2705 Configuration examples<br \/>\n&#8220;`<\/p>\n<p>&#8212;<\/p>\n<p> Credits &#038; License<\/p>\n<p> Development Team<br \/>\n&#8211; **Lead Developer**: geturplugins<br \/>\n&#8211; **Special Thanks**: Paper Team, LuckPerms, PlaceholderAPI<\/p>\n<p> Libraries Used<br \/>\n&#8211; **Paper API** &#8211; Minecraft server API<br \/>\n&#8211; **LuckPerms API** &#8211; Permission system integration<br \/>\n&#8211; **PlaceholderAPI** &#8211; Placeholder support<br \/>\n&#8211; **HikariCP** &#8211; Connection pooling<br \/>\n&#8211; **Adventure API** &#8211; Text component system<\/p>\n<p>&#8212;<\/p>\n<p> Quick Reference Card<\/p>\n<p>&#8220;`<br \/>\n\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557<br \/>\n\u2551              ULTIMATERANKS QUICK REFERENCE                   \u2551<br \/>\n\u2560\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2563<br \/>\n\u2551                                                              \u2551<br \/>\n\u2551  PLAYER COMMANDS:                                            \u2551<br \/>\n\u2551    \/rank menu              \u2192 Open rank selection GUI         \u2551<br \/>\n\u2551                                                              \u2551<br \/>\n\u2551  ADMIN COMMANDS:                                             \u2551<br \/>\n\u2551    \/rank set <player> <rank>           \u2192 Set main rank       \u2551<br \/>\n\u2551    \/rank grant <player> <rank> [time]  \u2192 Add rank            \u2551<br \/>\n\u2551    \/rank remove <player> <rank>        \u2192 Remove rank         \u2551<br \/>\n\u2551    \/rank reload                        \u2192 Reload configs      \u2551<br \/>\n\u2551                                                              \u2551<br \/>\n\u2551  TIME FORMATS:                                               \u2551<br \/>\n\u2551    30d = 30 days    1w = 1 week    1mo = 1 month            \u2551<br \/>\n\u2551    permanent = never expires                                 \u2551<br \/>\n\u2551                                                              \u2551<br \/>\n\u2551  PLACEHOLDERS:                                               \u2551<br \/>\n\u2551    %ultimateranks_prefix%           \u2192 Active rank prefix     \u2551<br \/>\n\u2551    %ultimateranks_rank_displayname% \u2192 Rank display name     \u2551<br \/>\n\u2551    %ultimateranks_total_ranks%      \u2192 Number owned          \u2551<br \/>\n\u2551                                                              \u2551<br \/>\n\u2551  CONFIG FILES:                                               \u2551<br \/>\n\u2551    config.yml  \u2192 Database, GUI, chat settings               \u2551<br \/>\n\u2551    ranks.yml   \u2192 Rank definitions                           \u2551<br \/>\n\u2551                                                              \u2551<br \/>\n\u2551  SUPPORT:                                                    \u2551<br \/>\n\u2551    Discord: geturplugins                         \u2551<br \/>\n\u2551                                                              \u2551<br \/>\n\u255a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255d<br \/>\n&#8220;`<\/p>\n<p>&#8212;<\/p>\n<p> Final Notes<\/p>\n<p> Feedback &#038; Suggestions<\/p>\n<p>We&#8217;re constantly improving UltimateRanks based on user feedback!<\/p>\n<p>**Submit Suggestions:**<br \/>\n&#8211; Discord<br \/>\n&#8211; SpigotMC reviews<\/p>\n<p>&#8212;<\/p>\n<p>**\ud83c\udf89 Thank you for choosing UltimateRanks!**<\/p>\n<p>*Advanced Rank Management Made Simple*<\/p>\n<p>&#8212; **<\/p>\n","protected":false},"excerpt":{"rendered":"<p>All in one ranks plugin with custom rank making chat chat and nametag rank integration and ranks manager for players and so on &#8230;&#8230;.<\/p>\n","protected":false},"featured_media":161581,"template":"","meta":{"_minecraft_slug":"ultimateranks","_minecraft_project_id":"QjPjeLzR","_minecraft_author":"geturplugins","_minecraft_license":"LicenseRef-All-Rights-Reserved","_minecraft_downloads":876,"_minecraft_follows":1,"_minecraft_client_side":"unsupported","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"ultimateranks.zip","_minecraft_size_bytes":17889788,"_minecraft_version_count":1,"_minecraft_updated_at":"2026-05-16T09:06:11.958435Z","_minecraft_date_created":"2026-01-29T22:08:04.587284Z","_minecraft_date_modified":"2026-01-27T06:07:52.973435Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/ultimateranks","_minecraft_icon_attachment_id":161581,"_minecraft_imported_at":"2026-06-09T15:32:34+00:00","_minecraft_import_hash":"391f70e637a1addc706d898faeaca75e","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[126,127,867,123],"mod_loader":[132],"minecraft_version":[62,37,40,41,73,74,38,78,79,80,81,82],"class_list":["post-161580","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-management","mod_category-paper","mod_category-social","mod_category-technology","mod_loader-paper","minecraft_version-1-21","minecraft_version-1-21-1","minecraft_version-1-21-10","minecraft_version-1-21-11","minecraft_version-1-21-2","minecraft_version-1-21-3","minecraft_version-1-21-4","minecraft_version-1-21-5","minecraft_version-1-21-6","minecraft_version-1-21-7","minecraft_version-1-21-8","minecraft_version-1-21-9"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>UltimateRanks - Minecraft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vpesports.com\/minecraft\/mods\/ultimateranks\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"UltimateRanks - Minecraft\" \/>\n<meta property=\"og:description\" content=\"All in one ranks plugin with custom rank making chat chat and nametag rank integration and ranks manager for players and so on .......\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/ultimateranks\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ultimateranks\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ultimateranks\\\/\",\"name\":\"UltimateRanks - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ultimateranks\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ultimateranks\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ultimateranks-icon-6dd60474c416646786bb6bf1dc9f092dbc022abc_96.webp\",\"datePublished\":\"2026-06-09T15:32:34+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ultimateranks\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ultimateranks\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ultimateranks\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ultimateranks-icon-6dd60474c416646786bb6bf1dc9f092dbc022abc_96.webp\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ultimateranks-icon-6dd60474c416646786bb6bf1dc9f092dbc022abc_96.webp\",\"width\":96,\"height\":96},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ultimateranks\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mods\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"UltimateRanks\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\",\"name\":\"Minecraft\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"UltimateRanks - Minecraft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vpesports.com\/minecraft\/mods\/ultimateranks\/","og_locale":"en_US","og_type":"article","og_title":"UltimateRanks - Minecraft","og_description":"All in one ranks plugin with custom rank making chat chat and nametag rank integration and ranks manager for players and so on .......","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/ultimateranks\/","og_site_name":"Minecraft","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/ultimateranks\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/ultimateranks\/","name":"UltimateRanks - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/ultimateranks\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/ultimateranks\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/ultimateranks-icon-6dd60474c416646786bb6bf1dc9f092dbc022abc_96.webp","datePublished":"2026-06-09T15:32:34+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/ultimateranks\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/ultimateranks\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/ultimateranks\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/ultimateranks-icon-6dd60474c416646786bb6bf1dc9f092dbc022abc_96.webp","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/ultimateranks-icon-6dd60474c416646786bb6bf1dc9f092dbc022abc_96.webp","width":96,"height":96},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/ultimateranks\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vpesports.com\/minecraft\/"},{"@type":"ListItem","position":2,"name":"Mods","item":"https:\/\/vpesports.com\/minecraft\/mods\/"},{"@type":"ListItem","position":3,"name":"UltimateRanks"}]},{"@type":"WebSite","@id":"https:\/\/vpesports.com\/minecraft\/#website","url":"https:\/\/vpesports.com\/minecraft\/","name":"Minecraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vpesports.com\/minecraft\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod\/161580","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod"}],"about":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/types\/mod"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media\/161581"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=161580"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=161580"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=161580"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=161580"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}