Welcome to the Hangar Open Beta. Please report any issue you encounter on GitHub!
Avatar for LVCHLANN

Minecraft plugin to log server events to Discord via a webhook

Report DiscordLogger?

DiscordLogger

Posts what happens on your Minecraft server to a Discord channel, as clean embeds or plain text. One webhook URL, no bot to host, no OAuth, no dashboard.

Runs on CraftBukkit, Spigot, Paper and forks, from Minecraft 1.8 through 26.2 — one JAR for all of them.


How it reads

Rich embeds with per-event colours, player heads and a configurable author line — or plain Markdown text, if you would rather your channel stayed quiet.

Events with detail get their own fields. A death carries the cause, built from server-side damage context so it reads the same for Java and Bedrock players, and optionally where it happened. A ban carries who issued it, why, and for how long.


What it logs

Players — join, quit, chat, commands, deaths, advancements, teleports, gamemode changes.

Server — console commands, start, stop, explosions.

Moderation — bans, unbans, kicks, op, deop, whitelist changes.

Anything else — build your own events from any command on the server. Essentials homes, LuckPerms rank changes, shop purchases: if a command triggers it, you can log it, with its own title, colour and webhook.

Every event above is an independent toggle with its own colour, and can be routed to its own webhook — so moderation can go to a staff-only channel while chat goes to a public one.


Why you might pick this one

It checks that things actually happened. A ban is logged after the ban list changes, not when someone types /ban. A command that failed, or was cancelled by another plugin, does not produce a message claiming it worked.

It knows what not to log. /login, /register and /msg are filtered by default, because logging them publishes passwords and private messages to your channel. Fifteen filters cover the rest: ignore players, worlds, commands, death causes, explosion sources, short chat, short teleports, and more.

Every string is yours. lang.yml holds every message the plugin sends. Reword it, translate it, or strip it back — including all thirty death causes.

It respects vanish. Staff hidden by EssentialsX, SuperVanish, PremiumVanish or CMI stay hidden. Moderation is deliberately exempt: hiding a ban because the person was vanished would gut the audit trail exactly when it matters.

Bedrock players are handled. Works with Geyser and Floodgate, and joins from Bedrock can be flagged as such.


Setup

  1. Drop the JAR in plugins/ and start the server.
  2. In Discord: Channel Settings → Integrations → Webhooks → New Webhook, then copy the URL.
  3. Run /discordlogger webhook <url> in the console, or paste it into config.yml.

That is the whole setup. There is also a config generator that builds a complete config.yml in your browser if you would rather click than edit YAML.

Your webhook URL is a credential. Anyone holding it can post to that channel as your server. The plugin never echoes it back, redacts it from command logging, and keeps it out of tab-completion.


Requirements

Server CraftBukkit, Spigot, Paper or a fork — 1.8 to 26.2
Java 8 or newer
Discord A webhook URL. No bot, no token, no hosting

A few features need a version that has the underlying feature: advancements are logged as achievements before 1.12, and block explosions need 1.8.3. The plugin checks at startup and says which ones your server cannot provide, rather than failing quietly.


Privacy

Anonymous usage data is sent to bStats: server software, versions, which events are enabled, and whether sends are succeeding. Never webhook URLs, player names, UUIDs, IP addresses, message content, coordinates or world names. Counts are reported as ranges rather than exact numbers, so a chart cannot become a fingerprint. It can be switched off in plugins/bStats/config.yml.


Free and open source under the MIT licence.

Information

Category
Admin Tools
Published
October 19, 2025
License
246Downloads
2Stars

Pinned Versions

Members

1