Skip to content

Releases: darkstarworks/AntiDupePro

AntiDupePro-3.5.1

Choose a tag to compare

@darkstarworks darkstarworks released this 08 Jul 04:21

[3.5.1] - 2026-07-08

Load fix for Paper 1.21.11.

Fixed

  • Plugin failed to load on Paper 1.21.11. The shaded jar carried duplicate META-INF resources (Netty's io.netty.versions.properties and a BlockHound service file, both pulled in transitively by lettuce-core), which Paper's plugin remapper rejects with a "Duplicate entries detected" error. These redundant entries are now dropped from the jar — the server provides its own Netty at runtime — so the plugin loads normally again. Thanks to imSpartann for the report (#1).

AntiDupePro-3.5.0

Choose a tag to compare

@darkstarworks darkstarworks released this 06 Jul 19:27

3.5.0 - 2026-07-05

Includes auto-updating for when the next update releases.

Added

  • Built-in update checking. AntiDupePro now checks Modrinth (with GitHub Releases as a fallback) for new versions and notifies admins. The new /adp update command adds check, download (fetch a new build, verify its checksum, back up the current jar, and stage it in the server's update folder to install on the next restart), restore (roll back), and status. Off by default beyond notifications — set update.mode to download or auto-stage in config.yml to enable installs. Works on Spigot too (notices fall back to plain text where clickable messages aren't available). Servers on the -mc26 build follow the mc26 release line automatically.

AntiDupePro-3.4.2

Choose a tag to compare

@darkstarworks darkstarworks released this 02 Jul 06:23

[3.4.2] - 2026-07-02

Rename the tag, and optionally send clients nothing at all.

Added

  • Rename the ownership tag. New ownership.namespace / ownership.key
    options change what the tag is called in item data — a leaked screenshot or
    stream frame then shows something bland like data:o instead of
    antidupepro:adp_owner, revealing nothing about which plugin wrote it.
    Renaming is safe: the previous name is remembered automatically (marker file
    plus ownership.legacy_keys), items tagged under the old name stay fully
    tracked, and they re-stamp onto the new name as they change hands. The
    client-side concealment hides old and new names alike during the transition.
  • Strict strip mode. strip_all_custom_data: true strips every plugin's
    custom item data from packets sent to clients, not just AntiDupePro's tag —
    anything reaching the client is clean. Off by default because CIT resource
    packs and client mods that read item data (sorting helpers, price or tooltip
    overlays) will see stripped items as blank. Pair it with strip_whitelist
    to preserve the namespaces your pack or mods need — AntiDupePro's own
    namespace is never allowed on the whitelist and is ignored if listed.

AntiDupePro-3.4.1

Choose a tag to compare

@darkstarworks darkstarworks released this 30 Jun 16:19

[3.4.1] - 2026-06-30

Let trusted staff peek at the tag.

Added

  • antidupe.tag.view permission. With hide_tag_from_clients on, the
    ownership tag is hidden from every player's client. Grant this node to an
    admin or group and their own client keeps the tag visible — handy for
    eyeballing it through an NBT-viewer mod without running /data get. Off by
    default, so concealment stays total until you grant it. Applies on next login.
    (Admins could already read the tag any time with /data get, which reads the
    untouched server-side data — this is purely about client-side visibility.)

AntiDupePro-3.4.0

Choose a tag to compare

@darkstarworks darkstarworks released this 30 Jun 16:11

[3.4.0] - 2026-06-30

Hide the tag, sharpen the witnesses, and split the keys.

Added

  • Hide the ownership tag from players. New hide_tag_from_clients option
    (on by default). AntiDupePro strips its own tag from items in the
    packets sent to players, so anyone poking at item NBT with a client mod just
    sees nothing — they can't tell a tracked item from an untracked one, and the
    old "swap an item between two accounts to see the tag flip" trick stops
    working. The tag is untouched server-side, so detection is exactly as before.
    Only AntiDupePro's own data is hidden; other plugins' data and resource-pack
    item models are left alone.
  • antidupe.witness.exempt permission. Anyone with this node is never
    counted as a nearby witness — handy for staff who patrol invisibly and
    shouldn't accidentally vouch for a player's actions.

Changed

  • Vanished staff no longer count as witnesses. Proof of Witness now ignores
    vanished players (via the standard vanished flag that EssentialsX,
    SuperVanish and PremiumVanish all set). Previously an invisible admin standing
    nearby could quietly raise a duper's trust and hide the solo-farming pattern.
  • Alerts and ledger commands are now separate permissions. Give a moderator
    antidupe.alerts to receive dupe alerts without command access, or
    antidupe.ledger for the /adp ledger commands. antidupe.admin still grants
    both, so existing setups are unchanged.

Downloads

  • Two builds. AntiDupePro-3.4.0.jar is for Minecraft 1.21.x (Java 21);
    AntiDupePro-3.4.0-mc26.jar is for 26.x (Java 25). Grab the one that matches
    your server — 1.21.x servers can't load the 26.x build.

AntiDupePro-3.3.5

Choose a tag to compare

@darkstarworks darkstarworks released this 13 Jun 00:01

(Use AntiDupePro-X.X.X-mc26.jar for Minecraft 26.x)

[3.3.5] - 2026-06-13

Speak your language — and a smoother stash teleport.

Added

  • 5 built-in translations. Set language: in config.yml to switch all
    in-game messages at once:
    • pt_BR Português do Brasil
    • es Español
    • de Deutsch
    • ru Русский
    • pl Polski
  • Your own edits in messages.yml still win over the chosen translation,
    and anything a translation misses falls back to English. Found a wonky
    phrase? Corrections are very welcome on GitHub!
  • Updating? Add one line to your config.yml: language: pt_BR (or
    whichever you want). Without it the plugin stays English.

Fixed

  • Stash teleport no longer shows a scary popup. Newer Minecraft
    versions ask "this command requires elevated permissions, are you
    sure?" when a chat click runs a vanilla command like /execute.
    Clicking stash coordinates now uses the plugin's own teleport
    (/adp ledger tp), which goes through without any confirmation
    dialog — and works the same in every world.

AntiDupePro-3.3.4

Choose a tag to compare

@darkstarworks darkstarworks released this 11 Jun 23:59

[3.3.4] - 2026-06-12

Get dupe alerts outside the game!

Added

  • Webhook notifications — AntiDupePro can now push dupe alerts to:
    • Discord (paste a channel webhook URL)
    • Telegram (bot token + chat id)
    • Slack (incoming webhook URL)
    • Anything else via a generic JSON webhook (n8n, Zapier, your own bot)
  • All off by default. Set them up in the new notifications section of
    config.yml — each option has step-by-step comments.
  • Built-in safety rails:
    • min_severity (default HIGH) so small wobbles don't ping your phone.
    • rate_limit_seconds (default 30) so an alert burst sends one message,
      not hundreds.
    • A broken webhook never affects the server — it just logs one warning
      per minute until it works again.
  • Notifications use the same language as your messages.yml.

Good to know

  • Updating from an older version? Your existing config.yml is kept,
    so the new notifications section won't appear automatically. Copy it
    from the default config (shown in the user guide) into your file.
  • The ready-made translations move to a later release — webhooks were the
    more-requested feature.

[3.3.3] - 2026-06-12

The plugin is now translatable!

Added

  • messages.yml — every message shown in-game (alerts, all /adp
    command output) now lives in plugins/AntiDupePro/messages.yml.
    Translate or restyle anything you like:
    • Colors use & codes (&c = red, &l = bold).
    • {placeholders} are filled in by the plugin — keep them, but you
      can move them around in the sentence.
    • Any line you delete falls back to the built-in English text, so
      updates can add new messages without breaking your translation.
  • Console logs stay English on purpose — that keeps errors searchable
    and makes it easier to get help.
  • Ready-made translations (e.g. messages_de.yml) are planned for 3.3.5.

AntiDupePro-3.3.2

Choose a tag to compare

@darkstarworks darkstarworks released this 11 Jun 05:56

(Use AntiDupePro-X.X.X-mc26.jar for Minecraft 26.x)

[3.3.2] - 2026-06-11

A false-alarm crackdown. If your console ever filled up with repeated
[DUPE] alerts, or honest players got flagged, this update is for you.

Fixed

  • Alert flood stopped. When another plugin blocked an item pickup
    (vault, claim and loot-protection plugins do this), AntiDupePro could
    spam hundreds of CRITICAL dupe alerts per second for a single item.
    It now waits one tick and only reacts to pickups that really happened —
    and a given item can only trigger that alert once.
  • Worn gear counted twice. Equipped armor and offhand items were
    double-counted, so a worn elytra read as 2 and caused bogus
    "has more than the ledger says" alerts.
  • Double chests were invisible. Items moved in and out of double
    chests weren't recorded at all, which slowly built up false alarms.
  • Chest moves measured, not guessed. Shift-clicks into nearly-full
    chests, number-key swaps, offhand swaps, double-click gathering and
    drag-moves are now recorded by what actually moved. This removes a
    whole family of false alarms (and a loophole dupers could abuse).
  • Mining drops counted correctly. Fortune could make the real drop
    differ from the prediction; the plugin now looks at the real drops.
  • Placing blocks / dropping items is also double-checked one tick
    later, so other plugins undoing those actions can't skew balances.
  • More stable on busy servers. Inventory checks now run on the
    correct thread (proper Folia support) and database writes can no
    longer collide with each other.
  • Suspicion cools down properly. It now only fades while a player
    has been quiet, instead of fading constantly.
  • Stash teleport links now work for stashes in the Nether and End.

Added

  • Villager trades are tracked. Buying a tracked item (e.g. an
    enchanted book from a librarian) is now recorded properly.
  • Enchanting a book is tracked — the new enchanted book is credited.
  • Alert severity now follows your own alert_thresholds settings
    instead of a built-in list of "important" items.

Good to know

  • If players were wrongly flagged before this update, run
    /adp ledger clear <player> once to reset them.
  • Plugins that hand out items directly (shops, kits, vault plugins like
    ElytraVaults) are invisible to any event-based tracker. AntiDupePro is
    built to not punish players for that — but if a specific item still
    alerts too eagerly, raise its number in alert_thresholds
    (materials.yml), or ask the plugin's author to call the
    recordSystemGrant API.

AntiDupePro-3.3.1

Choose a tag to compare

@darkstarworks darkstarworks released this 02 Jun 17:21

(Use AntiDupePro-X.X.X-paper26-all.jar for Minecraft 26.x)

[3.3.1] - 2026-06-02

Fixed

  • Chain integrity false alarm on upgrade from 3.2.x. Pre-3.3.0 entries
    stored a global prevHash (each entry linked to the previous one written
    server-wide). 3.3.0's per-player verifier expected a per-player prevHash,
    which meant the first entry below any player's most-recent legacy entry
    read as a chain break on startup. Verification now starts from the most
    recent CHAIN_RESET marker, and a one-time migration appends that marker
    for every existing player on first 3.3.1 startup. Old entries remain
    available for history and balance; the new chain verifies cleanly.
  • detection.on_confirm_command is now included in the default config.yml.
    3.3.0 documented the key but didn't write it on first launch, so fresh
    installs had to add it by hand.

Changed

  • Startup chain-check log demoted from SEVERE to WARNING — a break is worth
    attention but isn't necessarily a dupe; the message now points at
    /adp ledger verify <player> for a per-player drill-down.

AntiDupePro-3.3.0

Choose a tag to compare

@darkstarworks darkstarworks released this 02 Jun 14:55

(Use AntiDupePro-X.X.X-paper26-all.jar for Minecraft 26.x)

[3.3.0] - 2026-06-02

A detection-architecture overhaul that eliminates the false-positive classes
seen on raid farms and trial-vault looting, without weakening real detection.

Fixed

  • Raid-farm / mob-loot false positives. Mob deaths (and loot-table fills)
    now authorise acquisitions, so legitimate looting of evoker totems and raid
    drops no longer reads as a dupe. The quantity bound still flags a duped
    entity (more items than mobs produced).
  • Negative-ledger false positives. A negative balance is proof of an
    unobserved acquisition (e.g. /give, a shop plugin, a tracking gap), not a
    dupe — duping makes a balance go positive, never negative. Reconciliation now
    re-baselines to the real inventory and moves on instead of flagging. This was
    the root cause of the "has 1 but ledger shows -146" alerts.
  • Trial-vault / fast-loot false positives. Proof-of-Witness and acquisition-
    rate (TMAR) no longer fire standalone alerts; solo play with nobody nearby
    never accrues suspicion at all.

Added

  • Global detection.sensitivity (1–100, default 50). One knob from very
    lenient to very paranoid; scales the excess needed to alert.
  • Per-player adaptive suspicion. An earned floor (raised by deterministic
    hits and admin confirmation; does not decay) plus transient heat (low-
    confidence signals; decays over time). More-suspicious players trip on less.
  • Confidence-tiered detection. Deterministic detectors (entity-UUID reuse)
    alert alone; source-bound excess and balance surplus are gated by suspicion +
    sensitivity; TMAR and witness patterns are heat-only signals.
  • Admin verdict loop. /adp ledger confirm <player> pins suspicion high and
    optionally runs detection.on_confirm_command ({player} placeholder);
    /adp ledger clear <player> marks a false positive and resets suspicion.
  • Baseline-on-join. A never-seen player's owned inventory seeds their ledger
    once, so pre-existing items don't read as a surplus.
  • console_log_level (CRITICAL/ERROR/WARNING/INFO/DEBUG) to control verbosity.

Changed

  • Source-bound matching consumes authorisations across multiple nearby drops
    (fixes a latent excess false-flag when single drops merge into one ground
    stack), and is chunk-keyed for O(nearby) performance under farm volume.
  • TMAR and Proof-of-Witness demoted from triggers to low-confidence signals.