Tags
Creators
Details
All versions
1.2.0-mc26
Release
PluginGuard 1.2.0-mc264 months ago 17
Compatibility
Minecraft: Java Edition
26.2
26.1.x
Platforms
Bukkit
Folia
Paper
Purpur
Spigot
Changes
[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.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:PNPJsQNG:hKWmasiI"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:PNPJsQNG:hKWmasiI"
}

