Tags
Creators
Details
3.1
Compatibility
Changes
Anti-Dupe 3.1 — Hybrid Deep Scanner
Overview
Anti-Dupe 3.1 uses a hybrid detection system combining:
- Immediate event-based verification
- Periodic inventory audits
- Ender Chest scanning
- Loaded container scanning
- Cross-inventory UUID checks
- Ledger integrity audits
- Optional deep scans
- Automatic chunk-load scans
- Safe recovery backups
- Daily log files
- Discord webhook alerts
- Multi-language support
- Admin whitelist
- Original item preservation
- Stack-safe accounting
- SQLite transaction ledger
Scanner Configuration
scanner:
enabled: true
online-inventory-minutes: 5
ender-chest-minutes: 10
loaded-containers-minutes: 15
uuid-crosscheck-minutes: 15
ledger-audit-minutes: 30
players-per-batch: 10
automatic-chunk-scans: true
chunk-scan-delay-ticks: 20
Scanner tasks are staggered to prevent lag spikes.
Scan Frequency
| Scan | Default |
|---|---|
| Online Player Inventories | Every 5 minutes |
| Online Player Ender Chests | Every 10 minutes |
| Loaded Containers | Every 15 minutes |
| Cross Inventory UUID Check | Every 15 minutes |
| Ledger Integrity Audit | Every 30 minutes |
Player scans are processed in configurable batches.
Immediate Event Verification
Immediately verifies all inventory transactions after Minecraft completes them.
Protected events include:
- Inventory Click
- Shift Click
- Number Key Swap
- Drag Distribution
- Stack Split
- Stack Merge
- Double Click Collect
- Offhand Swap
- Hopper Transfer
- Item Pickup
- Item Drop
- Crafting
- Smithing
- Anvil
- Grindstone
- Villager Trading
- Player Login
- Player Logout
- Container Open
- Container Close
Cursor items are included in every transaction snapshot preventing false positives during normal stack splitting.
Deep Scan Commands
Scan everything:
/antidupe scan all
Scans:
- Online Players
- Ender Chests
- Loaded Containers
- Chest Minecarts
- Hopper Minecarts
- Inventory Holding Entities
- UUID Registry
- Stack Fingerprints
- Ledger Totals
Player inventories:
/antidupe scan players
Ender Chests:
/antidupe scan ender
Loaded Containers:
/antidupe scan containers
Current Chunk:
/antidupe scan chunk
Automatic Chunk Scanning
Whenever a chunk loads:
- Wait 20 ticks
- Scan every inventory holder
Supported block inventories:
- Chest
- Trapped Chest
- Barrel
- Shulker Box
- Hopper
- Furnace
- Blast Furnace
- Smoker
- Crafter
- Brewing Stand
- Dropper
- Dispenser
Supported entities:
- Chest Minecart
- Hopper Minecart
- Inventory Holding Entities
Safe Removal & Recovery
Before removal:
Complete ItemStack is written to:
plugins/Anti-Dupe/recovery.yml
Stored:
- Material
- Amount
- Name
- Lore
- Enchantments
- Durability
- Components
- Persistent Data
- UUID
- Player
- World
- Coordinates
- Detection Reason
- Timestamp
- Recovery ID
- Restore Status
If writing fails:
- Item remains untouched
- Severe error logged
Recovery Commands
Recent entries
/antidupe recovery list
Lookup player
/antidupe recovery player <player>
Restore original owner
/antidupe recovery restore <id>
Restore to another player
/antidupe recovery restore <id> <player>
Permission:
antidupe.recovery
Admin Whitelist
Add
/antidupe whitelist add <player>
Remove
/antidupe whitelist remove <player>
Check
/antidupe whitelist check <player>
List
/antidupe whitelist list
Stored:
plugins/Anti-Dupe/admin-whitelist.yml
Permission:
antidupe.whitelist
Admin Test Command
/dupe
Duplicates the held item.
Ignores:
- Whitelist
- OP
- antidupe.bypass
Used strictly for testing.
Permission:
antidupe.dupe
Private Detection Warnings
Players never receive detection messages.
Warnings go only to:
- Server Console
- Admins
- Daily Log Files
- Discord
Permission:
antidupe.notify
Daily Logs
Location
plugins/Anti-Dupe/logs/
Filename
anti-dupe-YYYY-MM-DD.log
Automatically rotates every day.
Discord Webhook Alerts
Rich embed notifications.
Config:
discord:
enabled: true
webhook-url: ""
username: "Anti-Dupe"
avatar-url: ""
locale: en_US
embed-color: "#FFB000"
include-coordinates: true
role-mention: ""
Embed contains:
- Player
- UUID
- World
- Coordinates
- Time
- Detection Reason
- Removed Item
- Removed Quantity
- Recovery ID
- Confirmation Item Removed
Webhook runs asynchronously.
Multi-Language Support
Supported locales:
- de_DE
- en_US
- es_ES
- fr_CA
- fr_FR
- it_IT
- ja_JP
- pl_PL
- pt_BR
- ru_RU
- tr_TR
- uk_UA
- zh_CN
Config:
language:
default: en_US
use-client-locale: true
Language files:
plugins/Anti-Dupe/lang/
Discord may use a separate locale.
Permissions
antidupe.admin
antidupe.notify
antidupe.whitelist
antidupe.recovery
antidupe.dupe
antidupe.bypass
Recommended Deployment
Start in:
mode: AUDIT
Test:
- Crafting
- Smelting
- Trading
- Hoppers
- Stack Splitting
- Stack Merging
- Ender Chests
- Shulker Boxes
- Modded Containers
After validation:
mode: QUARANTINE
Quarantine mode:
- Preserve original item.
- Backup duplicate.
- Remove duplicate.
- Log incident.
- Notify admins.
- Send Discord alert.
- Allow administrator restoration.
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:u5dKxq9Q:9S1KoTyL"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:u5dKxq9Q:9S1KoTyL"
}

