# Muting

Staff++ adds the ability to mute players. Next to the permanent mute command it also adds the `tempmute` command. With every mute a reason must be given why this player is getting muted.

## Configuration

```yaml
mute-module:
  # Whether or not the plugin will use "/mute player" features.
  enabled: true
  # Will the player know he is muted.
  default-soft-mutes: false
  # Commands that get blocked when a player is muted
  blocked-commands:
      - msg
      - whisper
      - tell
```

## Permissions

| Permission                             | Description                                                                                                              |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| staff.staffplus.mute                   | Permission for muting a player                                                                                           |
| staff.staffplus.tempmute               | Permission for temporarily muting a player                                                                               |
| staff.staffplus.unmute                 | Permission for unmuting a player                                                                                         |
| staff.staffplus.mute-bypass            | Permission for bypassing being muted                                                                                     |
| staff.staffplus.mute-notifications     | Permission to receive notifications when someone is muted/unmuted                                                        |
| staff.staffplus.mute-override-softhard | Permission to use the -soft/-hard option when muting players. See [soft/hard mutes](/features/muting.md#soft-hard-mutes) |

## Commands

| Command                                                             | Description               |
| ------------------------------------------------------------------- | ------------------------- |
| /mute \[player] \[reason] \[-soft?] \[-hard?]                       | Permanently mute a player |
| /tempmute \[player] \[amount] \[unit] \[reason] \[-soft?] \[-hard?] | Temporarily mute a player |
| /unmute \[player] \[reason]                                         | Unmute a player           |

## Soft/Hard Mutes

Staff++ provides two ways of muting. Mutes where the player will be notified he is muted, we call this **hard** mutes. And mutes where the player has no idea he has been muted, we call this **soft** mutes.

By default all mutes are hard mutes but this can be changed with the `default-soft-mutes` configuration property.

```yaml
mute-module:
  # Will the player know he is muted.
  default-soft-mutes: false
```

You can override the default mute type by specifying a `-soft` or `-hard` option when muting players.

```yaml
/mute playername To much spamming -soft
```

{% hint style="info" %}
Even though a soft mute will not notify the player that he has been muted. There is no easy way to fake the blocked-commands of the mute configuration. If a player executes one of the blocked commands nothing will happen so he might figure out something is going on.
{% endhint %}

## **Restricting tempmute duration**

The tempmute command can also be configured to restrict the duration a staff member can use for a mute.\
Give the staff member and extra permission with a duration limit as suffix. Example: `staff.staffplus.tempmute.limit.2w` , with this permission a staff member can only issue a mute for a maximum duration of 2 weeks.

{% hint style="warning" %}
A staff member must have both permissions to use the command. So for a 2 week duration limit the permissions needed are:

* `staff.staffplus.tempmute`
* `staff.staffplus.tempmute.limit.2w`
  {% endhint %}

**Possible time values:**

* s = second
* m = minute
* h = hour
* d = day
* w = week
* M = month
* y = year

*Time values cannot be combined. For example this is invalid: ".1m30s" instead type ".90s"*

## Extending/reducing mute duration

A mute duration can be extended or reduced by the following commands:&#x20;

`/mute-reduce [player] [amount] [unit]`\
`/mute-extend [player] [amount] [unit]`\
\
This command can also be limited in duration the same way a tempmute is limited.\
Giving the player the following 2 permissions will limit the extension duration for example:

* staff.staffplus.extendmute
* staff.staffplus.extendmute.limit.2w

{% hint style="warning" %}
When extending a mute, the staff member cannot extend the mute further than his tempmute limit will allow. This is to prevent a staff member spamming an extend command.\
This means that if a player is muted for 2 months. His mute cannot be extended by a staff member whose tempmute limit is 3 weeks for example.
{% endhint %}

## Examples

### Permanent muting

`/mute [player] [reason]`

```
/mute playername He was bothering me
```

### Temporary muting

`/tempmute [player] [amount] [unit] [reason]`

```
/tempmute playername 15 MINUTE He was bothering me
```

The duration of the tempmute is specified by \[amount] \[unit]

Amount must be a positive number > 0 and unit must be one of the following:

* SECOND
* MINUTE
* HOUR
* DAY
* WEEK
* MONTH
* YEAR

{% hint style="info" %}
The tempmute command can be delayed by adding a `-D` option to it. This will delay the command until the player muted will come online
{% endhint %}

### Unmuting

`/unmute [player] [reason]`

```
/unmute playername We are friends now
```

## Another plugin is overriding the `/mute`, `/tempmute`, `/unmute`

It is possible that another plugin like 'essentialsx' might get priority over the `mute`, `tempmute` and `unmute` command. To prevent this we suggest the same solution as is proposed by [EssentialsX](https://github.com/EssentialsX/Essentials/wiki/Common-Issues#essentialsx-overrides-a-command-from-spigot-or-another-plugin).

Configure your server aliases in such a way that the mute commands from Staff++ will always be used. This can be done by editing the `commands.yml` file and specifying your aliases there.

To enable Staff++ mute commands this would be done in this way:

```yaml
aliases:
    mute:
    - "staffplus:mute $1-"
    tempmute:
    - "staffplus:tempmute $1-"
    unmute:
    - "staffplus:unmute $1-"
```

More info on the [bukkit wiki](https://bukkit.gamepedia.com/Commands.yml#aliases)

## Integration

The [discord integration](/integrations/discord-integration.md) plugin supports notifying to a discord channel whenever a player gets mute/unmuted.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wiki.staffplusplus.org/features/muting.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
