18.9.115
Compatibility
Changes
OmniPanel 18.9.114 โ Cumulative Overhaul & Developer API Update
Important: This is a cumulative changelog covering the source recovery, fixes, features, integrations, and API improvements delivered across recent OmniPanel builds through 18.9.114.
Not every feature listed below was introduced specifically in 18.9.114.
โจ Highlights
- Replaced the old Section Lock / Lock Box system with unified Panel Visibility & Access.
- Repaired rank assignment, LuckPerms synchronization, coloured name tags, TAB integration, and custom rank badges.
- Added a generated rank resource pack integrated with the existing ResourcePackManager.
- Restored Player Actions, improved Staff Mode, and added emergency staff teleport invitations.
- Reworked personal settings, inventory confirmations, inspections, and expanded Ender Storage access.
- Improved punishments, IP mutes, temporary IP bans, evidence handling, and Owner Log.
- Expanded developer integrations through the existing APIs and service interfaces.
- Fixed Java/Bedrock recovery, offline account creation, and save-before-unlock behaviour.
- Repaired DiscordSRV account linking, missing commands, and private channel routing.
- Reconstructed a fully buildable source project with repeatable builds and automated regression coverage.
๐ Panel Visibility & Access
The previous Section Lock / Lock Box architecture has been removed and replaced by OmniPanel's centralized permission service.
Access behaviour
- Panel features are hidden when a player does not have access.
- Server-side permission checks match what is shown in the GUI.
- Opening
/paneldoes not automatically grant access to its features. - Whole-section access and individual feature permissions are supported.
- Staff can receive narrowly scoped access, such as:
- Inventory inspection without editing.
- Moderation access without punishment access.
- Read-only tools without destructive administration permissions.
- Inventory handlers, Dialog callbacks, commands, confirmations, and watchdog checks use the same access classification.
- Owners, Boss roles, configured owner-level groups, and
omnipanel.*retain full access. - Public player commands remain separate from protected administrative features.
๐ ๏ธ Dialog Permission Editor
Panel Visibility & Access is available inside OmniPanel Settings using Paper Dialogs.
Staff can:
- Select a player or rank.
- Choose Everything or Custom Access.
- Browse sections and individual features.
- Grant or revoke an entire section.
- Review enabled features before applying changes.
- Apply staged changes with authorization checked again at execution time.
Additional protections include:
- Stale drafts are rejected.
- Reused callbacks are rejected.
- Conflicting simultaneous saves are rejected.
- LuckPerms changes preserve unrelated permission nodes.
- Contextual permission nodes remain intact.
- Local access profiles remain available if LuckPerms is unavailable.
- Failed writes roll changes back rather than falsely reporting success.
๐ Live Permission Synchronization
OmniPanel now reads permission changes directly from the live LuckPerms state.
- External LuckPerms grants, revocations, and unset nodes are detected.
- Saved panel mirrors no longer override newer external changes.
- World/server contexts remain authoritative.
- Explicit negative permissions remain authoritative.
- Registered
default-falsepermissions are distinguished from explicit denials. - User, group, node, and network-sync events refresh command visibility.
- Refreshes are coalesced to prevent permission recalculation loops.
- Canonical feature nodes replace duplicate registered aliases.
- Existing supported legacy grants remain recognized.
๐งญ Rank Access Defaults
Built-in access profiles now follow rank authority more consistently while preserving explicit administrator customizations.
Default / Member / Donor
- Public gameplay access.
- No automatic staff-chat access.
- No automatic moderation permissions.
Helper
- Limited moderation access.
- Read-only inspection defaults.
Moderator
- Moderation.
- Teleport.
- Freeze.
- Jail.
- No automatic rank-management access.
- No destructive administration access.
Builder
- Building tools.
- Region-related controls.
Developer
- Diagnostics.
- Browsing and technical access.
Administrator / Manager
- Progressively broader operational control.
Owner-Level Roles
- Permission editor access.
- Full-access defaults.
Simple Voice Chat's normal speak/listen/group permissions remain available where appropriate, while voice administration remains restricted to authorized staff roles.
๐ Ranks, LuckPerms & Presentation
Rank handling received a major reliability overhaul.
- Normal rank assignment now replaces the player's previous main rank.
- Additional ranks are assigned explicitly through Multi Ranks.
defaultandmemberremain separate LuckPerms groups.- Default inheritance can remain for permissions without displaying a second Default badge next to another assigned rank.
- Duplicate Member creation has been fixed.
- Repeated rank-group creation has been addressed.
- Rank changes are serialized per player through the existing LuckPerms integration.
- User/group saves finish before success messages or visual updates are published.
- Failed writes restore the previous nodes rather than reporting a successful assignment.
- Unrelated groups remain untouched.
- Direct player permissions remain untouched.
- Explicitly recorded extra ranks remain untouched.
- Offline rank assignments publish correctly without attempting online-only
Playeroperations. - Rank duration selection has been repaired.
- Permanent-rank defaults work correctly.
- Queued duration handling has been repaired.
- Name tags, current-rank displays, and TAB all use the same deduplicated rank renderer.
Devresolves to Developer.Modresolves to Moderator.- Duplicate LIVE and AFK labels were removed from affected TAB formats.
- Existing third-party scoreboard ownership is respected.
๐ฅ Executive & Bulk Rank Assignment
The Executive rank has been added to OmniPanel's hierarchy, bootstrap logic, and access profiles.
Executive defaults provide broader operational access without granting:
- Owner bypass.
- Unrestricted server permissions.
The Ranks GUI now also includes:
Apply Rank to Everyone
A Dialog allows authorized staff to:
- Select a rank.
- Choose:
- Online players only.
- All known players.
- Review the affected player count.
- Confirm the operation.
Protections include:
- Protected accounts are skipped.
- Owner-level groups are skipped.
- Existing rank-save logic is reused.
- Results are reported after execution.
- The operation stops if the staff member's authorization is revoked.
Permission:
omnipanel.access.ranks.apply-to-everyone
๐จ Custom Rank Resource Pack
The supplied rank artwork has been converted into transparent, namespaced Minecraft font textures.
The current pack includes 18 rank badges:
- Owner
- Co-Owner
- CEO
- Executive
- Manager
- Admin
- Builder
- Developer
- Moderator
- Helper
- MVP
- VIP
- YouTuber
- Hero
- Champion
- Legendary
- Member
- Default
It also includes:
- LIVE
- AFK
LIVE and AFK remain statuses rather than permanent ranks.
Resource Pack Behaviour
- Rank definitions and configured group aliases remain the source of truth.
- Badges use the isolated:
omnipanel:ranks
font namespace.
- Stable glyph mappings are used.
- Styled text fallback remains available when the pack is declined or unavailable.
- Minecraft's default font is not replaced.
- Oversized source glyphs that previously caused missing-square rendering were resized to fit Minecraft's 256-pixel font atlas.
- Rank components are used in supported:
- Rank displays.
- Chat identity.
/liveannouncements.
- Pack files, metadata, and checksums are generated through the existing implementation.
- ResourcePackManager receives OmniPanel's local contribution.
- ResourcePackManager remains responsible for:
- Combining packs.
- Hosting.
- Player prompts.
- OmniPanel does not send a competing standalone pack.
- OmniPanel does not overwrite ResourcePackManager hosting configuration.
- Current metadata supports resource formats 75.0โ97.1.
โ ๏ธ Resource Pack Notice
Keep ResourcePackManager's combined pack configured.
The standalone OmniPanel rank ZIP is a contribution to the combined pack, not a replacement for the server's primary resource pack.
๐ Name Colours & Chat Colours
- Rank colours remain preserved across the shared renderer.
- Added Smooth Signatures profile collection.
- Added Silk Motion profile collection.
- The expanded collection now contains:
- 468 selectable styles
- Across 13 pages
- Existing profile IDs remain unchanged.
- Existing saved player selections remain compatible.
- Animation enablement remains configurable.
- Animation speed remains configurable.
- Frame timing remains configurable.
- Name, chat, and TAB styling reuse the existing renderer and refresh system.
- Fixed the Paper
CraftTeamreflection failure that repeatedly spammed console during rank/TAB refreshes. - Component compatibility methods now resolve accessible public API declarations rather than relying on non-public implementation classes.
Minecraft team-name colours still have the native 16-colour limitation.
RGB and gradient styles retain their richer appearance in supported chat/TAB components, while the nearest native team colour is used where Minecraft requires one.
๐ Public Player Commands & GUIs
The following gameplay commands remain public and do not require:
- A rank.
- Panel access.
omnipanel.use.- Extra Command Hub grants.
/rtp
/home
/homes
/sethome
/delhome
/unsethome
/tpa
/tpahere
/tpaccept
/tpdeny
/tpcancel
/tpauto
/settings
Normal gameplay restrictions still apply, including:
- Cooldowns.
- Home allowances.
- Region protection.
- Other configured gameplay rules.
Additional fixes:
- Homes, RTP selection, and personal settings share a public GUI classification.
- These menus no longer incorrectly fail with:
You no longer have panel access.
- Home deletion confirmations are public only when deleting the requesting player's own saved home.
- Administrative and security confirmations remain protected.
๐ Homes
- Repaired command paths for:
- Home creation.
- Home teleportation.
- Home deletion.
- Repaired matching GUI paths.
- Creating an unnamed home when all slots are occupied no longer silently overwrites slot 1.
- Region-denied replacement attempts preserve the previous home.
- Persistence continues using the existing data format.
- Atomic replacement is used.
- Persistence failures are reported.
- Home allowances now use the authoritative synchronized rank state.
- The system no longer prematurely falls back to Default while rank synchronization is still occurring.
Dev,Mod, andCo-Owneraliases resolve correctly.- Active extra ranks contribute the highest applicable home allowance.
- Home allowances are not added together.
- LIVE and AFK statuses do not grant home slots.
Default Home Limits
| Rank | Maximum Homes |
|---|---|
| Default | 2 |
| Member, Helper | 3 |
| VIP, Moderator | 4 |
| MVP, YouTuber, Builder, Admin | 5 |
| Hero, Developer, Manager | 6 |
| Champion, Legendary, Executive, CEO, Co-Owner, Owner | 7 |
Existing customized limits and rank keys remain preserved.
The existing seven-slot storage layout remains in use.
๐งญ Random Teleport
/rtp remains a public gameplay command.
Defaults
- Default cooldown: 60 seconds
- Existing explicitly configured cooldowns remain unchanged.
Permission:
omnipanel.rtp.bypass
This permission bypasses the cooldown only.
Player Selector
The selector is limited to:
- Overworld
- Nether
- End
- Close
Long technical player-facing selector lore was removed.
Additional Fixes
- Cooldown begins only after a successful teleport.
- Administrative configuration is now inside OmniPanel.
- Separate
/rtpsettingsand/rtpconfigcommands are no longer needed.
Existing Dialog controls include:
- Cooldown.
- Countdown.
- Target worlds.
- Search radius.
- Attempts.
- World-border handling.
- Safety filters.
- Protected-region buffer.
- No-RTP zones.
- Cooldown clearing.
- RTP testing.
๐จ Teleport Requests & Staff Emergency Calls
Normal TPA commands remain public.
Existing preferences remain synchronized with normal request handling:
- Receive requests.
- Auto-accept.
New: /stafftp
/stafftp [message]
This sends a private emergency notice and teleport invitation to authorized staff.
Staff can respond using:
- Clickable Accept.
- Clickable Deny.
/stafftp accept/stafftp deny/tpaccept/tpdeny
Safety Behaviour
- Emergency invitations always require explicit acceptance.
- Normal TPA auto-accept does not automatically accept emergency staff requests.
- Existing personal teleport requests are preserved instead of silently replaced.
- Receive preferences remain effective.
- Login restrictions remain effective.
- Jail restrictions remain effective.
- Expiry remains enforced.
- Countdown cancellation remains enforced.
- Authorization is checked again when accepting.
- Authorization is checked again during countdown.
- Stale invitations cannot be reused after reconnecting.
- Scheduling uses the public scheduler API.
- Scheduling failure no longer creates an untracked delayed teleport.
Emergency initiation requires:
omnipanel.stafftp
or its canonical access feature, plus staff-chat access.
Settings include:
- Enable/disable.
- Cooldown.
- Expiry.
โ๏ธ Personal /settings
The public settings menu now uses a cleaner 54-slot layout.
Preferences are separated from:
- Inventory utilities.
- Footer controls.
Available personal settings include:
- Receive TPA requests.
- TPA auto-accept.
- Player visibility.
- Collision.
- Item pickup.
- Personal time:
- Server
- Day
- Night
- Personal weather:
- Server
- Clear
- Rain
- Settings sounds.
- Nearby hostile natural-spawn preference.
- Nearby peaceful natural-spawn preference.
- Stack My Items.
- My Coordinates.
- Clear My Inventory.
- Reset.
- Close.
Improvements
- Legacy menu decorators no longer overwrite the authoritative settings layout.
- Removed unnecessary reset-default explanation text.
- Personal time does not modify world time.
- Personal weather does not modify global world weather.
- Preferences retain existing storage.
- Preferences reapply after joining or changing worlds.
- Stack My Items respects:
- Item metadata.
- Stack limits.
- Equipment remains untouched.
- Offhand remains untouched.
- Coordinates are sent privately to the player.
๐งน Safer Inventory Clearing
Inventory clearing now uses a hardened confirmation flow.
- Opening the confirmation does not delete anything.
- Confirmation is bound to:
- Correct player.
- Correct target.
- Correct inventory state.
- Only the actual Confirm button accepts the intended standard left-click.
The following cannot accidentally confirm an inventory clear:
- Cancel.
- Escape.
- Expired confirmation.
- Replay.
- Rapid clicking.
- Double clicking.
- Shift clicking.
- Number-key clicks.
- Drop clicks.
- Bottom-inventory clicks.
If inventory contents change, the old confirmation becomes invalid.
Staff inventory clears use the same protected confirmation model and recheck authorization before execution.
๐พ Personal Mob-Spawn Preferences
Natural-spawn suppression is local to opted-out players and uses a configurable radius.
In shared areas:
- Nearby players who allow that mob type take priority.
- Spectators do not influence the preference.
This system does not:
- Change a global gamerule.
- Create separate mobs per client.
- Remove existing mobs.
- Affect spawners.
- Affect spawn eggs.
- Affect breeding.
- Affect command-spawned mobs.
- Affect generated mobs.
๐ Player Actions & Inventory Inspection
Routing has been restored across:
- Care & Movement.
- Moderation & Records.
- Utilities.
- Advanced.
- Additional Player Tools.
Fixes
- Removed duplicate Heal controls.
- Removed duplicate History controls.
- Removed duplicate inventory controls.
- Removed duplicate Ender Storage controls.
- Fixed overlapping slots.
- Fixed older handlers intercepting newer controls.
- Target actions now correctly resolve the selected player instead of silently falling back to the staff member.
- Improved page highlighting.
- Improved Back routing.
- Improved Close routing.
- Improved clear-inventory instructions.
/invsee
/invsee inventory <player>
and Player Actions inspection now use the same shared session service.
Inventory Editing Safety
- Real items are no longer filtered as panel buttons.
- Real items are no longer decorated as panel buttons.
- Viewing and editing use separate permissions.
- Read-only snapshots cannot write data back to the target inventory.
- Storage mappings are preserved.
- Armour mappings are preserved.
- Offhand mappings are preserved.
- Reserved control/information slots cannot be occupied by items.
- Concurrent editing is guarded.
- Target inventory transactions are guarded.
- Drops are handled through the session lifecycle.
- Pickups are handled.
- Swaps are handled.
- Consumption is handled.
- Damage and mending are handled.
- Disconnects are handled.
Offline editing retains the existing:
- Playerdata readers.
- Snapshot readers.
- Backup system.
Login remains blocked while an offline edit session is active.
๐ฆ Expanded Ender Storage
Staff inspection is now reconnected to the authoritative expanded storage backend instead of a smaller vanilla snapshot.
- All 54 standard chest slots are usable.
- The final slot is no longer reserved incorrectly.
- Personal storage is independent from panel-button permissions.
- Existing SQLite database and schema remain in use.
- Existing legacy imports remain supported.
- Existing backups remain supported.
- Vanilla synchronization remains supported.
- Restored physical opening sounds.
- Restored physical closing sounds.
- Restored lid animation.
- Shared-viewer handling is supported.
- Physically blocked chests retain their normal restrictions.
- Corrupt item decoding prevents the storage from opening instead of substituting empty items and risking saved-data loss.
- Serialization failures abort saves.
- Unknown higher database rows remain preserved during normal writes.
Standard Minecraft chest inventories contain 54 slots, not 56.
๐ก๏ธ Staff Mode, Staff Chat & Admin Tools
Staff Mode
- Existing inventory backups are saved before staff tools replace player items.
- Staff Mode entry fails safely when:
- Backup cannot be saved.
- Recovery is still pending.
- Exit restores inventory.
- Disconnect restores inventory.
- Shutdown recovery restores inventory.
- Relevant flight state is restored.
- Protection state is restored.
- Pickup state is restored.
- Collision state is restored.
- Corrupt backups remain available for owner recovery.
- Staff tools use persistent identifiers.
- Tool permissions are rechecked when tools are used.
- Tool dropping is guarded.
- Tool swapping is guarded.
- Tool inventory movement is guarded.
- Added private Staff Mode entry titles.
- Added on-duty action bar.
- Added configurable Justice Hammer equip/patrol announcements.
- Nearby notices are range-limited.
- Nearby notices are rate-limited.
- Equipping the hammer does not punish anyone automatically.
- Equipping the hammer does not automatically teleport to nearby players.
- The hammer opens the existing protected
/punishflow. - Ranked fake-vanish join/leave messages support:
- Component badges.
- Text fallback.
๐ฌ Staff Chat
Staff Chat now uses one consistent access check for:
- Toggle access.
- Command execution.
- Sending.
- Receiving.
- Visibility.
Additional fixes:
- Default and Member profiles no longer receive Staff Chat automatically.
- Private staff messages are routed before:
- Public chat auditing.
- Discord forwarding.
- If Staff Chat access is revoked while a message is pending, the message is cancelled rather than leaking into public chat.
- Existing explicit LuckPerms or custom grants remain authoritative.
๐จ Individual Admin Tools
Available tools include:
- Sentinel Blade
- Excavator Pickaxe
- Timber Axe
- Justice Hammer
Individual permissions now allow granting one tool without granting every administrative tool.
Additional behaviour:
- Tool issuing does not overwrite occupied inventory slots.
- Punishment-related tools still require the related punishment permission.
- Removed NPC setup buttons.
- Removed NPC spawn buttons.
- Removed NPC AI-management buttons.
- Compatibility hooks remain available.
๐ค AFK & Presence
AFK protection has been improved.
AFK anchors resist:
- Water movement.
- Wind charges.
- Ordinary velocity.
- Knockback.
- Player collision.
- Mob collision.
Passive displacement does not automatically remove AFK status.
AFK is released by:
- Actual player movement input.
/afk.- Successful teleportation.
The following do not count as returning:
- Camera movement.
- Idle input.
Additional behaviour:
- Mounted players dismount when entering AFK.
- AFK players cannot be mounted.
- Previous collision settings are restored when leaving AFK.
- AFK state is cleaned up on disconnect.
- AFK state is cleaned up when OmniPanel disables.
- LIVE and AFK rendering uses the existing presence/rank system.
- Duplicate permanent rank entries are not created.
AFK movement protection is not damage immunity.
โ๏ธ Punishments, Mutes & AutoBan
- Repaired
/punishrouting. - Repaired the missing duration-validation call.
- Temporary actions require valid finite durations.
- Temporary actions respect configured limits.
- Player mutes use the authoritative persisted state.
- IP mutes use the authoritative persisted state.
- Name mutes use the authoritative persisted state.
- Legacy automatic/offline mutes use the same enforcement path.
- IP mutes cover connected accounts sharing the affected address.
- Mutes apply to:
- Chat.
- Relevant private-message commands.
- Signs.
- Books.
- Anvil text.
- Bedrock targets retain their actual online UUID.
- Bedrock targets no longer receive an invented offline-name UUID.
- Expired temporary mutes are removed by the expiry worker.
- Permanent mutes remain active.
- Added Temporary IP Ban as a separate action.
- Temporary IP Ban has its own permission.
- Temporary IP Ban has its own duration validation.
- Native ban creation must succeed before OmniPanel considers the punishment applied.
- Failed native ban creation no longer produces a misleading successful kick/ban result.
- Timed AutoBan/network records retain expiry timestamps.
- Timed records recover after restart.
- Temporary IP bans do not silently fall back to permanent console bans.
- Kick remains separate from ban creation.
๐ Records, Reasons & Presets
Added 24 searchable evidence-based presets covering reviewed cases such as:
- Fraud.
- Phishing.
- Malicious links.
- Evasion.
- Bot raids.
- Exploits.
- Harassment.
- Spam.
Existing custom presets remain authoritative.
Normal activities are not newly defined as violations, including:
- Ordinary trading.
- Giveaways.
- Normal Minecraft PvP.
History Improvements
History now uses compact wrapped summaries with full details available through the existing record Dialog.
Records can expose:
- Staff actor.
- Target.
- Case.
- Source.
- Action.
- Reason.
- Duration.
- Timing.
- Result.
- Available evidence.
Warnings, kicks, and reversal events are no longer presented as permanent active sanctions.
๐ค AutoMod & AI Evidence
AutoMod received significant reliability and evidence improvements.
Word Matching
- Blocked-word matching now uses word boundaries.
- Evidence is taken from the current message.
- Innocent substrings are no longer treated as matching banned words.
- Words from earlier messages cannot incorrectly become the reason for the current punishment.
Added working banned-word management through the GUI and commands:
/automod words add
/automod words remove
/automod words list
/automod strictwords add
/automod strictwords remove
/automod strictwords list
Word List Safety
- Changes apply immediately.
- Changes save atomically.
- Duplicate additions are rejected.
- Malformed entries are rejected.
- Oversized entries are rejected.
- Failed saves restore the previously running list.
- Pending GUI input rechecks:
- Permission.
- Online session.
- Session validity.
๐ง Gemini Moderation Context
Gemini moderation context now explicitly understands legitimate Minecraft activity, including:
- Economy.
- Trading.
- PvP.
Automatic decisions require:
- A known category.
- A verbatim quote from the actual player message.
- Contextual evidence.
- The configured confidence threshold.
Default evidence confidence threshold:
0.95
Evidence is withheld when it is:
- Missing.
- Fabricated.
- Single-word only.
- Uncertain.
High-impact categories such as:
- Scam.
- Other/uncertain classifications.
- Bans.
- Network bans.
- Jail.
remain review-only by default.
Cached moderation decisions are validated again against:
- Current message.
- Current player session.
Evidence records include:
- Message.
- Verbatim quote.
- SHA-256.
- Capture time.
- Source.
- Available model confidence.
Review entries do not automatically approve or execute a punishment.
โ ๏ธ AI confidence and matching text are safeguards, not proof that an interpretation is correct.
Staff review remains necessary for ambiguous or high-impact moderation cases.
๐ Owner Log & Command Approvals
Punishment audits are now connected to the same records shown in Owner Log.
Manual and automatic moderation events can include:
- Actor.
- Target.
- Case.
- Reason.
- Duration.
- Source.
- Outcome.
Failed punishment execution is not recorded as a successful sanction.
New Log Categories
Added:
- Command categories.
- Game-mode categories.
/gm.- Relevant aliases.
- Namespaced forms.
Actual game-mode changes are recorded separately from:
- Submitted commands.
- Intercepted commands.
Credential-related commands are excluded from command logging.
Owner Log Improvements
- Improved icons.
- Improved timestamps.
- Improved filtering.
- Improved pagination.
- Added refresh controls.
- Added full-detail Dialogs.
- Added configurable recording.
- Added live punishment alerts.
- Added selected-command tracking.
- Added game-mode tracking.
Disabling recording:
- Keeps existing records.
- Does not disable security enforcement.
โ Optional Owner Approval Per Command
Command Hub can now require owner approval for selected commands.
Owners can:
- Approve once.
- Deny.
Approval allows one retry of the exact same command:
- In the same world.
- Inside the approval window.
Approval does not:
- Execute the command as console.
- Grant missing permissions.
All existing controls still apply:
- Permission checks.
- Rank checks.
- World checks.
- Argument checks.
- Command-policy checks.
Requests:
- Expire.
- Are session-bound.
- Clear on disconnect.
- Cannot be reused with changed arguments.
- Cannot replay previous decisions.
- Cannot be reused after changing worlds.
Public gameplay and authentication/recovery commands remain exempt.
Owner Log configuration and approval review use separate permissions.
๐งญ Command Hub & Menu Cleanup
The existing command-policy engine remains intact while the UI and navigation have been cleaned up.
Preserved functionality includes:
- Command browsing.
- Aliases.
- Provider/plugin grouping.
- Descriptions.
- Usage.
- Permissions.
- Rank access.
- State.
- Activity/history.
Improvements
- Grouped searches remain inside the selected group.
- Added:
- Enable All.
- Disable All.
- Show All.
- Hide All.
- Reset Group Rules.
- Group actions show their scope before execution.
- Authorization is checked again before group actions execute.
- Public commands remain protected from additional Command Hub restrictions.
- Recovery commands remain protected.
- Repaired Dialog routing.
- Fixed overlapping control handlers.
Menu Cleanup
- Command Hub remains in its existing Command Center location.
- Removed unwanted homepage World Manager entry.
- Restored Server Rules to its intended homepage location.
- Removed unwanted Server Intelligence entries.
- Removed duplicate injected controls.
- Removed Discord Bridge button from Community Hub while preserving the integration.
- Removed the Systems Core dashboard UI and exposed catalog entries while keeping the underlying feature/security systems.
- Removed
/tabstatusin favour of in-panel TAB Settings.
โ๏ธ Panel Settings, Rules, Maintenance & Jail
Panel Settings and public /settings remain separate systems.
Settings Fixes
- Repaired route permissions.
- Repaired Dialog loading.
- Repaired delayed transitions after inventory clicks.
- Failed/unavailable Dialog launches now:
- Explain the cause.
- Return the user to Settings instead of silently closing.
Settings links include:
- Jail.
- Staff Mode.
- RTP.
- TAB.
- Panel Visibility & Access.
- Server Rules.
- Maintenance.
๐ Server Rules
Rules Studio supports:
- Add.
- Edit.
- Delete.
- Reorder.
Configurable:
- Rules title.
- Introduction.
- Page size.
Empty rule lists remain editable.
Removed the redundant Read in Chat control.
๐ง Maintenance
Maintenance now has:
- Shorter labels.
- Cleaner default screen.
- Matching fallback controls.
Editing maintenance text does not automatically enable Maintenance Mode.
Existing support remains for:
- Custom maintenance messages.
- Placeholders.
- Escaped newlines.
๐ Jail
Existing jail controls remain available for:
- Commands.
- Chat.
- Building.
- Interaction.
- Items.
- PvP.
Jail configuration access is separate from permission to jail a player.
Additional fixes:
- Allowed-command lists stay synchronized across guards.
- Intentionally empty allowed-command lists remain valid.
- Jail entry notices use the recorded jailer.
- Rejoin notices use the recorded jailer.
- Jail duration is included correctly.
Added Watch & Notify using the existing watch service with separate authorization requirements.
๐งฑ WorldEdit Selections & Region Protection
WorldEdit/FAWE selection handling has been repaired for native OmniPanel region creation and resizing.
Selection Requirements
Selections must:
- Be complete.
- Belong to loaded worlds.
Region Resizing
- Resizing remains inside the region's existing world.
- Configured volume limits are respected.
- Failed writes roll back.
- Successful writes invalidate the protection cache.
Protection Fixes
- Bucket emptying checks the actual affected block against place permissions.
- Waterlogging checks the actual affected block against place permissions.
- Bucket filling checks break permissions.
- Dispenser bucket placement respects protected boundaries.
- Water flow respects protected boundaries.
- Lava flow respects protected boundaries.
- Waterlogged-source flow respects protected boundaries.
Existing authority remains unchanged for:
- Region priorities.
- World settings.
- Jail restrictions.
- Explicit owner bypass.
A WorldEdit selection must still be saved as an OmniPanel region before OmniPanel protection applies.
๐ Kits, Playtime Rewards & Donor Utilities
Kits
Kit claims now handle partially occupied inventories correctly.
- Existing items are preserved.
- Compatible stacks are merged.
- Free storage slots are used.
- Equipment slots are used where appropriate.
- Offhand can be used where appropriate.
- Overflow items are dropped safely.
- Overflow drops receive recipient protections.
- Partially occupied inventories are not automatically rejected.
- Genuine zero-capacity rejection does not consume cooldown.
- Failed grant/persistence transactions roll back:
- Inventory changes.
- Generated drops.
โฑ๏ธ Playtime Rewards
Added per-kit playtime rewards using the existing kit system.
Configure in Manage Kit or with:
/kit playtime <kit> <minutes|off>
Behaviour:
- Uses accumulated playtime.
- Rewards persist once per UUID/kit threshold.
- Full-inventory players are retried appropriately.
- Unauthenticated players are retried appropriately.
- Cooldown reset does not regrant the reward.
- Cooldown pruning does not regrant the reward.
Kit API snapshots now expose:
playtimeMinutes
๐ Donor Utilities
VIP, MVP, Hero, Champion, and Legendary receive initial utility defaults for:
/echest
/craft
/anvil
Existing explicit custom grants and denials remain authoritative.
/echest uses the existing expanded Ender Storage backend.
No second inventory database is created.
Each utility has:
- Individual permission.
- Individual configuration switch.
๐ Java & Bedrock Authentication / Recovery
Authentication and recovery received a significant reliability pass.
Force Login
Force-login now resolves:
- Exact online names.
- UUIDs.
- Known offline account UUIDs.
Bedrock prefixes are preserved rather than stripped from stored identity.
Verified Bedrock prefix aliases are supported through the configured prefix.
Bedrock users use command-based authentication where Java-only Dialogs are unsupported.
Force Register
Force-register supports:
- Online account creation.
- Offline account creation.
Existing credentials require:
--replace
before replacement.
Safety Improvements
- Credentials are saved before the session unlocks.
- Account state is saved before the session unlocks.
- Failed writes restore the original account state.
- Offline account creation does not queue an authentication bypass.
- First successful password login records the player's actual UUID.
- Queued recovery is saved as consumed before unlocking.
- Recovery cannot become a repeated bypass.
- Stale queued recovery flags clear after:
- Successful replacement.
- Successful current-session recovery.
- Configurable reset-on-next-join remains available.
- Normal recovery still defaults to requiring re-registration on a later join.
- Existing password hashing remains intact.
- Existing password policy remains intact.
- Trusted networks remain supported.
- IP approval remains supported.
- Existing login-mode settings remain supported.
- Modern Paper chat respects the existing login-before-chat option.
- Recovery remains trusted-console-only.
- Configured remote-console policy remains authoritative.
Recovery Commands
forcelogin <player-or-known-UUID> [--reset]
forceregister <player-name-or-known-UUID> [--replace]
Run recovery commands from the trusted server console.
Generated registration passwords are shown through the existing recovery flow. Only salted password hashes are stored.
๐ DiscordSRV & Existing Discord Integrations
OmniPanel continues to use the existing Discord integration rather than introducing another bot/token system.
Routing
Supports multiple accessible:
- Guild destinations.
- Channel destinations.
through the same DiscordSRV bot.
Fixes
- Repaired channel configuration synchronization.
- DiscordSRV cached configuration is reloaded before OmniPanel routes reload.
- Existing unrelated channel mappings remain untouched.
- Private audit routes no longer fall back to public channels.
- Staff routes no longer fall back to public channels.
- Punishment routes no longer fall back to public channels.
- Explicit inaccessible destinations fail instead of silently redirecting elsewhere.
- Public mirrors are separated from explicit private:
- Audit mirrors.
- Status mirrors.
- Destinations are deduplicated.
- Send permissions are checked.
- Queue failures are handled.
- Asynchronous delivery failures are logged.
- Test feedback distinguishes:
- Message queued.
- Delivery confirmed.
Linking
The link-channel switch now changes the actual DiscordSRV route.
It does not disable DiscordSRV's independent:
- DM linking.
- Link-to-join policy.
Registered previously missing commands:
/linkdiscord
/unlinkdiscord
Existing alias:
discordlink
Personal linking:
- Respects the existing public-command switch.
- Is protected from additional Command Hub restrictions.
Compatible native linking now uses DiscordSRV's existing:
AccountLinkManager
for:
- Link codes.
- Link status.
- Unlinking.
- Reverse lookup.
- Role-sync identity lookup.
Native DiscordSRV codes are not stored in a competing OmniPanel database.
If the native link manager is unavailable, OmniPanel reports failure instead of generating an unusable local code.
Legacy external-module linking and existing files remain available when configured.
Actual Discord delivery still depends on the installed bot, channel IDs, guild access, and Discord permissions.
๐ Welcome Messages & Events
Welcome Messages
- Repaired native region lookup.
- Added richer colour support.
- Added styled-name support.
- Added optional PlaceholderAPI replacements.
- Added per-world/region cooldowns.
- Repeated greetings at the same destination are suppressed.
- Different destinations can still trigger their own welcome.
- Delayed welcomes wait for authentication where configured.
- Action bars preserve component colours.
- Duplicate legacy-chat fallback is avoided.
Events
Restored existing:
- Event templates.
- Event configuration.
- Event handlers.
Additional fixes:
- Repaired pending event confirmations.
- Repaired staff storage-session cleanup.
Existing event behaviour remains available for:
- Locations.
- Timers.
- Rewards.
- Toggles.
- Roles.
๐งฉ Developer API & Add-on Integration
Developer API version: 4.8.0
Permission Service API version: 5.0.0
The API update extends OmniPanel's existing interfaces and services.
It does not create another:
- Rank backend.
- Punishment backend.
- Kit backend.
- Region backend.
Existing API signatures remain available.
Available Integration Surfaces
OmniPanelService
Provides service-based add-on functionality including:
- Registration.
- Readiness/capabilities.
- Status.
- Heartbeat.
- Disconnect handlers.
- Menu access.
- Extension registration.
OmniPanelDeveloperAPI
Provides authenticated/keyed integration helpers.
OmniPanelAPI
Existing runtime facade including punishment access.
OmniPanelRuntimeAPI
Existing runtime integration facade.
๐งฑ Regions & Build-Access Queries
Added or expanded helpers include:
getWorldEditSelectionSnapshot(key, player)
createNativeRegionFromSelection(key, player, name, lobby)
resizeNativeRegionFromSelection(key, player, regionId)
deleteNativeRegion(key, player, regionId)
getNativeRegionIds(key, world)
checkBuildAccess(key, player, location, action)
getPlayerNameStyleSnapshot(key, player)
refreshPlayerNameStyle(key, player)
The service also exposes:
checkBuildAccessAsync(...)
Build-access queries use the same authoritative rules as gameplay:
- Regions.
- Worlds.
- Bypass rules.
- Jail restrictions.
- Place checks.
- Break checks.
- Interaction checks.
Async requests:
- Capture the location.
- Schedule the authoritative check on the server thread.
๐งฉ Extension Capabilities
The existing API exposes integration points for:
- Panel buttons.
- Panel sections.
- Callback handlers.
- Detailed registration results.
- Namespaced cleanup.
- Custom Player Actions.
- Region providers.
- Region flag definitions.
- External region details.
- Supported external-region mutations.
- Rank permission contributions.
- Rank hierarchy snapshots.
- Rank weight snapshots.
- Player permission snapshots.
- Permission refresh requests.
- Rank synchronization diagnostics.
- AutoMod diagnostics.
- Authentication diagnostics.
- Player presence.
- AFK controls.
- LIVE controls.
- Kit readiness.
- Kit metadata.
- Kit previews.
- Kit claims.
- Event readiness.
- Event templates.
- Active event IDs.
- Placeholder resolution.
- Permission queries.
These are available capabilities across the existing API. Not every listed method was first introduced in 18.9.114.
โ๏ธ Punishment API Additions
Add-ons can open a selected punishment action:
OmniPanelAPI.openPunishmentTarget(
staff,
"Target",
"tempipban"
);
They can also submit directly through the authoritative backend:
OmniPanelAPI.submitPunishment(
staff,
"Target",
"tempipban",
"1d",
"Verified network ban evasion; staff reviewed evidence",
"my_plugin"
).thenAccept(result -> {
// Check result status and the authoritative applied value.
});
Authorized immutable punishment history can be retrieved with:
var records = OmniPanelAPI.getPunishmentHistory(
staff,
"Target",
20
);
Behaviour
- Opening the target flow does not apply a punishment immediately.
- The normal OmniPanel confirmation still applies.
- Direct API submission intentionally applies without OmniPanel's UI confirmation.
- Add-ons using direct submission are responsible for their own confirmation/evidence-review flow.
- Submission returns a future containing an immutable result map.
Possible statuses include:
APPLIED
REJECTED
DENIED
INVALID_INPUT
INVALID_DURATION
OWNER_APPROVAL_REQUIRED
UNAVAILABLE
FAILED
The returned:
applied
value is authoritative.
A completed future does not automatically mean the punishment succeeded.
Additional safeguards:
- Player authorization is checked again before execution.
- Session state is checked again.
- Owner protection remains enforced.
- Duration limits remain enforced.
- Command-approval policies remain enforced.
- Cancelled queued work is skipped.
- Expired queued work is skipped.
- Already-completed queued work is skipped.
- History is bounded.
- History can include:
- Actor.
- Case.
- Result.
- Available evidence metadata.
- IP addresses are not exposed.
- Keyed equivalents validate both:
- API key.
- Actor/action authorization.
๐ API Safety
- An API key does not grant staff permissions.
- An API key does not impersonate console.
- Region mutations require the acting player's actual relevant permission.
- Direct server-state operations must follow documented server-thread requirements.
- Direct UI operations must follow documented server-thread requirements.
- Snapshots return immutable results where documented.
- Invalid keys fail without granting access.
- Disabled keys fail without granting access.
- Compatible service additions use default methods to preserve existing implementations.
- Reflection/proxy handling covers:
equalshashCodetoString- Primitive defaults
- Null primitive-unboxing failures are avoided.
๐งช Compatibility & Build Quality
Server/API Compatibility
- Baseline API compilation targets Paper 1.21.11.
- Additional build profiles target:
- Paper 26.2
- Paper 26.3
- Shared listeners isolate optional Paper-only event types.
- Compatibility helpers retain supported Spigot fallbacks.
- Paper and Purpur retain native component/Dialog paths where available.
- Native Paper Dialogs are unavailable on Spigot.
- Existing fallback flows are used where supported.
- Existing Paper-only binary item storage must not be assumed portable to Spigot.
- Unsupported decoding fails closed.
- Original stored data remains preserved.
Integrations Retained
- PlaceholderAPI 2.12.3
- LuckPerms
- Multiverse-Core 5
- DiscordSRV
Multiverse is not bundled.
MV4 APIs were not reintroduced.
Java
Production output remains:
Java release 21
Class version 65
The build uses JDK 25 to read newer Paper APIs.
Run the Java version required by the server implementation you actually deploy.
Source Recovery
- Reconstructed Maven metadata.
- Recovered resources.
- Repaired decompiler-corrupted source.
- Production JARs compile directly from source.
- No post-build ASM patching is used.
- Test fixtures are not included in the production JAR.
- Mocks are not included.
- Recovery probes are not included.
- Server/API dependency classes are not bundled.
โ Verification for 18.9.114
The current release passes the following automated verification:
- 0 Java compilation errors
- 368 JUnit tests passing in:
- Working-source clean build.
- Extracted-source clean build.
- 26 helper regression checks passing.
- 465 production classes passing JVM verification.
- Delivered source ZIP rebuilds into a byte-identical JAR.
- Paper 26.2 build passes the final 59-test targeted recovery/AutoMod/Discord suite.
- Paper 26.3 build passes the same 59-test suite.
- Spigot 1.21.11 API-only linkage checks pass for shared production classes.
- Spigot 26.3 API-only linkage checks pass for shared production classes.
- The two optional Paper-only adapters are excluded from those Spigot linkage checks.
- Descriptor/YAML checks pass.
- CRC checks pass.
- JDK JAR integrity checks pass.
- Duplicate-class checks pass.
- Duplicate-resource checks pass.
- Test/stub leakage checks pass.
- The unchanged 20-badge resource pack passes:
- Mapping checks.
- Image checks.
- Metadata checks.
- Earlier builds also exercised:
- Actual Minecraft font atlases.
- The supplied ResourcePackManager merge/registration implementation.
โ ๏ธ Live Testing Notice
These are automated, API, build, and dependency checks.
They are not a claim that every OmniPanel feature has been tested on a live Minecraft server.
The following still require real-world server verification:
- Server/plugin combinations.
- Java clients.
- Bedrock clients.
- Resource-pack delivery.
- Inventory integrations.
- AI responses.
- Discord linking.
- Discord role sync.
- Discord message delivery.
A live Purpur gameplay/startup test is not claimed by this release.
๐ฅ Updating
Before updating, back up your existing:
- OmniPanel configuration.
- Player data.
- Databases.
- Resource-pack configuration.
Then:
- Stop the server completely.
- Replace the previous OmniPanel JAR.
- Start the server normally.
- Use a full restart rather than a hot reload.
- Keep your existing configuration and data files in place.
- New defaults will be supplied through the existing configuration paths.
- If using rank textures, keep ResourcePackManager's combined-pack configuration.
- Accept the refreshed resource pack when prompted.
- Review Panel Visibility & Access for your server roles.
- Review optional Command Approval rules.
- Review Discord destination permissions and routing.
๐ OmniPanel 18.9.114
This release represents the cumulative recovery and stabilization of OmniPanel's core systems while continuing to build on the plugin's existing architecture instead of replacing working systems with parallel implementations.
The focus across these builds has been:
- Safer permissions.
- More reliable ranks.
- Better staff workflows.
- Stronger punishment and evidence handling.
- Cleaner public-player systems.
- Reliable Java/Bedrock recovery.
- Better DiscordSRV integration.
- A stronger developer API.
- Reproducible source builds.
- Regression-tested production output.
Thank you to everyone helping test OmniPanel and report issues. โค๏ธ
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:kR1rFF82:d1v3Q0Yd"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:kR1rFF82:d1v3Q0Yd"
}

