Перейти к содержимому
Mineforgian

Creative Logger

Logs staff activity creative item spawning, commands, gamemode changes, punishments, and more to Discord webhooks. Per-category toggles. No embeds. In-game setup.

Загрузки
234
Подписчики
1
Обновлён
29 июля 2026 г.
Лицензия
All-Rights-Reserved

Опубликован 25 мая 2026 г.

Creative Logger

See what your staff actually do — in Discord. Creative-menu grabs, commands, punishments, gamemode changes and more, each with its own channel and its own on/off switch. Set it up in-game, no restart needed.

🎁 BKHorn — Diamond Sword ×1 [Sharpness 5]
🎮 BKHorn — Survival → Creative
🔨 BKHorn — /ban Steve griefing
👁 BKHorn — Chest [world 120,64,-88]: took 12× Diamond
⌨ BKHorn (Discord) ran: /op Steve

Quick start

  1. Drop the JAR in plugins/ and start the server.
  2. Run /creativelog setup, click a category, paste a Discord webhook URL.
  3. Done. Creative logging is on by default; everything else you switch on when you want it.

What it can log

  • Creative menu — items taken, net-new only, so rearranging your inventory logs nothing
  • Commands/give, /op and /deop, punishments (/ban, /kick, /mute, /warn, …), whitelist changes, plus anything you add to the watched-command list
  • Players — joins and leaves, gamemode changes, chat
  • Console — mirrors the live console to Discord, with a separate audit trail of every console command whatever its origin: the Discord bridge, the real console, or RCON
  • One specific player — log everything someone does, or just the parts you choose. Container visits are reported as what was taken and put back, not merely that a chest was opened
  • Whatever you like — custom loggers with your own trigger, message and channel

Good to know

  • Your wording — every line is a template you can rewrite, or turn into a full Discord embed
  • Nothing is lost — every event is also written to a local log file, and Discord sends go through a retry queue that handles rate limits. /creativelog status when you want to check
  • Webhooks are enough — a Discord bot is optional, and off unless you turn it on
  • Updates keep your settings — new options are merged into your config, your values untouched
  • Exempt players, per category, for anyone you don't want logged
  • Proxy support, for hosts where discord.com is blocked
  • Addons — other plugins can add their own placeholders, send their own lines, or rewrite and cancel yours: API docs and a buildable example

Commands

Command What it does
/creativelog setup The in-game menu — categories, webhooks, watched and exempt players
/creativelog status Delivery diagnostics, safe to paste when asking for help
/creativelog reload Re-read the config files

All need creativelog.admin (OP by default). To hand the menu to specific people instead of every OP, list their names in admins.yml — once it has a name in it, nobody else can even see the command.

Requirements

  • Paper or Purpur, Java 21 or newer
  • Two JARs, pick one: CreativeLogger-legacy-X.Y.Z.jar for Minecraft 1.21.x, or CreativeLogger-X.Y.Z.jar for 26.1+

Privacy

Logging sends player data — usernames, commands, creative-menu items, gamemode changes, and, if you enable those categories, join/leave events, chat messages and console output — to the Discord webhooks or channels you configure, and nowhere else. If you log your players, tell them.

  • bStats: anonymous server and config statistics via bStats — never player data. Opt out in plugins/bStats/config.yml.
  • Update check: the plugin asks the Modrinth API whether a newer version exists. Turn it off with update-check: false.
  • Console control: off by default. If you enable it, Discord users you allowlist can run server console commands from a channel you choose, using a bot token you provide.

Ченджлог

1.3.1+mc26Релиз26.1.1, 26.1.2, 26.2 · 29 июля 2026 г.

Critical fix — bot presence could take a server down

If you run 1.3.0 with bot.presence.enabled: true, please update. Not using bot presence? You are unaffected, and nothing else in the plugin changed.

The gateway connection that makes the bot appear online leaked an HTTP client every time it reconnected, and nothing stopped several connections existing at once — so one dropped connection could snowball into more. On the server that reported this, that reached ~77,000 Discord connections in 12 hours and 5,014 leaked threads, until the JVM could no longer create a thread: the server's main thread died while the process stayed up with its ports open, so it still answered pings and looked perfectly healthy, but nobody could join and even stop no longer worked. Discord separately reset that bot's token for connecting too often — which 1.3.0 then reported as "your token is invalid", sending the admin to look in the wrong place.

What changed:

  • One HTTP client, reused and properly shut down. Reconnecting now costs nothing.
  • One connection attempt at a time. A superseded connection is closed instead of left running.
  • Real backoff — 15 seconds doubling up to 15 minutes, and only cleared once a connection has been healthy for 10 minutes, so a flapping connection backs off like any other failure.
  • Presence switches itself off instead of retrying forever: after 10 failures in a row, or more than 20 attempts in an hour, it stops with one clear console line telling you logging is unaffected and that /creativelog reload will try again. It is only the online indicator — it must never cost you a server.
  • Close codes are read properly. A rejected token stops immediately, and the message now allows for a token Discord has reset rather than one you mistyped. Rate limiting waits it out. A connection that stops answering heartbeats is recognised as dead instead of sitting there looking online.
  • /creativelog status and the setup menu's Discord Bot item now show what presence is actually doing — connected, reconnecting in 60s, or stopped and why — instead of only whether the option is ticked.

