config.yml Docs — v11
Supported Plugin Versions: …
The docs below explain every key in v11.
Top-level keys
webhook
Required. Where logs are sent, unless an individual event overrides it.
webhook:
url: "https://discord.com/api/webhooks/1234567890/AbCdEf-gH1jK_lMnOpQrStUvWxYz"
Getting the URL: in Discord, right-click the channel → Edit Channel → Integrations → Webhooks → New Webhook → Copy Webhook URL. You need Manage Webhooks in that channel.
Or set it in game without touching the file at all:
/discordlogger webhook https://discord.com/api/webhooks/1234567890/AbCdEf…
That writes it here and reloads. The URL is never echoed back, and command logging redacts it, so running it does not publish the URL to the channel you are moving away from.
If it is empty or malformed, the plugin still starts and still logs to console — it just says so on startup and posts nothing to Discord. It is not a crash, so check the console if messages are not arriving.
Treat the URL like a password. Anyone who has it can post to that channel as your server.
embeds
Whether logs are sent as rich embeds or as plain text lines.
embeds:
enabled: true
author: "Server Logs" # small label at the top of every embed
With enabled: true a death arrives as a coloured embed titled Player Death, with
a Cause of Death field and the player’s head as the thumbnail.
With enabled: false the same event is one line of text:
`[14:32:07, 31:07:2026]` - **Player Death**: Lachlan fell from a high place
Plain text is worth choosing if you pipe the channel somewhere else, or find embeds noisy at volume. Everything still gets logged either way — only the presentation changes.
embeds.author is the small label above the title. On a network it is worth setting
per server so you can tell them apart:
embeds:
author: "Survival" # or "Creative", "Lobby", …
Changed in v10:
embeds.colorsno longer exists. Each event’s colour now sits under that event, beside its toggle — seelog. Upgrading from v9 moves your existing colours across automatically.
format
Visual formatting for timestamps and an optional server label.
format.name— Optional short label shown in plain text mode (e.g., proxy name).- Appears as ` [YourName]` after the timestamp in non-embed messages.
format.time— Timestamp pattern used in both console echo and Discord text (embeds show an ISO timestamp field but still echo to console with this pattern).- Default used if invalid:
"[HH:mm:ss dd:MM:yyyy]" - Must use the Java
DateTimeFormatterpattern.- HH: Hours, mm: Minutes, ss: Seconds, dd: Day of month, MM: Month, yyyy: Year. (Case-sensitive)
- Default used if invalid:
Example:
format:
name: "" # e.g., "SMP-1" (optional)
time: "[HH:mm:ss dd:MM:yyyy]" # Java DateTimeFormatter pattern
format.placeholders
Expands PlaceholderAPI placeholders in
lang.yml, so ranks and prefixes appear in your Discord messages. On by default.
format:
placeholders: true
# lang.yml
discord:
player-join: "%luckperms_primary_group% {player} joined"
Ignored when PlaceholderAPI is not installed, so it is safe to leave on — there is nothing to switch off on a server that does not have it.
A player cannot inject a placeholder.
{player},{message}and the rest are substituted first, and their values are never re-scanned. Someone typing%player_name%into chat has it logged exactly as they typed it. Only placeholders you write intolang.ymlare ever expanded.
Applies to the join, quit, chat, command and death messages — the events with a player behind them. If an expansion misbehaves, the message is sent with the placeholder unexpanded rather than not sent at all.
config-version
Identifies which config format the file uses, so the plugin can upgrade it correctly.
- Do not change it. Editing the number does not convert anything; it only misleads the upgrader into running the wrong migration, or none.
- Deleting it is survivable. If it is missing the plugin works the schema out from which keys the file contains, and says so in console. It replaces a comment on the last line, which was too easy to lose to a stray edit or an editor that strips comments.
- If the number and the file’s actual keys disagree, the keys win — they are what the plugin reads — and the mismatch is logged. The usual cause is an older config pasted over a newer one.
filters
Applied on top of the event toggles: an event that is enabled can still be skipped if it matches a filter. This is how you exclude specific things without turning a whole category off.
There are 14 of them, each independent — use one and leave the rest empty if you like. They fall into three groups: who (players, permission), where (worlds), and what (commands, chat, advancements, teleports, deaths, explosions).
filters.ignored_commands
Commands that are never logged, whoever runs them.
The match is on the command word only, so arguments and any plugin prefix are
ignored. A single entry of msg blocks all three of these:
/msg Steve hello
/MSG Steve hello
/essentials:msg Steve hello
Write entries without the leading slash:
filters:
ignored_commands:
- login
- register
- msg
- vanish
- co # CoreProtect inspect spam
This list ships non-empty, on purpose. Command logging posts the line exactly as typed, so
/login hunter2would publish that password to Discord, and/msgwould publish private messages. The defaults cover the usual auth and messaging commands. Removing them is a decision, not a tidy-up.
filters.ignored_worlds
Worlds whose events are never logged.
Use the world’s folder name, which is what the server calls it internally — not a display name from a plugin. On a default server:
| World | Name to put here |
|---|---|
| Overworld | world |
| Nether | world_nether |
| The End | world_the_end |
So to stop logging anything that happens in the Nether:
filters:
ignored_worlds:
- world_nether
If your server renames or adds worlds — Multiverse, a custom level-name, minigame
worlds — those names will differ. Two ways to find the real one:
- Look in your server folder. Each world is a directory containing
level.dat; the directory name is the world name. - In game, type
/execute inand let it tab-complete — it lists every loaded world by its actual name.
Matching is case-insensitive, so World_Nether works as well as world_nether.
# A creative plot world, a minigame world, and the End
filters:
ignored_worlds:
- creative
- bedwars_arena
- world_the_end
filters.ignored_players
Players whose own activity is never logged — their joins, quits, chat, commands and deaths.
Accepts names or UUIDs, mixed freely in the same list. A UUID keeps working after a name change, so prefer it for anything long-lived:
filters:
ignored_players:
- AdminAlt # by name
- ShopBot
- 069a79f4-44e9-4726-a5be-fca90e38aaf5 # by UUID
Moderation events are not filtered by player. A ban or a kick is a record of staff action, not that player’s own activity, so it is still logged even for an ignored account. Otherwise you could silence a bot and then never see it being banned — which is exactly the entry an audit trail exists for.
filters.exempt_permission
Any player holding this permission is never logged. Empty — the default — disables the check entirely.
Useful when the set of people to exclude changes often, such as staff or anyone currently vanished, because you then manage it in your permissions plugin rather than by editing this file:
filters:
exempt_permission: "discordlogger.exempt"
Grant it however your permissions plugin does. With LuckPerms:
/lp group staff permission set discordlogger.exempt true
Leave it as "" unless you want this behaviour — a node that something else happens to
grant would quietly suppress logging for those players.
filters.ignored_chat_containing
Chat messages containing any of these are skipped. Case-insensitive substring match — not whole words, and not a regular expression:
filters:
ignored_chat_containing:
- "[afk]"
- discord.gg # invite links
Because it matches inside words, keep entries distinctive: an entry of ass would also
skip “password” and “grass”.
filters.only_log_commands
An allow-list. When it has anything in it, only those commands are logged and everything else is skipped:
filters:
only_log_commands:
- ban
- kick
- op
- deop
Useful when you want a moderation record rather than a log of everything typed — otherwise you would have to enumerate every command you don’t want.
Leave it empty to log everything except ignored_commands. When both are set, the
allow-list decides first and the deny-list still applies inside it, so you can allow
a set and then exclude one from it.
filters.minimum_chat_length
Skips chat shorter than this many characters. 0 disables it.
filters:
minimum_chat_length: 3 # drops "hi", "?", "."
Counts characters, not words, and trims whitespace first.
filters.ignored_advancements
Advancements never logged. Matched on the full key, with a trailing * for a whole
tab:
filters:
ignored_advancements:
- "minecraft:husbandry/*" # every farming advancement
- "minecraft:story/mine_stone" # just this one
The wildcard matters because advancements are grouped by tab — story/, husbandry/,
adventure/, nether/, end/ — so excluding a category is one line rather than
twenty.
Vanilla has around 110 non-recipe advancements, and a new player works through dozens in their first session, so this is usually the difference between a usable channel and a flooded one.
filters.log_recipe_advancements
Recipe unlocks and tab roots fire constantly and mean nothing to a reader, so they are
skipped. Set true only if you genuinely want them:
filters:
log_recipe_advancements: false # default
This was hardcoded before v10 and is now a setting, so a server that wants recipe unlocks can have them.
filters.ignored_teleport_causes
Teleports are the noisiest event on most servers, and most of them are plugin warps rather than anything worth recording.
Three are excluded by default, because Minecraft reports them as teleports when the player has moved a block or two:
filters:
ignored_teleport_causes:
- EXIT_BED # standing up from a bed
- DISMOUNT # getting off a horse, boat or minecart
- SPECTATE # a spectator jumping to a player
Add more as needed:
filters:
ignored_teleport_causes:
- EXIT_BED
- DISMOUNT
- SPECTATE
- PLUGIN # /warp, /home, /spawn — anything a plugin moved
- COMMAND # vanilla /tp
- ENDER_PEARL
Accepted values: PLUGIN, COMMAND, ENDER_PEARL, CHORUS_FRUIT, NETHER_PORTAL,
END_PORTAL, END_GATEWAY, SPECTATE, DISMOUNT, EXIT_BED, CONSUMABLE_EFFECT,
UNKNOWN. Case-insensitive.
PLUGINis the one to reach for first. On a server with Essentials or similar, most teleports are that.
filters.minimum_teleport_distance
Skips teleports shorter than this many blocks. 0 disables it.
filters:
minimum_teleport_distance: 10
Never applies across worlds — a nether portal is not a short hop, so it is always logged regardless of this setting.
filters.ignored_death_causes
Deaths with these causes are never logged. Same names as the death causes in
lang.yml, in upper case:
filters:
ignored_death_causes:
- VOID # a void world, or a parkour course
- FALL
A minigame arena or a void map can otherwise produce a constant stream of the same death.
filters.ignored_explosion_sources
Explosions from these sources are never logged. Use the entity name for mob and TNT explosions, or the block name for block ones:
filters:
ignored_explosion_sources:
- CREEPER
- PRIMED_TNT
- BED # exploding in the Nether
- RESPAWN_ANCHOR # exploding in the Overworld
filters.minimum_explosion_blocks
Skips explosions that destroyed fewer than this many blocks. 0 disables it.
filters:
minimum_explosion_blocks: 5
A creeper going off in the air, or against bedrock, breaks nothing and is rarely worth a message. This keeps the ones that actually damaged a build.
filters.respect_vanish
Stays silent about players a vanish plugin is currently hiding. On by default.
filters:
respect_vanish: true
Works with EssentialsX, SuperVanish, PremiumVanish and CMI, with nothing to install and no setup — all of them mark a hidden player the same way, and this reads that mark. It also covers vanish plugins not listed here, provided they follow the same convention.
Without it, a staff member joining vanished is announced to Discord anyway, which is the
one thing vanishing was meant to prevent. filters.ignored_players cannot stand in for
it: vanish is state that changes while the server runs, not a list you can write down.
While vanished, every player event stays quiet — join, quit, chat, death, advancement, teleport and gamemode.
Moderation is never affected. A ban, kick or whitelist change is logged whether or not the staff member was vanished. Hiding staff actions because the person was hidden would gut the audit trail exactly when it matters most — the same reasoning that keeps
ignored_playersfrom suppressing moderation.
log
Every event is a section with the same three keys, plus sub-options on a few:
| Key | What it does |
|---|---|
enabled |
Whether to log this event at all. |
color |
The embed’s colour bar, as hex. |
webhook |
Send just this event to a different channel. Empty = the main webhook.url. |
The events available:
log.player.*—join,quit,chat,command,death,advancement,teleport,gamemodelog.server.*—command,start,stop,explosionlog.moderation.*—ban,unban,kick,op,deop,whitelist_toggle,whitelist_edit
A minimal example — log joins, don’t log quits:
log:
player:
join:
enabled: true
color: "#57F287"
webhook: ""
quit:
enabled: false # this event is never sent
color: "#ED4245"
webhook: ""
color
Hex, with or without the leading #. Both of these are the same green:
color: "#57F287"
color: "57F287"
An unreadable value falls back to the built-in default rather than failing to load, and
color is read whether or not the event is enabled — so turning something off and back
on keeps the colour you chose.
webhook — sending one event elsewhere
The common case is a private staff channel for moderation while everything else goes to a public one:
webhook:
url: "https://discord.com/api/webhooks/111/PUBLIC" # everything, by default
log:
moderation:
ban:
enabled: true
color: "#FF0000"
webhook: "https://discord.com/api/webhooks/222/STAFF" # …except this
kick:
enabled: true
color: "#FF0000"
webhook: "https://discord.com/api/webhooks/222/STAFF" # …and this
Leave it as "" and the event uses the main webhook, which is what almost every server
wants. A value that isn’t a valid Discord webhook URL is ignored with a warning in
console and that event falls back to the main webhook, rather than silently going
nowhere.
Each destination is paced independently, because Discord’s rate limits are per webhook — a busy chat channel will not delay your moderation log.
Sub-options
A few events carry an extra key beside enabled, color and webhook:
| Key | Default | What it does |
|---|---|---|
log.player.death.show_coords |
false |
Appends where the player died, as x, y, z in world. |
log.player.join.show_platform |
true |
Adds a Platform: Bedrock field when the joining player came from Bedrock. |
log:
player:
death:
enabled: true
color: "#ED4245"
webhook: ""
show_coords: true # "Lachlan died … Coords: 128, 71, -344 in world"
join:
enabled: true
color: "#57F287"
webhook: ""
show_platform: true
show_coordsis off by default on purpose. A death message with coordinates tells everyone who can read the channel exactly where the body — and the inventory it dropped — is. That is useful on a private server and a griefing tool on a public one, so it is opt-in rather than something you discover after the fact.
show_platformonly ever flags Bedrock. Nothing can prove a player is Java — with Geyser standalone, Bedrock players authenticate as ordinary Java accounts and are indistinguishable even to Floodgate. So the field appears only when something positively indicates Bedrock, and its absence means “no indication”, not “definitely Java”. On a server without Geyser it never appears at all.
Upgrading from v9: every
log.<group>.<event>: truebecomeslog.<group>.<event>.enabled: true, and each colour moves fromembeds.colors.*to its event’scolor. The plugin does this automatically on first start and keeps your previous file asconfig.old.yml.
Event details & behaviors
Player events
- Join / Quit — Includes player name; color-coded (green/red).
- Chat — Player chat messages; uses the player color set under
embeds.colors.player.chat. - Command — Player-initiated commands (excludes commands blocked by other plugins if cancelled).
- Death — Player death message.
- Teleport — Logs teleporter & cause when available (e.g., plugin/command/end gateway).
- Gamemode — Logs previous → new mode, who changed it (self/other/console).
Server events
- Start / Stop — Separated events with their own colors.
- Command — Console commands (with actor
CONSOLE). - Explosion — Logs cause (TNT, creeper, bed, respawn anchor, etc.) and a short list of nearby players.
Moderation events
All moderation logs require the action to succeed:
- Ban / Tempban / Unban / Kick — Only logs when the ban/kick actually took effect (permission & result checked).
- Op / Deop — Only logs if permission changed.
- Whitelist toggle / entries — Toggling whitelist or adding/removing players.
This prevents false-positive logs if a non-op attempts a command that fails.
Colors (defaults recap)
The defaults shipped with v11. Each is set under its own event’s color key:
- Player —
join#57F287•quit#ED4245•chat#5865F2•command#FEE75C•death#ED4245•advancement#2ECC71•teleport#3498DB•gamemode#9B59B6 - Server —
command#EB459E•start#43B581•stop#ED4245•explosion#E74C3C - Moderation —
ban/unban/kick/op/deop#FF0000•whitelist_toggle#1ABC9C•whitelist_edit#16A085
lang.yml — every message the plugin sends
lang.yml sits beside config.yml and carries the same config version, so the two
are upgraded together. It holds every message shown in game or posted to Discord.
Every message the plugin shows lives in plugins/DiscordLogger/lang.yml. Change the
wording, the colours, or the language entirely — no code, no rebuild.
The file is created on first start. Edit it, then:
/discordlogger reload
No restart needed.
The two sections are not interchangeable
This is the one thing worth reading before you edit anything.
| Section | Where it goes | Format |
|---|---|---|
chat |
In game | MiniMessage — <green>, <bold>, gradients |
discord |
Your Discord channel | Plain text — Discord Markdown works, MiniMessage does not |
Discord has never heard of MiniMessage. A <green> tag in the discord section is
posted to your channel as the literal characters <green>:
discord:
player-join: "<green>{player} joined</green>" # ❌ posts the tags as text
player-join: "**{player}** joined" # ✅ Discord bold
Discord’s own Markdown does work there: **bold**, *italic*, `code`,
~~strikethrough~~.
MiniMessage, for the chat section
Colours and formatting are tags that wrap the text they affect.
chat:
reload-ok: "<green>Reloaded in {ms} ms.</green>"
The common ones:
| Tag | Effect |
|---|---|
<red> <green> <blue> <yellow> <gold> <aqua> <gray> <white> |
Colour |
<#ff8800> |
Any hex colour |
<bold> <italic> <underlined> <strikethrough> |
Style |
<gradient:red:blue> |
Fade between colours |
<click:open_url:'https://…'> |
Clickable |
<hover:show_text:'Tooltip'> |
Tooltip on hover |
Full reference: MiniMessage format.
A tag you spell wrong is not an error. It is shown to the player exactly as typed. If you see
<gren>in game, that is your tag, not a bug.
Example — make the reload message loud:
chat:
reload-ok: "<gradient:#00ff88:#00aaff><bold>Reloaded</bold></gradient> <gray>({ms} ms)</gray>"
Example — remove the prefix entirely:
chat:
prefix: ""
Placeholders
Placeholders look like {player} and are replaced before the message is sent. Each
message accepts its own — they are not interchangeable, because the plugin only has
certain values available at each point.
discord:
player-join: "{player} joined the server" # {player} is available here
Every placeholder is documented in a comment above its message inside lang.yml.
You can delete a placeholder if you do not want that detail:
player-join: "{player} joined" # "Steve joined"
player-join: "Someone joined" # "Someone joined"
A placeholder you spell wrong is left visible, not blanked:
player-join: "{palyer} joined" # posts: "{palyer} joined the server"
That is deliberate — a mistake you can see is a mistake you can fix, whereas a silently empty sentence looks like a plugin bug.
Worked example: translating to French
chat:
prefix: "<gold>[DiscordLogger]</gold> "
reload-ok: "<green>Configuration rechargée ({ms} ms).</green>"
no-permission: "<red>Vous n'avez pas la permission d'utiliser /{label} {command}</red>"
discord:
player-join: "{player} a rejoint le serveur"
player-quit: "{player} a quitté le serveur"
player-chat: "**{player}** : {message}"
death:
description: "{player} est mort"
cause-field: "Cause de la mort"
coords-field: "Coordonnées"
causes:
fall: "Est tombé de haut"
lava: "A essayé de nager dans la lave"
drowning: "S'est noyé"
You only need to translate the lines you care about. Anything you leave out falls back to the English shipped inside the plugin.
Death causes
discord.death.causes has one entry per way Minecraft can kill someone — 33 of them.
The keys are Minecraft’s own damage causes, lowercased with hyphens.
discord:
death:
causes:
fall: "Fell from a high place"
lava: "Tried to swim in lava"
fly-into-wall: "Flew into a wall"
kill: "Killed by command"
Do not rename the keys. The plugin looks each one up by that exact name. Change the text on the right, never the key on the left.
Every key has a comment in the file explaining when it fires — fly-into-wall is elytra
kinetic damage, dryout is an axolotl out of water, custom is another plugin dealing
damage.
If a death ever shows the unknown wording (“Died” by default), that means Minecraft
added a damage type the plugin has no wording for — worth
reporting.
If you break something
| What you did | What happens |
|---|---|
| Deleted a message | Falls back to the English inside the jar. Nothing breaks. |
| Deleted a key entirely | You see the key name, e.g. chat.reload-ok. It names exactly what to fix. |
| Deleted the whole file | Written again on the next start. |
| Broke the YAML | The plugin logs the parse error and falls back to English. Check indentation — spaces, never tabs. |
Because unedited messages fall back to the shipped English, you can safely delete everything you are not changing and keep a much shorter file.
What is not in here
Console messages. Those stay in English on purpose: a translated error is one nobody can search for, and support threads depend on everyone seeing the same text.
Event names like Player Death — those are the embed titles and are currently set in code.
log.custom — your own events
Log plugins DiscordLogger has never heard of. Each entry becomes a real event with its own colour and its own webhook, exactly like the built-in ones.
log:
custom:
sethome:
enabled: true
match: "sethome"
title: "Home Set"
message: "{player} set a home called {arg1}"
color: "#5865F2"
webhook: ""
| Key | Meaning |
|---|---|
match |
The command to watch. Multiple words match a subcommand — "lp user" fires on /lp user … but not /lp group …. |
title |
Bold first line of the message. Optional. |
message |
The line itself. |
color |
Embed colour, same as any other event. |
webhook |
Send just this event elsewhere. Empty uses the main webhook. |
enabled |
Turn one rule off without deleting it. |
Placeholders
{player} · {command} · {args} · {world} · {arg1} … {arg9}
{arg1} is the first argument after the command word. An argument that was not typed
renders as nothing rather than leaving {arg5} sitting in the message.
What it can and cannot do
It logs the command being run, not the action succeeding.
For a ban, DiscordLogger checks on the next tick that the ban list actually changed, so a failed
/banfrom someone without permission is never logged. A custom rule cannot do that — it reports that the command was typed. If it matters that the command worked, this is the wrong tool and a proper integration is the right one.
Matching ignores case, spacing, and any plugin qualifier — /essentials:sethome,
/SetHome and ` /sethome ` all match "sethome". It matches whole words, so a
rule for "sethome" never fires on /sethomeall.
The safety rules still apply
Custom events are events, not a way around the filters. ignored_players,
ignored_worlds, respect_vanish and ignored_commands all apply exactly as they do
elsewhere.
filters.ignored_commandswins. It ships with/loginand/msgin it because command logging posts the line verbatim — a custom rule that quietly overrode that would turn a security default into a trap. If a rule collides with the deny-list, the plugin says so in console on startup and the rule does not fire.
Everything a player typed is escaped and redacted before sending, so a webhook URL pasted into a watched command is never published.
Full config.yml (v11)
This is the exact file that ships with v11. Download above, or copy the block below.
####################################################################################################################################
# #
# /$$$$$$$ /$$ /$$ /$$ #
# | $$__ $$|__/ | $$| $$ #
# | $$ \ $$ /$$ /$$$$$$$ /$$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$$| $$ /$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$ #
# | $$ | $$| $$ /$$_____/ /$$_____/ /$$__ $$ /$$__ $$ /$$__ $$| $$ /$$__ $$ /$$__ $$ /$$__ $$ /$$__ $$ /$$__ $$ #
# | $$ | $$| $$| $$$$$$ | $$ | $$ \ $$| $$ \__/| $$ | $$| $$ | $$ \ $$| $$ \ $$| $$ \ $$| $$$$$$$$| $$ \__/ #
# | $$ | $$| $$ \____ $$| $$ | $$ | $$| $$ | $$ | $$| $$ | $$ | $$| $$ | $$| $$ | $$| $$_____/| $$ #
# | $$$$$$$/| $$ /$$$$$$$/| $$$$$$$| $$$$$$/| $$ | $$$$$$$| $$$$$$$$| $$$$$$/| $$$$$$$| $$$$$$$| $$$$$$$| $$ #
# |_______/ |__/|_______/ \_______/ \______/ |__/ \_______/|________/ \______/ \____ $$ \____ $$ \_______/|__/ #
# /$$ \ $$ /$$ \ $$ #
# | $$$$$$/| $$$$$$/ #
# \______/ \______/ #
# #
####################################################################################################################################
#######################################################################################
# #
# _____ __ _ _____ _ #
# / __ \ / _(_) | __ \ | | #
# | / \/ ___ _ __ | |_ _ __ _ | | \/ ___ _ __ ___ _ __ __ _| |_ ___ _ __ #
# | | / _ \| '_ \| _| |/ _` | | | __ / _ \ '_ \ / _ \ '__/ _` | __/ _ \| '__| #
# | \__/\ (_) | | | | | | | (_| | | |_\ \ __/ | | | __/ | | (_| | || (_) | | #
# \____/\___/|_| |_|_| |_|\__, | \____/\___|_| |_|\___|_| \__,_|\__\___/|_| #
# __/ | #
# |___/ #
# #
#######################################################################################
# If you don't feel like configuring yourself, try out our config generator, simply select your plugin version and configure easily
# https://discordlogger.godtiergamers.xyz/generator/
#############################
# D O C U M E N T A T I O N #
#############################
# Documentation for this config can be found at https://discordlogger.godtiergamers.xyz/config/v11/
#########################
# D O N O T E D I T #
#########################
# Set automatically
config-version: 11
###################
# WEBHOOK OPTIONS #
###################
webhook:
url: "" # Discord webhook URL goes here, plugin will not function until present
##################
# FORMAT OPTIONS #
##################
format:
# ONLY USED FOR PLAIN TEXT MESSAGES (EMBEDS DISABLED)
# Usage (case-sensitive): HH=hours, mm=minutes, ss=seconds, dd=day, MM=month, yyyy=year
time: "[HH:mm:ss, dd:MM:yyyy]"
# Only used for plain text, for embeds edit author name
name: ""
# Show nicknames (if set) as "Nickname (RealName)" in all player-related logs
nicknames: true
# Expand PlaceholderAPI placeholders in lang.yml, e.g. %vault_prefix% or
# %luckperms_primary_group%, so ranks and prefixes appear in your Discord messages.
# Ignored when PlaceholderAPI is not installed, so it is safe to leave on.
# Only placeholders YOU write into lang.yml are expanded -- a player typing
# %player_name% into chat has it logged exactly as they typed it.
placeholders: true
#################
# EMBED OPTIONS #
#################
embeds:
enabled: true
author: "Server Logs" # Can be modified for proxy servers (e.g. Survival, Creative)
###################################################
# ______ _____ _ _______ ______ _____ _____ #
# | ____|_ _| | |__ __| ____| __ \ / ____| #
# | |__ | | | | | | | |__ | |__) | (___ #
# | __| | | | | | | | __| | _ / \___ \ #
# | | _| |_| |____| | | |____| | \ \ ____) | #
# |_| |_____|______|_| |______|_| \_\_____/ #
# #
###################################################
# Filters apply on top of the toggles below: an event that is enabled can still be
# skipped if it matches something here.
filters:
# Never log these commands, whoever runs them. Matched on the command word, so
# arguments and a plugin prefix are ignored -- "/essentials:msg hi" matches "msg".
# The defaults exist because these leak: login commands carry passwords in plain
# text, and private messages are private.
ignored_commands:
- login
- register
- changepassword
- unregister
- msg
- tell
- whisper
- w
- r
- reply
# An ALLOW-list. When this has anything in it, ONLY these commands are logged and
# everything else is skipped -- useful if you only care about moderation commands.
# Leave empty to log everything except ignored_commands above.
only_log_commands: []
# Never log anything from these players. Accepts names or UUIDs, mixed freely.
ignored_players: []
# Players with this permission are never logged -- useful for staff alts, or a bot
# account whose activity would drown everything else. Empty disables the check.
exempt_permission: ""
# Never log events that happen in these worlds.
ignored_worlds: []
# Skip chat messages containing any of these (case-insensitive).
ignored_chat_containing: []
# Skip chat shorter than this many characters. 0 disables it.
# Useful against "hi", "?", "." spam. Counts characters, not words.
minimum_chat_length: 0
# Advancements never logged. Matched on the full key, and a trailing * matches a
# whole tab -- "minecraft:husbandry/*" is every farming advancement.
ignored_advancements: []
# Recipe unlocks and tab roots fire constantly and mean nothing to a reader, so
# they are skipped. Set true only if you genuinely want them.
log_recipe_advancements: false
# Teleport causes never logged. Teleports are the noisiest event on most servers.
# The defaults are the ones that are not really teleports at all -- Minecraft moves
# the player a block or two and reports it as one. Nobody wants a Discord message
# because someone got out of bed.
# Values: PLUGIN, COMMAND, ENDER_PEARL, CHORUS_FRUIT, NETHER_PORTAL, END_PORTAL,
# END_GATEWAY, SPECTATE, DISMOUNT, EXIT_BED, CONSUMABLE_EFFECT, UNKNOWN
# Add PLUGIN if you use Essentials or similar -- /home, /warp and /spawn all
# arrive as PLUGIN and are usually the bulk of what is left.
ignored_teleport_causes:
- EXIT_BED # standing up from a bed
- DISMOUNT # getting off a horse, boat or minecart
- SPECTATE # a spectator jumping to a player
# Skip teleports shorter than this many blocks. 0 disables it.
# Never applies across worlds -- a nether portal is not a short hop.
minimum_teleport_distance: 0
# Deaths with these causes are never logged. Same names as the death causes in
# lang.yml, upper case: VOID, FALL, LAVA, KILL, ENTITY_ATTACK, and so on.
# A void world or a parkour course can produce a lot of VOID and FALL deaths.
ignored_death_causes: []
# Explosions from these sources are never logged. Use the entity name for mob and
# TNT explosions (CREEPER, PRIMED_TNT, END_CRYSTAL, FIREBALL, WITHER_SKULL) or the
# block name for block ones (BED, RESPAWN_ANCHOR).
ignored_explosion_sources: []
# Skip explosions that destroyed fewer than this many blocks. 0 disables it.
# A creeper going off in the air breaks nothing and is rarely worth a message.
minimum_explosion_blocks: 0
# Stay silent about players a vanish plugin is currently hiding. Works with
# EssentialsX, SuperVanish, PremiumVanish and CMI -- no setup, nothing to install.
# Without this, a staff member joining vanished is announced to Discord anyway,
# which is the one thing vanishing was meant to prevent.
# Moderation is never affected: a ban is a record of staff action, and hiding it
# because the person was vanished would gut the audit trail exactly when it matters.
respect_vanish: true
####################################################################################
# #
# _ _ ___ _ _ #
# | | ___ __ _ __ _ (_) _ _ __ _ / _ \ _ __ | |_ (_) ___ _ _ ___ #
# | |__ / _ \/ _` |/ _` || || ' \ / _` | | (_) || '_ \| _|| |/ _ \| ' \ (_-< #
# |____|\___/\__, |\__, ||_||_||_|\__, | \___/ | .__/ \__||_|\___/|_||_|/__/ #
# |___/ |___/ |___/ |_| #
# #
####################################################################################
log:
player:
join: # Player Join
enabled: true
color: "#57F287" # green
webhook: "" # Send just this event elsewhere. Empty = use webhook.url above
show_platform: true # Flags players who joined from Bedrock (needs Geyser + Floodgate)
quit: # Player Quit
enabled: true
color: "#ED4245" # red
webhook: "" # Send just this event elsewhere. Empty = use webhook.url above
chat: # Player Chat
enabled: true
color: "#5865F2" # blurple
webhook: "" # Send just this event elsewhere. Empty = use webhook.url above
command: # Commands executed by a player in-game
enabled: true
color: "#FEE75C" # yellow
webhook: "" # Send just this event elsewhere. Empty = use webhook.url above
death: # Player Death (with death message)
enabled: true
color: "#ED4245" # red
webhook: "" # Send just this event elsewhere. Empty = use webhook.url above
show_coords: false # Adds where the player died. Anyone who can see the channel can find the body
advancement: # Logs when a player gets an advancement
enabled: true
color: "#2ECC71" # green
webhook: "" # Send just this event elsewhere. Empty = use webhook.url above
teleport: # Logs when a player teleports
enabled: true
color: "#3498DB" # blue
webhook: "" # Send just this event elsewhere. Empty = use webhook.url above
gamemode: # Logs when a players gamemode changes
enabled: true
color: "#9B59B6" # purple
webhook: "" # Send just this event elsewhere. Empty = use webhook.url above
server:
command: # Commands executed via the server console/terminal
enabled: true
color: "#EB459E" # pink
webhook: "" # Send just this event elsewhere. Empty = use webhook.url above
start: # Logged when the plugin/server starts
enabled: true
color: "#43B581" # green
webhook: "" # Send just this event elsewhere. Empty = use webhook.url above
stop: # Logged on /stop / clean shutdown
enabled: true
color: "#ED4245" # red
webhook: "" # Send just this event elsewhere. Empty = use webhook.url above
explosion: # Log when an explosion occurs
enabled: true
color: "#E74C3C" # red
webhook: "" # Send just this event elsewhere. Empty = use webhook.url above
moderation:
ban: # Logs when a player has been banned
enabled: true
color: "#FF0000" # red
webhook: "" # Send just this event elsewhere. Empty = use webhook.url above
unban: # Logs when a player has been unbanned
enabled: true
color: "#FF0000" # red
webhook: "" # Send just this event elsewhere. Empty = use webhook.url above
kick: # Logs when a player has been kicked
enabled: true
color: "#FF0000" # red
webhook: "" # Send just this event elsewhere. Empty = use webhook.url above
op: # Logs when a player is granted op premissions
enabled: true
color: "#FF0000" # red
webhook: "" # Send just this event elsewhere. Empty = use webhook.url above
deop: # Logs when a players op permissions are revoked
enabled: true
color: "#FF0000" # red
webhook: "" # Send just this event elsewhere. Empty = use webhook.url above
whitelist_toggle: # Logs when the whitelist is enabled/disabled
enabled: true
color: "#1ABC9C" # teal
webhook: "" # Send just this event elsewhere. Empty = use webhook.url above
whitelist_edit: # Logs when players are added/removed from the whitelist
enabled: true
color: "#16A085" # dark teal
webhook: "" # Send just this event elsewhere. Empty = use webhook.url above
# ----------------------------------------------------------------------------------
# Your own events, built from any command on the server.
#
# This is how you log plugins DiscordLogger has never heard of -- Essentials homes,
# LuckPerms rank changes, shop purchases, anything with a command behind it. Each
# entry becomes a real event with its own colour and its own webhook, exactly like
# the built-in ones.
#
# It watches the command being RUN, not the action succeeding. That is the honest
# limit: for a ban, DiscordLogger checks afterwards that the ban list actually
# changed, and a custom rule cannot do that. If it matters that the command worked,
# this is the wrong tool.
#
# Placeholders: {player} {command} {args} {world} and {arg1}...{arg9}
#
# Example -- delete the leading '#' on each line to use it:
#
# sethome:
# enabled: true
# match: "sethome" # Command to watch. Multiple words match a subcommand.
# title: "Home Set"
# message: "{player} set a home called {arg1}"
# color: "#5865F2" # blurple
# webhook: "" # Send just this event elsewhere. Empty = use webhook.url above
#
# rank_change:
# enabled: true
# match: "lp user" # Fires on /lp user <name> ...
# title: "Rank Changed"
# message: "{player} ran {command} on {arg2}: {arg3} {arg4}"
# color: "#E67E22" # orange
# webhook: ""
#
# Commands in filters.ignored_commands are never logged here either -- the deny-list
# wins, and the console says so on startup if a rule collides with it.
custom: {}
# CONFIG VERSION V11, DOWNLOADED FROM WEBSITE
Full lang.yml (v11)
The exact file that ships with v11.
####################################################################################################################################
# #
# /$$$$$$$ /$$ /$$ /$$ #
# | $$__ $$|__/ | $$| $$ #
# | $$ \ $$ /$$ /$$$$$$$ /$$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$$| $$ /$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$ #
# | $$ | $$| $$ /$$_____/ /$$_____/ /$$__ $$ /$$__ $$ /$$__ $$| $$ /$$__ $$ /$$__ $$ /$$__ $$ /$$__ $$ /$$__ $$ #
# | $$ | $$| $$| $$$$$$ | $$ | $$ \ $$| $$ \__/| $$ | $$| $$ | $$ \ $$| $$ \ $$| $$ \ $$| $$$$$$$$| $$ \__/ #
# | $$ | $$| $$ \____ $$| $$ | $$ | $$| $$ | $$ | $$| $$ | $$ | $$| $$ | $$| $$ | $$| $$_____/| $$ #
# | $$$$$$$/| $$ /$$$$$$$/| $$$$$$$| $$$$$$/| $$ | $$$$$$$| $$$$$$$$| $$$$$$/| $$$$$$$| $$$$$$$| $$$$$$$| $$ #
# |_______/ |__/|_______/ \_______/ \______/ |__/ \_______/|________/ \______/ \____ $$ \____ $$ \_______/|__/ #
# /$$ \ $$ /$$ \ $$ #
# | $$$$$$/| $$$$$$/ #
# \______/ \______/ #
# #
####################################################################################################################################
#######################################################################################
# #
# _____ __ _ _____ _ #
# / __ \ / _(_) | __ \ | | #
# | / \/ ___ _ __ | |_ _ __ _ | | \/ ___ _ __ ___ _ __ __ _| |_ ___ _ __ #
# | | / _ \| '_ \| _| |/ _` | | | __ / _ \ '_ \ / _ \ '__/ _` | __/ _ \| '__| #
# | \__/\ (_) | | | | | | | (_| | | |_\ \ __/ | | | __/ | | (_| | || (_) | | #
# \____/\___/|_| |_|_| |_|\__, | \____/\___|_| |_|\___|_| \__,_|\__\___/|_| #
# __/ | #
# |___/ #
# #
#######################################################################################
# If you don't feel like configuring yourself, try out our config generator, simply select your plugin version and configure easily
# https://discordlogger.godtiergamers.xyz/generator/
#############################
# D O C U M E N T A T I O N #
#############################
# Documentation for this config can be found at https://discordlogger.godtiergamers.xyz/config/v11/
#########################
# D O N O T E D I T #
#########################
# Set automatically.
config-version: 11
#####################################################
# #
# _ #
# | | __ _ _ __ __ _ _ _ __ _ __ _ ___ #
# | | / _` | '_ \ / _` | | | |/ _` |/ _` |/ _ \ #
# | |__| (_| | | | | (_| | |_| | (_| | (_| | __/ #
# |_____\__,_|_| |_|\__, |\__,_|\__,_|\__, |\___| #
# |___/ |___/ #
# #
#####################################################
# Every message this plugin shows you, in one place. Change any of them and run
# /discordlogger reload
# The plugin does not need restarting.
#
# ---------------------------------------------------------------------------
# THE TWO SECTIONS ARE NOT INTERCHANGEABLE
# ---------------------------------------------------------------------------
#
# chat: shown IN GAME. Uses MiniMessage for colour and formatting.
# discord: posted TO DISCORD. Plain text only.
#
# Discord renders Markdown, not MiniMessage. A <green> tag in the discord
# section is posted to your channel as the literal characters "<green>", so
# keep formatting tags out of it. Discord's own Markdown does work there:
# **bold**, *italic*, `code`, ~~strikethrough~~.
#
# ---------------------------------------------------------------------------
# MINIMESSAGE, IN 30 SECONDS
# ---------------------------------------------------------------------------
#
# <red>text</red> colour (also: green, blue, yellow, gold,
# aqua, gray, dark_gray, white, black,
# dark_red, dark_green, dark_aqua,
# dark_blue, dark_purple, light_purple)
# <#ff8800>text</#ff8800> any hex colour
# <bold>text</bold> also <italic>, <underlined>, <strikethrough>
# <gradient:red:blue>text</gradient>
# <click:open_url:'https://example.com'>text</click>
# <hover:show_text:'Tooltip'>text</hover>
#
# Full reference: https://docs.advntr.dev/minimessage/format.html
#
# A tag you spell wrong is NOT an error -- it is shown to the player exactly as
# typed. If you see "<gren>" in game, that is the tag, not a bug.
#
# ---------------------------------------------------------------------------
# PLACEHOLDERS
# ---------------------------------------------------------------------------
#
# Placeholders look like {player} and are replaced before the message is sent.
# Each message below lists the ones it accepts, and they are NOT interchangeable
# between messages -- {player} only works where the plugin has a player to put
# there.
#
# A placeholder you spell wrong is left in the message rather than blanked, so
# a typo shows up as "{palyer} joined the server" instead of a sentence with a
# hole in it. That is deliberate: a visible mistake is a fixable one.
#
# You can also delete a placeholder entirely if you do not want that detail.
# player-join: "{player} joined" -> "Steve joined"
# player-join: "Someone joined" -> "Someone joined"
#
# ---------------------------------------------------------------------------
# IF YOU BREAK SOMETHING
# ---------------------------------------------------------------------------
#
# * Deleted a message? The plugin falls back to the English shipped inside
# the jar. Nothing breaks.
# * Deleted a whole key? You will see the key name itself, e.g.
# "chat.reload-ok". That names exactly what to fix.
# * Deleted the whole file? It is written again on the next start.
# * Broken the YAML? The plugin logs the parse error on start and falls
# back to English. Check indentation first -- it must
# be spaces, never tabs.
#
# Console messages are deliberately NOT in this file. They stay in English so
# that searching an error, or pasting it into a support thread, still matches
# what everyone else sees.
#
##############################################################################
chat:
# Put in front of the messages that use a prefix. Set to "" to remove it.
prefix: "<gold>[DiscordLogger]</gold> "
# ---------------------------------------------------------------- /reload --
# Placeholders: {ms} -- how long the reload took, in milliseconds
reload-ok: "<green>DiscordLogger configuration reloaded ({ms} ms).</green>"
# Shown when the config loaded but webhook.url is empty or malformed.
reload-no-webhook: "<red>Config reloaded, but webhook.url is missing or invalid.</red>"
reload-no-webhook-hint: "<red>Set a valid Discord webhook URL and try again.</red>"
# Shown when reloading detected a config from a NEWER plugin version.
# Placeholders: {installed} -- the schema in config.yml
# {shipped} -- the schema this build understands
reload-config-ahead: "<red>Your config.yml (schema v{installed}) is newer than this build (v{shipped}). Keys it does not recognise are ignored.</red>"
reload-config-ahead-fix: "<red>Update the plugin, or run <white>/discordlogger regen</white> to start fresh.</red>"
# Shown when reloading upgraded the config from an older schema.
# Placeholders: {from}, {to}
reload-config-upgraded: "<green>config.yml upgraded from schema v{from} to v{to} (previous file saved as config.old.yml).</green>"
# --------------------------------------------------------------- /webhook --
# Shown when the command is run with no URL.
webhook-usage: "<yellow>Usage: <white>/discordlogger webhook <url></white></yellow>"
webhook-where: "<gray>Create one in Discord under Channel Settings > Integrations > Webhooks.</gray>"
# Shown only to players, not from console -- a reminder that the URL is a secret.
webhook-private: "<gray>Anyone who sees the URL can post to that channel, so avoid typing it on a shared screen. It is never shown back to you.</gray>"
# Shown when the URL is not a Discord webhook.
webhook-invalid: "<red>That does not look like a Discord webhook URL.</red>"
webhook-expected: "<gray>Expected: https://discord.com/api/webhooks/<id>/<token></gray>"
# Success. Placeholders: {channel} -- the channel id from the URL.
# The full URL is never shown back, on purpose: it is a credential, and this
# message may be on someone's screen or stream.
webhook-set: "<green>Webhook set and reloaded - logging to channel {channel}.</green>"
webhook-write-failed: "<red>Could not write webhook.url to config.yml. Check the file exists and is writable.</red>"
webhook-rejected: "<red>Saved, but the plugin did not accept it. Check config.yml and the console.</red>"
# ----------------------------------------------------------------- /regen --
# Shown when /discordlogger regen is run without "confirm".
regen-warning: "<yellow>This replaces config.yml with the default from this build. Your current file is backed up, but your settings are NOT carried over.</yellow>"
regen-confirm: "<yellow>Run <white>/discordlogger regen confirm</white> to go ahead.</yellow>"
# Placeholders: {schema} -- the config schema that was written, e.g. "v10"
regen-done: "<green>config.yml rebuilt at schema {schema}.</green>"
# Placeholders: {file} -- the backup filename
regen-backup: "<gray>Previous file saved as {file}</gray>"
regen-no-webhook: "<red>The new config has no webhook URL yet - set webhook.url, then run /discordlogger reload.</red>"
regen-no-bundled: "<red>This build has no bundled config.yml to restore from.</red>"
# Placeholders: {error}
regen-read-failed: "<red>Could not read the bundled config.yml: {error}</red>"
regen-write-failed: "<red>Could not rewrite config.yml: {error}</red>"
# ------------------------------------------------------- command handling --
help-header: "<aqua>DiscordLogger Commands:</aqua>"
# One line per subcommand.
# Placeholders: {label} -- the command as typed (discordlogger, dlog, dlogger)
# {command}, {description}
help-entry: "<gray> /{label} {command}<dark_gray> - <white>{description}"
# Placeholders: {input} -- what they actually typed
unknown-subcommand: "<red>Unknown subcommand: {input}</red>"
# Placeholders: {label}, {command}
no-permission: "<red>You do not have permission to use /{label} {command}</red>"
# ------------------------------------------------------------- on joining --
# Shown to OPS when config.yml is newer than this build understands.
# Placeholders: {installed}, {shipped}
config-ahead: "<gold>[DiscordLogger]</gold> <yellow>Your config.yml (schema v{installed}) is newer than this build (v{shipped}). Settings it does not recognise are being ignored.</yellow>"
config-ahead-fix: "<yellow>Update the plugin, or run <white>/discordlogger regen</white> to rebuild the config from this build. Your current file is backed up.</yellow>"
# Shown to OPS once per nightly build. Never appears on a stable release.
nightly-notice: "<gold>[DiscordLogger]</gold> <yellow>This is a nightly build - it may be unstable. Upgrade often: <white>https://discordlogger.godtiergamers.xyz</white></yellow>"
##############################################################################
# DISCORD -- plain text. No MiniMessage tags; Discord Markdown works. #
##############################################################################
discord:
# Placeholders: {player} -- their display name, or nickname if enabled
player-join: "{player} joined the server"
player-quit: "{player} left the server"
# Placeholders: {player}, {message}
# ** ** is Discord's bold. The message is escaped before substitution, so a
# player cannot inject Markdown into your channel.
player-chat: "**{player}**: {message}"
# Placeholders: {player}, {command} -- the command includes its leading slash
# Commands listed in filters.ignored_commands never reach here at all.
player-command: "{player} ran: {command}"
# Placeholders: {sender} -- "Server" for the console, or the sender's name
# {command}
server-command: "{sender} ran: {command}"
death:
# The line under the embed title. Placeholders: {player}
description: "{player} died"
# Field NAMES, not values -- the bold label above each field in the embed.
cause-field: "Cause of Death"
coords-field: "Coords"
# Only shown when log.player.death.show_coords is true in config.yml.
# Placeholders: {x}, {y}, {z} -- block coordinates
# {world} -- the world's folder name
coords-value: "{x}, {y}, {z} in {world}"
# ---- how the death happened ------------------------------------------
# These four cover deaths caused by a player or mob. The causes list below
# covers everything else.
# Killed by another player.
# Placeholders: {killer} -- their display name
# {weapon} -- " [Diamond Sword]", or EMPTY if bare-handed.
# The brackets and leading space are part of the
# value, so remove {weapon} entirely to hide it.
slain-by-player: "Slain by {killer}{weapon}"
# Killed by a mob. Placeholders: {killer} -- e.g. "a zombie"
slain-by-mob: "Slain by {killer}"
# Shot from range. Placeholders: {killer} -- a player or a mob
shot-by: "Shot by {killer}"
# Shot, but the shooter is no longer known (they logged off, or despawned).
shot: "Shot"
# Last resort: the server reported a cause this plugin has no wording for.
# If you ever see this in your channel, it is worth reporting -- it means
# Minecraft added a damage type.
unknown: "Died"
# ---- one line per damage cause ---------------------------------------
# Keys are Minecraft's own damage causes, lowercased with hyphens. Do not
# rename them; the plugin looks each one up by that exact name.
causes:
# Fell too far.
fall: "Fell from a high place"
# Swam in lava.
lava: "Tried to swim in lava"
# Standing in fire.
fire: "Burned to death"
# Still burning after leaving the fire.
fire-tick: "Burned to death"
# Ran out of air.
drowning: "Drowned"
# Inside a solid block.
suffocation: "Suffocated in a wall"
# Fell out of the world.
void: "Fell into the void"
# Touched a cactus or sweet berry bush.
contact: "Was pricked to death"
# TNT, a bed in the Nether, a respawn anchor in the Overworld.
block-explosion: "Blew up"
# A creeper, a ghast fireball, an end crystal.
entity-explosion: "Blew up"
# A potion of harming, or an evoker's fangs.
magic: "Was killed by magic"
# Poison ran the health down.
poison: "Was poisoned"
# The wither effect.
wither: "Withered away"
# Hunger reached zero.
starvation: "Starved to death"
# Powder snow.
freeze: "Froze to death"
# Struck by lightning.
lightning: "Was struck by lightning"
# Standing on magma blocks.
hot-floor: "Discovered the floor was lava"
# Too many entities in one block.
cramming: "Was squished too much"
# The ender dragon's breath cloud.
dragon-breath: "Was roasted by dragon breath"
# Attacking someone wearing Thorns armour.
thorns: "Was killed by thorns"
# The /kill command.
kill: "Killed by command"
# /kill used on yourself.
suicide: "Killed by command"
# Outside the world border.
world-border: "Left the world border"
# A warden's ranged attack.
sonic-boom: "Hit by a warden's sonic boom"
# Standing in a campfire.
campfire: "Burned on a campfire"
# An anvil or gravel landed on them.
falling-block: "Squashed by a falling block"
# Elytra flight into a wall — kinetic damage.
fly-into-wall: "Flew into a wall"
# An axolotl or dolphin out of water.
dryout: "Dried out"
# A snow golem in a warm biome.
melting: "Melted"
# A mob or player hit them, when the attacker is no longer known.
entity-attack: "Slain"
# A sweeping sword attack, attacker no longer known.
entity-sweep-attack: "Slain"
# An arrow or similar, shooter no longer known.
projectile: "Shot"
# Damage dealt by another plugin. Nothing truthful can be said about it.
custom: "Died"
# The field added to a join when the player came from Bedrock, if
# log.player.join.show_platform is true. It NEVER says "Java" -- see the docs.
platform-field: "Platform"
platform-bedrock: "Bedrock"
# CONFIG VERSION V11, DOWNLOADED FROM WEBSITE