Join the Game4Freak Discord Get exclusive plugin sneak peeks, talk directly with VisEntities, never miss important updates, and unlock special discount codes!
Shadow Mute

Shadow Mute 1.0.0

Silently mutes players so their messages are only visible to other shadow-muted players
Works With
Standard server mutes are obvious to the player being muted, they see an error message or notice nobody responds. Shadow Mute takes a different approach: muted players can still send messages, but only other shadow-muted players can see them. From the muted player's perspective, everything looks normal.

This is useful for dealing with toxic players or spammers without alerting them to the mute, reducing the chance of ban evasion or escalation. Admins can shadow mute players via chat or console commands, and the plugin works with both native Rust chat and Better Chat.

Shadow-muted players can still see and respond to each other's messages. Non-muted players see nothing from shadow-muted players at all.

Features

  • Muted players see no indication they've been muted, messages appear to send normally
  • Shadow-muted players can only see messages from other shadow-muted players
  • Works with both native Rust chat and Better Chat
  • Optional restriction to global chat only, leaving team, clan, and local chat unaffected
  • Shadow-muted messages can be logged to the server console for admin review
  • Optional Better Chat group sync to visually tag shadow-muted players
  • Full chat and console command support for managing muted players
  • API methods for other plugins to check, add, and remove shadow mutes

Permissions

  • shadowmute.admin -- Grants access to all shadow mute commands (chat and console)

Commands

Chat Commands


The base chat command is configurable via the Chat Command config setting. Default is /shadowmute.
  • /{command} add <name|steamid> -- Shadow mute a player
  • /{command} remove <name|steamid> -- Remove a player's shadow mute
  • /{command} list -- List all currently shadow-muted players
  • /{command} check <name|steamid> -- Check whether a specific player is shadow muted
Running the command with no arguments displays the help menu.

Console Commands

  • shadowmute add <name|steamid> -- Shadow mute a player
  • shadowmute remove <name|steamid> -- Remove a player's shadow mute
  • shadowmute list -- List all currently shadow-muted players
  • shadowmute check <name|steamid> -- Check whether a specific player is shadow muted
Console commands can be run from the server console without requiring permissions. When run by a connected player, the shadowmute.admin permission is required.

Configuration

JSON:
{
  "Chat Command": "shadowmute",
  "Log Shadow Muted Messages To Server Console": true,
  "Only Apply Shadow Mute To Global Chat (team, clan, and local chat remain unaffected)": true,
  "Add Shadow Muted Players To A BetterChat Group (requires BetterChat)": false,
  "BetterChat Group Name": "shadowmuted"
}
  • Chat Command -- The chat command used to manage shadow mutes
  • Log Shadow Muted Messages To Server Console -- When true, messages sent by shadow-muted players are logged to the server console so admins can still review what they're saying
  • Only Apply Shadow Mute To Global Chat -- When true, shadow muting only affects global chat. Team, clan, and local chat messages are delivered normally. When false, shadow muting applies to all chat channels
  • Add Shadow Muted Players To A BetterChat Group -- When true, shadow-muted players are automatically added to a Better Chat group, which can be used to apply custom name colors, titles, or other formatting to identify them. Requires Better Chat to be installed
  • BetterChat Group Name -- The name of the Better Chat group that shadow-muted players are added to. The group is created automatically if it doesn't exist

Stored Data

JSON:
{
  "Shadow Muted Players": [
    "76561198012345678",
    "76561198087654321"
  ]
}
  • Shadow Muted Players -- A list of Steam ids for all currently shadow-muted players.

Localization

JSON:
{
  "Error.NoPermission": "You do not have permission to use this command.",
  "Error.PlayerNotFound": "Player not found: {0}",
  "Error.UnknownCommand": "Unknown command: {0}. Type the command without arguments for help.",
  "Player.Muted": "<color=#55ff55>{0}</color> has been shadow muted.",
  "Player.Unmuted": "<color=#55ff55>{0}</color> has been removed from shadow mute.",
  "Player.AlreadyMuted": "<color=#55ff55>{0}</color> is already shadow muted.",
  "Player.NotMuted": "<color=#55ff55>{0}</color> is not shadow muted.",
  "List.Empty": "No players are currently shadow muted.",
  "List.Header": "<color=#ffaa55>Shadow Muted Players:</color>",
  "Check.Muted": "<color=#55ff55>{0}</color> is <color=#ff5555>shadow muted</color>.",
  "Check.NotMuted": "<color=#55ff55>{0}</color> is <color=#55ff55>not shadow muted</color>."
}

Developer API

API_IsShadowMuted

Checks whether a player is currently shadow muted.
C#:
bool API_IsShadowMuted(string playerId)
Parameters:
  • string playerId -- The player's Steam ID
Returns: true if the player is shadow muted, false otherwise

API_AddShadowMute

Adds a shadow mute to a player.
C#:
bool API_AddShadowMute(string playerId)
Parameters:
  • string playerId -- The player's Steam ID
Returns: true if the player was successfully shadow muted, false if they were already shadow muted

API_RemoveShadowMute

Removes a shadow mute from a player.
C#:
bool API_RemoveShadowMute(string playerId)
Parameters:
  • string playerId -- The player's Steam ID
Returns: true if the shadow mute was removed, false if the player was not shadow muted

API_GetShadowMutedPlayers

Returns a list of all currently shadow-muted player Steam ids.
C#:
List<string> API_GetShadowMutedPlayers()
Returns: A List<string> of Steam ids
Author
VisEntities
License duration
Unlimited
Price
9.99 USD
First release
Last update

Ratings

0.00 star(s) 0 reviews

Also by VisEntities

Back
Top
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.
Cart