promotional bannermobile promotional banner

SuperFriends

A modern friends plugin featuring presence, privacy controls, notifications, and an exclusive Best Friend system.
 
<main id="main-content">
 

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: OnlineAFKDNDInvisible
  • 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:

lang:
prefix: "<dark_gray>[<light_purple><bold>SuperFriends</bold><dark_gray>] "
friend_accepted: "<green>You are now friends with <white>{player}<green>!"
friend_join: "<green>+ <white>{player} <green>is now online."
 

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

friends:
max_friends: 100
 
presence:
show_world: true
afk_timeout_seconds: 300
afk_check_interval_seconds: 10
 
database:
type: sqlite # sqlite or mysql
file: "superfriends.db"
mysql:
host: "localhost"
port: 3306
database: "superfriends"
username: "root"
password: ""
 
lang:
prefix: "<dark_gray>[<light_purple><bold>SuperFriends</bold><dark_gray>] "
# ... all messages fully customizable with MiniMessage
 

🌍 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

  1. Drop SuperFriends.jar into plugins/
  2. Start / restart the server
  3. Edit plugins/SuperFriends/config.yml as needed
  4. /sf reload to apply config changes without restart

No dependencies. SQLite is bundled. Nothing else to install.


Made with ❤️ by Dragon_45_

</main>

The SuperFriends Team

profile avatar
  • 1
    Projects
  • 3
    Downloads