Tags
Creators
Details
All versions
4.7.0
Release
Better Anti Dupe 4.7.02 weeks ago 74
Compatibility
Minecraft: Java Edition
1.21.x
Platforms
Bukkit
Folia
Paper
Purpur
Spigot
Changes
[4.7.0] - 2026-10-13
Added
- An API for other plugins. Shops, crates, kits and reward plugins can now tell Better Anti-Dupe when they hand out or take away items, strip the owner mark from template copies, read a player's record, and listen to alerts, protections and automatic removal through normal Bukkit events. It works on Spigot, Paper and Folia from 1.21 up. See "Use it from your plugin" in the docs. The old
recordGranthook still works. - Stops hidden menu dupes. Most dupes found in other plugins' menus (backpacks, ender chest plugins, shulker preview plugins, storage menus) start with a cheat client hiding the menu on the player's screen without telling the server it closed. A normal game always closes a menu before the player can mine, build, hit, drop an item, switch hotbar slot or type a command, so doing any of those with a menu still open is now stopped, the menu is closed, and staff get an alert. Normal players are not affected. Works on Paper, Folia and Spigot. New setting
prevent-hidden-menu-dupers, on by default. - Stops the end portal chest dupe. When the last eye of ender goes into a portal frame with a chest or shulker box where the portal appears, and a land claim, region or "the End is locked" plugin blocks it, the container came back while a copy of it dropped on the ground. On Paper a chest's items dropped too while the chest stayed full, and a shulker box dropped with everything still inside it, so the whole box was doubled. On Spigot the container came back empty next to the copy. The plugin now puts it all back: the container keeps its items and nothing extra is left on the ground. This is an open Paper bug on 26.3. New setting
prevent-reverted-placement-dupers, on by default. - Players are checked a few seconds after they join. This catches players who come back holding items the server should not have handed back, for example after a crash or a lag machine stopped their data from saving while the items they put away stayed in a chest. New setting
ledger.reconciliation.on_join, on by default. - The console lists Paper's duping settings at startup. If any duping glitch is switched back on in
config/paper-global.yml(TNT, rail and carpet machines, sand through end portals, tripwire hooks), the console says so and which of them the plugin still blocks.
Fixed
- The owner mark is now hidden on Spigot 1.21. Spigot before 26.1 uses different internal names, so the part that hides the mark from players' games switched itself off at startup there. It now works on Paper, Folia and Spigot alike, checked by watching what players' games actually receive.
- A Spigot error on lecterns is guarded. Spigot can report an empty hand differently from Paper, which could make putting a book on a lectern throw an error there.
- Memory use on servers that run for weeks. The plugin kept every player's balances in memory after they left. They are now released five minutes after the player logs off.
Security
- Alerts can no longer ping everyone in Discord. Alert messages are sent with mentions switched off, so nothing in them can ping @everyone, @here or a role.
- The confirm command uses the player's real name.
on_confirm_commandnow fills in the name the server has on record instead of the text typed after/adp ledger confirm.
Changed
- Built against Paper 26.3 stable. Paper now marks 26.3 as stable, and the 26.3 download is built against it. Nothing else changes.
- No items are taken away right after a crash. For 30 minutes after a start that follows a crash, "Has X but ledger shows Y" alerts now also say the crash may be the cause, and the plugin does not remove items for any alert that carries that note, even with
auto_delete_dupeson. A crash can hand a player back their own items, and those should not be deleted.
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:dlVLKfYZ:68mWhgsO"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:dlVLKfYZ:68mWhgsO"
}

