SpyCord - AntiOP Abuse
2.0.1A lightweight plugin that logs all server commands and gamemode changes to a Discord channel via webhook. Perfect for small servers to prevent or resolve OP abuse accusations.
2.0.1latestSpyCord - AntiOP Abuse 2.0.1Feb 26, 2026 Quick fix
Added version checker and updater to bukkit2.0.0SpyCord 2.0.0Feb 24, 2026 SpyCord v2.0.0 — Internal Rework
What's new
This release doesn't add new features — it's a full internal rebuild to make SpyCord stable, maintainable, and ready for everything coming next. If you're a server admin, the plugin works exactly the same as before. If you're a developer or you've been running into weird edge cases, this one's for you. ---For server admins
Nothing breaking. Yourconfig.ymlis unchanged, your commands are the same, and your webhook still works. Drop in the new JAR and you're done. Two separate JARs now. SpyCord now ships as two distinct builds: one for Paper servers and one for Spigot/Bukkit. Make sure you're using the right one for your platform — running the wrong JAR on the wrong server will cause a clean error on startup rather than silent weirdness. Discord messages are no longer blocking. Previously, every log event waited for Discord's API to respond before continuing. On slow connections or during Discord outages, this could cause the server to hitch. Webhook calls are now fully async — fire and forget. If Discord is down, SpyCord logs the failure quietly and moves on. Bug: version check no longer stalls startup. The GitHub version check was running on the main thread in some cases, which could slow down server startup by a second or two on bad network days. It now runs entirely in the background. ---For developers
This release rewrites the internals from scratch as a three-module Gradle project:common/,bukkit/, andpaper/. `common/` is now the brain. All business logic — what gets logged, when, and how — lives in pure Java with zero Bukkit or Paper imports. TheEventPipelineis the single place where "should this be logged?" decisions get made. If you want to understand what SpyCord does,EventPipeline.javais the file to read. Listeners are now just translators. In the old code, listeners were doing filtering, config reads, and logging calls all mixed together. Now they have one job: translate a Bukkit/Paper event into a platform-agnosticSpyEventand hand it to the pipeline. No logic lives in listeners anymore. Log sinks are composable. The oldLoggerclass was formatting, writing to disk, and sending to Discord all in one method. That's been split intoFileLogSink,DiscordLogSink, andCompositeLogSink— each doing one thing. Adding a new log destination in the future is a single class and one line inServiceRegistry. No more statics.SpyCord.getInstance()andSpyCord.getDiscord()are gone. Everything flows through aServiceRegistrythat gets constructed inonEnable()and passed down by reference. This makes the codebase significantly easier to reason about and opens the door for proper unit tests down the line. Paper extends Bukkit.SpyCordPaperextendsSpyCordBukkit, so all listener and service wiring is shared. Paper just layers Brigadier commands and the async version checker on top. This means bug fixes to core behaviour automatically apply to both platforms. ---Full change list
Added
-common/module — platform-agnostic core with interfaces, events, pipeline, and sinks -bukkit/module — Spigot/Bukkit 1.13+ implementation -paper/module — Paper 1.21+ implementation, extends bukkit -IPluginConfig,IDiscordClient,ILogSinkinterfaces -SpyEventdomain event types:CommandExecutedEvent,GameModeChangedEvent,PlayerConnectionEvent-EventPipeline— centralised log filtering and dispatch -CompositeLogSink— fan-out to multiple log destinations -FileLogSinkandDiscordLogSinkas separate, composable sinks -ServiceRegistry— dependency wiring without statics - Tab completion for all/spycordsubcommands on BukkitChanged
- Discord webhook calls are now fully asynchronous (no more main-thread blocking) - GitHub version check runs off the main thread via async scheduler -VersionNotifierno longer owns its ownBukkitRunnable— the platform schedules it -SpyCordPapernow extendsSpyCordBukkitinstead ofJavaPlugindirectly - Brigadier command classes each live in their own file (previously one monolithic class)Removed
- StaticSpyCord.getInstance()andSpyCord.getDiscord()accessors - MonolithicLoggerclass (replaced by composable sinks) - Mixed business logic in listener classesFixed
- Version check blocking server startup on slow network connections - Discord send failures causing unhandled exceptions on the main thread - Commands without explicit permission checks silently succeeding for non-ops ---Updating from v1.1a
1. Stop your server 2. RemoveSpyCord-1.1a-paper.jarfromplugins/3. Add the correct JAR for your platform (-paperor-bukkit) 4. Start your server — your existingconfig.ymlwill be picked up automatically 5. No config changes needed If anything behaves unexpectedly after updating, please open an issue [here](https://github.com/Myst1cS04p/SpyCord/issues) with your server version and platform. --- Thanks for using SpyCord.1.0SpyCord 1.0Sep 13, 2025 Intial Release
Similar projects
Plugin →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Simple Voice Chat
A working voice chat in Minecraft!
76.8MSueta
Let Me Despawn
Improves performance by tweaking mob despawn rules. Say bye to pesky unintentional persistent mobs.
25MSueta
Chunky
Pre-generates chunks, quickly and efficiently
18.4MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta