
Viper Anti-Dupe
Viper Anti-Dupe is a high-performance, Server-Side ONLY configurable anti-duplication mod for Minecraft. Blocks 25+ known dupe methods with zero client mods required. Fully configurable per-method — choose what to block and what to allow. 🔒✨
Compatibility
Minecraft: Java Edition
Platforms
Supported environments
Tags
Creators
Details
Viper Anti-Dupe
Viper Anti-Dupe is a server-side Fabric mod that blocks item and block duplication exploits on Minecraft servers. It works only on the server: players do not need to install anything. Protection is applied through server-side guards on block interactions, entity behavior, hoppers, pistons, containers and incoming player packets, so common duplication methods are stopped before extra items can be created.
Supported versions
| Minecraft | Java | Fabric Loader | Notes |
|---|---|---|---|
| 1.21 - 1.21.11 | 21 | 0.19.3+ | Full support, 25 blocked methods |
| 26.1 - 26.1.2 | 25 | 0.19.3+ | Full support, 25 blocked methods |
| 26.2 | 25 | 0.19.3+ | Full support, 25 blocked methods |
| 26.3 | 25 | 0.19.5+ | Full support, 26 blocked methods (adds shelf protection) |
Download the file whose supported Minecraft versions match your server. Fabric API is required on all versions.
How it works
- Every known duplication method has its own on/off switch in the config file. Each switch defaults to blocking.
- When a blocked duplication attempt is detected, the action is cancelled and the attempt is written to the audit log with a timestamp, the player name and the dupe type.
- Suspicious inventory packets (desynced container clicks, invalid stack splits, invalid creative-mode stacks) are cancelled and the player's container is re-synced.
- A configurable list of known dupable items lets you flag risky items. The mod ships with a default list covering rails, carpets, concrete powder, shulker boxes, gravity blocks, TNT, books, tridents, bee nests and related items.
- Configuration can be reloaded in game without restarting the server.
Config semantics
In config/viper-anti-dupe.json, each dupe method key follows one rule:
false= the method is BLOCKED (the mod prevents it). This is the default.true= the method is ALLOWED (the mod does not interfere with it).
Setting a method to true does not create an exploit; it only turns off this mod's protection for that method.
Blocked methods
| Method | Config key | What it stops |
|---|---|---|
| Book dupe | BookDupe | Oversized or invalid book edits used to duplicate written books |
| Shulker box nesting | ShulkerBoxDupe | Shulker boxes hidden inside other containers beyond the nesting limit |
| Rail dupe | RailDupe | Piston-driven rail duplication |
| Carpet dupe | CarpetDupe | Piston-driven carpet duplication |
| Horse quick-move | HorseQuickMoveDupe | Shift-click transfers in horse inventories that duplicate items |
| Stack split | StackSplitDupe | Invalid slot-click splits that create extra items |
| Hopper dupe | HopperDupe | Suspicious hopper transfers |
| Piston dupe | PistonDupe | TNT and other blocks duplicated by piston movement |
| Entity dimension dupe | EntityDimensionDupe | Duplication through vehicle detach and dimension changes |
| Trident dupe | TridentDupe | Thrown-trident collision duplication |
| Bee dupe | BeeDupe | Breaking bee nests and beehives for extra drops |
| Tripwire dupe | TripwireDupe | Tripwire update and break duplication |
| String dupe | StringDupe | Tripwire string duplication, with optional legacy restoration |
| Lectern dupe | LecternDupe | Invalid lectern book operations and takes |
| Tripwire hook dupe | TripwireHookDupe | Tripwire hook duplication, with optional legacy restoration |
| Gravity block dupe | GravityBlockDupe | Falling sand, gravel, anvil and similar block duplication |
| NBT list dupe | NBTListDupe | Oversized or malformed NBT data beyond MaximumItemNbtBytes |
| Item frame dupe | ItemFrameDupe | Rapid item-frame breaks that duplicate the held item |
| Update suppression | UpdateSuppressionDupe | Update-suppression based duplication setups |
| Container desync | ContainerDesyncDupe | Desynced container transactions, re-syncs the player container |
| Death dupe | DeathDupe | Rapid repeated deaths used to duplicate drops |
| Chunk rollback | ChunkRollbackDupe | Chunk save-state rollback duplication |
| Portal dupe | PortalDupe | Portal travel duplication |
| Bundle dupe | BundleDupe | Invalid bundle content removal |
| Crafter dupe | CrafterDupe | Rapid crafter firing used to duplicate output |
| Shelf dupe | ShelfDupe | Rapid shelf swap and break duplication with the 26.3 shelf blocks (26.3 file only) |
General config options
| Option | Default | Description |
|---|---|---|
| ConfigVersion | 1 | Config format version, managed by the mod |
| ModEnabled | true | Master switch for all protection |
| LoggingEnabled | true | Write blocked attempts to the audit log |
| DetailedAuditLogging | false | Log allowed actions in addition to blocked ones |
| NotifyOperators | true | Notify online operators when something is blocked |
| CancelSuspiciousTransactions | true | Cancel suspicious inventory transactions instead of only logging them |
| RestoreLegacyStringDupeWhenAllowed | true | Restore legacy string behavior when the string method is allowed |
| RestoreLegacyTripwireHookDupeWhenAllowed | true | Restore legacy tripwire hook behavior when that method is allowed |
| MaximumBookPages | 100 | Maximum pages accepted in an edited book |
| MaximumBookPageLength | 1024 | Maximum characters accepted per book page |
| MaximumItemNbtBytes | 2097152 | Maximum NBT payload size accepted per item |
| MaximumContainerNestingDepth | 8 | Maximum container-in-container nesting depth |
| TransactionHistoryTicks | 200 | How long inventory transactions are remembered for checks |
| DuplicateEntityDetectionTicks | 100 | Time window used for duplicate entity detection |
| OperatorPermissionLevel | 4 | Reserved operator permission level setting |
| KnownDupableItems | (built-in list) | Item IDs flagged as known dupable, manageable with the item commands |
New options are added to an existing config file automatically with their defaults; your other settings are kept.
Commands
All commands start with /viperantidupe and must be run by a player in game.
| Command | Description |
|---|---|
/viperantidupe reload |
Reload the config file without restarting |
/viperantidupe status |
Show mod version, enabled state, and blocked/allowed method counts |
/viperantidupe methods |
List every dupe method with its current BLOCKED or ALLOWED state |
/viperantidupe get <method> |
Show whether one method is ALLOWED or BLOCKED |
/viperantidupe set <method> <true/false> |
Allow (true) or block (false) one method, saved to the config |
/viperantidupe item get <id> |
Check whether an item ID is flagged as known dupable |
/viperantidupe item set <id> <true/false> |
Flag or unflag an item ID as known dupable |
/viperantidupe dumpitems |
Write every registered item ID to config/viper-anti-dupe-items.json |
/viperantidupe dumpknown |
Write the known-dupable item list to config/viper-anti-dupe-known-items.json |
/viperantidupe audit |
Show the 50 most recent audit log entries in chat |
Installation
- Install Fabric Loader on your server (0.19.3 or newer for 1.21.x, 26.1.x and 26.2; 0.19.5 or newer for 26.3).
- Install Fabric API for your Minecraft version.
- Put the matching Viper Anti-Dupe file into the server
modsfolder. - Start the server once so
config/viper-anti-dupe.jsonis created, then adjust the toggles to taste. - Run
/viperantidupe reloadin game after editing the config, or restart the server.
Audit entries are also appended to the log file configured by the logging options.

