HomeJavaModsBetter Anti Dupe
Better Anti Dupe
ModsJava

Better Anti Dupe

by darkstarworks · on Modrinth

Which build do you need?

This mod ships a separate file for every mod loader and every version of the game. Pick both, then download — the wrong build installs fine and then does nothing in the game.

Mod loader

Minecraft version

⬇ Download for 26.1–26.2 · Bukkit⬇ Download for 1.21.8–1.21.11 · Bukkit⬇ Download for 26.1–26.2 · Folia⬇ Download for 1.21.8–1.21.11 · Folia⬇ Download for 26.1–26.2 · Paper⬇ Download for 1.21.8–1.21.11 · Paper⬇ Download for 26.1–26.2 · Purpur⬇ Download for 1.21.8–1.21.11 · Purpur⬇ Download for 26.1–26.2 · Spigot⬇ Download for 1.21.8–1.21.11 · Spigot
I don't know my version or loader
Open the Minecraft launcher and look at the profile you play on — it names both, like fabric-loader-1.21.4. The version also shows in the bottom-right corner of the game's main menu.
No loader in the profile name? Then it's plain Minecraft, and these mods won't run — you need Fabric or NeoForge installed first.
betterantidupebanner

A forensic-grade item-duplication detector for Paper, Folia and Spigot servers.

Most anti-cheat plugins focus on movement, reach and combat exploits. BetterAntiDupe focuses on a category they usually ignore: the steady drip of duped items that silently inflates your server's economy. It does this by writing an append-only, tamper-evident ledger of every item movement and reconciling each player's actual inventory against what the ledger says they should hold.

If something doesn't add up, you get an alert before the dupe spreads.


Compatibility

Server software Paper, Folia, Spigot, and Paper-compatible forks (Purpur, Pufferfish, etc.)
Minecraft versions 1.21.x (plain jar) · 26.x (-mc26 jar)
Java 21+ for 1.21.x · 25+ for 26.x
External services None required (SQLite is bundled). Redis is optional for multi-server networks.

What it catches

A non-exhaustive list of dupe families BetterAntiDupe detects:

Full coverage matrix and the rare edge cases are documented in the user guide.


How it works

Every tracked item carries the owner's UUID in NBT — items still stack vanilla-style. Every gain and loss event (mine, craft, pickup, container put/take, frame put/take, workstation output, etc.) is recorded as a SHA-256-linked ledger entry. The chain is tamper-evident: editing the database directly breaks the hash chain and /adp ledger verify reports exactly where.

Reconciliation walks the player's inventory recursively — including the contents of held shulkers and bundles — and compares the total to the ledger balance. A surplus is a dupe.

Invisible to players. The ownership tag is stripped from the packets sent to clients (on by default), so even players running NBT-viewer mods can't see it, test it, or tell a tracked item from an untracked one — while the server-side data stays fully intact for detection. The tag's very name is configurable, so nothing in a leaked screenshot or stream frame reveals which plugin wrote it — and renaming is safe: previously tagged items stay tracked and migrate to the new name automatically. A strict mode can go further and strip every plugin's custom item data from outbound packets, with a whitelist for the namespaces your resource pack or client mods need. Staff with antidupe.tag.view keep the tag visible in their own client.

Built to be false-alarm shy: actions are verified one tick after they happen (so other plugins cancelling a pickup or block place can't skew the books), items handed out by shop/kit/vault plugins are never held against the player, and every alert is gated through per-material thresholds you control.


Storage backends

Pick one, configurable in config.yml:


Installation

  1. Download the jar that matches your server: plain for Minecraft 1.21.x, -mc26 for 26.x.
  2. Drop it into plugins/.
  3. Start the server. Defaults are sensible; the plugin generates config.yml and materials.yml on first launch.
  4. Done. Run /adp help in-game to see admin commands.

Commands

All commands live under /antidupe (aliases: /adp, /betterantidupe).

Command What it does
/adp ledger status Chain tip, current suspects, system health
/adp ledger balance <player> Expected balances for each tracked material
/adp ledger history <player> Recent ledger entries
/adp ledger witness <player> Witness statistics and suspicion analysis
/adp ledger suspects List all currently flagged players
/adp ledger reconcile <player> Force a balance check on an online player
/adp ledger trust <player> Show accumulated trust score
/adp ledger verify Verify the entire hash chain

Permissions are split so staff roles can be scoped: antidupe.alerts receives dupe alerts in chat (no command access), antidupe.ledger grants the commands above, and antidupe.admin includes both. antidupe.witness.exempt keeps invisibly-monitoring staff out of the witness pool, and antidupe.tag.view lets a trusted admin see the (otherwise hidden) ownership tag in their own client.


Configuration

Three YAML files in plugins/BetterAntiDupe/:

Speaks your language: English, Português do Brasil, Español, Deutsch, Русский and Polski are built in — one language: line in config.yml switches everything.

Alerts can also be pushed outside the game: Discord, Telegram, Slack, or any custom JSON webhook (n8n, Zapier, your own bot) — with severity filtering and burst protection built in. See the notifications section of config.yml.

Both are documented inline. Sensible defaults; you can add your own materials to the list at any time and restart.


100% Free & Source Available

No license key, no "premium" gating. The source is on GitHub. Issues and pull requests are welcome.

Anonymous (private) metrics

Since 4.2.0 the plugin reports anonymous (private) usage statistics.
Here's why, plainly:
BetterAntiDupe works quietly and the docs are thorough, so almost nobody opens a ticket — which leaves no way to know which Minecraft versions are actually running it. Knowing that is what makes it possible to fight duplication exploits for those versions first, instead of guessing.

Only I (the dev) and authorized members (currently nobody) can view this project. Embeds are disabled and it won't appear on the explore page.

What's sent: storage backend, which prevention toggles are on, how many materials you track, your language, and whether shadow mode, auto-delete and tag hiding are enabled — plus server software, Minecraft version, Java version and plugin version.

What's never sent: IP addresses, server names, player names or UUIDs, item data, or anything from your ledger. The statistics are kept private, not published on a public page — while the install base is small, public numbers would tell dupers how likely any given server is to be protected.

Set metrics.enabled: false in config.yml to send nothing at all.
Error reporting (stack traces) is separate and always off by default.


Links

Quick facts

Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.

Verified by MCModsHub

These come from our own check of the pack file, not from the source page.

Explore more