DupeWatch
Wiki
Everything you need to install, activate and run the most advanced anti-dupe plugin for Minecraft. From your very first watch rule to tracing exactly how a dupe spread across your server, it is all here. Clean setup, powerful detection, no guesswork.
What is DupeWatch?
DupeWatch spots duplicated items on your server using advanced fingerprinting, opens investigation cases, and gives your staff a full point and click workflow to review, resolve and act. Optional Discord alerts keep your team in the loop.
Smart scanning
It scans inventories, ender chests and nested containers using semantic item fingerprints.
Growth detection
It spots items multiplying over time (5, 10, 20, 40) across scan cycles, not just raw counts.
Case management
Create, annotate, export, confiscate and resolve. A full investigation lifecycle in one place.
15-screen GUI
Run everything with clicks. Commands are there too, for power users and automation.
Discord alerts
High signal webhooks for new cases and confiscations, without the spam.
Built for scale
Caching, bloom filters and async work keep big servers smooth.
Quick Start
The quickest path from download to catching your first dupe. Each step links to a deeper section below.
Install the loader
plugins/ and start the server once. It writes a loader.yml file.Add your license
loader.yml, then restart so the loader can verify it. See License.Make your first rule
/dw, go to Watchlist and click Add From Hand. See Rules.Try it out
/dw scan on a player, then open the Cases screen to see what turned up./dw scan <player>Installation
DupeWatch ships as a single drop-in jar. Here is what it needs and where its files live.
Requirements
Server software
Paper or Folia, Minecraft 1.21.5+. Folia is fully supported.
Java runtime
Java 21+ at runtime. The jar loads all the way up to the Java 25 ceiling.
Storage
SQLite out of the box. MySQL is there if you run a network.
Soft deps
CoreProtect and Vault unlock forensics and Money Watch. Both optional.
Steps
- 1Download the latest DupeWatch loader jar from your purchase.
- 2Drop it into your server's
plugins/folder. - 3Start once, add your license to
loader.yml(see License below), then restart. - 4Once it is verified, tune
config.ymlto taste and run/dw reload.
Where things live
loader.ymlYour license key (the Lukittu loader reads this)config.ymlPlugin settings: scanning, Discord, Money Watchmessages.ymlEvery GUI title, button and messagewatchlist.jsonYour watch rulesdata.dbThe SQLite database (default storage)cases/Exported investigation casesLicense & Activation
DupeWatch is protected by the Lukittu loader. After you buy, you collect your license key from our Discord, drop it into loader.yml, and restart. Updates take care of themselves after that.
Keys are handed out in our Discord, not at checkout.
- 1. Buy DupeWatchGrab it on BuiltByBit or VoxelShop.
- 2. Open a Discord ticketJoin our Discord, open a ticket, and post your proof of purchase.
- 3. Receive your keyA staff member sends your license key right there in the ticket.
Once you have your key, open plugins/DupeWatch/loader.yml and paste it in:
# Lukittu Loader Configurationlicense-key: "XXXX-XXXX-XXXX-XXXX"Then restart your server. The loader checks the key on startup and pulls the plugin down once it is valid. A plain /dw reload will not re-run the loader, so use a full restart for this step.
The GUI System
A clean point and click interface across 15 screens. Your staff can run the whole workflow without typing a single command.
Watchlist & Rules
A rule says what to watch for and what happens when it triggers. You build one straight from the item in your hand, all through the GUI.
Put the item you want to watch in your main hand.
Rule settings
- Threshold
- How many matching items before it triggers (say 30).
- Time window
- The rolling window, in seconds, that counts toward the threshold.
- Scope
- inventory, inventory+ender, or everywhere.
- Severity
- low, med or high. Drives alert urgency and the Discord colour.
/dw, and click Add From Hand in the Watchlist. That captures the item's exact fingerprint.Actions when a rule fires
ALERT_STAFFLOG_CASEDISCORD_WEBHOOKRUN_COMMANDSCONFISCATE_OPTIONALScanning & Detection
DupeWatch identifies duplicated items with semantic fingerprinting and watches how stacks grow over time, so it keeps catching dupes even after a Minecraft update.
················The same logical item hashes identically across Minecraft versions, so dupes are still caught after an update.
Most items are rejected in microseconds before any heavy work happens.
Fingerprint matching
It compares type, name, lore, enchants, custom model data and filtered PDC, not raw bytes.
Growth patterns
It flags items multiplying across scan cycles, not just a high count on its own.
Bloom filters
Sub-microsecond material pre-filtering skips items it does not care about instantly.
Dirty-flag scanning
It only scans inventories that actually changed since the last cycle.
Rate limiting
Global alert caps and per-rule cooldowns stop alert spam before it starts.
Smart de-duplication
It avoids opening noisy duplicate cases for the same underlying issue.
Case Management
Every triggered rule opens a case with a full lifecycle. Work them in-game or wherever your staff are most comfortable.
Review
See the evidence, the player, the flagged items and the forensic context.
Annotate
Drop staff notes on any case so the next person has the full story.
Export
Save a case to JSON for your records or an external review.
Resolve
Close it out. Resolved cases stay searchable and can be reopened.
Quarantine & Confiscation
Pull duped items out of circulation safely, and hand back any false positives as fully legitimate items with no leftover flags.
Confiscate
Remove flagged items from a player's inventory and ender chest, behind a confirmation gate.
Quarantine
Hold seized items for review instead of deleting them. Hand them back later if the player is cleared.
Identity regeneration
Returned items get fresh IDs and cleared flags, so they behave just like newly spawned legit items.
Discord Alerts
Real time alerts in your staff channels, kept deliberately to high signal events so your channels stay clean and actually useful.
Click a severity to see how the embed recolours.
discord: enabled: true webhookUrl: "YOUR_WEBHOOK_URL" override: false # true routes ALL rules through this webhook webhook: username: "DupeWatch" colors: low: 0x00FF00 # green med: 0xFFA500 # orange high: 0xFF0000 # redPer-rule webhooks
Route important items to their own channel, or send everything through one global webhook.
Role pings
Optionally ping a staff role on high severity cases so nothing slips by.
/dw testwebhook <fingerprint>Money Watch
Vault integration that watches for suspicious economy activity, like the tell tale balance spikes that tend to follow a dupe.
Steady earning curve. Nothing to see here.
Anomaly detection
It flags sudden balance spikes, doubling and abnormal growth rates.
Balance tracking
It keeps a rolling history of balance snapshots for trend analysis.
Your thresholds
Set the minimum amount, the doubling threshold and the growth rate limit.
moneywatch: enabled: true pollIntervalSeconds: 5 anomaly: minAmountThreshold: 100.0 balanceDoublingThreshold: 2.0 growthRateThreshold: 5.0Activity Heatmaps
See where suspicious activity clusters on your server, then jump straight to it.
Click a hotspot. Staff can warp straight to the busiest areas.
Location tracking
It records where flagged events happen across your worlds.
Heat visualization
Aggregated activity makes the hotspots obvious at a glance.
Teleport to hotspots
Staff with dupewatch.heatmap.teleport warp straight to the busiest areas.
CoreProtect Integration
When a case opens, DupeWatch pulls in the surrounding forensic context from CoreProtect, so your staff see the whole story at a glance.
Automatic context
It pulls the player's actions from around the time of the flag: block, container, chat and command history.
Built-in browser
An interactive GUI lets staff browse that forensic data right in-game.
Hybrid storage
It captures both the first and the latest context for thorough, time-aware investigations.
Item Identity Engine
It tracks how individual item stacks move across your server, so you can see exactly how a dupe spread.
The identity engine traces every hand a duped item passes through.
Stack IDs
Unique IDs are minted into item stacks using Persistent Data Containers.
Ownership registry
It tracks who has held an item and when, building a chain of custody.
Spread graph
It maps how duplicated items propagate from player to player over time.
Performance
DupeWatch is built for busy servers. The optimizations are on by default and manage themselves.
Caching, bloom filters and dirty-flag scanning keep the main thread quiet.
| Server size | Cache hit rate | Memory | CPU reduction |
|---|---|---|---|
| Small (1 to 50) | 85 to 90% | under 30 MB | 75 to 80% |
| Medium (50 to 200) | 90 to 95% | 30 to 40 MB | 80 to 85% |
| Large (200+) | 90 to 95% | 40 to 50 MB | 80 to 85% |
/dw stats or turn on debug.enabled to see cache hit rates and any slow operation warnings.Commands
Most of the work lives in the GUI, but every action has a command for power users and automation. The base command is /dupewatch, with /dw as a shortcut.
| Command | What it does | Permission |
|---|---|---|
/dw | Open the main DupeWatch GUI, the hub for everything. | review |
/dw scan <player> | Run a manual scan of a player's inventory and ender chest. | scan |
/dw case <caseId> | Open a specific investigation case in the GUI. | review |
/dw note <caseId> <text> | Attach a staff note to a case. | review |
/dw resolve <caseId> | Mark a case as resolved. | admin |
/dw exportcase <caseId> | Export a case to JSON for external review. | review |
/dw webhook <fingerprint> <url> | Set a per-rule Discord webhook URL. | admin |
/dw testwebhook <fingerprint> | Send a test Discord webhook for a rule. | admin |
/dw stats | Show live performance and cache statistics. | review |
/dw reload | Reload config, messages and the watchlist. | admin |
/dw to anything you like (say /antidupe) from the command section of config.yml. That one needs a full restart, not just a reload.Permissions
Granular nodes let you hand staff exactly what they need. Here are some sensible preset groups.
| Permission node | Grants | Default |
|---|---|---|
dupewatch.review | View the GUI, cases and evidence | op |
dupewatch.admin | Manage rules and destructive actions | op |
dupewatch.scan | Run manual scans | op |
dupewatch.alerts | Receive in-game staff alerts | op |
dupewatch.confiscate | Confiscate suspicious items from cases | op |
dupewatch.heatmap.teleport | Teleport to heatmap hotspots | op |
dupewatch.containerwatch.view | View container watch logs | op |
dupewatch.containerwatch.clear | Clear container watch logs | op |
dupewatch.moneywatch.view | View Money Watch status and graphs | op |
dupewatch.bypass | Exempt a player from all detection | false |
dupewatch.payall.bypass | Bypass pay-all mass payment detection | false |
Configuration
Almost everything is configurable through config.yml (750+ lines) and messages.yml (460+ lines). The essentials are below, and every option ships with inline comments.
Database
database: sqlite: # the default, no setup needed filename: "data.db" mysql: enabled: false # flip to true for MySQL + HikariCP pooling host: "localhost" port: 3306 database: "dupewatch" user: "dupewatch" password: "password" migration: autoMigrateOnStartup: true # moves file data into the DB, originals kept backup: enableAutoBackup: true # auto backup before upgradesScanning
scan: maxItemsPerScan: 1000 # cap items scanned per player onlyDirty: true # only scan inventories that changed sampleFraction: 0.1 # also re-check 10% of "clean" players maxConcurrentScans: 5 # parallel scan cap minimumScansForDetection: 5 growthDetection: doublingThreshold: 0.15 triplingThreshold: 0.20Money Watch
moneywatch: enabled: true pollIntervalSeconds: 5 anomaly: minAmountThreshold: 100.0 balanceDoublingThreshold: 2.0 growthRateThreshold: 5.0/dw reload. The config-version field is managed for you, so do not edit it by hand.Troubleshooting
Quick fixes for the things people hit most often. Still stuck? Our support team is one click away.
Frequently Asked
Ready to lock down your economy?
Set DupeWatch up in minutes and run the whole thing from the in-game GUI.