
UltimateRanks
All in one ranks plugin with custom rank making chat chat and nametag rank integration and ranks manager for players and so on .......
** 🎖️ UltimateRanks - Complete Documentation
Overview
Description
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.
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.
Why Choose UltimateRanks?
| Feature | Traditional Plugins | UltimateRanks |
|---|---|---|
| Multiple Ranks | ❌ One rank only | ✅ Unlimited ranks |
| Permission Stacking | ❌ Single rank perms | ✅ All owned ranks contribute |
| Visual Customization | ❌ Fixed display | ✅ Choose active display rank |
| GUI Management | ⚠️ Basic or none | ✅ Beautiful paginated GUI |
| RGB Colors | ⚠️ Limited support | ✅ Full MiniMessage support |
| Performance | ⚠️ Sync operations | ✅ 100% async database |
| LuckPerms Sync | ⚠️ Replace or conflict | ✅ Seamless integration |
Target Audience
- Network Servers: Manage complex rank hierarchies (VIP + Builder + Staff)
- RPG Servers: Class ranks + achievement ranks + donor ranks
- Creative Servers: Builder roles + theme ranks + VIP tiers
- Survival Servers: Progression ranks + donor perks + special events
- Prison Servers: Mine ranks + prestige + VIP packages
Features
🎯 Core Features
- Multi-Rank Ownership System
- Players can own unlimited ranks simultaneously
- Own VIP + Builder + Helper at the same time
- All ranks contribute permissions (additive system)
- Zero conflicts between rank permissions
Example:
Player owns: [Member, VIP, Builder]
Permissions = Member + VIP + Builder (combined)
Active Display = VIP (shown in chat)
- Active Display Rank Selection
- Choose which rank appears in chat prefix/suffix
- Switch between owned ranks via interactive GUI
- Real-time updates without reconnecting
- Maintains all permissions from other ranks
- Beautiful Paginated GUI
- Clean, intuitive rank selection menu
- Visual states: Active (glowing), Owned (available), Locked (unavailable)
- 28 ranks per page with smooth navigation
- Expiration timers shown directly in GUI
- Custom icons with resource pack support
- Advanced Permission System
- Dual Mode Operation:
- Standalone Mode: Built-in Bukkit permission system
- LuckPerms Mode: Full integration with LuckPerms API
- Auto-detection of available systems
- Permission aggregation from all owned ranks
- Wildcard support (e.g.,
essentials.*) - Negation support (e.g.,
-essentials.fly)
- Expiration & Time Management
- Temporary ranks with automatic expiration
- Flexible duration formats:
30d,7d,1w,1mo,1y,permanent - Automatic cleanup of expired ranks
- Warning notifications before expiration
- Visual countdown in GUI
- Full MiniMessage Support
- RGB colors:
<FF5555>text</color> - Gradients:
<gradient:gold:yellow>VIP</gradient> - Formatting:
<bold>,<italic>,<underline> - Hover events and click actions
- Legacy color code conversion
- High-Performance Database
- SQLite: Zero-config, perfect for small servers
- MySQL: HikariCP pooling for large networks
- 100% asynchronous operations (zero server lag)
- Transaction support for data integrity
- Automatic schema management
- Smart Caching System
- In-memory cache for online players
- Sub-millisecond lookup times
- Automatic cache invalidation
- Thread-safe concurrent operations
🎨 Visual Features
Chat Formatting
Before:
<Player> Hello!
After:
[VIP] Player ★: Hello!
Format:
{prefix} + {player} + {suffix} + : + {message}
GUI States
| State | Visual | Description |
|---|---|---|
| Active | 🌟 Glowing item | Currently equipped rank |
| Owned | ✅ Normal icon | Click to equip |
| Locked | 🚫 Barrier | Not owned |
Rank Display Example
╔══════════════════════════════╗
║ My Ranks ║
╠══════════════════════════════╣
║ ║
║ [🌟 VIP] (Active) ║
║ Click to keep equipped ║
║ Duration: Permanent ║
║ ║
║ [✅ Builder] ║
║ Click to equip ║
║ Expires in: 15 days ║
║ ║
║ [🚫 MVP] (Locked) ║
║ You don't own this rank ║
║ ║
╚══════════════════════════════╝
🔧 Technical Features
Architecture
- SOLID Principles: Single Responsibility, Interface Segregation
- Design Patterns: Strategy, Builder, Repository, Singleton
- Dependency Injection: Clean, testable code
- Layer Separation: Model, Manager, Database, GUI, Commands
Performance Metrics
Database Operations:
✅ Load Player Data: ~5ms (SQLite), ~3ms (MySQL)
✅ Save Player Data: ~8ms (SQLite), ~4ms (MySQL)
✅ Rank Switch: ~2ms (cache hit)
Memory Usage:
✅ Base Plugin: ~5MB
✅ Per Player (cached): ~2KB
✅ GUI Open: +8KB
Scalability:
✅ 1,000+ concurrent players supported
✅ 100+ ranks tested
✅ Zero tick lag (100% async)
Thread Safety
- Concurrent hash maps for player cache
- CompletableFuture for async operations
- Synchronized database transactions
- No race conditions in rank switching
🔌 Integration Features
LuckPerms Integration
- Auto-Sync: UltimateRanks ⟷ LuckPerms groups
- Fallback Support: Works with or without LuckPerms
- Group Creation: Auto-create missing LuckPerms groups
- Permission Inheritance: Respects LuckPerms hierarchy
PlaceholderAPI Support
Available Placeholders:
%ultimateranks_prefix% → Active rank prefix
%ultimateranks_suffix% → Active rank suffix
%ultimateranks_rank_displayname% → Rank display name
%ultimateranks_rank_id% → Rank ID
%ultimateranks_rank_weight% → Rank weight
%ultimateranks_total_ranks% → Total owned ranks
Chat Plugin Compatibility
- ✅ EssentialsX Chat
- ✅ ChatControl
- ✅ VentureChat
- ✅ Any plugin using PlaceholderAPI
Installation
Requirements
- Minecraft Server: Paper 1.21+ (or Purpur/Pufferfish)
- Java Version: Java 21+
- Optional Dependencies:
- LuckPerms 5.4+ (for advanced permissions)
- PlaceholderAPI 2.11+ (for placeholders)
Quick Install
-
Download
Download UltimateRanks-1.0.0.jar from releases -
Install
Place in plugins folder cp UltimateRanks-1.0.0.jar /path/to/server/plugins/ -
First Start
Start server to generate configs java -jar paper.jar Wait for: "[UltimateRanks] ✓ UltimateRanks enabled successfully" Stop server stop -
Configure
Edit generated configs nano plugins/UltimateRanks/config.yml nano plugins/UltimateRanks/ranks.yml -
Restart
Start server again java -jar paper.jar
Verification
Console Output (Success):
[UltimateRanks] ═══════════════════════════════
[UltimateRanks] UltimateRanks v1.0.0
[UltimateRanks] Advanced Rank Management
[UltimateRanks] ═══════════════════════════════
[UltimateRanks] Loading configuration files...
[UltimateRanks] ✓ Configuration loaded
[UltimateRanks] Connecting to database...
[UltimateRanks] ✓ Database connected (SQLite)
[UltimateRanks] Initializing managers...
[UltimateRanks] ✓ Loaded 10 ranks
[UltimateRanks] ✓ Managers initialized
[UltimateRanks] Initializing permission system...
[UltimateRanks] ✓ LuckPerms detected - Using LuckPerms handler
[UltimateRanks] Registering event listeners...
[UltimateRanks] ✓ Event listeners registered
[UltimateRanks] Registering commands...
[UltimateRanks] ✓ Commands registered
[UltimateRanks] ✓ PlaceholderAPI integration enabled
[UltimateRanks] ✓ UltimateRanks enabled successfully in 245ms
[UltimateRanks] ✓ Permission Mode: LuckPerms
Configuration
Main Configuration (config.yml)
Database Selection
database:
type: sqlite Options: sqlite, mysql
GUI Customization
gui:
menu-title: '<gradient:gold:yellow>My Ranks</gradient>'
items-per-page: 28
refresh-interval: 100 ticks
Chat Formatting
chat:
enabled: true
format: '{prefix}{player}{suffix}: {message}'
allow-colors: true
Expiration Management
expiration:
auto-cleanup: true
cleanup-interval: 30 minutes
notify-on-expiration: true
warn-before-expiration: 24 hours
Permission System
permissions:
mode: auto Options: auto, standalone, luckperms
apply-on-join: true
refresh-on-change: true
Rank Definitions (ranks.yml)
ranks:
vip:
weight: 10 Hierarchy (higher = better)
display_name: '<gold>VIP</gold>' Shown in GUI/messages
prefix: '<gradient:yellow:gold>[VIP]</gradient> '
suffix: ''
gui_icon: GOLD_INGOT Item in GUI
custom_model_data: 0 Resource pack support
permissions:
- 'essentials.fly'
- 'essentials.heal'
- 'ultimateranks.chat.color'
MySQL Configuration
database:
type: mysql
mysql:
host: localhost
port: 3306
database: ultimateranks
username: root
password: 'your_password'
pool-size: 10
parameters: '?useSSL=false&autoReconnect=true'
🎨 Creating Ranks from Scratch - Complete Guide
📝 Quick Overview
Where to create ranks: plugins/UltimateRanks/ranks.yml
Process:
- Define rank structure
- Set weight (hierarchy)
- Choose colors/prefix
- Add permissions
- Pick GUI icon
- Reload plugin
🚀 Step-by-Step Tutorial
Step 1: Open ranks.yml
Navigate to your server folder
cd plugins/UltimateRanks/
Edit ranks.yml
nano ranks.yml
or use Notepad++/VSCode
Step 2: Basic Rank Structure
ranks:
your_rank_name: Unique identifier (lowercase, no spaces)
weight: 10 Number (higher = more important)
display_name: '<gold>Display Name</gold>' What players see
prefix: '<gold>[Prefix]</gold> ' Chat prefix
suffix: '' Chat suffix (optional)
gui_icon: GOLD_INGOT Item shown in menu
custom_model_data: 0 For resource packs (0 = disabled)
permissions: List of permissions this rank gives
- 'permission.node.1'
- 'permission.node.2'
💡 Example: Creating Your First Rank
Let's create a "Supporter" rank from scratch:
ranks:
supporter:
weight: 5 Low tier (above default)
display_name: '<gradient:green:lime>Supporter</gradient>'
prefix: '<gradient:green:lime>[Supporter]</gradient> '
suffix: ' <green>♥</green>'
gui_icon: EMERALD Green emerald item
custom_model_data: 0
permissions:
- 'essentials.spawn' Basic teleport
- 'essentials.sethome' Set homes
- 'essentials.home' Teleport home
- 'essentials.back' Return to death point
Save the file, then in-game:
/rank reload
/rank grant YourName supporter
Commands & Permissions
Commands
| Command | Description | Permission | Usage Example |
|---|---|---|---|
/rank menu | Open rank GUI | ultimateranks.menu | /rank menu |
/rank set <player> <rank> | Set main rank | ultimateranks.admin.set | /rank set Steve vip |
/rank grant <player> <rank> [time] | Add rank | ultimateranks.admin.grant | /rank grant Steve builder 30d |
/rank remove <player> <rank> | Remove rank | ultimateranks.admin.remove | /rank remove Steve vip |
/rank reload | Reload configs | ultimateranks.admin.reload | /rank reload |
Command Aliases
/rank → /ranks, /ur
menu → gui, open
remove → take, revoke
reload → rl
Permissions Hierarchy
ultimateranks.* (All permissions)
├── ultimateranks.use (Basic access)
├── ultimateranks.menu (GUI access)
└── ultimateranks.admin.* (Admin commands)
├── ultimateranks.admin.set
├── ultimateranks.admin.grant
├── ultimateranks.admin.remove
└── ultimateranks.admin.reload
Special Permissions
| Permission | Description | Default |
|---|---|---|
ultimateranks.chat.color | Use color codes in chat | false |
ultimateranks.bypass.expiration | Ranks never expire | op |
ultimateranks.notify.expiration | Get expiration warnings | true |
Usage Guide
For Players
Opening the Rank Menu
1. Type: /rank menu
2. GUI opens showing all available ranks
3. Click any owned rank to equip it
4. Your chat prefix updates immediately
Understanding Rank States
🌟 Glowing Item = Currently Active
→ This is your display rank
→ Shown in chat and tab list
✅ Normal Item = Owned but Not Active
→ Click to switch to this rank
→ You still have its permissions
🚫 Barrier = Locked
→ You don't own this rank
→ Ask staff to grant it
Checking Expiration
Open /rank menu and hover over any owned rank:
[VIP]
✅ Click to Equip
Duration: 25 days, 14 hours
Weight: 10
For Administrators
Setting Up Ranks
1. Define Rank in ranks.yml
ranks:
premium:
weight: 20
display_name: '<gradient:aqua:blue>Premium</gradient>'
prefix: '<gradient:aqua:blue>[Premium]</gradient> '
suffix: ' <aqua>★</aqua>'
gui_icon: DIAMOND
permissions:
- 'essentials.*'
- 'worldedit.selection.*'
2. Reload Configuration
/rank reload
3. Grant to Players
Permanent rank
/rank grant PlayerName premium
30-day rank
/rank grant PlayerName premium 30d
1 week rank
/rank grant PlayerName premium 1w
Managing Player Ranks
View Player's Ranks
Players can see their own via /rank menu
Admins use database or cache inspection
Reset Player Ranks
Remove all ranks and set default
/rank set PlayerName default
Temporary VIP Promotion
Grant VIP for 7 days
/rank grant PlayerName vip 7d
Player gets notified 24 hours before expiration
Rank auto-removes after 7 days
Multi-Rank Assignment
Player can be VIP + Builder + Helper simultaneously
/rank grant PlayerName vip
/rank grant PlayerName builder
/rank grant PlayerName helper
All three ranks grant permissions
Player chooses which shows in chat via GUI
Common Workflows
New Player Setup
1. Player joins → automatically gets "default" rank
2. Player donates → grant VIP
/rank grant PlayerName vip
3. Player applies for builder → grant builder
/rank grant PlayerName builder
Player now has: default + vip + builder (all permissions)
Player chooses "vip" or "builder" for chat display
Staff Promotion
Promote to Helper (keep VIP)
/rank grant PlayerName helper
Player retains VIP perks + gets staff permissions
Can switch between [VIP] and [Helper] prefix in GUI
Seasonal Events
Halloween Event - 30 days
/rank grant * halloween 30d
All online players get halloween rank
Auto-expires after event
Placeholders
PlaceholderAPI Integration
All placeholders work with any plugin supporting PlaceholderAPI (DeluxeChat, FeatherBoard, etc.)
| Placeholder | Output | Example |
|---|---|---|
%ultimateranks_prefix% | Active rank prefix | [VIP] |
%ultimateranks_suffix% | Active rank suffix | ★ |
%ultimateranks_rank_displayname% | Rank display name | VIP |
%ultimateranks_rank_id% | Rank identifier | vip |
%ultimateranks_rank_weight% | Rank weight | 10 |
%ultimateranks_total_ranks% | Total owned ranks | 3 |
Usage Examples
DeluxeChat Format
formats:
default:
format: '%ultimateranks_prefix%%player_name%%ultimateranks_suffix%: %message%'
Output: [VIP] Steve ★: Hello!
Tab List (TAB Plugin)
header: |
&6Server Name
&e%ultimateranks_prefix%%player_name%
Scoreboard (FeatherBoard)
board:
title: '&6&lServer'
lines:
- '&7Rank: %ultimateranks_rank_displayname%'
- '&7Weight: %ultimateranks_rank_weight%'
- '&7Total Ranks: %ultimateranks_total_ranks%'
Signs
[Shop]
VIP Only
%ultimateranks_rank_displayname%
Required
FAQ
General Questions
Q: What makes UltimateRanks different from other rank plugins?
A: UltimateRanks allows players to own multiple ranks simultaneously while choosing which one displays in chat. Traditional plugins force "one rank only" - we give all permissions from all ranks while letting players customize their appearance.
Q: Does this replace LuckPerms?
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.
Q: Can I use this without LuckPerms?
A: Yes! UltimateRanks has a built-in permission system (Standalone Mode) that works without any dependencies.
Q: Is this compatible with my current ranks?
A: If you're using LuckPerms, UltimateRanks can sync with your existing groups. You'll need to create matching rank definitions in
ranks.yml.
Technical Questions
Q: Does this cause server lag?
A: No. All database operations are 100% asynchronous. There's zero server tick lag from UltimateRanks.
Q: How many players can this support?
A: Tested with 1,000+ concurrent players. With MySQL and proper caching, it scales to any server size.
Q: What happens if my database crashes?
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).
Q: Can I use this on BungeeCord networks?
A: Yes! Use MySQL database mode. All servers in your network will share the same rank database. Players keep their ranks across servers.
Configuration Questions
Q: How do I create a new rank?
Add to ranks.yml:
ranks:
newrank:
weight: 15
display_name: '<aqua>NewRank</aqua>'
prefix: '<aqua>[NewRank]</aqua> '
suffix: ''
gui_icon: DIAMOND
permissions:
- 'permission.node.here'
Then: /rank reload
Q: How do I change the GUI title?
config.yml:
gui:
menu-title: '<gradient:red:blue>Custom Title</gradient>'
Q: How do gradients work?
Simple gradient (2 colors):
prefix: '<gradient:red:blue>VIP</gradient> '
Multi-color gradient:
prefix: '<gradient:red:yellow:green:blue>✨</gradient> '
With formatting:
prefix: '<bold><gradient:gold:yellow>VIP</gradient></bold> '
Gameplay Questions
Q: Can players have multiple ranks?
A: YES! That's the core feature. Players can own VIP + Builder + Helper simultaneously.
Q: Do multiple ranks stack permissions?
A: YES! If you own [Member] with
essentials.spawnand [VIP] withessentials.fly, you get BOTH permissions.
Q: Can players choose which rank shows in chat?
A: YES! Open
/rank menuand click any owned rank to make it active.
Q: What happens when a rank expires?
1. Automatic cleanup removes expired ranks
2. Player receives notification (if enabled)
3. Permissions from expired rank are removed
4. If expired rank was active, switches to another owned rank
5. Database entry is deleted
Q: Can I give temporary ranks?
Yes! Use duration syntax:
/rank grant Steve vip 30d 30 days
/rank grant Steve builder 1w 1 week
/rank grant Steve premium 1mo 1 month
/rank grant Steve special 1y 1 year
/rank grant Steve permanent Forever
Admin Questions
Q: How do I give someone multiple ranks?
/rank grant PlayerName vip
/rank grant PlayerName builder
/rank grant PlayerName helper
Player now owns all three!
They choose which shows in chat via /rank menu
Q: How do I reset someone's ranks?
Option 1: Set to single rank (removes all others)
/rank set PlayerName default
Option 2: Remove specific ranks
/rank remove PlayerName vip
/rank remove PlayerName builder
Q: Can I see what ranks someone has?
Currently via database or cache inspection. Future update will add
/rank info <player>command.
Q: How do I backup the database?
SQLite (automatic backup):
cp plugins/UltimateRanks/data.db plugins/UltimateRanks/data.db.backup
MySQL (use mysqldump):
mysqldump -u username -p ultimateranks > backup.sql
Troubleshooting
Q: Ranks not appearing in GUI
1. Check ranks.yml syntax (use YAML validator)
2. Ensure rank has valid gui_icon material
3. Run /rank reload
4. Check console for errors
Q: Permissions not working
1. Check permission handler mode in console startup
2. Verify permissions in ranks.yml
3. Test with /rank menu (requires ultimateranks.menu)
4. Check if LuckPerms is interfering (if using standalone mode)
Q: Database connection failed
SQLite:
1. Check file permissions
2. Ensure data folder exists
MySQL:
1. Verify credentials in config.yml
2. Check MySQL server is running
3. Test connection manually
4. Check firewall rules
Q: Chat prefix not showing
1. Ensure chat.enabled: true in config.yml
2. Check if another chat plugin is overriding
3. Verify player has an active rank (/rank menu)
4. Test PlaceholderAPI placeholders
Support
Getting Help
- Check Documentation
- Read this document thoroughly
- Check example configurations
- Review common issues in FAQ
- Console Logs
Enable debug mode:
config.yml → advanced.debug: true
Check logs:
/logs/latest.log
Look for [UltimateRanks] messages
- Community Support
- Discord: [geturplugins]
- Report Bugs
Include:
✅ Server version (Paper 1.21.x)
✅ Plugin version
✅ Full error logs
✅ config.yml and ranks.yml
✅ Steps to reproduce
✅ Expected vs actual behavior
Useful Commands for Support
Check plugin version
/version UltimateRanks
Test database connection
/rank reload
Watch console for database messages
Enable debug mode
config.yml → advanced.debug: true
Restart server
Export player data (future feature)
/rank export <player>
Test permissions
/rank menu
If this works, permission system is functional
Performance Optimization
Recommended Settings
Small Server (1-50 players)
database:
type: sqlite
performance:
enable-cache: true
cache-expiration: 60 minutes
batch-size: 50
Medium Server (50-200 players)
database:
type: mysql
mysql:
pool-size: 5
performance:
enable-cache: true
cache-expiration: 45
batch-size: 100
Large Server (200+ players)
database:
type: mysql
mysql:
pool-size: 15
minimum-idle: 5
performance:
enable-cache: true
cache-expiration: 30
batch-size: 200
Network (BungeeCord/Velocity)
database:
type: mysql
mysql:
host: central-db.example.com
pool-size: 20
minimum-idle: 10
performance:
enable-cache: true
cache-expiration: 20
batch-size: 500
Migration Guide
From LuckPerms Groups
1. Export LuckPerms groups
/lp export
2. Create matching ranks in ranks.yml
ranks:
vip: Match LuckPerms group name
weight: 10
display_name: '<gold>VIP</gold>'
prefix: '<gold>[VIP]</gold> '
permissions: [] Leave empty, LuckPerms handles it
3. Enable LuckPerms sync
config.yml:
integrations:
luckperms:
sync-groups: true
4. Reload
/rank reload
Players' LuckPerms groups now sync with UltimateRanks
From EssentialsX Kits/Ranks
1. Map Essentials groups to UltimateRanks
Essentials: "default" → UltimateRanks: "default"
Essentials: "vip" → UltimateRanks: "vip"
2. Copy permissions from Essentials config
3. Grant ranks to players
/rank grant <player> <rank>
4. Remove Essentials rank system (optional)
Changelog
Version 1.0.0 (Initial Release)
✨ Features:
✅ Multi-rank ownership system
✅ Active display rank selection
✅ Paginated GUI with 28 ranks per page
✅ Dual permission system (Standalone + LuckPerms)
✅ Full MiniMessage support (RGB, gradients)
✅ SQLite and MySQL database support
✅ Async database operations
✅ Smart caching system
✅ Expiration system with warnings
✅ PlaceholderAPI integration
✅ 5 admin commands with tab completion
✅ 16 example ranks included
🔧 Technical:
✅ Java 21 + Paper 1.21 API
✅ HikariCP connection pooling
✅ Thread-safe operations
✅ SOLID architecture
✅ Zero tick lag (100% async)
📚 Documentation:
✅ Complete user guide
✅ Admin manual
✅ Configuration examples
Credits & License
Development Team
- Lead Developer: geturplugins
- Special Thanks: Paper Team, LuckPerms, PlaceholderAPI
Libraries Used
- Paper API - Minecraft server API
- LuckPerms API - Permission system integration
- PlaceholderAPI - Placeholder support
- HikariCP - Connection pooling
- Adventure API - Text component system
Quick Reference Card
╔══════════════════════════════════════════════════════════════╗
║ ULTIMATERANKS QUICK REFERENCE ║
╠══════════════════════════════════════════════════════════════╣
║ ║
║ PLAYER COMMANDS: ║
║ /rank menu → Open rank selection GUI ║
║ ║
║ ADMIN COMMANDS: ║
║ /rank set <player> <rank> → Set main rank ║
║ /rank grant <player> <rank> [time] → Add rank ║
║ /rank remove <player> <rank> → Remove rank ║
║ /rank reload → Reload configs ║
║ ║
║ TIME FORMATS: ║
║ 30d = 30 days 1w = 1 week 1mo = 1 month ║
║ permanent = never expires ║
║ ║
║ PLACEHOLDERS: ║
║ %ultimateranks_prefix% → Active rank prefix ║
║ %ultimateranks_rank_displayname% → Rank display name ║
║ %ultimateranks_total_ranks% → Number owned ║
║ ║
║ CONFIG FILES: ║
║ config.yml → Database, GUI, chat settings ║
║ ranks.yml → Rank definitions ║
║ ║
║ SUPPORT: ║
║ Discord: geturplugins ║
║ ║
╚══════════════════════════════════════════════════════════════╝
Final Notes
Feedback & Suggestions
We're constantly improving UltimateRanks based on user feedback!
Submit Suggestions:
- Discord
- SpigotMC reviews
🎉 Thank you for choosing UltimateRanks!
Advanced Rank Management Made Simple
--- **
