Skip to content

Configuration

After running APVE for the first time, a default configuration will be generated in the plugins/APVE directory, and APVE will apply the messages localization according to your system's current localization.

APVE will apply the correct syntax of the punishment command in the configuration if you have installed LibertyBans, AdvancedBans or LiteBans. Otherwise, you need to write the syntax manually based on your installed punishment plugin.

Thresholds and language

Word similarity thresholds relative to any prohibited word. If a word's similarity does not exceed any threshold below, APVE will pass it. If a word's similarity equals or exceeds the medium threshold, APVE marks the word as SUSPICIOUS but will pass it. If a word's similarity equals or exceeds the high threshold, APVE marks the word as MALICIOUS. Some benign words may be similar to malicious ones. Consequently, a high threshold between 0.75 and 0.80 is strongly recommended to avoid false positives while still catching potentially malicious words. A medium threshold between 0.55 and 0.60 is strongly recommended to avoid passing specific or typo-entered malicious words.

Language is responsible for APVE's messages localization. Available values: ru, en and auto. If auto, APVE will apply messages localization according to your system's current localization. APVE will apply en_US.yml localization if your system's localization does not match any of the available localizations.

language: auto

thresholds:
  high: 0.78 
  medium: 0.57 

Dictionaries

Before writing words to the dictionaries, ensure you meet the following prerequisites: It should be written only using transliteration and the Latin alphabet (example: мразь ——> mrazb), without any symbols, numbers or spaces, in lowercase and phrased accounting for the normalizer's work. Beware of adding slang and short words to the dictionaries, as this may cause false positives. You can see information about normalizer work below.

insult-words:
- eblan
- mrazb
- dolboeb
# ...

Family

Family pronouns. If APVE detects a message that contains a family pronoun alongside an insult word, it will detect it as FAMILY_INSULT.

family-insult-words:
- father
- mother
- matb
# ...

If APVE detects a word that has any of the inappropriate roots below, it detects it as a violation corresponding to the root's context.

family-roots:
- roditel
- opek
- mother
# ...
bad-roots:
- eblan
- dolboeb
- huesos
# ...

Expressive Words

Responsible for allowing players to express their emotions with the words below. If a word's similarity is higher than any threshold but it is identical to an expressive word, APVE will pass it.

expressive-words:
- pizda
- pizdec
- blyatb
# ...

APVE detects a message as advertisement if it has any ad-words below alongside a domain. You should write only the advertising resource, not the IP. (Example: 2b2t instead of 2b2t.org.) Words to ad-words can be written with numbers.

ad-words:
- 10b10t
- 123c
- 1f2d
# ...

Social distribution

APVE will detect a message as SOCIAL_DIST if it has a social word alongside a domain. You should write social words the same way as ad words — no IP, only the advertising resource.

social:
- discord
- telegram
- tg
# ...

Allowed words

Responsible for avoiding false positives if a benign word has an inappropriate root or resembles a prohibited word. APVE will pass a word if it is identical to any of the allowed-words.

allowed-words:
- corn
- mazb
- scunthorpe
# ...
adult-words:
- pornhub
- anasha
- methemfethamin
# ...
adult-roots:
- porn
- geroin
- intim
# ...

Staff insults

APVE will detect a message as STAFF_INSULT if it contains a staff title alongside any insult word.

staff-tituls:
- admin
- helper
- sozdatel
# ...

Punishments

All parameters responsible for applying actions (punishments) to violators.

Action command syntax

Commands that are dispatched according to the selected action in violation blocks. Must be configured for your punishment plugin's command syntax.

The command's arguments must be in the following order: * "command" %player% %duration% %reason%

Otherwise, the plugin will not apply the action correctly.

punishments:
  mute-command: mute %player% %duration% %reason%
  ban-command: ban %player% %duration% %reason%
  banip-command: banip %ip% %duration% %reason%
  kick-command: kick %player% %reason%

Other

If punishments-is-enabled is false, APVE will not apply any action to the violator, regardless of warnings etc.

If auto-detect-plugin is true, APVE will automatically set the command syntax based on the installed punishment plugin. APVE can automatically set the command syntax only for LibertyBans, AdvancedBans and LiteBans. Otherwise, you will need to configure the command syntax manually.

auto-detect-plugin: true
punishments-is-enabled: true

perm-keywords:
- permanent
- perm
- infinity
- inf
- '-1'

Responsible for setting violation severity levels. The larger the integer, the more severe the violation. Based on this, APVE will punish the violator for the most severe of all committed violations.

priority:
  caps: 1
  spam: 2
  insult: 3
  adult-content: 4
  family-insult: 5
  staff-insult: 6
  soc-media-dist: 7
  ad-dist: 8

