Compatibility
Minecraft: Java Edition
Platforms
Supported environments
Links
Tags
Creators
Details
Rp Essentials
Rp Essentials is a comprehensive server-side utility mod built for immersive Roleplay servers running Minecraft 1.21.1 on NeoForge. It provides a complete suite of RP tools: proximity-based name obfuscation, a profession and license system, a warn system, connection tracking, private messaging, schedule automation, staff moderation tools, advanced chat formatting, world border warnings, named zones, Death RP, and deep LuckPerms integration. All configurable in real-time without restarts.
Current version: 4.1.10: See CHANGELOG for the full history.
Requirements
| Dependency | Version | Side | Required |
|---|---|---|---|
| Minecraft | 1.21.1 | Both | ✅ |
| NeoForge | 21.1.219+ | Both | ✅ |
| LuckPerms | Any | Server | ⬜ Optional |
| ImmersiveMessages | neoforge-1.21.1:1.0.18 | Client | ⬜ Optional |
| TxniLib | neoforge-1.21.1:1.0.24 | Client | ⬜ Optional |
ImmersiveMessages and TxniLib are only required on the client if you use
zoneMessageMode = IMMERSIVE. The server runs fine without them.
Installation
- Download the latest
rpessentials-X.X.X.jarfrom the releases page. - Place the JAR in your server's
mods/folder. - (Optional) Install LuckPerms for prefix/suffix and group-based staff permissions.
- Start the server: all config files are generated automatically under
config/rpessentials/. - Edit the relevant config files (see 'Configuration' below).
- Reload in-game with
/rpessentials config reloador restart the server.
Features
Proximity Obfuscation
Prevents metagaming by hiding player identities based on distance:
- Player names in the TabList and above heads are replaced with
?????beyond a configurable range (default: 8 blocks). - Tab list player head hidden for obfuscated players: The skin icon next to an obfuscated player's name in the tab list is hidden, preventing skin-based identification. Non-obfuscated players, staff, whitelisted players, and always-visible players are unaffected.
- Sneak Stealth Mode: Crouching players are only detectable at 2 blocks (configurable).
- Nametag Hiding: Optionally hide all player nametags above heads server-wide.
- Whitelist: Players who always see all names clearly.
- Blacklist: Players who are always hidden regardless of distance (stealth staff, NPCs).
- Always Visible List: Players who are never obfuscated to anyone.
- Spectator Blur: Players in spectator mode are automatically hidden from the TabList.
- LuckPerms rank prefixes are always hidden during obfuscation to prevent rank-based metagaming.
- Staff with
opsSeeAllsee both nickname and real name simultaneously:Nickname (RealName).
Nickname System
Persistent RP nicknames fully integrated across all mod systems:
- Set custom nicknames with full
§and&color code support. - Nicknames appear in the TabList, above heads, in chat, and in private messages.
- Stored persistently in
world/data/rpessentials/nicknames.json. /whoisallows staff to reverse-lookup any nickname to its real MC username and UUID.
Nametag System
Realistic nametag behavior integrated with the nickname system:
- Block occlusion: Nametags are hidden when a block is between the viewer and the target. Implemented by switching
Font.DisplayModefromSEE_THROUGHtoNORMAL, activating the GPU depth test, same technique as the Realistic Nametag mod. No raycast, no performance overhead. - Server nickname on nametag: The nametag displays the nickname set on the server (via
/rpessentials nick), with the LuckPerms prefix and full color code support. Never uses a locally cached nickname. - Global hide toggle: All nametags can be hidden server-wide via
hideNametags = trueinrpessentials-core.tomlor/rpessentials config set hideNametags true/false.
Profession & License System
A complete job restriction system for RP servers:
- Define unlimited professions with custom names and color codes.
- Physical license items are given to players, carrying profession metadata and issuance date.
- RP Licenses: Decorative-only licenses for events, with a printed expiration date and no actual permissions.
- Restriction types: crafting, block breaking, item usage, equipment (armor/weapons), and attacks.
- Global restrictions apply to all players by default, with per-profession overrides for licensed players.
- Wildcard pattern support:
minecraft:*_pickaxeblocks an entire item category. - Restriction messages shown via action bar with anti-spam cooldown.
- Tooltips display required professions on restricted items (client-side packet sync).
- License Audit Log: Every
GIVE,REVOKE, andGIVE_RPaction is permanently logged toworld/data/rpessentials/license-audit.json. - Temp License Registry: RP licenses are tracked in
world/data/rpessentials/licenses-temp.json. - Revoked license items are automatically removed from the player's inventory.
- Whitelisted players are exempt from all profession restrictions (configurable).
- Granting or revoking a license automatically adds or removes the corresponding vanilla scoreboard tag (tag name = profession ID).
Warn System
Full staff warning system for moderation:
- Issue permanent or temporary warns to any online player.
- The warned player receives an immediate in-chat notification with the reason and duration.
- On every login, players are notified of their active warn count and invited to run
/mywarn. /mywarnlets any player view their own active warns with reason, issuer, date, and remaining time.- Configurable staff broadcast on every warn add and warn remove.
- Automatic purge of expired temp-warns on player login (configurable).
- Warn IDs are auto-incremental integers, recalculated after every deletion to avoid gaps.
- Data stored in
world/data/rpessentials/warns.json.
Last Connection Tracking
Automatic recording of player connection history:
- Records last login and last logout for every player.
- Data stored in
world/data/rpessentials/lastconnection.json: human-readableUUID (McUsername)key format. - Staff can look up any player's last connection time, even for offline players.
- List view shows the N most recent connections sorted by date.
Private Messaging
Custom /msg system fully replacing vanilla messaging:
/msg <player> <message>,/tell,/w,/whisper: send private messages with Rp Essentials formatting./r <message>: reply to the last person who messaged you.- Messages formatted with nicknames, LuckPerms prefixes/suffixes, and color codes.
- Clickable "Click to reply" button in received messages.
- Console-to-player messaging supported.
Advanced Chat
Full chat formatting system:
- Customizable player name format with LuckPerms prefix/suffix support (
$prefix $name $suffix). - Full message template with timestamp and color support (
$time | $name: $msg). - Global chat message color configuration (16 Minecraft colors available).
- Timestamp system with customizable Java
SimpleDateFormat. - Real-time Markdown support:
**text**→ Bold*text*→ Italic__text__→ Underline~~text~~→ Strikethrough
/colorsdisplays all available colors and formatting codes with a visual preview.- Full integration with the nickname system, nicknames appear in chat automatically.
Join / Leave Messages
- Fully customizable join and leave messages with
{player}and{nickname}placeholders. - Full color code support.
- Can be disabled entirely.
Welcome Message
- Configurable multi-line welcome message sent to players on login.
- Optional sound effect with configurable volume and pitch.
{player}and{nickname}variable support.- Integrates with the schedule system to display server status.
Server Schedule
Automated server opening and closing management with per-day support:
- Each day of the week (
MONDAYthroughSUNDAY) has its ownenabled,open, andclosefields. - Disabled days are treated as fully closed.
- Automated warnings at 45, 30, 10, and 1 minute before closing.
- Smart kick system that only affects non-staff players.
- Staff receives notifications when the server opens or closes.
- The kick message displays the next open day and its hours (placeholders:
{day},{open},{close}). /rpessentials scheduleand/scheduledisplay the full week at a glance with the current day highlighted.- Aliases:
/scheduleand/horaires.
Death Hours
An optional schedule layer that activates Death RP during configured time slots, independently of the global Death RP toggle. Supports cross-midnight ranges. Disabled by default.
HRP Hours
An optional schedule layer for out-of-roleplay (HRP) period management:
- Two tiers: tolerated (noted but not punished) and allowed (fully free).
- Broadcast message sent once per slot start to all connected players.
- Configurable display mode:
CHAT,ACTION_BAR,TITLE,IMMERSIVE. - Disabled by default, entirely ignored when
enableHrpHours = false.
Death RP
Permanent death system for RP servers:
- Global toggle enabling or disabling the system in real-time.
- Per-player overrides to enable, disable, or reset to the global state.
- On RP death: a broadcast is sent to all connected players with the deceased's nickname and real name.
- A configurable sound is played to all players on RP death.
- Optional automatic whitelist removal on RP death (
whitelistRemove). - All messages and sounds are fully configurable for both global and per-player toggles.
World Border & Named Zones
- Distance-based warning triggered by proximity to spawn (independent of the vanilla world border).
- Configurable message with
{distance}and{player}placeholders. - Named Zones: Define circular zones with center coordinates, radius, and custom entry/exit messages.
- Configurable display mode for zone messages:
IMMERSIVE,CHAT,ACTION_BAR.
Staff Moderation Tools
Silent staff commands with full logging:
- Silent gamemode, teleport, and effect commands: invisible to other players.
- All actions logged to console and broadcast to other online staff (configurable).
- Target notification disabled by default (stealth mode).
Teleportation Platforms
- Define named platforms across dimensions with custom coordinates.
- Staff can teleport themselves or other players to any platform.
/setplatformcommand to create or update a platform without editing the config file.
Roles
- Assign predefined roles to players via
/rpessentials setrole. - Automatically removes all existing role tags, adds the new tag, and sets the corresponding LuckPerms group.
- Roles configurable in
rpessentials-core.tomlunder[Roles]. Format:roleId;lpGroup. - Full tab-completion of available roles.
- Requires OP level 3.
Auto-Unwhitelist
Automatic removal of inactive players from the whitelist:
- Configurable inactivity threshold (days).
- Runs once per day at midnight.
- Requires
enableLastConnection = true. - Staff members online at the time receive a clickable cancel button to immediately re-whitelist the player.
- Optional extra commands executed per removed player. Placeholders:
{player},{uuid}. - Disabled by default.
Staff Permission System
Multi-layered staff detection for maximum reliability:
- Scoreboard tags (
admin,modo,staff,builder: configurable). - Minimum OP level bypass (configurable from 0 to 4).
- LuckPerms group integration (configurable).
- Results cached for better performance (30-second cache).
- Automatic cache invalidation on logout.
Fully Configurable Messages
Every player-facing string in the mod is exposed as a configurable value via oneria-messages.toml:
- Full English translation of all messages out of the box.
§and&color code support in all values.- Reloadable at runtime with
/rpessentials config reload(no restart required). - Organized into clear sections:
[System],[Private Messaging],[Warn System],[Last Connection],[Death RP],[Whois],[Player List],[Help],[Profession Restrictions].
Commands
Permissions:
OP 2= OP level ≥ 2;Staff= staff role detected by the mod's permission system;Everyone= all players.
Configuration
| Command | Permission | Description |
|---|---|---|
/rpessentials config reload |
OP 2 | Reload all configs and clear caches. |
/rpessentials config status |
OP 2 | Display current status of all mod systems. |
/rpessentials config set <option> <value> |
OP 2 | Modify any config option in real-time. |
Nicknames
| Command | Permission | Description |
|---|---|---|
/rpessentials nick <player> <nickname> |
OP 2 | Set a nickname (supports color codes). |
/rpessentials nick <player> |
OP 2 | Reset a player's nickname. |
/rpessentials nick list |
OP 2 | List all active nicknames. |
/whois <nickname> |
OP 2 | Find the MC username and UUID behind a nickname. |
Licenses
| Command | Permission | Description |
|---|---|---|
/rpessentials license give <player> <profession> |
OP 2 | Grant a functional license. |
/rpessentials license giverp <player> <profession> <days> |
OP 2 | Grant a decorative RP-only license with an expiration date. |
/rpessentials license revoke <player> <profession> |
OP 2 | Revoke a license. |
/rpessentials license list [player] |
OP 2 | List all licenses, or those of a specific player. |
/rpessentials license check <player> <profession> |
OP 2 | Check if a player holds a specific license. |
Warns
| Command | Permission | Description |
|---|---|---|
/rpessentials warn add <player> <reason> |
Staff | Issue a permanent warn. |
/rpessentials warn temp <player> <minutes> <reason> |
Staff | Issue a temporary warn. |
/rpessentials warn remove <player> <warnId> |
Staff | Remove a specific warn. |
/rpessentials warn list [player] |
Staff | List all warns, or all warns for a player. |
/rpessentials warn info <player> <warnId> |
Staff | Show full details of a warn. |
/rpessentials warn clear <player> |
Staff | Remove all warns for a player. |
/rpessentials warn purge |
Staff | Purge all expired temp-warns. |
/mywarn |
Everyone | View your own active warns. |
Last Connection
| Command | Permission | Description |
|---|---|---|
/rpessentials lastconnection <player> |
Staff | Show last login/logout for a player. |
/rpessentials lastconnection list [count] |
Staff | List the N most recent connections (default: 20). |
Death RP
| Command | Permission | Description |
|---|---|---|
/rpessentials deathrp enable <true|false> |
Staff | Toggle Death RP globally. |
/rpessentials deathrp player <player> enable <true|false> |
Staff | Set a per-player override. |
/rpessentials deathrp player <player> reset |
Staff | Remove a player's individual override. |
/rpessentials deathrp status |
Staff | Display system state and all active overrides. |
Roles
| Command | Permission | Description |
|---|---|---|
/rpessentials setrole <player> <role> |
OP 3 | Assign a role to a player (sets tags + LuckPerms group). |
Staff
| Command | Permission | Description |
|---|---|---|
/rpessentials staff gamemode <mode> [player] |
Staff | Silent gamemode change. |
/rpessentials staff tp <player> |
Staff | Silent teleport. |
/rpessentials staff effect <player> <effect> <duration> <amplifier> |
Staff | Silent effect application. |
/rpessentials staff platform [player] [id] |
Staff | Teleport to a named platform. |
/setplatform <id> <dimension> <x> <y> <z> |
OP 2 | Create or update a platform entry. |
Whitelist / Blacklist
| Command | Permission | Description |
|---|---|---|
/rpessentials whitelist add/remove/list |
OP 2 | Manage the blur bypass whitelist. |
/rpessentials blacklist add/remove/list |
OP 2 | Manage the always-hidden blacklist. |
/rpessentials alwaysvisible add/remove/list |
OP 2 | Manage the never-obfuscated list. |
Messaging
| Command | Permission | Description |
|---|---|---|
/msg <player> <message> |
Everyone | Send a private message. |
/tell, /w, /whisper |
Everyone | Aliases for /msg. |
/r <message> |
Everyone | Reply to the last person who messaged you. |
Public
| Command | Permission | Description |
|---|---|---|
/rpessentials schedule / /schedule / /horaires |
Everyone | View server schedule and status. |
/rpessentials help |
Everyone | Display available commands (staff section shown to staff only). |
/colors |
Everyone | Display all color codes and formatting options. |
/list |
Everyone | Custom player list showing nicknames and real usernames. |
/mywarn |
Everyone | View your own active warns. |
Configuration
The mod uses 6 config files under config/rpessentials/, generated automatically on first launch. All files are fully documented with inline comments.
| File | Contents |
|---|---|
rpessentials-core.toml |
Obfuscation, permissions, world border & zones, Death RP, roles |
rpessentials-chat.toml |
Chat formatting, markdown, timestamps, join/leave messages |
rpessentials-schedule.toml |
Per-day schedule, death hours, HRP hours, welcome message, auto-unwhitelist |
rpessentials-moderation.toml |
Silent commands, platforms, last connection, warn system |
rpessentials-professions.toml |
Profession definitions and all restriction lists |
rpessentials-messages.toml |
All customizable player-facing message strings |
rpessentials-core.toml
[Obfuscation Settings]
| Option | Default | Description |
|---|---|---|
enableBlur |
true |
Master switch for the obfuscation system. |
proximityDistance |
8 |
Detection range in blocks (normal). |
obfuscatedNameLength |
5 |
Number of ? characters in the obfuscated name. |
obfuscatePrefix |
true |
Hide LuckPerms rank prefix when obfuscating. |
opsSeeAll |
true |
Staff always see real names. |
hideNametags |
false |
Hide all player nametags above heads. |
showNametagPrefixSuffix |
true |
Show LuckPerms prefix/suffix in nametags. |
enableSneakStealth |
true |
Crouching reduces detection range. |
sneakProximityDistance |
2 |
Detection range for crouching players (blocks). |
blurSpectators |
true |
Hide spectator-mode players from the TabList. |
whitelist |
[] |
Players who always see all names clearly. |
blacklist |
[] |
Players who are always hidden. |
alwaysVisibleList |
[] |
Players who are never obfuscated to anyone. |
whitelistExemptProfessions |
false |
Whitelist players bypass profession restrictions. |
[Permissions System]
| Option | Default | Description |
|---|---|---|
staffTags |
["admin","moderateur","modo","staff","builder"] |
Scoreboard tags/groups considered staff. |
opLevelBypass |
2 |
Minimum OP level to bypass restrictions (0 = disabled). |
useLuckPermsGroups |
true |
Use LuckPerms groups for staff detection. |
luckPermsStaffGroups |
["admin","moderateur","staff"] |
LuckPerms groups treated as staff. |
[World Border Warning]
| Option | Default | Description |
|---|---|---|
enableWorldBorderWarning |
true |
Enable distance-based warnings. |
worldBorderDistance |
2000 |
Warning trigger distance from spawn (blocks). |
worldBorderMessage |
"..." |
Warning message. Variables: {distance}, {player}. |
worldBorderCheckInterval |
40 |
Check frequency in ticks (40 = 2 seconds). |
namedZones |
[] |
Named zones with entry/exit messages. Format: name;centerX;centerZ;radius;enterMsg;exitMsg. |
zoneMessageMode |
"ACTION_BAR" |
Display mode for zone messages: IMMERSIVE, CHAT, ACTION_BAR. |
[DeathRP]
| Option | Default | Description |
|---|---|---|
globalEnabled |
false |
Global state of the Death RP system. |
whitelistRemove |
false |
Automatically remove the player from the whitelist on RP death. |
deathMessage |
"..." |
Message broadcast to all players on RP death. Variables: {player}, {realname}. |
deathSound |
"minecraft:entity.wither.death" |
Sound played on RP death. Use none to disable. |
deathSoundVolume |
1.0 |
RP death sound volume. |
deathSoundPitch |
1.0 |
RP death sound pitch. |
[Roles]
| Option | Default | Description |
|---|---|---|
roles |
["admin;admin","modo;modo","builder;builder","joueur;joueur"] |
Role definitions. Format: roleId;lpGroup. |
rpessentials-chat.toml
[Chat Settings]
| Option | Default | Description |
|---|---|---|
enableChatFormat |
true |
Enable the chat formatting system. |
playerNameFormat |
"$prefix$name$suffix" |
Player name format in chat. |
chatMessageFormat |
"$time | $name: $msg" |
Full message template. |
chatMessageColor |
"white" |
Global chat message color. |
enableTimestamp |
false |
Show timestamps in chat. |
timestampFormat |
"HH:mm" |
Java SimpleDateFormat pattern for timestamps. |
enableMarkdown |
true |
Enable Markdown support in chat. |
[Join / Leave Messages]
| Option | Default | Description |
|---|---|---|
enableJoinMessage |
true |
Enable the join message. |
joinMessage |
"..." |
Join message. Variables: {player}, {nickname}. |
enableLeaveMessage |
true |
Enable the leave message. |
leaveMessage |
"..." |
Leave message. Variables: {player}, {nickname}. |
rpessentials-schedule.toml
[Schedule System | Per Day]
Each day of the week (MONDAY through SUNDAY) has its own fields:
| Option | Default | Description |
|---|---|---|
<day>.enabled |
varies | Whether the server is open this day. |
<day>.open |
"18:00" |
Opening time (format HH:MM). |
<day>.close |
"23:00" |
Closing time (format HH:MM). |
[Messages]
| Option | Description |
|---|---|
closingWarningMessage |
Warning message before closing. Variable: {time}. |
kickMessage |
Kick message. Variables: {day}, {open}, {close}. |
serverOpenMessage |
Broadcast message on server open. |
serverCloseMessage |
Broadcast message on server close. |
[Welcome Message]
| Option | Default | Description |
|---|---|---|
enableWelcomeMessage |
true |
Enable the welcome message. |
welcomeMessage |
["..."] |
Multi-line welcome message with color code support. |
welcomeSound |
"" |
Sound played on login (resource location string). |
welcomeSoundVolume |
1.0 |
Welcome sound volume. |
welcomeSoundPitch |
1.0 |
Welcome sound pitch. |
[Death Hours]
| Option | Default | Description |
|---|---|---|
enableDeathHours |
false |
Enable automatic Death RP activation by time slot. |
deathHoursSlots |
[] |
Time slots for Death RP activation. Format: HH:MM-HH:MM. |
[HRP Hours]
| Option | Default | Description |
|---|---|---|
enableHrpHours |
false |
Enable the HRP hours system. |
hrpBroadcastMode |
"CHAT" |
Display mode: CHAT, ACTION_BAR, TITLE, IMMERSIVE. |
[Auto-Unwhitelist]
| Option | Default | Description |
|---|---|---|
autoUnwhitelistEnabled |
false |
Enable automatic removal of inactive players from the whitelist. |
autoUnwhitelistDays |
30 |
Days of inactivity before removal. |
autoUnwhitelistExtraCommands |
[] |
Extra commands run on removal. Variables: {player}, {uuid}. |
rpessentials-moderation.toml
[Silent Commands]
| Option | Default | Description |
|---|---|---|
enableSilentCommands |
true |
Enable silent staff commands. |
logToStaff |
true |
Broadcast silent command usage to other staff. |
logToConsole |
true |
Log silent commands to the server console. |
notifyTarget |
false |
Notify the target of the action (disables stealth). |
[Teleportation Platforms]
| Option | Default | Description |
|---|---|---|
enablePlatforms |
true |
Enable the platform teleport system. |
platforms |
[...] |
Platform list (id;DisplayName;dimension;x;y;z). |
[Last Connection]
| Option | Default | Description |
|---|---|---|
enableLastConnection |
true |
Enable login/logout time tracking. |
trackLogout |
true |
Also record disconnection times. |
dateFormat |
"dd/MM/yyyy HH:mm:ss" |
Java SimpleDateFormat for stored dates. |
[Warn System]
| Option | Default | Description |
|---|---|---|
enableWarnSystem |
true |
Enable the warn system. |
notifyOnJoin |
true |
Notify players of active warns on login. |
joinMessage |
"..." |
Login notification message. Variable: {count}. |
maxTempDays |
30 |
Max duration for temp warns in days (0 = unlimited). |
autoPurgeExpired |
true |
Auto-purge expired warns on player login. |
addedBroadcastFormat |
"..." |
Staff broadcast on warn add. Variables: {id}, {staff}, {player}, {reason}, {expiry}. |
removedBroadcastFormat |
"..." |
Staff broadcast on warn remove. Variables: {id}, {staff}. |
rpessentials-professions.toml
| Option | Description |
|---|---|
professions |
Profession definitions (id;DisplayName;§ColorCode). |
globalBlockedCrafts |
Items blocked from crafting for all players. |
globalUnbreakableBlocks |
Blocks that cannot be broken by anyone. |
globalBlockedItems |
Items that cannot be used or interacted with. |
globalBlockedEquipment |
Armor/weapons that cannot be equipped. |
professionAllowedCrafts |
Per-profession craft overrides (profession;item1,item2). |
professionAllowedBlocks |
Per-profession block breaking overrides. |
professionAllowedItems |
Per-profession item usage overrides. |
professionAllowedEquipment |
Per-profession equipment overrides. |
craftBlockedMessage |
Message shown when a craft is blocked. |
blockBreakBlockedMessage |
Message shown when block breaking is blocked. |
itemUseBlockedMessage |
Message shown when item use is blocked. |
equipmentBlockedMessage |
Message shown when equipping is blocked. |
rpessentials-messages.toml
All player-facing strings are configurable in this file. It is generated automatically on first start and organized into sections:
| Section | Contents |
|---|---|
[System] |
System messages, config error strings |
[Private Messaging] |
Private message prompts and notifications |
[Warn System] |
All warn notifications, labels, and duration formats |
[Last Connection] |
Last connection display strings |
[Death RP] |
Death RP toggle and status messages |
[Whois] |
/whois result messages |
[Player List] |
Player list header |
[Help] |
All help menu entries |
[Profession Restrictions] |
Restriction feedback messages |
Data Storage
All persistent data is stored in the world folder. Files are human-readable JSON and can be edited manually. Keys use the UUID (McUsername) format for readability.
| File | Contents |
|---|---|
world/data/rpessentials/nicknames.json |
Player nicknames |
world/data/rpessentials/licenses.json |
Player licenses |
world/data/rpessentials/license-audit.json |
License audit log |
world/data/rpessentials/licenses-temp.json |
Temporary (RP) license registry |
world/data/rpessentials/warns.json |
Player warns |
world/data/rpessentials/lastconnection.json |
Player connection history |
All saves are asynchronous. All loads are synchronous at server startup.
LuckPerms Integration
LuckPerms is optional. The mod works fully without it, with graceful fallback:
- Without LuckPerms: staff detection falls back to scoreboard tags and OP levels. Prefix/suffix display is disabled.
- With LuckPerms: full integration with prefixes, suffixes, groups, and permission nodes.
- All LuckPerms-dependent features are silently skipped when the mod is absent.
Performance
- Permission checks: 30-second cache (~90% overhead reduction).
- Profession restriction checks: ~0.1ms per check (cached) (most of the verification is now event-based so almost no impact).
- License database queries: ~0.5ms (with caching).
- Network sync: ~1KB packet per player on login.
- Cache cleanup runs every 20 seconds to prevent memory leaks.
- Nametag block occlusion: zero raycast overhead, handled entirely by GPU depth test.
- Estimated total overhead: <1% CPU usage on active servers.
Technical Information
| Field | Value |
|---|---|
| Mod ID | rpessentials |
| Group ID | net.rp.rpessentials |
| Version | 4.1.10 |
| MC Version | 1.21.1 |
| NeoForge | 21.1.219+ |
| Java | 21 |


