# 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](#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](https://wiki.staffplusplus.org/integrations/discord-integration) plugin supports notifying to a discord channel whenever a player gets mute/unmuted.
