Links
Tags
Creators
Details
Licensed ARR
Published 3 months ago
Updated 3 days ago
All versions
1.3.0
Release
Fiw Admin Tools 1.3.0 Fabric 1.21.13 days ago 10
Compatibility
Minecraft: Java Edition
1.21.1
Platform
Fabric
Supported environments
Server-side
Singleplayer
Required content
Any compatible version
Any compatible version
Changes
[1.3.0] - Watchdog and heuristic dupe detection
Added
- Watchdog: a background heartbeat monitor alerts (log + optional Discord, never in-game chat) if the server stops ticking for longer than
heartbeatTimeoutSeconds. Separately, the mod detects on boot whether the previous session shut down cleanly and alerts if it didn't (crash,kill, power loss). View status with/fiw watchdog. - Dupe detection: a poll-based heuristic rule engine (scans inventories on an interval rather than hooking every pickup/craft/trade) with two independent detectors, both alert-only by default. The rate detector flags a player (or, if
rateDetector.chunkScope.enabled, a chunk) gaining more weighted value from an admin-configured item watch list than a threshold within a time window, exempting players with an open container by default. The signature detector flags a specific watched item (by NBT/component fingerprint) appearing to be held by two different players within the same scan window. Each detector can be escalated independently to auto-freeze, kick, temp-ban, or ban./fiw dupe status,/fiw dupe alerts, and/fiw dupe clear <player>manage it. - New config files:
watchdog.json,dupe.json; new state filedupe-alerts.json. - New permission nodes:
fiw.watchdog.notify,fiw.dupe.manage,fiw.dupe.notify(all staff-only, no default-true nodes this round).
Fixed
- The dupe rate detector re-alerted on every scan for as long as the triggering item stayed in inventory (the rolling window kept spanning the pre-spike baseline), spamming staff/Discord with repeats of the same flag. It now alerts once per detection, then cools down for
windowSecondsbefore it can fire again for the same player/chunk. - The watchdog's hang alert could fire falsely a short time after vanilla auto-pauses ticking for an empty server (
pause-when-empty-secondsinserver.properties) — that pause stops the tick heartbeat too, which the watchdog previously couldn't tell apart from a real hang. It now suppresses hang checks while no players are online and resets the heartbeat the moment someone (re)connects.
Compatibility notes
- All new commands and behavior work identically across all eight release targets, verified by actually booting each loader's dev server (not just compiling) — including confirming the item-signature fingerprint uses the correct API per version (
DataComponentPatchon 1.21.x, NBTCompoundTagon 1.20.1, which predates Minecraft's DataComponents), and both fixes above were caught and re-verified live against a connected player, not just in unit tests. - Existing config/state files and commands are unchanged.
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:f1yH9Ggq:BPRB27eR"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:f1yH9Ggq:BPRB27eR"
}

