Official Guide

GUI & presentation

Explore the complete GUI and presentation documentation below for RankForge.

๐Ÿ–ฅ๏ธ GUI System

RankForge includes five distinct GUIs.

Animated Rank Tree GUI (/rank)

The primary player-facing GUI. Opens when a player runs /rank (or clicks with no arguments). Displays all ranks in the chain, with the player's current position highlighted. Icons use the rank's configured material, display-name, and lore. The GUI is animated for visual appeal.

Animated Rank Tree GUI

In-game preview of the animated rank tree progression GUI.

Admin Rank Editor GUI (/rank editor)

Lets admins browse all ranks and click into the detail editor for any rank. Changes made in the GUI are auto-saved to ranks.yml via a debounced async write (saves fire at most once per second even during rapid edits).

Admin Rank Editor GUI

In-game preview of the admin rank editor GUI.

Rank Detail Editor GUI (/rank editor <rankId>)

A per-rank editor that lets you modify:

  • Display name
  • Next rank link
  • Material / icon
  • Required money, XP, playtime, mob kills, block breaks
  • And more โ€” via in-game chat prompts
Rank Detail Editor GUI

In-game preview of the rank detail editor GUI.

Drag-and-Drop Slot Editor (/rank editor drag)

A visual editor for rearranging rank icons in the GUI. Drag an icon from one slot to another to update its slot value without touching ranks.yml. Changes persist immediately.

Drag-and-Drop Slot Editor

In-game preview of the drag-and-drop slot editor GUI.

Player List GUI (/rank playerlist)

Lists all players whose data is in the cache, with their rank shown on the icon. Clicking a player opens the PlayerDataEditorGUI where an admin can view and change that player's rank data directly.

Player List GUI

In-game preview of the player list GUI.

Player Data Editor GUI (PlayerDataEditorGUI)

A 54-slot editor opened by clicking any player in the Player List GUI. Provides the following buttons:

Player Data Editor GUI

In-game preview of the player data editor GUI.

SlotButtonAction
4Player HeadSummary (UUID, rank, XP, balance, status)
10RankClick to change the player's rank (chat input)
12ExperienceClick to set the player's experience (chat input)
14BalanceClick to set the player's economy balance (chat input)
16Rank HistoryDisplays the selected player's last 10 rank changes directly in the administrator's chat
45โ† BackReturn to the Player List GUI
49ResetReset the player's data to server defaults
53CloseClose the GUI

Reset also clears any active /rank bypassreq waivers for that player, alongside their rank, XP, and balance โ€” so a reset always returns a player to a fully clean, server-default state.

Rank History Button (Slot 16)

Clicking the Rank History button sends the selected player's rank history directly to the administrator's chat โ€” no new GUI or inventory is opened. The output is identical to running /rank history as that player: it uses the same RankHistoryManager, formatter, and display logic. Up to 10 entries are shown, newest first, including the timestamp, change type (Rankup / Set / Reset), and the from/to rank IDs. Works for both online and offline players โ€” a fast way to audit a player's progression without leaving the GUI.

External GUI Registry (API)

Developers can replace any GUI with their own implementation using ExternalGUIRegistry. See Developer API.


๐Ÿ–ฅ๏ธ GUI Configuration (gui.yml)

All GUI layout, appearance, slot, and interaction settings are controlled by plugins/RankForge/gui.yml. The file is auto-generated on first run and supports full customization without editing Java code.

Note for upgraders: In previous versions, the gui: (rows) and gui-click-shield: sections lived in config.yml. They have moved to gui.yml. RankForge automatically migrates your existing values on first startup โ€” no manual reconfiguration is required. If either section is missing from gui.yml, the plugin reads any custom value you had in config.yml and writes it to gui.yml transparently.

File Location

plugins/
โ””โ”€โ”€ RankForge/
    โ””โ”€โ”€ gui.yml

Structure Overview

# โ”€โ”€ GUI Window Size โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
# Number of inventory rows in each GUI (1โ€“6).
gui:
  rows: 6
  admin-rows: 6

# โ”€โ”€ GUI Click Shield โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
# Per-player cooldown that prevents click-spam inside any RankForge GUI.
gui-click-shield:
  enabled: true
  cooldown-ms: 400   # Minimum ms between two accepted clicks per player