Can't update right away? Set bot.presence.enabled: false and restart. Webhook logging and bot-channel sending are unaffected; presence is purely the online indicator.

If Discord reset your bot token, generate a new one in the Discord developer portal and paste it in — no plugin version can restore the old one.

Notes

No config changes: updating is just swapping the JAR, and your existing config.yml is untouched.

Verified on Paper 1.21.11, 26.1.2 and 26.2 — full test suite green, including a new suite that drives a local stand-in gateway to prove the reconnect behaviour, and a 71-minute soak confirming presence stops itself with no thread growth.

1.3.1+mc1.21Релиз1.21.9, 1.21.10, 1.21.11 · 29 июля 2026 г.

Critical fix — bot presence could take a server down

If you run 1.3.0 with bot.presence.enabled: true, please update. Not using bot presence? You are unaffected, and nothing else in the plugin changed.

The gateway connection that makes the bot appear online leaked an HTTP client every time it reconnected, and nothing stopped several connections existing at once — so one dropped connection could snowball into more. On the server that reported this, that reached ~77,000 Discord connections in 12 hours and 5,014 leaked threads, until the JVM could no longer create a thread: the server's main thread died while the process stayed up with its ports open, so it still answered pings and looked perfectly healthy, but nobody could join and even stop no longer worked. Discord separately reset that bot's token for connecting too often — which 1.3.0 then reported as "your token is invalid", sending the admin to look in the wrong place.

Notes

No config changes: updating is just swapping the JAR, and your existing config.yml is untouched.

Verified on Paper 1.21.11, 26.1.2 and 26.2 — full test suite green, including a new suite that drives a local stand-in gateway to prove the reconnect behaviour, and a 71-minute soak confirming presence stops itself with no thread growth.

1.3.0+mc26Релиз26.1.1, 26.1.2, 26.2 · 28 июля 2026 г.

