VanguardRanks ⭕ Unlimited Ranks ⭐ Prestige System ✅ GUI Base
2.1Easy to use ranking plugin with PAPI and GUI support.
2.1latestNew command buttonAug 23, 2026 Added a GUI button that can be used to run commands Code (YAML): # Runs commands as console when clicked, the menu closes first. # Supports the same prefixes as rank/prestige commands: # console:, message:, title:, discord:, perm_<permission>: and prestige_<name>: "C": icon : PAINTING function : COMMAND display_name : '<aqua>Main menu' lore : - "<gray>Click to go back to the main menu." commands : - "pa open main_menu %player%"2.0.2Gated requirements and commandsJul 20, 2026 Added
- Prestige-Gated Requirements: Rank requirements can now specify a minimum required prestige (e.g.prestige: expert), hiding and bypassing the requirement for players below that prestige. Code (YAML): requirements : # This requirement will only be shown if the player has the prestige "expert" or higher, and will be hidden if the player has no prestige or a lower prestige ' %prestige_name%': type : TEXT eval : EQUAL value : expert prestige : expert gui_message : '<gray> Prestige <green> %current%<gray>/<yellow>%required% <reset>%status%' deny_message : '<gray>You need to be at least <gray>prestige <red> %required% <gray>to rank up' - Prestige-Gated Reward Commands: Reward commands inranks.ymlnow support prestige prefix conditions (e.g.prestige_expert: eco give %player% 1333). Code (YAML): commands : # This command will only be executed if the player has the prestige "expert" or higher, and will be skipped if the player has no prestige or a lower prestige - 'prestige_expert : eco give %player% 1333' - Automatic Data & Config Migration: Added automatic migrations across version upgrades. ### Fixed - Fixed player data handling and prestige validation during player join, GUI command processing, and YAML storage serialization.2.0.1Improved optional metricsJul 6, 2026 Added the metrics for answering the following topics. - Is prestige enabled - What's the amount of prestiges setup - What's the type of storage most used2.0.0Prestige SystemJul 5, 2026 Prestige System Now, upon reaching the maximum rank on the server, you can reset your rank progress to increase your Prestige level. · Continuous Journey: Reset back to the first rank (e.g., Rookie) with new goals and accumulated multipliers. · Simple Commands: · /rank prestige — Initiates the prestige process and displays a confirmation message with details. · /rank prestige confirm — Confirms and executes the rank reset and prestige level up. · /rank prestige <player> [confirm] — Allows administrators to manage the prestige of other players. Interactive Graphical User Interface (/rank or /rank gui) The plugin's main GUI has been redesigned to display information about the player's current prestige. · Prestige Icon: The menu renders your current prestige icon (supporting standard Minecraft materials or custom textured player heads/skins). · GUI Interaction: You can click directly on the prestige icon in the GUI to initiate the prestige action without having to type commands in chat. Dynamic Rank Requirements (Scaling) Rank upgrade requirements can now be dynamically evaluated based on your current prestige level variables! · Auto-Scaling: Server admins can set rank requirements to scale up depending on the player's prestige (e.g., value: '%math_1000*{prestige_var_check_money}%'). · This establishes a dynamic and balanced economy that automatically adjusts to each player's progress. Information for Server Administrators New Prestige Configuration (prestiges.yml) A dedicated configuration file has been introduced to fully customize the prestige tree of your server: · Icon Customization: Supports any Minecraft material or custom textured skull Base64 values (e.g., icon: "head:<base64>"). · Automated Rewards: Configure console commands to execute when a player prestiges. · Prestige Variables: Define unique custom variables per prestige level to use in rank requirements or placeholders. Code (Text): rookie: prefix: "<dark_gray>[<yellow>ROOKIE<dark_gray>]" display_name: '<yellow>Rookie' icon: GOLD_INGOT icon_amount: 1 icon_model_data: 0 lore: - '<yellow>Rewards' - ' ' - '<gray>- Start your journey to the top!' expert: prefix: "<dark_gray>[<cyan>EXPERT<dark_gray>]" display_name: '<cyan>Expert' icon: DIAMOND icon_amount: 1 icon_model_data: 0 lore: - '<yellow>Rewards' - ' ' - '<gray>- Gain %prestige_var_xp_multiplier%x more XP' variables: check_money: 2 check_xp: 2 xp_multiplier: 1.5 commands: - 'message: <green>Congratulations! You reached prestige %prestige_display_name%!' - 'exp give %player% 1000' Discord Integration (Webhooks) The Discord integration manager has been updated to support multiple dedicated webhooks within config.yml: · Send custom rank advancement and prestige milestone announcements directly to distinct Discord channels. · Full support for native and PlaceholderAPI placeholders in Discord messages. Expanded PlaceholderAPI Support The plugin now registers three dedicated PlaceholderAPI expansion identifiers to query information: · %prestige_<param>%: Dedicated prestige placeholders. · %rank_<param>%: Dedicated rank placeholders. · %vanguardranks_<param>%: Legacy/global placeholders (supports both rank and prestige keys). Available Prestige Placeholders · %prestige_name% — Internal name of the prestige. · %prestige_next_name% — Internal name of the next prestige. · %prestige_previous_name% — Internal name of the previous prestige. · %prestige_display_name% — Formatted display name of the prestige. · %prestige_next_display_name% — Formatted display name of the next prestige. · %prestige_previous_display_name% — Formatted display name of the previous prestige. · %prestige_prefix% — Styled prefix of the prestige. · %prestige_next_prefix% — Styled prefix of the next prestige. · %prestige_previous_prefix% — Styled prefix of the previous prestige. · %prestige_level% — Numeric level of the prestige. · %prestige_next_level% — Numeric level of the next prestige. · %prestige_previous_level% — Numeric level of the previous prestige. · %prestige_var_<variable_name>% — Value of a custom variable configured for the current prestige level.1.9.9Fix not setting custom-model-data for ranks and togglable metricsMay 24, 2026 - Fixed not setting custom-model-data from ranks.yml, only from config.yml were a applied. - Added a configuration for toggling metrics for bstats. Update the config.yml with metrics section Code (YAML): # https://bstats.org/plugin/bukkit/VanguardRanks/22582 metrics : true1.9.8Asynchronous discord requestMar 12, 2026 - Fixed some bugs related to discord feature being enabled or not - Make the discord requests asynchronous1.9.7Message commandFeb 12, 2026 Added rank_up_message to config.yml Code (YAML): rank_up_message : true # If true, players will receive a message when they rank up. You can customize the message in the ranks.yml file with the "message:" command. Added message command to ranks.yml Code (YAML): commands: - 'message : <green>Congratulations! You are now %display_name%!'1.9.5MiniMessage and GUI BugJan 29, 2026 - Added MiniMessage support; - Fixed bug where the GUI would store the information of the first player to open it.1.9.3Fixed an error when checking player's rank and it doesn't have a Rank yetSep 7, 2025 - Fixed an error when checking player's rank and it doesn't have a Rank yet1.9.2Fixed a bugJul 26, 2025 Fixed a bug where clicking another inventory would trigger events on the VR inventory.1.9.1Fixed a few bugsJun 24, 2025 - Fixed some commands not working when the command had the character ":" in the text - Fixed a bug introduced in the last version where the player head appear with the "gui_close" locale1.9.0Dynamic set of structure (BREAKING CHANGE)Jun 8, 2025 Now you can define the characters (1 letters) and function of the gui structure, this enables adding more decorative blocks to the gui. Remember to update the config.yml Code (YAML): structure : - "B A B A * A B A B" - ". . . . . . . . ." - ". . . . . . . . ." - "B B B < X > B B B" recipe: "*": icon : PLAYER_HEAD icon_amount : 1 icon_model_data : 3 function : PLAYER display_name : '&7 %player%' lore : - "Current rank %rank%" - "..." - "..." # Fill the empty space with a material ".": icon : AIR function : RANK # You can use as a material "A": icon : BLACK_STAINED_GLASS_PANE function : DECORATIVE # You can also not define a function, default will be DECORATIVE "B" : WHITE_STAINED_GLASS_PANE "X": icon : REDSTONE function : CLOSE # You can use as an item with model data "<": icon : RED_STAINED_GLASS_PANE icon_model_data : 10 function : BACK ">": icon : LIME_STAINED_GLASS_PANE icon_model_data : 0 function : FORWARD1.8.2MYSQL SupportMay 24, 2025 In this version - Fixed the requirements message appearing different on /rank gui and /rank up - Added support to mysql to store the save of players Code (YAML): storage: adapter : yaml # yaml | mysql prefix : vanguard_ranks address : localhost:3306 database : minecraft username : root password : ''1.8.1Fix bug related to disabled discord integrationApr 10, 2025 When having a command in a rank to send message to discord but the discord integration is disabled it would throw an error.1.8Rank Checker and updater of locale fileApr 5, 2025 This version adds a rank checker that from time to time check for rank requirements and ranks up the player when possible. Add to config.yml Code (YAML): rank_checker : 300 # in seconds -1 to disable Also adds an updater of locale.yml file to prevent from throwing error when adding new messages like in this version.1.7.8New internal and PAPI placeholdersJan 27, 2025 Added new placeholders to get information for the next and previous ranks. - next_name - previous_name - next_prefix - previous_prefix - next_order - previous_order - next_rank - previous_rank - next_display_name - previous_display_name1.7.7Conditional CommandsJan 19, 2025 This patch adds a feature that allows you to conditionally execute commands based on player permissions. You can now specify permissions for each rank’s "commands" section and run a command only if the player has the required permissions. SYNTAX Use perm_<permission>: <command> to run a command if the player has the specified permission. You can check for multiple permissions: · perm_<permission1>,<permission2>: <command> - Executes if the player has all listed permissions (AND condition). · perm_<permission1>;<permission2>: <command> - Executes if the player has at least one of the listed permissions (OR condition). EXAMPLE Code (YAML): - 'perm_rank.vip1;rank.vip2 : eco give %player% 1000' - 'perm_rank.vip1,rank.vip2 : eco give %player% 1000' · The first command checks if the player has both rank.vip1 and rank.vip2 permissions before executing the command. · The second command checks if the player has either rank.vip1 or rank.vip2 permission before executing the comma1.7.5Update snake and vertical flowOct 19, 2024 - Fixed vertical flow acting as horizontal - Fixed snake flow not knowing where to start1.7.4Player iconOct 18, 2024 - Added a icon to show information about the player Code (YAML): structure : - "# # # # * # # # #" - ". . . . . . . . ." - ". . . . . . . . ." - "# # # < X > # # #" recipe: "*": icon : PLAYER_HEAD icon_amount : 1 icon_model_data : 3 display_name : '&7 %player%' lore : - "Current rank %rank%"1.7.3Fix missing placeholder messageSep 19, 2024 - Fixes a missing placeholder message when running any command1.7.2Filler materialSep 17, 2024 - Added a filler material for "." recipe - Fixed an error when running "/rank up" on last rank1.7.1Fixed invalid placeholder checkerAug 2, 2024 On version 1.6.9 we added a checker for when a placeholder was not installed or simply invalid. The verification for that was inverted... So this version fix this verification.1.7.0Handle invalid placeholders and fix deny message listingJul 25, 2024 - Now when found an unrecognized PAPI placeholder it logs a message in the console instead of throwing an error to the player - Fixed listing deny message when a player tries to rank up but there are a few requirements still in progress1.6.9GUI RewriteJul 25, 2024 - Internally all the inventory interaction was rewritten, making it possible to decide how the ranks are displayed. Being HORIZONTAL, VERTICAL, and SNAKE the current supported flows. - As I removed the dependency that I was using for the GUI, now the plugin is WAY smaller Code (YAML): menu: gui: flow : SNAKE # SNAKE, HORIZONTAL, VERTICAL structure : - ". . . . . . . . ." - ". . . . . . . . ." - ". . . . . . . . ." - "# # # < # > # # #"1.6.8Added close buttonJul 20, 2024 - Added a button to close the inventory. Just like back, and forward buttons, it accepts an icon and a model data. For now it requires you to manually update config.yml and locale.yml con config.yml add "X:..." Code (YAML): menu: gui: structure : - ". . . . . . . . ." - ". . . . . . . . ." - ". . . . . . . . ." - "# # # < X > # # #" recipe : # You can use as a material "#" : BLACK_STAINED_GLASS_PANE "X" : REDSTONE # or "X": icon : REDSTONE icon_amount : 1 on locale.yml add "gui_close: ..." Code (YAML): gui_close : "&7Close"1.6.7Fixed on 1.21Jul 20, 2024 - Fixed a problem when running on spigot server - Fixed a problem with custom model data - Removed unnecessary dependency (so smaller bundle)1.6.6Choose to display lore by rank statusJul 19, 2024 - Added support for choosing in which status the rank's lore will be displayed. Code (Text): in_progress: display_name: '%rank% &7- &e&lIN PROGRESS' icon: AIR icon_amount: 1 display_lore: true prepend_lore: [ ] append_lore: - " " - "&6You are currently working on this rank!" locked: display_name: '%rank% &7- &c&lLOCKED' icon: AIR icon_amount: 1 display_lore: false prepend_lore: [ ] append_lore: - " " - "&cYou need to complete the previous rank!"1.6.5Injecting current and required placeholdersJul 18, 2024 - Added support to injecting requirement placeholders into papi placeholders. It makes formatting "current" and "required" placeholders from gui-message and deny-message possible. Example using https://api.extendedclip.com/expansions/formatter/ Code (YAML): requirements : ' %vault_eco_balance%': type : NUMBER eval : GREATER value : 100 gui_message : '&7Money &a %formatter_number_shorten_{current}%&7/&e%formatter_number_shorten_{required}% &r%status%' deny_message : '&7You need to have more money than &c$ %formatter_number_shorten_{required}%'1.6.4Heads on GUI StructureJul 17, 2024 - Fixed a problem when using heads on the GUI structure. It works just like in ranks.1.6.3Improved configuration of structureJul 16, 2024 - Added a config to change the border, back, and forward items accepting custom model data. Code (YAML): menu: gui: structure : - ". . . . . . . . ." - ". . . . . . . . ." - ". . . . . . . . ." - "# # # < # > # # #" recipe : # You can use as a material "#" : BLACK_STAINED_GLASS_PANE # You can use as an item with model data "<": icon : RED_STAINED_GLASS_PANE icon_model_data : 10 ">": icon : LIME_STAINED_GLASS_PANE icon_model_data : 0 - Fixed the back and forward button1.6.2Duplicated prefixJul 14, 2024 - Fixed prefix + separator being duplicated - Fixed /rank help header being duplicated Thanks ApoCalipsiS1.6Improved placeholder handlingJul 14, 2024 Placeholders that return a blank string " " are handled differently depending on the requirement type (NUMBER or BOOLEAN). For NUMBER, is assigned the value 0, and for BOOLEAN the value is false.1.5Fix title commandJul 14, 2024 Fixed an issue where not setting a subtitle would throw an error and no title would appear on the player screen.1.4Text formattingJul 14, 2024 - Fixed issue with text formatting on GUI - Added support to hexadecimal colors &#f2f2f2 (doesn't work on commands for now)1.3Title CommandJul 14, 2024 - Added a title command that works with hexadecimal colors. A palliative measure for hex colors not working with general commands1.2Version 1.2 - Some breaking changesJul 12, 2024 - Removed %vanguardranks_icon% and %vanguardranks_icon_amount% placeholders - Changed STRING, FLOAT, DOUBLE, LONG requirement type to TEXT, NUMBER and BOOLEAN - Changed LESS and LESS_EQUAL to LESSER and LESSER_EQUAL - Added support to icon's custom model data1.1Fix bStats serviceIDJul 11, 2024 This update only corrects the serviceId from bStats1.0Update bootstrap configurationJul 11, 2024 Updates the bootstrap locale, config and ranks files
Similar projects
Plugin →Let Me Despawn
Improves performance by tweaking mob despawn rules. Say bye to pesky unintentional persistent mobs.
25MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
Emotecraft
Create your own emotes in Minecraft.
7.5MSueta
Simple Tpa
A simple tpa plugin which sends requests
5.4MSueta
Common Network
Forge and Fabric Unified Networking Solution
3.9MSueta
Set Home
A lightweight plugin for players to set their homes.
3.8MSueta