# โ”€โ”€ Player-facing rank tree GUI (/rank) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
player-gui:
  title: "&8โœฆ &6RankForge &8โœฆ"       # GUI window title
  border-material: CYAN_STAINED_GLASS_PANE  # Border block type
  head-slot: 4                         # Slot for the player's head item
  info-slot: 49                        # Slot for the info/progress item

# โ”€โ”€ Admin rank editor (/rank editor) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
admin-gui:
  title: "&8โœฆ &cAdmin Rank Editor &8โœฆ"
  border-material: RED_STAINED_GLASS_PANE

# โ”€โ”€ Per-rank detail editor (click a rank in the admin editor) โ”€โ”€
detail-editor:
  title-prefix: "&8โœฆ &6Editing: "
  border-top: LIME_STAINED_GLASS_PANE
  border-bottom: GRAY_STAINED_GLASS_PANE

# โ”€โ”€ Drag-and-drop slot reassignment editor โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
drag-drop:
  title: "&8โœฆ &bSlot Editor &8โœฆ"

# โ”€โ”€ Player list GUI (/rank playerlist) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
player-list:
  title: "&8โœฆ &9Player List &8โœฆ"
  border-material: BLUE_STAINED_GLASS_PANE
  prev-page-slot: 45
  close-slot: 49
  next-page-slot: 53

# โ”€โ”€ Player data editor (click a player in the player list) โ”€โ”€โ”€โ”€โ”€
player-data-editor:
  title-prefix: "&8โœฆ &9Editing: "
  border-material: LIGHT_BLUE_STAINED_GLASS_PANE
  block-breaks:
    slot: 30
    material: IRON_PICKAXE
    name: "&7&lBlock Breaks"
    lore:
      - "&7Exact blocks broken (tracked by RankForge)."

# โ”€โ”€ Block-break stat panel settings โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
block-break-stats:
  show-in-rank-gui: true
  show-in-player-data-editor: true
  label: "&7Blocks Broken"
  material: IRON_PICKAXE
  value-format: "&a%count%"
  unmet-format: "&cNeed &e%required% &cblocks &8(have &7%current%&8)"
  met-format: "&aโœ” &e%required% &ablocks broken"

# โ”€โ”€ Shared elements used across all GUIs โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
common:
  filler-material: GRAY_STAINED_GLASS_PANE
  close-material: BARRIER
  close-name: "&cClose"
  back-material: ARROW
  back-name: "&7Back"

# โ”€โ”€ Requirement status icons on the next-rank GUI item โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
requirement-icons:
  enabled: true
  met-symbol: "&aโœ”"
  unmet-symbol: "&cโœ˜"
  show-details: true

# โ”€โ”€ GUI themes (border colors) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
themes:
  default:
    player-border: CYAN_STAINED_GLASS_PANE
    admin-border: RED_STAINED_GLASS_PANE
    list-border: BLUE_STAINED_GLASS_PANE
  dark:
    player-border: BLACK_STAINED_GLASS_PANE
    admin-border: RED_STAINED_GLASS_PANE
    list-border: BLUE_STAINED_GLASS_PANE
  gold:
    player-border: YELLOW_STAINED_GLASS_PANE
    admin-border: ORANGE_STAINED_GLASS_PANE
    list-border: YELLOW_STAINED_GLASS_PANE

Key Sections

SectionPurpose
guiWindow row count for the player GUI and admin editor
gui-click-shieldPer-player click cooldown to prevent inventory spam
player-guiPlayer-facing rank tree: title, border, slot positions
admin-guiAdmin rank editor: title and border color
detail-editorPer-rank detail editor: title prefix and border colors
drag-dropDrag-and-drop slot editor title
player-listPlayer list GUI: title, border, pagination slot positions
player-data-editorPlayer data editor: title, border, and block-break display
block-break-statsHow block-break counts appear across all GUIs
commonShared filler, close, and back button materials and labels
requirement-iconsMet/unmet symbols on the next-rank item
themesNamed border-color presets (active theme configurable per GUI)

