File Details
rpessentials-4.1.5.jar
- R
- Mar 29, 2026
- 410.35 KB
- 60
- 1.21.1
- NeoForge
File Name
rpessentials-4.1.5.jar
Supported Versions
- 1.21.1
Curse Maven Snippet
[4.1.5]
Login fixes, command reorganization, Config Manager GUI, new inspect command.
Fixed
- Missing login triggers: Several systems were never triggered on player login:
TempLicenseExpirationManager.checkOnLogin()was never called — RP licenses would only expire at midnight sweep, never on login.TempLicenseExpirationManager.markRevokedLicenseItems()was never called on login — revoked items were not visually marked.WARN_AUTO_PURGE_EXPIREDwas not respected on login despite being configurable.WARN_NOTIFY_ON_JOINwas not respected on login — players were never notified of their active warns on connection.
- Duplicate
NicknameNametagHandler: The class was still present and subscribed to the sameRenderNameTagEventasClientNametagRenderer, causing a non-deterministic race condition on nametag display.NicknameNametagHandlerhas been removed —ClientNametagRendereris now the sole handler. - Hardcoded RP license expiration message: The message sent to the player on automatic RP license expiration was hardcoded in French inside
TempLicenseExpirationManager. It now usesMessagesConfig.LICENSE_EXPIRED_RP_PLAYER. Available placeholder:{profession}. - Config Manager comment tooltip hidden behind widgets: The ℹ comment tooltip in the Config Manager GUI was rendered before
super.render(), causing EditBox and Button widgets to draw on top of it. Tooltip rendering is now deferred to aftersuper.render()using a stored pending-tooltip state, so it always appears above all other widgets.
Changed
/rpessentials— restricted access: The root command/rpessentialsnow requires OP level 2. It no longer appears in tab-completion for players without permission.- BlurTab command reorganization:
/rpessentials whitelist,/rpessentials blacklistand/rpessentials alwaysvisiblehave been grouped under/rpessentials blurtab:/rpessentials blurtab whitelist add/remove/list/rpessentials blurtab blacklist add/remove/list/rpessentials blurtab alwaysvisible add/remove/list
- Schedule and help commands moved:
/rpessentials schedulehas been removed —/scheduleand/horairesstandalone aliases remain unchanged./rpessentials helphas been moved to/rp help, accessible to all players (staff section only visible to staff)./rpessentials helpoptionally remains as a staff-only alias. ConfigMigratorremoved: The automatic migration utility has been removed entirely as all servers are expected to already be on therpessentials/config and data structure.
Added
Config Manager GUI: New in-game interface that exposes all six config files in a single dynamic screen, with no code changes required when adding new config entries.
- File panel on the left (Core, Chat, Schedule, Moderation, Professions, Messages) — click to load a file.
- Entries are loaded on demand (file by file) via network packets to avoid oversized payloads.
- Widgets auto-adapt to the value type: toggle button for BOOLEAN, numeric EditBox with range hint
[min – max]for INT/DOUBLE/LONG, wide EditBox for STRING, comma-separated EditBox + Edit button (opens a sub-screen with add/remove/reorder per line) for LIST_STRING. §8ℹindicator on each entry — hover to display the full comment from the config spec, word-wrapped and rendered above all widgets.§8↺reset-to-default button on each entry.- Pending changes highlighted in yellow; unsaved count shown in the header.
- Apply sends only modified entries to the server; server validates, saves, and responds with updated values.
- Opened via a configurable keybinding: Options → Controls → RP Essentials → Open Config Manager [Admin].
- Fully dynamic: adding a
ConfigValuefield to any config class automatically makes it appear in the GUI.
/rpessentials inspect <player>(Staff): New all-in-one command displaying a complete overview of a player in a single output — online status, nickname, role, UUID, active licenses (with RP expiry dates), active warns with reasons, mute status, last connection, and staff notes. Works on both online and offline players known to the last connection system.
Technical
- New classes:
ConfigInspector— server-side dynamic introspection of allModConfigSpecinstances via Java reflection. Enumerates fields, extracts comments and defaults via Night ConfigUnmodifiableConfig.get(path), detects value types, serializes/deserializes values. Adding new config fields requires no changes here.ConfigGuiFilesPacket(S→C) — sends the lightweight list of available config files.RequestConfigFilePacket(C→S) — client requests entries for one specific file.ConfigFileEntriesPacket(S→C) — response containing all entries for the requested file.SaveConfigEntriesPacket(C→S) — client sends{fullPath → newValue}map for all pending changes.ConfigManagerScreen— client-onlyScreenwith file panel, scrollable entry list, deferred tooltip rendering, list editor sub-screen.
NetworkHandler— registered four new Config Manager packets.RequestOpenGuiPacket.GuiType— addedCONFIG_MANAGERvariant.RpKeyBindings— addedOPEN_CONFIG_MANAGER_GUIkeybinding.RpClientTickHandler— handlesOPEN_CONFIG_MANAGER_GUIkey press.ClientGuiOpener— addedopenConfigManagerGui().RpEssentialsEventHandler.onPlayerLogin— added calls toTempLicenseExpirationManager.checkOnLogin(),markRevokedLicenseItems(), warn auto-purge and warn join notification.NicknameNametagHandler— class deleted.MessagesConfig— new keyLICENSE_EXPIRED_RP_PLAYERin the[Licenses]section.RpEssentialsCommands— root node now requires OP 2. BlurTab reorganization.inspectPlayer()handler added.RpEssentialsRpCommands—/rp helpadded.en_us.json/fr_fr.json— new keykey.rpessentials.open_config_manager_gui.

