Skip to content
OrePlugins

DupeSight

Duplication detection with evidence you can read.

Product pagev1.0.01.21 through 1.26 · Java 21+

Installation

  1. 1Drop the jar into plugins/ and restart. There are no dependencies — Paper fetches sqlite-jdbc itself on first boot, and shares one copy with any other plugin using the same version.
  2. 2On first boot DupeSight writes config.yml and messages.yml, creates evidence.db, and logs the material counts it loaded. Check those counts against your file: anything that did not match a material on your version is named in the lines above rather than silently dropped.
  3. 3Leave punishment off. It already is. Play normally for a day, then read /dupesight history and find out what your server actually looks like before anything starts acting on it.

The conservation check

Every material in material-values is weighted on a shared scale where one diamond is 1. Inside an inventory that only moves items — chest, barrel, shulker, ender chest, hopper, dropper, dispenser — the total value a player can see must never increase.

Legitimate transformations are neutral by construction. Nine diamonds and one diamond block are both 9. Four netherite scrap and one ingot are both 4. Shulker contents are counted recursively, so packing a box changes nothing. Value arriving from a hopper into an open container is credited and subtracted, and the check is skipped entirely while a second player is viewing the same container.

Anvils, smithing tables, villager trades, furnaces, enchanting tables and crafting grids are deliberately absent from that list. They legitimately turn one thing into another, and plugin GUIs conjure items outright — including any of them would flag every normal use.

Fingerprints

Container contents are hashed, sorted first so that shuffling a slot does not change the hash, and recorded against the player holding them. When the identical contents show up under a second player — days later, across restarts — that is a SharedFingerprint alert.

Empty containers and containers holding nothing of value are never fingerprinted. That is what stops two spare shulkers being reported forever.

The duplicate-fingerprint-threshold setting decides how many byte-identical containers one player may carry before it counts as evidence.

Reading the history

Red lines scored violation points. Grey lines are context — drops, pickups, deaths, joins — and never score. They exist so the red lines have a timeline around them.

Every lookup resolves through the plugin’s own player table rather than the server’s online list, so inspect, history and reset all work for players who have logged off. That is the case an investigation is actually in.

Reach for /dupesight fingerprint when a player hands you a suspicious shulker. It gives you the hash, what the contents are worth, and every player DupeSight has seen holding them.

Turning on enforcement

Set auto-kick and auto-ban true once you have read a day of real evidence, and set their violation-level thresholds to taste. Both run as console commands with the player, check and violation level substituted, so they flow through whatever punishment plugin your staff already uses.

The cancel-illegal-stack action trims an over-stacked stack back to its legal maximum. It is off by default because silently editing a player’s inventory is a support ticket if the detection was wrong.

The alert cooldown gates violation points as well as messages. Without that, one offending item sitting in a hopper could walk somebody up to a ban threshold on its own.

Permissions

dupesight.inspect covers inspect, history and fingerprint. dupesight.alerts receives alerts in chat. dupesight.admin confers both and adds reset and reload.

The two bypass nodes default to false rather than op. Defaulting a monitoring bypass to op exempts every staff member from the audit trail, which is the opposite of what an audit trail is for. Grant them deliberately or not at all.

Staff who want quiet should use /dupesight alerts off rather than having the permission taken away.

Commands

DupeSight commands and permissions
CommandWhat it doesPermission
/dupesight inspect (player)Summary, violation level and entry counts. Works for offline players.dupesight.inspect
/dupesight history (player) (page)The evidence timeline, ten per page. Red lines scored; grey lines are context.dupesight.inspect
/dupesight fingerprintFingerprint the container in your hand and list every player seen holding those contents.dupesight.inspect
/dupesight alerts (on|off)Silence or restore alerts for yourself without losing the permission.dupesight.alerts
/dupesight reset (player)Clear one player’s evidence, violations and fingerprints. There is no undo.dupesight.admin
/dupesight statsStorage and runtime counters, and whether the conservation check is active.dupesight.admin
/dupesight reloadRe-read config.yml and messages.yml without a restart.dupesight.admin

Still stuck?

Post in Discord with your server version and the relevant part of the log. That is almost always enough to get a straight answer the same day.

Get help