HomeJavaModsxDupe
xDupe
xDupe — screenshot 1xDupe — screenshot 2

xDupe

xDupe is a lightweight, open-source Paper plugin that brings back the classic piston-item frame duplication mechanic for anarchy servers. Originally patched by both Mojang and Paper, this mechanic is carefully re-implemented to bypass modern anti-dupe protections while keeping full NBT integrity. Fully configurable via both file and in-game commands.


Table of Contents


Features


How It Works

                         ┌─────────────────────┐
                         │   Piston Extends     │
                         └──────────┬──────────┘
                                    │
                         ┌──────────v──────────┐
                         │  Item Frame Found   │
                         │  in front of piston │
                         └──────────┬──────────┘
                                    │
                         ┌──────────v──────────┐
                         │  Frame has item?    │
                         └──────┬──────────┬───┘
                                │          │
                              yes         no
                                │          │
                     ┌──────────v──┐       │
                     │  Chance     │       │
                     │  Check      │       │
                     └──────┬──────┘       │
                            │              │
                    ┌───────┴───────┐      │
                    │               │      │
                success          failed    │
                    │               │      │
            ┌───────v───────┐      │      │
            │ Drop original  │      │      │
            │ + extra copies │      │      │
            │ (+ frame if    │      │      │
            │  enabled)      │      │      │
            └───────┬───────┘      │      │
                    │              │      │
            ┌───────v───────┐      │      │
            │ Remove frame  │      │      │
            │ from world    │      │      │
            └───────┬───────┘      │      │
                    │              │      │
                    └──────┬───────┘      │
                           │              │
                    ┌──────v──────┐       │
                    │   Done     │       │
                    └────────────┘       │
                              ┌──────────v──────────┐
                              │  Natural Break      │
                              │  (vanilla behavior) │
                              └─────────────────────┘

Technical Details

When a piston extends, the server fires a BlockPistonExtendEvent. xDupe listens at EventPriority.LOWEST — before any anti-cheat or anti-dupe plugin has a chance to cancel the event. At this point:

  1. The plugin calculates the block position the piston head will occupy.
  2. It searches for item frames at that exact block location using a bounding box query (getNearbyEntities with 0.75 radius).
  3. If an item frame with an item is found, the configured chance is rolled.
  4. On success: the item is cloned with ItemStack.clone(), which copies all NBT data including enchantments, custom names, lore, and attributes.
  5. The original item, plus the configured number of duplicates, are dropped at the frame's location using dropItemNaturally.
  6. If drop-frame is enabled, the item frame itself is also dropped.
  7. The frame entity is immediately removed from the world with remove(), preventing any other plugin from interfering or creating additional drops.
  8. On failure: the plugin does nothing, and the frame breaks naturally with vanilla behavior.

Installation

Step 1: Download

Download the latest xDupe.jar from the Releases page.

Step 2: Install

Place the xDupe.jar file into your server's plugins/ directory.

server/
├── plugins/
│   ├── xDupe.jar          ← place here
│   ├── ...
│   └── ...
├── world/
├── world_nether/
├── world_the_end/
├── server.properties
├── ...

Step 3: Start or Reload

Restart your server completely, or if you're on Paper 1.20+, use:

/reload confirm

Step 4: Verify

Run this command in-game or from the console:

/xdupe

You should see the xDupe status screen with default configuration values.

Requirements

Dependency Minimum Version
Server Paper 1.20 (or any Paper-compatible fork)
Java Java 17 (JDK 17 or higher)

Configuration

On first run, xDupe creates plugins/xDupe/config.yml automatically.

Default Configuration

chance: 100
duplicate-amount: 1
drop-frame: true

Options Reference

Option Type Default Range Description
chance int 100 0 – 100 The percentage chance that the duplication will trigger. At 100, it always triggers. At 0, it never triggers.
duplicate-amount int 1 0 – ∞ How many EXTRA copies are dropped on top of the original item. Total items dropped = 1 (original) + duplicate-amount.
drop-frame boolean true true / false Whether the item frame itself drops as an item when the dupe triggers.

