Scoreboard is now event-driven for real-time accuracy. Kills, deaths, joins, and leaves instantly refresh the scoreboard instead of waiting for the polling cycle. Polling remains as a fallback.
Chat isolation between lobbies and arenas is now fully functional, with Better Chat compatibility.
Sleepers in arenas are now always killed on disconnect. Previously this required the NoSleeping rule per arena. The NoSleeping rule now applies to the lobby only.
New Features
Added join/leave command execution per arena. Arenas can now trigger chat commands (as if the player typed /command), client F1 console commands, or server console commands. Supports placeholders: {player.name}, {player.id}, {arena.id}, {arena.title}, {arena.gamemode}, {arena.players}.
Added optional permission requirement for joining arenas. To use, add "Required Join Permission (empty = no restriction)": "your.permission" to your arena data file.
Added configurable leash opacity for spawn points. Adjustable per spawn point (for Scrim via gm.s spawn add ...). Older data files require manually adding "Leash Opacity": 0. Higher values increase visual intensity, 0 hides it completely.
Rules
Added True PVE compatibility. Arenas using the TruePvEBypass rule allow PvP damage inside arenas on servers running True PVE, without requiring True PVE to be disabled globally.
Added NoChatVisibility rule to completely hide player messages from each other inside arenas, useful for solo-focus arenas like aim train.
Added NoEntityDamage rule to prevent players from damaging structures and deployables inside arenas.
Fixes
Fixed NoPvPDamage incorrectly blocking NPC damage to players.
Fixed admins getting stuck in a broken arena state when flying through teleporters in noclip.
Fixed lobby only mode not working on player connect. Players now correctly spawn at lobby immediately when connecting, whether alive or dead, instead of spawning at beach or getting stuck on death screen.
Added player inventory and position backup system for the lobby. When players enter the lobby, their current position and inventory are automatically saved. Upon leaving the lobby (via command or walking out), they are teleported back to their original position with their inventory restored. Saved data persists through disconnects and expires after a configurable duration.
Join command now blocked while in arena or already in lobby.
Added gm.lobby radius and gm.lobby position commands to adjust lobby zone size and location without editing data files.
Added proximity-based spawn point removal. Run remove command without ID to delete nearest spawn.
Added ability to block specific commands in the lobby. Blocks both chat and F1 console commands. To configure: gm.lobby blockcmd add/remove/list <command>.
Added new gamemodecore.bypass permission to separate lobby/gameplay restrictions from admin commands.
Added spawn point validation for arenas. Players can no longer join arenas with no spawn points configured.
Added a NoDecay rule for the lobby and arenas which prevents decay damage on all entities inside zones where the rule is enabled.
Chat commands start with a /, while console commands can be entered directly in the F1 console or server console. Use find <keyword> in console to search for available commands related to the plugin. Parameters in < > are required, while [ ] are optional.
This plugin uses Oxide's permission system. Grant or revoke permissions using oxide.grant and oxide.revoke. You can assign them to individual players or groups using their Steam id or group name.
Settings are stored in the config file found under the config/ directory. You can edit this file manually, then reload the plugin to apply your changes.
Persistent data is saved in the data/ directory. This includes things like saved settings, usage stats, or player progress depending on the plugin. Deleting a data file will reset stored progress or customizations.
Language files are located in the lang/ folder. To translate messages, copy the en.json file into your target language folder (e.g. fr, de) and edit the values. Reload the plugin after changes to apply new messages.
This section lists public methods exposed by the plugin for use in other plugins. You can call these via the CallHook method. Ensure the plugin is loaded before calling its API to avoid null reference errors.
These are custom hooks that other plugins can listen for. Simply define a method with the same name and expected parameters in your plugin to handle the event. Hooks are triggered at key moments and are useful for extending or reacting to plugin behavior.
These hooks are injected into the game's code using Harmony. They let the plugin run code at key points in the game's internal logic. You can return values to block or modify behavior. Use with caution — these are powerful and can affect core mechanics.