What's new

  • Customize every message. Rewrite any log line in config.yml (format:), or turn a category into a full Discord embed — title, description, colour, inline fields, thumbnail, footer, timestamp — all with the same placeholders. Plain text stays the default.
  • Watched players (watch.yml). Log everything a specific player does, or just the aspects you pick (commands, chat, containers, creative, gamemode, and more), independently of the category toggles. Container visits are summarised as exactly what was taken and put back.
  • Console-audit category. A quiet "who ran what" trail of every console command, whatever its origin — the Discord bridge, the real console, or RCON.
  • Local log file. Every event is also written to plugins/CreativeLogger/logs/, so a Discord or network outage never loses your records.
  • Chest-menu setup. /creativelog setup now opens an inventory menu, with a Discord Bot item, a Message Format reference, and a Health/status view. /creativelog setup chat keeps the old text panel.
  • The bot can show as online. Optional bot.presence — a cosmetic gateway connection with a status you choose.
  • Addon API. Other plugins can register their own {placeholders} for your format lines, emit their own log lines, or rewrite/redirect/cancel anything logged. Docs and a buildable example: https://github.com/BKHornYT/creativelogger-addon-example
  • Config warnings go to the right people. The join-time "needs attention" notices now target whoever is listed in admins.yml (or all OPs when it's empty), and /creativelog is hidden entirely from non-admins.

Bug fixes

  • RCON commands (from management panels) were invisible to every category — now logged.
  • Console bridge: transient network blips are no longer reported as configuration errors — proper backoff and accurate messages — and credentials are redacted before any console line is mirrored to Discord.
  • A version-only rebuild could ship a stale version string in plugin.yml — fixed.

Notes

  • Upgrading is automatic: your config.yml gains the new options with safe defaults, every setting you had is kept, and your previous file is saved as config.yml.bak.
  • Two JARs — CreativeLogger-legacy-1.3.0.jar for Minecraft 1.21.x, CreativeLogger-1.3.0.jar for 26.1+.
1.3.0+mc1.21Релиз1.21.9, 1.21.10, 1.21.11 · 28 июля 2026 г.

What's new

  • Customize every message. Rewrite any log line in config.yml (format:), or turn a category into a full Discord embed — title, description, colour, inline fields, thumbnail, footer, timestamp — all with the same placeholders. Plain text stays the default.
  • Watched players (watch.yml). Log everything a specific player does, or just the aspects you pick (commands, chat, containers, creative, gamemode, and more), independently of the category toggles. Container visits are summarised as exactly what was taken and put back.
  • Console-audit category. A quiet "who ran what" trail of every console command, whatever its origin — the Discord bridge, the real console, or RCON.
  • Local log file. Every event is also written to plugins/CreativeLogger/logs/, so a Discord or network outage never loses your records.
  • Chest-menu setup. /creativelog setup now opens an inventory menu, with a Discord Bot item, a Message Format reference, and a Health/status view. /creativelog setup chat keeps the old text panel.
  • The bot can show as online. Optional bot.presence — a cosmetic gateway connection with a status you choose.
  • Addon API. Other plugins can register their own {placeholders} for your format lines, emit their own log lines, or rewrite/redirect/cancel anything logged. Docs and a buildable example: https://github.com/BKHornYT/creativelogger-addon-example
  • Config warnings go to the right people. The join-time "needs attention" notices now target whoever is listed in admins.yml (or all OPs when it's empty), and /creativelog is hidden entirely from non-admins.

Bug fixes

  • RCON commands (from management panels) were invisible to every category — now logged.
  • Console bridge: transient network blips are no longer reported as configuration errors — proper backoff and accurate messages — and credentials are redacted before any console line is mirrored to Discord.
  • A version-only rebuild could ship a stale version string in plugin.yml — fixed.

Notes

  • Upgrading is automatic: your config.yml gains the new options with safe defaults, every setting you had is kept, and your previous file is saved as config.yml.bak.
  • Two JARs — CreativeLogger-legacy-1.3.0.jar for Minecraft 1.21.x, CreativeLogger-1.3.0.jar for 26.1+.
1.2.2+mc26Релиз26.1.1, 26.1.2, 26.2 · 4 июля 2026 г.

What's new

  • Updates can no longer mess with your setup — config.yml now upgrades itself: when a new plugin version adds options, they are added to your existing file with safe defaults and their documentation comments. Everything you configured is kept, and your previous file is saved as config.yml.bak.
  • The Discord bot is now strictly opt-in — new bot.enabled switch in config.yml, off by default. Webhooks are the normal way to log and need no bot. Channel-ID destinations only send after you set bot.enabled: true and a bot.token.

Notes

  • Used the bot on 1.2.1? The config upgrade adds bot.enabled: false for you — flip it to true and everything works as before. Everyone else doesn't need to do anything.
  • /creativelog status, the setup panel and the OP join warning now say clearly when a channel ID is set while the bot is off.
1.2.2+mc1.21Релиз1.21.9, 1.21.10, 1.21.11 · 4 июля 2026 г.

What's new

  • Updates can no longer mess with your setup — config.yml now upgrades itself: when a new plugin version adds options, they are added to your existing file with safe defaults and their documentation comments. Everything you configured is kept, and your previous file is saved as config.yml.bak.
  • The Discord bot is now strictly opt-in — new bot.enabled switch in config.yml, off by default. Webhooks are the normal way to log and need no bot. Channel-ID destinations only send after you set bot.enabled: true and a bot.token.

Notes

  • Used the bot on 1.2.1? The config upgrade adds bot.enabled: false for you — flip it to true and everything works as before. Everyone else doesn't need to do anything.
  • /creativelog status, the setup panel and the OP join warning now say clearly when a channel ID is set while the bot is off.
1.2.1+mc26Релиз26.1.1, 26.1.2, 26.2 · 3 июля 2026 г.

What's new

  • Use your own Discord bot instead of webhooks — set bot.token in config.yml, then put a Discord channel ID anywhere a webhook URL goes (built-in categories, custom loggers, the console mirror). Webhooks keep working; mix both freely.
  • Update notice — OPs are told on join when a new version is out (checked every 6 hours via the Modrinth API; update-check: false to turn off).
  • OP welcome — a one-line greeting on join with the plugin version and a clickable /creativelog setup (welcome-message: false to turn off).
  • bStats — anonymous usage statistics (opt out globally in plugins/bStats/config.yml).

Notes

  • One bot can serve everything: the console-control bot-token now falls back to the global bot.token, and pointing the console category at a channel ID sends the console mirror through the bot too.
  • The setup panel accepts channel IDs and shows [Bot ✓]; /creativelog status, the OP join warning and [Test] all clearly flag a channel ID that's missing a bot token.
  • Bot sends use the same retry queue, rate limiting, 429 handling, proxy, and timeouts as webhooks.
1.2.1+mc1.21Релиз1.21.9, 1.21.10, 1.21.11 · 3 июля 2026 г.

What's new

  • Use your own Discord bot instead of webhooks — set bot.token in config.yml, then put a Discord channel ID anywhere a webhook URL goes (built-in categories, custom loggers, the console mirror). Webhooks keep working; mix both freely.
  • Update notice — OPs are told on join when a new version is out (checked every 6 hours via the Modrinth API; update-check: false to turn off).
  • OP welcome — a one-line greeting on join with the plugin version and a clickable /creativelog setup (welcome-message: false to turn off).
  • bStats — anonymous usage statistics (opt out globally in plugins/bStats/config.yml).

Notes

  • One bot can serve everything: the console-control bot-token now falls back to the global bot.token, and pointing the console category at a channel ID sends the console mirror through the bot too.
  • The setup panel accepts channel IDs and shows [Bot ✓]; /creativelog status, the OP join warning and [Test] all clearly flag a channel ID that's missing a bot token.
  • Bot sends use the same retry queue, rate limiting, 429 handling, proxy, and timeouts as webhooks.

Комментарии

Загружаем…