BASALTRANKS
Pixel-Art Rank Badge Generator
Custom rank badges in chat, nametags & tab list. No image hosting. No bloat. Just works.
Paper 1.20 — 26.x • Folia Ready • Java 21+ • FREE • MIT License
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Overview
BasaltRanks generates pixel-art rank badges that display in chat, nametags, and the tab list using Minecraft's resource pack system. Each badge is rendered as a custom Unicode character via bitmap fonts — no external image hosting needed.
5 STYLES Flat, 3D, Glass Metallic, Neon | 26 TEMPLATES Staff, Rank Special, Fun | 15+ API ENDPOINTS Web editor REST API | 8 PLACEHOLDERS PlaceholderAPI expansion |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Features
- 5 Visual Styles — Flat, 3D, Glass, Metallic, Neon — each with custom colors, gradients, and borders
- 26 Pre-made Templates — Owner, Admin, Mod, VIP, MVP, Legend, Champion, and many more
- In-game GUI Editor — Full visual editor with color picker, style selector, and live preview
- Web-based Editor — Modern browser UI with REST API — auto-starts by default
- Auto Resource Pack — Built-in HTTP server generates and sends packs automatically on join
- LuckPerms Integration — Auto-assign badges by group with real-time rank change detection
- PlaceholderAPI — 8 placeholders ready to use in scoreboards, tab, and more
- Folia Compatible — Full scheduling support for Folia servers, automatic detection
- Zero Config — Works out of the box. No database, no setup. Just drop and go.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Badge Styles
| Style | Look |
|---|---|
| Flat | Clean solid or gradient background with subtle drop shadow |
| 3D | Raised button effect with bottom edge and top highlight |
| Glass | Frosted glass with translucent gloss overlay |
| Metallic | Chrome/metal sheen with bevel border and highlight band |
| Neon | Glowing neon sign on dark background with glow effect |
Each badge supports: background color, text color, gradient, border color, border radius (0-3), style, and priority.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Templates (26 included)
Staff: Owner, Admin, Mod, Helper, Builder, Dev
Rank: VIP, VIP+, MVP, MVP+, Elite, Legend, Titan
Special: OG, Beta, Verified, Nitro, Booster, Veteran
Fun: Pro, Noob, GOAT, AFK, Streamer (LIVE), YouTuber (YT), Champion
Create from any template with one command:
Code:
/badge create mybadge owner
/badge templates━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Commands
| Command | Permission | Description |
|---|---|---|
/badge list | basaltranks.list | List all badges |
/badge create <id> [template] | basaltranks.admin | Create a badge |
/badge edit <id> | basaltranks.admin | Open GUI editor |
/badge delete <id> | basaltranks.admin | Delete a badge |
/badge assign <player> <badge> | basaltranks.admin | Assign to player |
/badge remove <player> | basaltranks.admin | Remove from player |
/badge templates | basaltranks.admin | Browse template gallery (GUI) |
/badge preview <id> | basaltranks.admin | Preview badge in chat |
/badge render <id|all> | basaltranks.admin | Export badge to PNG |
/badge web [on|off] | basaltranks.admin | Toggle web editor |
/badge reload | basaltranks.admin | Reload configuration |
/basaltranks | basaltranks.use | Plugin version info |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Web Editor
BasaltRanks includes a built-in web editor accessible from any browser. Create, edit, and manage badges with a modern dark UI — no mods or clients needed.
- Badge CRUD with live pixel-art preview
- Template browser with one-click creation
- Player badge assignment panel
- LuckPerms group-to-badge mapping
- Resource pack regeneration
- 15+ REST API endpoints with Bearer auth
- Auto-starts by default — disable with
/badge web offto save resources
Access at
http://your-ip:8080/web after setting your server IP in config.━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Integrations
LuckPerms (optional)
Automatically assigns badges based on player's primary group. Real-time updates when ranks change via LuckPerms EventBus.
Code:
luckperms:
group-badges:
owner: "owner"
admin: "admin"
vip: "vip"
default: ""
PlaceholderAPI (optional)
8 placeholders ready to use:
Code:
%basaltranks_badge% - Badge ID
%basaltranks_text% - Display text
%basaltranks_style% - Visual style
%basaltranks_unicode% - Unicode character
%basaltranks_has_badge% - true/false
%basaltranks_priority% - Priority number
%basaltranks_color% - Background hex color
%basaltranks_text_color% - Text hex color
Folia (automatic)
Full Folia compatibility via FoliaCompat scheduling layer. Detects Folia at runtime and uses the correct scheduler automatically. No configuration needed.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Installation
- Download BasaltRanks-2.0.0.jar
- Drop it in your server's
plugins/folder - Start or restart the server
- Set your public IP in
config.ymlunderresourcepack.server-ip - Change
web-editor.passwordfromchange-meto something secure - Run
/badge templatesand create your first badge!
Requirements
- Server: Paper 1.20.x — 26.x (also works with Purpur, Folia)
- Java: 21+
- Port: 8080 open (resource pack + web editor)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Configuration
Everything is configurable — modules can be individually toggled, display modes (chat/nametag/tab) are independent, sounds are customizable, and all 42 messages support MiniMessage formatting.
Code:
# BasaltRanks Configuration
config-version: 1
modules:
badge: true # Core badge system
resourcepack: true # Pack generation + HTTP server
display: true # Chat, nametag, tab display
luckperms: true # LuckPerms auto-assignment
editor: true # GUI editor + commands
web-editor: true # Web-based editor panel
resourcepack:
server-ip: "localhost" # CHANGE to your public IP!
port: 8080
force-pack: true
auto-regenerate: true
web-editor:
auto-start: true # Starts with the server
password: "change-me" # CHANGE before exposing!
display:
chat: true
nametag: true
tab: true
badge-suffix: " "
luckperms:
group-badges:
owner: "owner"
admin: "admin"
mod: "mod"
helper: "helper"
vip: "vip"
default: ""
sounds:
volume: 0.5
pitch: 1.0
open: BLOCK_NOTE_BLOCK_CHIME
click: UI_BUTTON_CLICK
success: ENTITY_PLAYER_LEVELUP
error: ENTITY_VILLAGER_NO
update-check: true
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Permissions
| Permission | Default | Description |
|---|---|---|
basaltranks.* | OP | All permissions |
basaltranks.admin | OP | Admin commands (create, edit, delete, assign, remove, reload) |
basaltranks.use | Everyone | Basic plugin usage |
basaltranks.list | Everyone | List and view badge info |
basaltranks.web | OP | Web editor access |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
What's New in v2.0.0
- Paper 26.x Support — Compatible from Paper 1.20 through 26.x
- Folia Ready — Full FoliaCompat scheduling, works on Folia and Paper
- Web Editor Auto-Start — Starts by default with security warnings for insecure passwords
- Thread-Safe Web API — All Bukkit calls run on the main thread via sync bridge
- Gson JSON Parsing — Replaced regex parser with Gson for robust handling
- CORS Security — Restricted to trusted origins only
- New Template — Added "Champion" metallic gold badge
- Better Logging — SLF4J with full stack traces
- Memory Leak Fix — Template GUI properly cleans up on close
- OP Security Alerts — Admins get notified about insecure web passwords on join
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
FAQ
Q: Does this work with Geyser/Bedrock?
A: The resource pack works with Bedrock via Geyser, but depends on client font support.
Q: Can players have multiple badges?
A: One badge per player. The highest-priority badge is shown with LuckPerms auto-assignment.
Q: Does this conflict with other chat plugins?
A: No — BasaltRanks wraps the existing chat renderer at HIGH priority, works alongside EssentialsChat, DeluxeChat, etc.
Q: How many badges can I create?
A: No hard limit. Each badge uses one Unicode PUA character (6,400+ slots available).
Q: Does it work on Folia?
A: Yes! FoliaCompat detects Folia at runtime and uses the correct scheduler automatically.
Q: Does it work on Paper 26.x?
A: Yes! Compiled against Paper 1.21.4, forward-compatible with 26.x. Resource pack uses
supported_formats for cross-version compatibility.━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Enjoying BasaltRanks? Leave a review!
Report issues on the discussion tab.
Made with love by Turok_SS | Basalt Development