Notifying parameters

If true, the plugin will not apply any action or warn to the violators. The plugin will only log every violation. This mode is incompatible with punishments and warns. Consequently, if you enable this mode alongside other actions, APVE's work will be aborted or limited.

audit-mode: false

If false, APVE will not send messages about player violations to the console.

console-log: false

If true, APVE will send notifications about violations in-game to players who have the apve.violation.notify permission.

notifies: true

Action blocks

Each violation type has its own configuration block. The common parameters are:

  • is-enabled — whether this violation type is detected at all.
  • punishment-is-enabled — whether to apply a punishment upon violation. Requires punishments-is-enabled: true in the punishments block.
  • duration — punishment duration. Supports time units: s (seconds), m (minutes), h (hours), d (days).
  • type — punishment type: mute, ban, banip or kick.
  • blocking — if true, APVE will block the violating message from being delivered to chat.
  • censor — if true, APVE will replace the violating word with asterisks instead of blocking the entire message. Not applicable when blocking is true.

Warn block

Controls the warning system. Warns are issued to the violator before a punishment is applied, if warns-is-enabled is true.

  • warn-limit — the number of warns after which the punishment is applied.
  • warn-limit-is-enabled — whether to apply a punishment upon reaching the warn limit.
  • warn_reset_when_server_restarts — if true, warns are reset on server restart.
  • temporary-warns — if true, warns expire after the period defined by warn-reset-time.
  • warn-reset-time — time after which warns are reset (e.g. 1h).
  • warn_reset_count — number of warns removed when the reset timer expires.
  • warns-is-enabled — whether the warn system is enabled at all.
warns:
  warn-limit: 2
  warn-limit-is-enabled: true

  warn_reset_when_server_restarts: true
  temporary-warns: true
  warn-reset-time: 1h
  warn_reset_count: 2
  warns-is-enabled: true

Violation blocks

insult:
  is-enabled: true
  punishment-is-enabled: true
  duration: 30m
  type: mute
  blocking: true
  censor: false
family-insult:
  is-enabled: true
  punishment-is-enabled: true
  duration: 8h
  type: mute
  blocking: true
  censor: false
ad-dist:
  is-enabled: true
  punishment-is-enabled: true
  duration: 30d
  type: banip
  blocking: true
  censor: false
soc-media-dist:
  is-enabled: true
  punishment-is-enabled: true
  duration: 180m
  type: ban
  blocking: true
  censor: false
adult-content:
  is-enabled: true
  punishment-is-enabled: true
  type: mute
  duration: 8h
  blocking: true
  censor: false
staff-insult:
  is-enabled: true
  punishment-is-enabled: true
  type: mute
  duration: 12h
  blocking: true
  censor: false

Spam block

The spam block has additional parameters:

  • max-similar-messages — maximum number of similar messages a player can send within a time window before the violation is triggered.
  • time-window-seconds — the time window in seconds during which similar messages are counted.
  • similarity-threshold — minimum similarity ratio for two messages to be considered duplicates. Range: 0.0–1.0.
spam:
  is-enabled: true
  punishment-is-enabled: true
  max-similar-messages: 3
  time-window-seconds: 60
  similarity-threshold: 0.9
  type: mute
  duration: 20m
  blocking: false

Caps block

The caps block has additional parameters:

  • min-message-length — minimum message length in characters required for the caps check to apply. Shorter messages are ignored.
  • min-caps-percentage — minimum percentage of uppercase characters required to trigger the violation.
caps:
  is-enabled: true
  punishment-is-enabled: false
  min-message-length: 6
  min-caps-percentage: 70
  type: mute
  duration: 15m
  blocking: false
  censor: false

Intercepted commands

A list of commands whose arguments will be scanned for violations the same way as regular chat messages. Useful for covering private messaging commands so violations are not bypassed via /msg or similar.

intercepted-commands:
- msg
- w
- tell
# ...

Blocked domains

A list of domain suffixes that APVE looks for when detecting advertisement and social distribution violations. Due to the text normalization process, domains like .gg must be written with a single character (e.g. g, not gg). Write all domains without dots.

blocked-domains:
- ru
- com
- net
# ...

Command parameters

/apve check

The command-msg.check block configures the colors used in the output of the /apve check command, which displays the analysis result for a given player message.

  • malicious — color code applied to words classified as MALICIOUS.
  • suspicious — color code applied to words classified as SUSPICIOUS.
  • none — color code applied to words that passed the check with no flags.
command-msg:
  check:
    status-colors:
      malicious: '&c'
      suspicious: '&e'
      none: '&a'