SuperFriends
Advanced friends & social plugin — made by Dragon_45_ Paper · Purpur · Folia · Spigot · Bukkit | 1.20.x · 1.21.x
✨ Features
👥 Friends System
- Send, accept, and deny friend requests
- Remove a friend at any time
- View your friend list with live status and friendship level
- Configurable max-friend limit per server
⭐ Exclusive Best Friend
Set one special Best Friend among your friends with /friend best <player>.
- Only one Best Friend allowed at a time — setting a new one automatically demotes the previous
- Highlighted with ⭐ Best Friend tag in the friend list
- Can be toggled off at any time
- Stored in the database — persists across restarts
📊 Friendship Levels
| Level | Requirement |
|---|---|
| Friend | Just friends |
| Good Friend | 10+ interactions |
| ⭐ Best Friend | Manually set with /friend best |
🌐 Presence & AFK System
- Real-time status: Online, AFK, DND, Invisible
- Automatic AFK detection based on movement (no per-tick spam — checks every configurable interval)
- World name shown next to online players (optional)
- Players set to DND receive no notifications
🔔 Per-Player Notification Preferences
Each player controls their own notifications — no one can change settings for others:
| Command | Default |
|---|---|
/friend notifications join on/off |
ON |
/friend notifications leave on/off |
ON |
/friend notifications death on/off |
OFF |
/friend notifications only_best on/off |
OFF — filter to Best Friend only |
🔒 Per-Player Privacy Settings
Each player decides who can interact with them:
| Command | Default |
|---|---|
/friend privacy messages <level> |
Everyone |
/friend privacy friend_requests <level> |
Everyone |
/friend privacy see_status <level> |
Everyone |
Privacy levels: all · friends_only · best_friends_only · none
💾 Storage
- SQLite built-in — zero setup, DB in
plugins/SuperFriends/ - MySQL optional — configure in
config.yml - All DB operations run fully async — zero main-thread lag
- Automatic batch saving every 5 minutes + save on quit + save on shutdown
- Offline friend names always displayed correctly
📋 Commands
| Command | Permission |
|---|---|
/friend add <player> |
superfriends.friend |
/friend accept <player> |
superfriends.friend |
/friend deny <player> |
superfriends.friend |
/friend remove <player> |
superfriends.friend |
/friend list |
superfriends.friend |
/friend best <player> |
superfriends.friend |
/friend privacy [action] [level] |
superfriends.friend |
/friend notifications [type] [on/off] |
superfriends.friend |
/superfriends info |
superfriends.admin |
/superfriends reload |
superfriends.admin |
Aliases: /f, /friends → /friend — /sf → /superfriends
🎨 MiniMessage Color Support
All config messages use full MiniMessage syntax:
Supported tags:
- Named colors:
<green>,<red>,<gray>,<white>,<light_purple>,<dark_gray>… - Formatting:
<bold>,<italic>,<underlined>,<strikethrough> - Hex colors:
<#FF6600> - Gradients:
<gradient:#ff0000:#0000ff>text</gradient> - Rainbow:
<rainbow>text</rainbow>
MiniMessage gradients and hex colors require Paper / Purpur / Folia. On plain Spigot/Bukkit, standard named colors still work.
⚙️ Configuration
🌍 Platform Compatibility
| Platform | 1.20.x | 1.21.x |
|---|---|---|
| Paper | ✅ | ✅ |
| Purpur | ✅ | ✅ |
| Folia | ✅ | ✅ |
| Spigot | ✅ | ✅ |
| Bukkit | ✅ | ✅ |
Platform is auto-detected at startup — no configuration needed. Folia's region-thread scheduler is loaded via reflection for full compatibility.
⚡ Performance
- Zero main-thread database calls — everything async
- In-memory cache per player with dirty-flag batch saves
- No per-tick loops — AFK check is a low-frequency repeating task
- Event-driven only — no polling
- SQLite JDBC driver embedded in the JAR — no server-side setup
📥 Installation
- Drop
SuperFriends.jarintoplugins/ - Start / restart the server
- Edit
plugins/SuperFriends/config.ymlas needed /sf reloadto apply config changes without restart
No dependencies. SQLite is bundled. Nothing else to install.
Made with ❤️ by Dragon_45_