Examples

Fair Anarchy (50% chance, 1 extra copy)

chance: 50
duplicate-amount: 1
drop-frame: true

Extreme Overpowered (100% chance, 10 extra copies)

chance: 100
duplicate-amount: 10
drop-frame: false

Disabled (duplication off)

chance: 0
duplicate-amount: 0
drop-frame: false

Vanilla-Like (100% chance, no extra, but frame drops)

chance: 100
duplicate-amount: 0
drop-frame: true

Commands

Command Description Permission
/xdupe Display help menu and current configuration xdupe.admin
/xdupe help Display help menu and current configuration xdupe.admin
/xdupe chance [value] View or set the duplication chance (0–100) xdupe.admin
/xdupe amount [value] View or set the number of extra copies (≥0) xdupe.admin
/xdupe dropframe [true|false] View or set whether the frame drops xdupe.admin
/xdupe reload Reload configuration from config.yml xdupe.admin

Alias: /dupe

Usage Examples

/xdupe
    ── shows current settings and all available commands

/xdupe chance
    ── shows current chance value (e.g., "current chance: 100%")

/xdupe chance 50
    ── sets chance to 50%

/xdupe amount 3
    ── sets duplicate-amount to 3 (total 4 items per dupe)

/xdupe dropframe false
    ── disables frame dropping

/xdupe reload
    ── reloads config.yml from disk

Note: All commands have tab completion. Start typing and press Tab to see suggestions.


Permissions

Permission Default Description
xdupe.admin op Allows using all /xdupe commands

Example for granting to a non-op player:

/manadd PlayerName xdupe.admin

Building from Source

Prerequisites

Importing into IntelliJ IDEA

  1. Open IntelliJ IDEA
  2. Click File → Open
  3. Select the xDupe directory
  4. IntelliJ will automatically detect the Maven project and import dependencies
  5. Use the Maven sidebar to run Package or run mvn clean package in the terminal

Supported Versions

Minecraft Version Paper Support Status
1.20 Fully tested
1.20.1 Fully tested
1.20.2 Fully tested
1.20.3 Fully tested
1.20.4 Fully tested
1.20.5 Compatible
1.20.6 Compatible
1.21 Compatible
1.21.1 Compatible
1.21.2+ Should work (API stable)

Any Paper-compatible fork (Purpur, Pufferfish, etc.) should work as well.


Troubleshooting

Plugin doesn't load

Dupe isn't working

Command not found

Items lose enchantments or data


FAQ

Q: Is this bannable?
A: On anarchy servers, no. That's what this plugin is made for. On vanilla or survival servers, duplication is typically against the rules.

Q: Does this work with Spigot?
A: It should work on Spigot too, but Paper is recommended. The plugin uses Paper's getNearbyEntities with a predicate filter, which is available on Spigot as well. However, the anti-dupe bypass is specifically designed for Paper's built-in protections.

Q: Can I use this with other dupe plugins?
A: Yes, but be aware they may conflict. If using multiple dupe plugins, test them together first.

Q: Does this dupe shulker boxes with their contents?
A: Yes! Since ItemStack.clone() preserves all NBT data, shulker box contents, written books, enchanted items, and any other NBT data are all fully duplicated.

Q: How do I reset the config to default?
A: Delete plugins/xDupe/config.yml and run /xdupe reload or restart the server. A fresh config will be generated.

Q: Will items despawn?
A: Duplicated items are regular dropped items and follow standard Minecraft despawn timers (5 minutes by default). This is not controlled by xDupe.


Notes


License

MIT License

Copyright (c) 2026 EMIRLQQ1

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

xDupe — Made with ❤️ by EMIRLQQ1

Quick facts

Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.

Verified by MCModsHub

These come from our own check of the pack file, not from the source page.

Explore more