
Anti-Dupe
A security tool for Minecraft servers, designed to prevent item duplication exploits.
- Fixed broken drop mechanics in inventory.
- Compatibility issues fixed, now works with 1.21.x.
- Removed ban managment, all information logged to dupe_log.yml or reported to discord.
- Fixed Anti-Dupe not logging to dupe_log.yml.
- Fixed Anti-Dupe not loading all language files.

If you have any suggestions or corrections regarding translations in your native language file, please let me know.
Lineage-Aware Stack Consolidation
Players can now combine similar stackable items (e.g. 10 + 1 → 11) even when items carry different lineage / NBT data.
When stacks are merged:
- Lineage serial ranges are merged correctly
- No data is lost
- Inventory consolidation behaves like vanilla Minecraft
🔒 Dupe Detection Hardening (No Weakened Security)
- Cross-player and cross-inventory duplication still triggers hard removal
- Only same-player, same-inventory merge actions receive reconciliation
- Lineage overlap across players remains instantly detectable
⚙️ Thread Safety & Stability Improvements
- All inventory reads and mutations now run on the main server thread
- Eliminated async race conditions that caused:
- mid-merge scans
- phantom duplicates
- stack rollback behavior
📈 Result
- ✅ Vanilla-like inventory behavior restored
- ✅ No loss of anti-dupe integrity
- ✅ Stable stacking, splitting, and recombining
- ✅ No false positives during normal gameplay
If you do run into any problems please report them to me in our Discord chat.
Anti-Dupe will also be going back to the Only Scan method of assigning and detecting dupes, The Only Scan list includes 182 unstackable items for version 1.21.11.
🆕 New Additions
🔐 MD5 Assignment Control
Server-wide MD5 pause
/antidupe pause
Temporarily disables all MD5/NBT assignment across the entire server.Player-specific MD5 pause
/antidupe pause <player>
Disables MD5/NBT assignment for a single player without affecting others.Pause list viewer
/antidupe pause list
Displays all currently paused players and whether server-wide pause is active.Auto-resume support
/antidupe pause [player] <minutes>
Automatically resumes MD5 assignment after the specified duration.Persistent pause state
Paused players and server-wide pause now persist across server restarts.
🧹 MD5 Cleanup Utilities
Targeted MD5 removal
/antidupe removemd5s <player>
Removes all AntiDupe MD5/UID NBT data from a player’s inventory and ender chest.Global MD5 purge (loaded data)
/antidupe removemd5s
Removes MD5/UID data from all loaded players, containers, and entities.
📊 Status & Visibility
Pause state indicator
/antidupe statusnow shows:- Server-wide MD5 pause state
- Number of paused players
🛡️ Stability & Safety
- MD5 assignment now routes through a single guarded entry point, preventing accidental writes.
- Pause logic is thread-safe and scheduler-safe.
- Global MD5 removal avoids unloading chunks or offline player data to prevent corruption.
- Stacking logic fixed.
- Anti-Dupe will now protect everything by default.
- Onlyscan is now turned off by default.
- Added multi-language support for the Discord reporting.
- Updated dependancies.
- Added new 1.21.11 items.
- Added Multi-language support.
- Added Discord support.
- Added a Safe Removal & Recovery System.
- Fixed some logic.
Removed the gathering of statistics.
Fixed configuration issue. ( Thanks Jack! )
Fixed annoying stats info.
Added MD5 assigning:
Open item menus will now have MD5 checksums assigned to prevent packet(pause/send) dupes.
Added ShopKeeper Intigration:
You can now modify an items MD5 to "SHOPKEEPER" and add it to a Shop. When an item with the MD5 "SHOPKEEPER" is purchased, Anti-Dupe will assign a legit MD5.
Updated Cross Inventory Scanning:
Now includes Ender Chests.
Added Plugin Analytics:
For diagnostic and development pourposes.
Updated Only Scan List:
- BEACON - BLACK_SHULKER_BOX - BLUE_SHULKER_BOX - BOLT_ARMOR_TRIM_SMITHING_TEMPLATE - BROWN_SHULKER_BOX - COAST_ARMOR_TRIM_SMITHING_TEMPLATE - DIAMOND - DIAMOND_AXE - DIAMOND_BLOCK - DIAMOND_BOOTS - DIAMOND_CHESTPLATE - DIAMOND_HELMET - DIAMOND_HOE - DIAMOND_LEGGINGS - DIAMOND_PICKAXE - DIAMOND_SHOVEL - DIAMOND_SWORD - DRAGON_EGG - DRAGON_HEAD - DUNE_ARMOR_TRIM_SMITHING_TEMPLATE - ELYTRA - EMERALD - EMERALD_BLOCK - ENCHANTED_BOOK - ENCHANTED_GOLDEN_APPLE - END_CRYSTAL - EXPERIENCE_BOTTLE - EYE_ARMOR_TRIM_SMITHING_TEMPLATE - FLOW_ARMOR_TRIM_SMITHING_TEMPLATE - GOLD_BLOCK - GOLD_INGOT - GRAY_SHULKER_BOX - GREEN_SHULKER_BOX - HEART_OF_THE_SEA - HEAVY_CORE - HOST_ARMOR_TRIM_SMITHING_TEMPLATE - IRON_BLOCK - IRON_INGOT - LAPIS_BLOCK - LAPIS_LAZULI - LIGHT_BLUE_SHULKER_BOX - LIGHT_GRAY_SHULKER_BOX - LIME_SHULKER_BOX - LINGERING_POTION - MACE - MAGENTA_SHULKER_BOX - MUSIC_DISC_11 - MUSIC_DISC_13 - MUSIC_DISC_5 - MUSIC_DISC_BLOCKS - MUSIC_DISC_CAT - MUSIC_DISC_CHIRP - MUSIC_DISC_FAR - MUSIC_DISC_MALL - MUSIC_DISC_MELLOHI - MUSIC_DISC_OTHERSIDE - MUSIC_DISC_PIGSTEP - MUSIC_DISC_RELIC - MUSIC_DISC_STAL - MUSIC_DISC_STRAD - MUSIC_DISC_WAIT - MUSIC_DISC_WARD - NETHERITE_AXE - NETHERITE_BLOCK - NETHERITE_BOOTS - NETHERITE_CHESTPLATE - NETHERITE_HELMET - NETHERITE_HOE - NETHERITE_INGOT - NETHERITE_LEGGINGS - NETHERITE_PICKAXE - NETHERITE_SCRAP - NETHERITE_SHOVEL - NETHERITE_SWORD - NETHERITE_UPGRADE_SMITHING_TEMPLATE - NETHER_STAR - OMINOUS_TRIAL_KEY - ORANGE_SHULKER_BOX - PINK_SHULKER_BOX - POTION - PURPLE_SHULKER_BOX - RAISER_ARMOR_TRIM_SMITHING_TEMPLATE - RED_SHULKER_BOX - RIB_ARMOR_TRIM_SMITHING_TEMPLATE - SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE - SHAPER_ARMOR_TRIM_SMITHING_TEMPLATE - SHULKER_BOX - SHULKER_SHELL - SILENCE_ARMOR_TRIM_SMITHING_TEMPLATE - SNOUT_ARMOR_TRIM_SMITHING_TEMPLATE - SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE - SPLASH_POTION - TIDE_ARMOR_TRIM_SMITHING_TEMPLATE - TORCH - TOTEM_OF_UNDYING - TRIAL_KEY - TRIDENT - VEX_ARMOR_TRIM_SMITHING_TEMPLATE - WARD_ARMOR_TRIM_SMITHING_TEMPLATE - WAYFINDER_ARMOR_TRIM_SMITHING_TEMPLATE - WHITE_SHULKER_BOX - WILD_ARMOR_TRIM_SMITHING_TEMPLATE - WITHER_SKELETON_SKULL - YELLOW_SHULKER_BOXFixed some stacking issues.
Fixed some stacking issues.
Fixed /antidupe setstacksize issue
Added: Only scan option and list, now enabled by default for performance. Only high value targets are monitored. You can add/remove with "/antidupe onlyscan add|remove item"
# List of materials to scan for duplicates when 'onlyscan-enabled' is true. # Only these items will be checked for duplication if 'onlyscan-enabled' is enabled. # Must use valid Bukkit Material names (e.g., DIAMOND, NETHERITE_INGOT). onlyscan: - LEATHER - IRON_INGOT - GOLD_INGOT - DIAMOND - NETHERITE_INGOT - NETHERITE_SCRAP - RAW_IRON - RAW_GOLD - RAW_COPPER - EMERALD - LAPIS_LAZULI - REDSTONE - COAL - QUARTZ - ENCHANTED_BOOK - NETHER_STAR - BEACON - ELYTRA - TOTEM_OF_UNDYING - TRIDENT - HEART_OF_THE_SEA - END_CRYSTAL - DRAGON_EGG - SHULKER_BOX - WHITE_SHULKER_BOX - ORANGE_SHULKER_BOX - MAGENTA_SHULKER_BOX - LIGHT_BLUE_SHULKER_BOX - YELLOW_SHULKER_BOX - LIME_SHULKER_BOX - PINK_SHULKER_BOX - GRAY_SHULKER_BOX - LIGHT_GRAY_SHULKER_BOX - CYAN_SHULKER_BOX - PURPLE_SHULKER_BOX - BLUE_SHULKER_BOX - BROWN_SHULKER_BOX - GREEN_SHULKER_BOX - RED_SHULKER_BOX - BLACK_SHULKER_BOX - MUSIC_DISC_13 - MUSIC_DISC_CAT - MUSIC_DISC_BLOCKS - MUSIC_DISC_CHIRP - MUSIC_DISC_FAR - MUSIC_DISC_MALL - MUSIC_DISC_MELLOHI - MUSIC_DISC_STAL - MUSIC_DISC_STRAD - MUSIC_DISC_WARD - MUSIC_DISC_11 - MUSIC_DISC_WAIT - MUSIC_DISC_PIGSTEP - MUSIC_DISC_OTHERSIDEFixed arrow issue. (Thank you vastlyis_saved)
DO NOT USE v1.7!
DO NOT USE v1.7! USE v1.8!
Added whitelist.
/antidupe whitelist <add|remove>
Added custom stack sizes.
/antidupe setstacksize
Cross-Inventory Scanning.
EconomyShop support/compatibility.
Coming soon:
Whitelist Support.
Custom Stack Sizes.
Fixed stacking issue.
Added bans.yml
Added dupe_log.yml
Added config.yml
Added better customization, also fixed some issues.
Added more items.

