Configuration Reference
This page documents every key in Verité's config.yml. Defaults shown are the values Verité ships with. Config keys, values, and code appear exactly as they are written in the file (ASCII), while prose uses the accented name Verité.
Verité's configuration is grouped into modules:
general: plugin-wide settings.chat.filter: the chat filter, Veritédoux.moderation: the moderation system, Veritésauver.invsee: inventory viewing.vanish: the vanish system, Veritévoiler.
Editing flags in game
Many of these keys can be read and changed from in game with /verite config, which patches the single key on disk and keeps every comment in the file. This command is gated behind the veritedoux.flag permission. Every true or false key and every numeric key in config.yml can be edited this way, using either its short name or its full dotted path. Free-text keys, the punishment tree lists, and config.language are not editable this way; change those in the file or from the web dashboard. Run /verite config with no arguments to list every editable key. Most edits apply live; the module gates (chat.filter.enabled, moderation.enabled, vanish.enabled) and the two auto-update flags require a restart to take effect.
General
The general section holds plugin-wide settings.
general:
prefix: "<#808080>[<#B1C7F0>Verité<#808080>]<reset>"
auto.update.config: true
dashboard.url: "https://verite.gg"| Key | Default | Controls |
|---|---|---|
general.prefix |
<#808080>[<#B1C7F0>Verité<#808080>]<reset> |
The public facing prefix on every Verité message, in the Verite tag format. |
general.auto.update.config |
true |
Automatically appends new keys to the config when the plugin updates. Does not bypass tokenizer updates. Editable with /verite config as auto.update.config, but requires a restart to apply. |
general.dashboard.url |
https://verite.gg |
Where /verite dashboard sends you. Only change this if you host the Dashboard yourself. |
config.language |
en |
The language the whole plugin runs in. One of en, es, fr, it, pt, or de. Changing it requires a full restart, not a reload. |
Chat Filter (Veritédoux)
The chat.filter section configures message filtering.
chat.filter:
enabled: true
auto.update.eve: false
block.message: "@prefix Your message wasn't sent. Please keep chat friendly."
repeat.message: "@prefix You've already sent that message. Please wait a moment before repeating yourself."| Key | Default | Controls |
|---|---|---|
chat.filter.enabled |
true |
Enables the chat filter module. Editable with /verite config as chat.filter.enabled, but requires a restart to apply. |
chat.filter.auto.update.eve |
false |
Automatically updates the .eve configuration files when new entries are added. When enabled, custom entries are overwritten or discarded when the .eve files are replaced with updated versions. Editable with /verite config as auto.update.eve, but requires a restart to apply. |
chat.filter.block.message |
@prefix Your message wasn't sent. Please keep chat friendly. |
The notice shown when a message is blocked by the filter. Supports &-codes and &#RRGGBB hex. Use @prefix to insert your chosen prefix. |
chat.filter.repeat.message |
@prefix You've already sent that message. Please wait a moment before repeating yourself. |
The notice shown when a message is blocked as a repeat. Supports &-codes and &#RRGGBB hex, and @prefix. |
Self-harm message
The self-harm block message cannot be changed. This ensures users are always given the proper guidance and support when dealing with self-harm related content.
Languages
The chat.filter.general.lang block chooses which languages are content-checked and which detection categories run for each. Profanity detection is disabled by default so that servers which permit casual swearing are unaffected. Adjust these to match your server's tolerance.
Each language block supports these keys:
| Key | Default | Controls |
|---|---|---|
allowed |
true |
Whether the language is permitted in chat. |
self.harm.detection |
true |
Detects self-harm related content in this language. |
abuse.detection |
true |
Detects abusive content in this language. |
slur.detection |
true |
Detects slurs in this language. |
Profanity keys are per language. Each is false by default. Set one to true to flag profanity for that dialect or region.
| Language | Profanity keys (all default false) |
|---|---|
english |
profanity.global |
spanish |
profanity.spain, profanity.argentinian, profanity.chilean, profanity.colombian, profanity.mexican, profanity.peruvian, profanity.venezuelan, profanity.uruguayan, profanity.cuban, profanity.dominican, profanity.panamanian, profanity.global |
french |
profanity.france, profanity.canadian |
portuguese |
profanity.european, profanity.brazilian |
german |
profanity.global |
italian |
profanity.global |
Two additional entries cover text whose language could not be resolved:
| Key | Default | Controls |
|---|---|---|
chat.filter.general.lang.unknown.lang.allowed |
true |
Whether messages in a language Verité does not recognize are allowed. |
chat.filter.general.lang.undeterminable.allowed |
true |
Whether messages whose language cannot be determined are allowed. |
An example language block:
chat.filter:
general.lang:
english:
allowed: true
self.harm.detection: true
abuse.detection: true
slur.detection: true
profanity.global: falseAdvanced
The chat.filter.advanced block holds tuning for readability, spam, and repeat detection.
chat.filter:
advanced:
keep.chat.readable: false
block.possible.spam: false
block.repeat.messages: false
block.repeat.exact: true
block.repeat.near: true
block.repeat.history.size: 5
block.repeat.window.ms: 5000
block.repeat.similarity.threshold: 0.85
block.unsupported.languages: false| Key | Default | Controls |
|---|---|---|
keep.chat.readable |
false |
Blocks messages that may make chat unreadable, such as fancy font substitutions, even when the message would otherwise pass the filter. Emojis are not blocked. Editable with /verite config as keep.chat.readable. |
block.possible.spam |
false |
Uses Verité's tokenizer to detect and block possible spam and advertisements. Editable with /verite config as block.possible.spam. |
block.repeat.messages |
false |
Enables repeat message detection. Every key below only applies when this is enabled. |
block.repeat.exact |
true |
Blocks a message identical to a recent one from the same user. Comparison ignores case, accents, and repeated letters, so HELLO, hello, and helllo all count as the same. |
block.repeat.near |
true |
Blocks a message that is similar (but not identical) to a recent one from the same user. How similar counts as a match is set by block.repeat.similarity.threshold. |
block.repeat.history.size |
5 |
How many of each user's most recent messages are remembered and checked for repeats. Set to -1 to remember all messages, or 0 to disable repeat detection entirely. |
block.repeat.window.ms |
5000 |
How far back in time (milliseconds) a remembered message still counts as a repeat. Messages older than this are ignored. Set to -1 to ignore time and remember messages indefinitely, or 0 to disable repeat detection entirely. |
block.repeat.similarity.threshold |
0.85 |
For near-repeat matching, how alike two messages must be to count as a repeat. A value between 0 and 1, where 1 means identical. Higher is stricter (fewer blocks); lower is more aggressive. |
block.unsupported.languages |
false |
Blocks languages Verité does not yet support. The supported languages are English, Spanish, French, Italian, Portuguese, and German. All other languages are blocked when this is enabled. Editable with /verite config as block.unsupported.languages. |
Language Detection Weights
The chat.filter.advanced.language block tunes how Verité assigns a language to each word in a message.
chat.filter:
advanced:
language:
known.word.weight: 50
unknown.word.weight: 0.1| Key | Default | Controls |
|---|---|---|
known.word.weight |
50 |
Weight for a word a language's dictionary knows but the rate table does not list. Higher means dictionary membership counts for more. |
unknown.word.weight |
0.1 |
Floor weight for a word no dictionary knows and the rate table omits. |
Evasion Passes
The chat.filter.advanced.evasion block toggles the passes that undo attempts to slip content past the filter. Each is true by default. Disabling passes may reduce latency slightly.
chat.filter:
advanced:
evasion:
homoglyph: true
entity: true
deobfuscate: true
segmentation: true
fingerprint: true| Key | Default | Controls |
|---|---|---|
homoglyph |
true |
Folds fullwidth, Cyrillic, and math-bold letter spoofs back to ASCII. Editable with /verite config as evasion.homoglyph. |
entity |
true |
Strips HTML entities and similar encodings. Editable with /verite config as evasion.entity. |
deobfuscate |
true |
Reverses character-inserted and spaced-out obfuscation. Editable with /verite config as evasion.deobfuscate. |
segmentation |
true |
Splits run-together words back into separate words. Editable with /verite config as evasion.segmentation. |
fingerprint |
true |
Catches transposed spellings. Editable with /verite config as evasion.fingerprint. |
Profanity Confidence
The chat.filter.advanced.use.profanity.confidence block sets the minimum confidence before a message is treated as profane.
chat.filter:
advanced:
use.profanity.confidence:
enabled: true
profanity.confidence.threshold: 0.30| Key | Default | Controls |
|---|---|---|
enabled |
true |
Enables the profanity confidence threshold. Editable with /verite config as use.profanity.confidence.enabled. |
profanity.confidence.threshold |
0.30 |
The minimum confidence required to consider a message profane. Editable with /verite config as use.profanity.confidence.profanity.confidence.threshold. |
Moderation (Veritésauver)
The moderation section configures the moderation system.
moderation:
enabled: true
use.rank.weights: true
auto.ban.alts: false
expire.warns.after: 7d
shared.ip.scan.limit: 20| Key | Default | Controls |
|---|---|---|
moderation.enabled |
true |
Enables the moderation module. Editable with /verite config as moderation.enabled, but requires a restart to apply. |
moderation.use.rank.weights |
true |
Compares LuckPerms group weight so staff cannot punish equal or higher ranks. Operators are always treated as the highest rank, regardless of LuckPerms weight. |
moderation.auto.ban.alts |
false |
Automatically bans alts of a banned player, regardless of whether the player was IP-banned. Discouraged on servers that share IP addresses between distinct users. Editable with /verite config as moderation.auto.ban.alts. |
moderation.expire.warns.after |
7d |
How long a warning counts as active before it lapses. |
moderation.shared.ip.scan.limit |
20 |
The maximum number of accounts shown in a duplicate IP-scan. Editable with /verite config as moderation.shared.ip.scan.limit. |
Muted Command Blacklist
moderation.muted.command.blacklist lists commands a muted player may not use.
Proxy injection
On a network with proxy injection, these commands may not be blocked by Verité, meaning a muted user could still use them.
The shipped list is:
moderation:
muted.command.blacklist:
- "me"
- "say"
- "tell"
- "whisper"
- "reply"
- "pm"
- "message"
- "msg"
- "msgall"
- "tellall"
- "speak"
- "emsg"
- "epm"
- "etell"
- "ewhisper"
- "w"
- "m"
- "t"
- "r"
- "mail"Exempt
The moderation.exempt block controls how rank weight comparisons treat equal-weight targets.
moderation:
exempt:
use.group.weights: false
permit.same.weight: true| Key | Default | Controls |
|---|---|---|
use.group.weights |
false |
Allows acting on an equal-weight target when group weights are in use. Editable with /verite config as moderation.exempt.use.group.weights. |
permit.same.weight |
true |
Permits acting on a target of the same weight. Editable with /verite config as moderation.exempt.permit.same.weight. |
Punish Message Templates
moderation.punish.message.templates sets the text shown to punished players and to staff. Templates support \n (newline) and the quantifiers @duration, @enforcer, @target, @reason, @punishment, @total.warns, and @remaining. If no reason was set, @reason is replaced with No reason provided.
moderation:
punish.message.templates:
ban.template.temporary: {You have been banned for @duration.\n@reason}
ban.template.permanent: {You have been permanently banned.\n@reason}
mute.template.temporary: {You have been muted by @enforcer for @duration.\n@reason}
mute.template.permanent: {You have been muted by @enforcer.\n@reason}
mute.notice: {You are muted. Time remaining: @remaining}
mute.notice.permanent: {You are muted.}
warn.template: {You have been warned by @enforcer. Active warnings: @total.warns\n@reason}
kick.template: {You have been kicked by @enforcer.\n@reason}
admin.receipt.template: {@target was @punishment by @enforcer.\n@reason}| Key | Default |
|---|---|
ban.template.temporary |
{You have been banned for @duration.\n@reason} |
ban.template.permanent |
{You have been permanently banned.\n@reason} |
mute.template.temporary |
{You have been muted by @enforcer for @duration.\n@reason} |
mute.template.permanent |
{You have been muted by @enforcer.\n@reason} |
mute.notice |
{You are muted. Time remaining: @remaining} |
mute.notice.permanent |
{You are muted.} |
warn.template |
{You have been warned by @enforcer. Active warnings: @total.warns\n@reason} |
kick.template |
{You have been kicked by @enforcer.\n@reason} |
admin.receipt.template |
{@target was @punishment by @enforcer.\n@reason} |
Punishment Tree
The moderation.tree block defines the punishment categories, the escalation steps within each category, and which staff groups may enact which categories. Each category applies its punishments in order. Supported punishment types are warn, mute, kick, and ban. A duration after a colon (for example ban: 14d) makes that step temporary; the same type with no duration is permanent. The final minecraft: entry in each category is the item shown for that category on the punishment GUI.
moderation:
tree:
enabled: true
use.fields: true| Key | Default | Controls |
|---|---|---|
moderation.tree.enabled |
true |
Enables the punishment tree. |
moderation.use.fields |
true |
Uses Minecraft 1.21.7+ Fields for punishment completion rather than chat. |
Permissions
moderation.tree.permissions.luckperms maps LuckPerms group names to the categories they may enact. Hierarchy is supported top-down: if your groups go helper then mod then admin, admin inherits the mod and helper categories, and mod inherits the helper categories. Replace the group names with your own.
moderation:
tree:
permissions:
luckperms:
helper: {harassment, threats, spam, advertising, macroing, misinformation, inappropriate.content}
mod: {exploiting, discrimination, impersonation}
admin: {hacking, fraud, evading.punishment, inappropriate.username, inappropriate.skin, griefing}| Group | Categories granted |
|---|---|
helper |
harassment, threats, spam, advertising, macroing, misinformation, inappropriate.content |
mod |
exploiting, discrimination, impersonation |
admin |
hacking, fraud, evading.punishment, inappropriate.username, inappropriate.skin, griefing |
Categories
moderation.tree.categories lists each category and its ordered escalation steps.
moderation:
tree:
categories:
harassment: {kick, ban: 14d, ban, minecraft:nether_star}
threats: {mute: 5h, ban: 14d, ban, minecraft:tnt}
spam: {warn, mute: 10m, mute: 1h, ban: 3d, ban, minecraft:cactus}
advertising: {mute: 1d, ban: 3d, ban, minecraft:redstone_block}
macroing: {warn, kick, ban: 7d, ban: 31d, ban, minecraft:redstone_torch}
misinformation: {warn, mute: 20m, mute: 1h, ban: 3d, ban, minecraft:paper}
inappropriate.content: {warn, mute: 1h, mute: 7h, ban: 7d, ban, minecraft:book}
exploiting: {warn, warn, warn, ban: 2d, ban, minecraft:lever}
discrimination: {ban: 31d, ban, minecraft:iron_sword}
impersonation: {ban: 7d, ban, minecraft:player_head}
hacking: {ban: 31d, ban, minecraft:diamond_sword}
fraud: {ban: 31d, ban, minecraft:gold_ingot}
evading.punishment: {ban: 31d, ban, minecraft:ender_pearl}
inappropriate.username: {ban, minecraft:name_tag}
inappropriate.skin: {ban, minecraft:leather_chestplate}
griefing: {ban: 7d, ban, minecraft:stone_pickaxe}
staff.disruption: {warn, kick, ban: 7d, minecraft:bottle_o_enchanting}
chat.violation: {warn, mute: 1h, ban: 3d, minecraft:book_and_quill}| Category | Escalation steps | GUI item |
|---|---|---|
harassment |
kick, ban: 14d, ban |
minecraft:nether_star |
threats |
mute: 5h, ban: 14d, ban |
minecraft:tnt |
spam |
warn, mute: 10m, mute: 1h, ban: 3d, ban |
minecraft:cactus |
advertising |
mute: 1d, ban: 3d, ban |
minecraft:redstone_block |
macroing |
warn, kick, ban: 7d, ban: 31d, ban |
minecraft:redstone_torch |
misinformation |
warn, mute: 20m, mute: 1h, ban: 3d, ban |
minecraft:paper |
inappropriate.content |
warn, mute: 1h, mute: 7h, ban: 7d, ban |
minecraft:book |
exploiting |
warn, warn, warn, ban: 2d, ban |
minecraft:lever |
discrimination |
ban: 31d, ban |
minecraft:iron_sword |
impersonation |
ban: 7d, ban |
minecraft:player_head |
hacking |
ban: 31d, ban |
minecraft:diamond_sword |
fraud |
ban: 31d, ban |
minecraft:gold_ingot |
evading.punishment |
ban: 31d, ban |
minecraft:ender_pearl |
inappropriate.username |
ban |
minecraft:name_tag |
inappropriate.skin |
ban |
minecraft:leather_chestplate |
griefing |
ban: 7d, ban |
minecraft:stone_pickaxe |
staff.disruption |
warn, kick, ban: 7d |
minecraft:bottle_o_enchanting |
chat.violation |
warn, mute: 1h, ban: 3d |
minecraft:book_and_quill |
Invsee
The invsee section controls inventory viewing.
invsee:
enable-offline-player-support: true
enable-unknown-player-support: true
tabcomplete-offline-players: true| Key | Default | Controls |
|---|---|---|
invsee.enable-offline-player-support |
true |
Allows viewing the inventory of offline players. |
invsee.enable-unknown-player-support |
true |
Allows viewing the inventory of players who have not been seen before. |
invsee.tabcomplete-offline-players |
true |
Includes offline players in tab completion. |
Vanish (Veritévoiler)
The vanish section configures the vanish system. The vanish.features block toggles individual behaviors, each true by default. Every feature key is editable with /verite config as vanish.features.<name>.
vanish:
enabled: true
features:
fake.message: true
actionbar: true
self.view: true
fly: true
invulnerability: true
effects: true
gamemode: true
ride.entity: true
silent.container: true
inventory.inspect: true
server.ping: true
ghost: true
prevent.chat: true
prevent.pickup: true
prevent.drop: true
prevent.interact: true
prevent.block.break: true
prevent.block.place: true
prevent.target: true
prevent.damage: true
prevent.food: true
prevent.buckets: true
prevent.advancement: true
prevent.projectiles: true
muffle.sounds: true
muffle.particles: true| Key | Default | Controls |
|---|---|---|
vanish.enabled |
true |
Enables the vanish module. Editable with /verite config as vanish.enabled, but requires a restart to apply. |
vanish.features.fake.message |
true |
Shows a fake join or leave message when vanishing or unvanishing. |
vanish.features.actionbar |
true |
Shows a persistent action bar reminder while vanished. |
vanish.features.self.view |
true |
Lets the vanished player still see themselves. |
vanish.features.fly |
true |
Grants flight while vanished. |
vanish.features.invulnerability |
true |
Makes the vanished player invulnerable. |
vanish.features.effects |
true |
Applies vanish related potion effects. |
vanish.features.gamemode |
true |
Manages the player's game mode while vanished. |
vanish.features.ride.entity |
true |
Allows the vanished player to ride entities. |
vanish.features.silent.container |
true |
Opens containers silently while vanished. |
vanish.features.inventory.inspect |
true |
Allows inspecting inventories while vanished. |
vanish.features.server.ping |
true |
Adjusts the player's contribution to the server ping list while vanished. |
vanish.features.ghost |
true |
Hides the vanished player as a ghost so they pass unseen. |
vanish.features.prevent.chat |
true |
Prevents the vanished player from sending chat. |
vanish.features.prevent.pickup |
true |
Prevents the vanished player from picking up items. |
vanish.features.prevent.drop |
true |
Prevents the vanished player from dropping items. |
vanish.features.prevent.interact |
true |
Prevents the vanished player from interacting with the world. |
vanish.features.prevent.block.break |
true |
Prevents the vanished player from breaking blocks. |
vanish.features.prevent.block.place |
true |
Prevents the vanished player from placing blocks. |
vanish.features.prevent.target |
true |
Prevents mobs from targeting the vanished player. |
vanish.features.prevent.damage |
true |
Prevents the vanished player from dealing or taking damage. |
vanish.features.prevent.food |
true |
Prevents the vanished player's food level from changing. |
vanish.features.prevent.buckets |
true |
Prevents the vanished player from using buckets. |
vanish.features.prevent.advancement |
true |
Prevents the vanished player from gaining advancements. |
vanish.features.prevent.projectiles |
true |
Prevents the vanished player from launching projectiles. |
vanish.features.muffle.sounds |
true |
Muffles sounds the vanished player would otherwise produce. |
vanish.features.muffle.particles |
true |
Muffles particles the vanished player would otherwise produce. |
Fake join and leave
The fake.connect section configures the /fakejoin and /fakeleave commands, which broadcast a fake connection message without anyone actually joining or leaving.
fake.connect:
enabled: true
join.message: "&#FFFF55%player% joined the game"
leave.message: "&#FFFF55%player% left the game"| Key | Default | Controls |
|---|---|---|
fake.connect.enabled |
true |
Turns the /fakejoin and /fakeleave commands on or off. When off, both commands politely refuse. |
fake.connect.join.message |
&#FFFF55%player% joined the game |
The message broadcast by /fakejoin. Supports &-codes and &#RRGGBB hex. %player% is replaced with the chosen player's name. |
fake.connect.leave.message |
&#FFFF55%player% left the game |
The message broadcast by /fakeleave. Supports &-codes and &#RRGGBB hex. %player% is replaced with the chosen player's name. |