BaileyCodes b7bc25e168 feat: integrate Atlantis Disguises API for packet-level nick/skin support
- Added net.atlantismc.disguises:api:1.0 as compileOnly dependency
- Created AtlantisDisguiseIntegration bridge class
- NameOverrideService now delegates to Atlantis when available
- Falls back to built-in Bukkit display name overrides if absent
- Added AtlantisDisguises to plugin.yml softdepend
2026-06-01 13:22:48 -05:00

NickCore

Enterprise Minecraft Nickname Plugin for Paper 1.21.11, Folia 1.21.11, and Velocity 3.5.0.

Java 25 Paper 1.21.11 Velocity 3.5.0


Features

  • Nickname System — Approved names, random names, custom names (permission-gated)
  • Rank System — Configurable visual ranks with MiniMessage prefixes/suffixes
  • Skin System — Multi-tier cache (memory → DB → Mojang API), rate-limited
  • GUI System — Paginated inventory menus with click cooldowns
  • PlaceholderAPI — 14 placeholders served from in-memory cache
  • Velocity Sync — Cross-server nickname/rank/skin synchronization
  • Folia Support — Region/Entity/Global scheduler compliance
  • Security — Homoglyph detection, impersonation prevention, input sanitization
  • Database — SQLite/MySQL/MariaDB with HikariCP pooling and schema migration
  • Audit Logging — Full history of all nickname changes

Architecture

nickcore/
├── nickcore-common/    # Shared models, DTOs, validation
├── nickcore-paper/     # Paper + Folia plugin (single JAR)
└── nickcore-velocity/  # Velocity proxy plugin

Building

./gradlew build

Artifacts:

  • nickcore-paper/build/libs/NickCore-Paper-1.0.0.jar
  • nickcore-velocity/build/libs/NickCore-Velocity-1.0.0.jar

Requirements

  • Java 25+
  • Paper 1.21.11 or Folia 1.21.11
  • Velocity 3.5.0 (optional, for multi-server)

Installation

  1. Place NickCore-Paper-1.0.0.jar in your server's plugins/ folder
  2. (Optional) Place NickCore-Velocity-1.0.0.jar in your Velocity proxy's plugins/ folder
  3. Start the server to generate configuration files
  4. Edit configuration files in plugins/NickCore/
  5. Run /nick reload to apply changes

Commands

Command Permission Description
/nick nickcore.use Open the main GUI
/nick <name> nickcore.name.custom Set custom nickname
/nick random nickcore.name.random Generate random nickname
/nick reset nickcore.reset Reset to real identity
/nick rank [id] nickcore.rank.select Select visual rank
/nick skin [name] nickcore.skin.select Change skin
/nick gui nickcore.use Open GUI explicitly
/nick reload nickcore.reload Reload configuration
/nick info <player> nickcore.info View player nick info
/nick force <player> <nick> nickcore.force Force nickname on player
/nick clear <player> nickcore.clear Clear player's nickname

Permissions

Permission Default Description
nickcore.use true Access /nick
nickcore.name.custom op Enter custom nicknames
nickcore.name.select true Select from approved list
nickcore.name.random true Generate random nicknames
nickcore.rank.select false Access rank selection
nickcore.rank.<id> false Per-rank permissions
nickcore.skin.select false Access skin selection
nickcore.skin.keep true Keep current skin option
nickcore.reset true Reset identity
nickcore.admin op Admin features
nickcore.reload op Reload configuration
nickcore.bypass op Bypass restrictions
nickcore.force op Force nicknames
nickcore.info op View player info
nickcore.clear op Clear nicknames

PlaceholderAPI

Placeholder Description
%nickcore_nick% Current nickname
%nickcore_real_name% Real player name
%nickcore_rank% Visual rank name
%nickcore_rank_prefix% Rank prefix
%nickcore_rank_suffix% Rank suffix
%nickcore_skin% Applied skin name
%nickcore_is_nicked% Whether player is nicked
%nickcore_display_name% Effective display name
%nickcore_original_name% Original player name

Configuration Files

File Purpose
config.yml General settings, chat format, security
database.yml Database connection and pooling
messages.yml Player-facing messages (MiniMessage)
ranks.yml Rank definitions
skins.yml Pre-configured skins
names.yml Approved nickname pool

Integrations

  • PlaceholderAPI — Soft dependency, 14 placeholders
  • LuckPerms — Permission-based rank filtering
  • TAB — Tablist prefix/suffix updates
  • Velocity — Cross-server synchronization
  • EssentialsX — Compatible display names
  • HuskChat — Compatible via PlaceholderAPI

Security

  • Unicode homoglyph detection
  • Invisible/zero-width character blocking
  • Levenshtein-based impersonation prevention
  • MiniMessage injection sanitization
  • SQL injection prevention (prepared statements)
  • Velocity packet validation with protocol versioning

Performance

  • ConcurrentHashMap-based caches (lock-free reads)
  • Pre-computed placeholder values (zero DB hits during resolution)
  • Deduplicating skin fetcher (one request per skin)
  • Rate-limited Mojang API access
  • HikariCP connection pooling
  • Virtual threads for database operations
  • ViewerUnaware chat renderer (single render per message)
  • Scoreboard team caching (no redundant updates)

License

All rights reserved.

Description
No description provided
Readme 171 KiB
Languages
Java 100%