AltDetector A simple, fast alt-account detector for 1.19-1.21.X — alerts staff when players share IPs.
Author: Silverninja3_
✅ What is it? AltDetector checks players on join and notifies staff when the connecting player shares an IP with other accounts. Messages support
& color codes,
hex colors, and
MiniMessage gradients so you can style alerts exactly how you want.
✨ Features
Detects alts by shared IP on join
Sends alerts to altdetector.notify and OPs (configurable, OPs see by default)
Beautiful, customizable messages with & codes, hex (&#RRGGBB or <#rrggbb>), and <gradient:...>
/alt command:
/alt shows a clickable list of online players
/alt <player> checks that player’s alts
Tab-completion for online names
/altdetector lookup <player> — check any player in the datastore
/altdetector reload — hot-reload config + data
Name preview limit (e.g. "User1, User2 (+3 more)")
Privacy option: store real IPs or SHA-256 hashed keys
Exempt trusted users from checks/storage
Console also receives alerts
Requirements
Java 21
Minecraft server 1.21.4 (built against Paper API; works on modern Paper/Spigot with Adventure)
Installation
Drop the jar in plugins/
Start the server once to generate config/data
(Optional) Edit plugins/AltDetector/config.yml to customize messages and behavior
Grant staff the permissions below
️ Commands
Code (Text):
/alt - Clickable list of online players to check
/alt <player> - Check a specific player's alts
/altdetector reload - Reload config + data store
/altdetector lookup <p> - Show other names seen on the same IP as <p>
Permissions
Permission
Description
Default
altdetector.notify
See alt alerts on player join
op
altdetector.check
Use /alt to check players
op
altdetector.admin
Use /altdetector reload & lookup
op
altdetector.exempt
Player is exempt from detection & storage
false
Note: OPs always see alerts by default (configurable via ops-always-see). ⚙️ Configuration
Code (YAML):
notify-permission: "altdetector.notify" ops-always-see: true
min-matches: 1
name-preview-limit: 5
# Placeholders: {player}, {ip}, {matches}, {count} alert-format: "<gradient:#ff6a00:#ffd800>[AltDetector]</gradient> &e{player} &7shares IP with &c{matches} &7(&f{ip}&7)" no-matches-format: "<gradient:#6a86ff:#b86bff>[AltDetector]</gradient> &aNo matches for &e{player}&a." # Store real IPs (true) or SHA-256 hashed keys (false) store-plain-ip: true
Placeholders
{player} – the player being checked
{ip} – the stored IP or hashed key
{matches} – comma-separated preview of matched names
{count} – total number of matching names (excluding {player})
/alt
# -> clickable list of online players; click a name to run /alt <name>
/alt Silver
# -> shows "Silverninja3_ shares IP with Name1, Name2 (+2 more) (1.2.3.4)"
Privacy
Set store-plain-ip: false to store only a SHA-256 hash key and show that in alerts
Grant altdetector.exempt to trusted players/accounts to skip storage and alerts
Changelog
1.0.0 — Initial release: join alerts, /alt with clickable list & tab-complete, /altdetector reload & lookup, styled messages (&, hex, gradients), IP hashing option, exemptions.