DGuard

Dupes and exploits: closing them on a Minecraft server

A dupe copies items; an exploit abuses a bug in the game or the server — for profit or to crash it. Paper closes most known dupes by itself; updates, packet limits and the server rules take care of the rest. Here are Paper's settings, book and packet exploits, how to investigate, and where the anticheat fits in.

The DGuard team7 min read

In short: on Paper, TNT, carpet and rail duping, sand duping through End portals and bedrock breaking are off by default — don't turn them on in unsupported-settings without a deliberate decision. Keep the server and plugins updated: new dupes get fixed in new builds. Leave Paper's packet and book limits at their defaults, keep CoreProtect logs to find a duper, and ban dupes and bug abuse in your rules.

Dupe, exploit and cheat: the difference

What it isWho closes it
DupeA way to copy items or blocks: a chest of loot out of nothingThe server software and its updates
ExploitA bug in the game, the server or a plugin abused for profit or to crash the serverThe server software, plugins, their settings and updates
CheatA modified client: KillAura, Fly, ScaffoldThe anticheat
The line is blurry: many exploits send the server packets an honest client never would

The Minecraft Wiki notes that Mojang tries to remove duping in Survival in almost every update, and that on many servers duping items is a bannable offence. The exception is TNT duping: after several fixes it was ultimately allowed in the vanilla game.

What Paper fixes by default

Paper fixes many vanilla bugs — the most prevalent, per its docs, are TNT duplication and bedrock breaking. The rule: if a bug is confirmed on Mojang's tracker and has a priority assigned, Paper accepts a fix without waiting for Mojang. If Mojang declined the report, it's intended behaviour and Paper leaves it alone. Some fixes can be turned off in the unsupported-settings section of config/paper-global.yml:

SettingDefaultWhat true brings back
allow-piston-duplicationfalseTNT, carpet and rail duping (not sand duping)
allow-unsafe-end-portal-teleportationfalseExploits with End portal teleportation, such as sand duping
skip-tripwire-hook-placement-validationfalseTripwire hook duping
allow-permanent-block-break-exploitsfalseBreaking bedrock, End portal frames and portals with vanilla exploits
allow-headless-pistonsfalseHeadless pistons — usually used to break unbreakable blocks
From Paper's docs: paper-global.yml and "Bug fixes"

In the same file, update-equipment-on-player-actions: true (the default) stops players from exploiting attributes by switching equipment right before using it, and oversized-item-component-sanitizer.dont-sanitize: [] keeps the protection against oversized items — changing it, per the docs, re-enables exploits.

Fixes in the world settings

Key in paper-world-defaults.ymlDefaultWhat it does
unsupported-settings.fix-invulnerable-end-crystal-exploittruePrevents invulnerable End crystals (MC-108513)
fixes.split-overstacked-loottrueSplits overstacked items — otherwise a chunk can become uninhabitable as players keep getting kicked for oversized packets
fixes.disable-unloaded-chunk-enderpearl-exploitfalseWith true, an ender pearl in an unloaded chunk doesn't remember its thrower
entities.spawning.duplicate-uuid.modeSAFE_REGENWhat to do with entities sharing a UUID: give a new one or delete the copy
From Paper's docs: world configuration

Packet and book exploits

Some exploits aren't about game mechanics at all: the client sends a flood of packets or an item with huge data to hang the server or bloat chunk and player data. paper-global.yml has limits for that — keep them on:

  • `packet-limiter`. By default 500 packets per 7 seconds per player, then a kick (KICK); you can instead drop the excess (DROP) and set limits for individual packets.
  • `spam-limiter`. Kicks for tab-completion spam (tab-spam-limit: 500) and recipe spam (recipe-spam-limit: 20).
  • `item-validation.book`. A book page up to 16384 characters, title and author up to 8192. Together with book-size (page-max: 2560 bytes per page, total-multiplier: 0.98) it caps a book's total weight.
  • `item-validation.resolve-selectors-in-books: false`. Per the docs, with true players in creative mode get yet another way to crash the server.

Books can be a weapon even without an exploit: a bot writes them by the hundred, and chests of heavy books bloat the world's save data — that's BookBot. The impossible packets that exploits are built on are covered in BadPackets.

Updates are the main defence

New dupes are found all the time, and they're fixed in new builds of the server software and plugins. PaperMC recommends updating Paper at least once a week — with a backup, and never replacing a jar on a running server. If a dupe involves a plugin, update it and tell the author; until there's a fix, disable the plugin or the feature. Moving to a new game version is covered in updating the server.

How to find a duper

  1. 1

    Spot the anomaly

    A sudden surge of valuable items in the economy, a player with chests of identical items, TPS complaints near someone's base.

  2. 2

    Check CoreProtect

    a:+container and a:-container — what the player put in and took out of chests, a:inventory and a:item — what went into their inventory, #count — how many rows. Commands are in CoreProtect.

  3. 3

    Reproduce it on a copy

    Not on the live server: restore a copy from a backup, repeat the steps and see whether items duplicate.

  4. 4

    Close it and update

    Update the server or the plugin, disable the mechanic or the setting. Report the exploit to the developers, not in public chat.

  5. 5

    Clean up

    Remove the duped items, roll back with CoreProtect where you can, and punish according to the rules.

what Steve put in chests and picked up in a day
/co lookup u:Steve t:1d a:+container i:diamond_block,netherite_ingot
/co lookup u:Steve t:1d a:+item #count

A punishment for duping only works if it's written down: "using bugs and dupes is forbidden; report any you find to the staff". How to word it is in server rules.

Where the anticheat comes in

An anticheat won't fix a bug in the server's code — that's the job of the server software and its updates. But many exploits give themselves away with packets an honest client never sends: a head pitch beyond 90°, a slot outside the hotbar, a click on a window slot that doesn't exist, a stream of books. DGuard — the best anticheat for a modern Minecraft server — checks those packets: BadPackets, packet order within a tick, and BookBot. In our comparison only DGuard has a full BookBot check.

CheatDGuardGrimACVulcanPolarIntaveMatrix
BadPacketsimpossible packets
Packet order in a tickthe cheat reorders actionspartly: not described — only a generic protocol checkpartly: a combat-protocol check; order inside a tick isn't described
BookBotwrites books with a botpartly: only invalid books; a bot within the limits passes
Packets and exploits: which anticheats have a full checkAll 47 kinds of cheats in the comparison

The checks run in network threads — 0.03 % of one core on the main thread — and a punishment rests on accumulated evidence, not one odd packet: players join from different versions through ViaVersion, and a rule has to know what's normal for them. Every ban comes with a report you can match against CoreProtect's logs.

FAQ

What is a dupe in Minecraft?

A way to copy items or blocks through a bug in the game or the server. Mojang removes dupes in almost every update, and on many servers duping is a bannable offence.

How do I enable TNT duping on Paper?

unsupported-settings.allow-piston-duplication: true in config/paper-global.yml. Carpet and rail duping come back with it — it's the same bug. Paper doesn't support servers with these settings on.

How do I disable dupes on my server?

Run Paper: known TNT, sand and tripwire hook dupes and bedrock breaking are off there by default. Don't enable unsupported-settings, update the server and plugins regularly, and keep the packet and book limits on.

Does an anticheat catch dupes?

Only an update closes the bug in the server's code. An anticheat catches the packets exploits are built on: DGuard checks BadPackets, packet order and BookBot.

Sources

All sections

Run the best anticheat for modern Minecraft

DGuard catches all 47 kinds of cheats in our comparison — the closest rival, Intave, has 27. Full protection on every plan, free up to 30 players online.