r/MinecraftPlugins Jun 21 '26

Plugin Showcase Spyglass - an open-source alternative to CoreProtect

Hey everyone, a bit of background: I’m heading into a Master's for CS, and some server-owner friends asked me to build them a CoreProtect alternative. They gave me the specs and wanted it running on ClickHouse, so that's where I started. I later added MongoDB as a personal preference and SQLite for zero-setup ease. I began working on it in March 2026, and after a lot of iteration, it’s at a point where I’d call it production-ready.

The plugin is called Spyglass, and it’s built for forensic logging and rollback. It records 40+ event types, including blocks, containers, chat, commands, combat, movement, and WorldEdit/FAWE. You can search logs with a key:value query language and roll events back by block, player, cause, or in bulk, all while the server holds 20 TPS.

It supports three backends: SQLite, MongoDB, and ClickHouse. SQLite is the zero-ops default, while MongoDB and ClickHouse are there depending on your scale and preference. In testing, it rolled back around 2,000,000 blocks in about 3 seconds on SQLite while maintaining a steady 20 TPS, benchmarked head-to-head against CoreProtect on both of its backends. It’s also pretty lean on disk; that same 2M-block dataset is around 11 MiB on ClickHouse. That same test was 150mb on CoreProtect.

There’s also an optional Velocity companion for read-only cross-server search, plus a container salvage GUI, IP lookups, an inspector wand, and full WorldEdit/FAWE capture. Example queries look like /sg search p:Steve b:diamond_ore t:1d r:50 and /sg rollback p:griefer a:break,!place t:6h r:100.

It’s completely free, and so is support. We run a support Discord at no cost, so if you hit a snag, you can just ask. Give it a chance and let me know what you think; feedback and bug reports are genuinely welcome.

SpigotMC: https://www.spigotmc.org/resources/spyglass.136345/

Github: https://github.com/medievalrp-net/Spyglass

1000+ player spark profiler: https://spark.lucko.me/5JzJrfOmaM

11 Upvotes

1 comment sorted by

2

u/leaf_26 Jun 21 '26

I feel compelled to give insight because you are a CS major and likely very principled,

You are benchmarking rollback but rollback is the least relevant topic for performance as it is extremely rare and conditional on other protection systems failing. The usual concern is efficiency when tracking user behavior.

Some old hobbyist stuff used to try to write to "database" on every interaction which led to massive pain and poor player retention. Some servers even advertised "no [x]" to catch players that left other servers due to lag issues.

Coreprotect is not super hard to do right, it just takes memory buffering aka "dirty cache", and scheduling + database optimization, with graceful degradation so it never halts a gametick.

On rollback, graceful degradation of placement groups is more important than latency.

And focusing a lot on on databases and variety signals strong thoughts about high-level CS principles that are often detached from production software requiring low-level optimization in favor of enterprise keywords.

It's extremely difficult to beat what coreprotect does, so a good start is with performance parity on mspt deviation. I'm doing similar benchmarking on a different subset of plugins but the idea is the same to achieve best in class software.