1.4.0-mc263latestPluginGuard 1.4.0-mc2634 weeks ago [1.4.0] - 2026-09-27
Added
- Minecraft 26.3 support. A third download,-mc263.jar, for 26.3.-mc26.jarnow covers 26.1 and 26.2. - Plugin channels are hidden. The list of channels players' games get on join named your plugins. Seehide-plugin-channels. - The query port no longer lists your plugins. Its software name shows your fake brand too. - Discord warnings. Paste a webhook intodiscord-webhook. - Automatic actions.alert-commandsruns console commands, like a kick, when someone probes. - `messages.yml`. Every message PluginGuard sends can now be changed. - probes.log stays small. Pastlog-max-size-mbit moves toprobes.old.log. - A full guide indocs/.Fixed
- Hidden commands now get the exact "Unknown command" reply of a made-up command. The old text gave PluginGuard away on Paper. - "permission-denied" mode uses your server's real no-permission message. - TAB after a hidden command no longer lists plugin names (for example/version). - Spigot works again. The first blocked command or warning used to throw an error. - An update installed without a restart no longer leaves the old copy running. - Aggressive mode no longer hides `/pluginguard` from staff. - A mistyped `hide-mode` no longer makes `/pl` answer nothing. It warns and usesunknown-command.1.4.0-mc26PluginGuard 1.4.0-mc264 weeks ago [1.4.0] - 2026-09-27
Added
- Minecraft 26.3 support. A third download,-mc263.jar, for 26.3.-mc26.jarnow covers 26.1 and 26.2. - Plugin channels are hidden. The list of channels players' games get on join named your plugins. Seehide-plugin-channels. - The query port no longer lists your plugins. Its software name shows your fake brand too. - Discord warnings. Paste a webhook intodiscord-webhook. - Automatic actions.alert-commandsruns console commands, like a kick, when someone probes. - `messages.yml`. Every message PluginGuard sends can now be changed. - probes.log stays small. Pastlog-max-size-mbit moves toprobes.old.log. - A full guide indocs/.Fixed
- Hidden commands now get the exact "Unknown command" reply of a made-up command. The old text gave PluginGuard away on Paper. - "permission-denied" mode uses your server's real no-permission message. - TAB after a hidden command no longer lists plugin names (for example/version). - Spigot works again. The first blocked command or warning used to throw an error. - An update installed without a restart no longer leaves the old copy running. - Aggressive mode no longer hides `/pluginguard` from staff. - A mistyped `hide-mode` no longer makes `/pl` answer nothing. It warns and usesunknown-command.1.4.0PluginGuard 1.4.04 weeks ago [1.4.0] - 2026-09-27
Added
- Minecraft 26.3 support. A third download,-mc263.jar, for 26.3.-mc26.jarnow covers 26.1 and 26.2. - Plugin channels are hidden. The list of channels players' games get on join named your plugins. Seehide-plugin-channels. - The query port no longer lists your plugins. Its software name shows your fake brand too. - Discord warnings. Paste a webhook intodiscord-webhook. - Automatic actions.alert-commandsruns console commands, like a kick, when someone probes. - `messages.yml`. Every message PluginGuard sends can now be changed. - probes.log stays small. Pastlog-max-size-mbit moves toprobes.old.log. - A full guide indocs/.Fixed
- Hidden commands now get the exact "Unknown command" reply of a made-up command. The old text gave PluginGuard away on Paper. - "permission-denied" mode uses your server's real no-permission message. - TAB after a hidden command no longer lists plugin names (for example/version). - Spigot works again. The first blocked command or warning used to throw an error. - An update installed without a restart no longer leaves the old copy running. - Aggressive mode no longer hides `/pluginguard` from staff. - A mistyped `hide-mode` no longer makes `/pl` answer nothing. It warns and usesunknown-command.1.3.0-mc26PluginGuard 1.3.0-mc26Jul 6, 2026 [1.3.0] - 2026-07-07
- New: built-in update checking. PluginGuard now checks Modrinth (with GitHub Releases as a fallback) for new versions and announces them to admins./pluginguard updategivescheck,download(fetches the verified jar, confirms its checksum, and stages it in the server's update folder to install on the next restart),restore(roll back to the previous jar),ignore <version>,unignore <version>, andstatus. Controlled by the newupdatesection in config.yml (mode:off/check-only/notify/download/auto-stage; defaultnotify— nothing is ever downloaded without opting in). Minecraft 26.x servers automatically follow the-mc26build line. Degrades to plain-text notices on Spigot where Adventure is absent.1.3.0PluginGuard 1.3.0Jul 6, 2026 [1.3.0] - 2026-07-07
- New: built-in update checking. PluginGuard now checks Modrinth (with GitHub Releases as a fallback) for new versions and announces them to admins./pluginguard updategivescheck,download(fetches the verified jar, confirms its checksum, and stages it in the server's update folder to install on the next restart),restore(roll back to the previous jar),ignore <version>,unignore <version>, andstatus. Controlled by the newupdatesection in config.yml (mode:off/check-only/notify/download/auto-stage; defaultnotify— nothing is ever downloaded without opting in). Minecraft 26.x servers automatically follow the-mc26build line. Degrades to plain-text notices on Spigot where Adventure is absent.1.2.0-mc26PluginGuard 1.2.0-mc26Jul 2, 2026 [1.2.0] - 2026-07-02
- Real Minecraft 26.x support: one codebase now builds two jars, selected with-Pmc=<line>(mirrors AntiDupePro's release model). -./gradlew shadowJar -Pmc=21->PluginGuard-1.2.0.jar(compiled against Paper API 1.21.11, Java 21 bytecode - for 1.21.x servers). -./gradlew shadowJar -Pmc=26->PluginGuard-1.2.0-mc26.jar(compiled against Paper API 26.1.2, Java 25 bytecode - for 26.x servers). - New: in-game server-brand spoofing.PaperServerListPingEventonly covered the server-list ping; the brand shown in the F3 debug screen (and read by "server brand" client mods) travels separately in theminecraft:brandplugin-message channel, sent during the configuration phase before a player fully joins. PluginGuard now injects a Netty pipeline handler at the server-channel level (TinyProtocol-style, before login) and rewrites that payload tofake-server-brand. Reuses the existinghide-server-brandtoggle. Reflection on plain paper-api, no ProtocolLib/paperweight; fails open (Spigot's remapped internals degrade to ping-only spoofing, as before). - Hardened the command-preprocess parser: it now skips any whitespace between the slash and the command token before matching (/ plugins,/<tab>plugins), so a padded command can't slip past the guard on a dispatcher that tolerates it. - New:block-namespaced-commands(default: on). Blocks every namespaced command (/essentials:home,/luckperms:lp, ...) and strips namespaced entries from tab completion - the namespace before the colon is the plugin's name, so a single namespaced command confirmed a plugin's presence even with its bare alias hidden. Namespaced probes are recorded at high weight (3) by the detector. - Fixed:block-bukkit-commandsdocumented that it blocksminecraft:-prefixed commands but only ever blockedbukkit:. It now blocks both, as documented. - Fixed:block-unknown-commandswas read from the config but never enforced. It now works: when a player runs a plugin command they lack permission for, PluginGuard cancels it and answers with the vanilla unknown-command line before the plugin can leak its existence through a "You don't have permission" reply. (Applies to commands that declare a permission; not tracked by the detector, since legitimate players hit permission walls routinely.) - Fixed: probe-detector alert details (recent labels, window age) are now snapshotted inside the tracker lock, closing a small race where a concurrent probe from the same player could skew the alert message. -/pluginguardnow tab-completes its subcommands (reload,status). -/versionspoof no longer wraps the fake brand in literal escaped quotes. - Build: Kotlin 2.3.20; plain (non-shaded) jar task disabled - only the shaded jar is ever released.1.2.0PluginGuard 1.2.0Jul 2, 2026 [1.2.0] - 2026-07-02
- Real Minecraft 26.x support: one codebase now builds two jars, selected with-Pmc=<line>(mirrors AntiDupePro's release model). -./gradlew shadowJar -Pmc=21->PluginGuard-1.2.0.jar(compiled against Paper API 1.21.11, Java 21 bytecode - for 1.21.x servers). -./gradlew shadowJar -Pmc=26->PluginGuard-1.2.0-mc26.jar(compiled against Paper API 26.1.2, Java 25 bytecode - for 26.x servers). - New: in-game server-brand spoofing.PaperServerListPingEventonly covered the server-list ping; the brand shown in the F3 debug screen (and read by "server brand" client mods) travels separately in theminecraft:brandplugin-message channel, sent during the configuration phase before a player fully joins. PluginGuard now injects a Netty pipeline handler at the server-channel level (TinyProtocol-style, before login) and rewrites that payload tofake-server-brand. Reuses the existinghide-server-brandtoggle. Reflection on plain paper-api, no ProtocolLib/paperweight; fails open (Spigot's remapped internals degrade to ping-only spoofing, as before). - Hardened the command-preprocess parser: it now skips any whitespace between the slash and the command token before matching (/ plugins,/<tab>plugins), so a padded command can't slip past the guard on a dispatcher that tolerates it. - New:block-namespaced-commands(default: on). Blocks every namespaced command (/essentials:home,/luckperms:lp, ...) and strips namespaced entries from tab completion - the namespace before the colon is the plugin's name, so a single namespaced command confirmed a plugin's presence even with its bare alias hidden. Namespaced probes are recorded at high weight (3) by the detector. - Fixed:block-bukkit-commandsdocumented that it blocksminecraft:-prefixed commands but only ever blockedbukkit:. It now blocks both, as documented. - Fixed:block-unknown-commandswas read from the config but never enforced. It now works: when a player runs a plugin command they lack permission for, PluginGuard cancels it and answers with the vanilla unknown-command line before the plugin can leak its existence through a "You don't have permission" reply. (Applies to commands that declare a permission; not tracked by the detector, since legitimate players hit permission walls routinely.) - Fixed: probe-detector alert details (recent labels, window age) are now snapshotted inside the tracker lock, closing a small race where a concurrent probe from the same player could skew the alert message. -/pluginguardnow tab-completes its subcommands (reload,status). -/versionspoof no longer wraps the fake brand in literal escaped quotes. - Build: Kotlin 2.3.20; plain (non-shaded) jar task disabled - only the shaded jar is ever released.1.1.0PluginGuard 1.1.0Jun 1, 2026 [1.1.0] - 2026-06-01
- Probe logging and pattern detection. PluginGuard now records when players try to enumerate the plugin list and can alert online admins when a player crosses a configurable weighted-score threshold within a sliding window. - Weighted categories: high (3) forbukkit:/minecraft:prefixes and/icanhasbukkit; medium (2) for/pl,/plugins,/ver,/version,/about; low (1) for common-plugin enumeration (/lp,/we,/co, ...). -/helpand/?are deliberately never tracked. - Optional append-onlyplugins/PluginGuard/probes.logaudit trail. - In-game alerts gated by newpluginguard.alertspermission (default: op). - All I/O dispatched via Paper/Folia's async and global-region schedulers, so the event hot path stays cheap and Folia-safe. - Per-player state lives in aConcurrentHashMapand is cleared on quit. - Honeypot commands. Admins can list fake commands inhoneypot-commands:that no legitimate user would ever type — a single honeypot hit weighs 5, so by default it triggers an alert immediately. -/pluginguard statusnow reports detection state, honeypot count, and file-log state.1.0.0Plugin Guard 1.0.0May 31, 2026 [1.0.0] - 2026-06-01
- Target Paper API 1.21.4; supports Minecraft 1.21.x (Java 21+) and 26.x.x (Java 25+). - Folia support declared viafolia-supported: true. - Graceful degradation on Spigot/Bukkit: the Paper-onlyPaperServerListPingEventlistener is now registered conditionally via class-presence check, so the plugin loads on non-Paper servers (server-brand spoofing simply becomes a no-op). - All player-facing messages now use the AdventureComponentAPI instead of the deprecated legacy color-code strings. -/versionspoof now reflects the running server's Minecraft version dynamically instead of a hard-coded1.21.1. - Build: Kotlin 2.1.20, Shadow 8.3.6, jar version is now wired throughplugin.ymlvia${version}. - Thread-safe, lock-free reload: all config-derived state is held in an immutableSettingssnapshot behind a@Volatilereference, so/pluginguard reloadswaps the whole snapshot atomically and concurrent event handlers on different Folia region threads always observe a consistent set of values without taking any lock. - Hot-path allocation reduced:PlayerCommandPreprocessEventno longer lowercases the entire message or splits on spaces — only the base command token is sliced out and lowercased. Saves work on every command a player types, proportional to message length. - README rewritten as proper UTF-8 (was UTF-16 with BOM).0.1Plugin Guard 0.1Nov 1, 2025 Release.
Similar projects
Plugin →Let Me Despawn
Improves performance by tweaking mob despawn rules. Say bye to pesky unintentional persistent mobs.
25MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
Emotecraft
Create your own emotes in Minecraft.
7.5MSueta
Simple Tpa
A simple tpa plugin which sends requests
5.4MSueta
Common Network
Forge and Fabric Unified Networking Solution
3.9MSueta
Set Home
A lightweight plugin for players to set their homes.
3.8MSueta