Customization Tips

  • Titles support & color codes and most Bukkit formatting codes.
  • Materials must be valid Bukkit Material enum names (all uppercase, underscores).
  • Slots are 0-indexed inventory slots (0โ€“53 for a 6-row chest).
  • Apply changes with /rank reload โ€” no server restart needed.

GUI Reference

GUICommandDescription
Rank Tree/rankPlayer-facing animated rank progression view
Admin Editor/rank editorCreate, edit, and delete ranks in-game
Slot Editor/rank editor dragDrag-and-drop rank reordering
Player List/rank playerlistBrowse and edit all player data
Player Data Editor(click player in list)Edit individual player rank/XP/money

๐Ÿ’„ Cosmetics

Cosmetics are managed by CosmeticManager, which coordinates four sub-systems.

Boss Bar

Config KeyDefaultDescription
cosmetic.bossbar.enabledtrueEnable/disable boss bars entirely
cosmetic.bossbar.duration-ticks100Ticks before the bar auto-dismisses
  • Shows a yellow SOLID bar on rankup with the new rank name
  • Shows a green SEGMENTED_10 bar for progress checks (via API)
  • Concurrent bars per player are handled correctly โ€” a new bar cancels the old dismiss timer

Particle Trail

Config KeyDefaultDescription
cosmetic.particles.enabledtrueEnable/disable particle effects

A timed particle trail is spawned around the player immediately on rankup. It expires automatically โ€” no permanent persistent trails. The trail is suppressed in LOW performance mode.

Tablist Prefix

Config KeyDefaultDescription
cosmetic.tablist.enabledtrueEnable/disable tablist formatting
cosmetic.tablist.format{prefix}{player}Format string. Tokens: {prefix}, {player}

The player's tab-list name is updated on:

  • Login
  • Rankup
  • Plugin reload (applied to all online players)

Join / Quit

JoinQuitManager handles restoring cosmetics when players reconnect and cleaning them up on disconnect (removes boss bars, stops particle tasks, resets tablist).


๐Ÿ“Š PlaceholderAPI Support

With PlaceholderAPI installed, RankForge registers all %rankforge_*% placeholders automatically. Use them in any PAPI-compatible plugin (scoreboards, chat, tab lists, holograms, etc.).

Available Placeholders

PlaceholderExample OutputDescription
%rankforge_rank%VeteranCurrent rank ID
%rankforge_rank_name%&2[Veteran]Current rank display name
%rankforge_rank_display%&2[Veteran]Alias for rank_name
%rankforge_rank_prefix%&2[Veteran]Current rank's chat-prefix
%rankforge_rank_position%3Position of current rank in the chain (1-based)
%rankforge_is_max_rank%falsetrue if player is at the final rank
%rankforge_next_rank%EliteNext rank ID, or MAX
%rankforge_next_cost%$100,000Next rank's money requirement formatted
%rankforge_cost%$10,000Current rank's money requirement formatted
%rankforge_progress%62.5Overall requirement progress as a decimal
%rankforge_progress_percent%62.5%Same with % appended
%rankforge_progress_bar%โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘Visual ASCII progress bar
%rankforge_required_progress%$100,000 Lv75All requirements for the next rank
%rankforge_remaining_progress%$37,500 Lv12What remains to meet requirements
%rankforge_money%$62,500Player's current Vault balance
%rankforge_has_money%falsetrue if player can afford the next rank
%rankforge_missing_money%$37,500Money still needed for next rank
%rankforge_requirements_status%ยงcโœ˜ Requirements UnmetMet/unmet status label
%rankforge_requirements_detail%(multiline)Full requirement breakdown
%rankforge_xp_level%30Player's current Minecraft XP level
%rankforge_xp_progress%7.3%Fraction to next XP level
%rankforge_player%StevePlayer's name
%rankforge_uuid%xxxxxxxx-...Player's UUID
%rankforge_lang%enPlayer's active language code
%rankforge_version%3.7Plugin version

Scoreboard Example (CMI)

scoreboard:
  title: "&6&lMy Server"
  lines:
    - "&7Rank: %rankforge_rank_display%"
    - "&7Progress: %rankforge_progress_bar%"
    - "&7Next: %rankforge_next_rank%"
    - "&7Cost: %rankforge_next_cost%"