Anti-dupe V6

realm or world from every single dupe method, relog, bundles, all you can think of

This Anti-Dupe Script is a server-side mitigation pack for common duplication exploit outcomes and near-player setups in Minecraft Bedrock Edition. It is designed to work across Worlds, Realms, and Servers, focusing on player-centric scanning (near active players) and immediate mitigation (remove/clear/eject invalid or restricted states).

 

Primary coverage:

 

Join-Leave (Ghost Stack) Dupe

Tall Plant / Piston Dupe

Bundle-style transfer dupes (via Hoppers and Droppers)

Additional optional hardening included:

 

Illegal stack size enforcement (clears impossible/invalid stacks; enforces a hard cap of 64)

Coverage reminder: Plant / hopper / dropper checks scan only a small cube around each player (SCAN_RADIUS = 4). If nobody is near a setup, it will not be scanned.

 

No Experiments Required

This pack targets the stable Script API modules (@minecraft/server and @minecraft/server-ui) and does not require enabling Beta APIs or other experimental toggles when you reference stable module versions in your manifest.

 

Important note: Your host/world must still allow scripting to run (some hosting panels have an “Enable Scripts” toggle), but this is distinct from enabling experimental gameplay features.

Quick Start (Server Owners)

Install the pack as a Behaviour Pack on your Bedrock world/server.

Ensure the Script API modules are available (@minecraft/server + @minecraft/server-ui).

Open the Anti-Dupe UI (how you access it depends on how you wired the pack into your world).

Confirm the protections you want are enabled under Settings → Configuration (World).

The pack includes SETTINGS_ITEM = minecraft:bedrock as a default constant used for “open menu” integration, but the exact trigger (item, command, NPC, etc.) depends on your wiring.

 

In-Game Tags (Players & Staff)

Make someone an Admin (receives admin alerts, excluded from punishments)

/tag <player> add Admin

Let a player opt out of public Anti-Dupe chat messages

/tag <player> add antidupe:disable_public_msg

Let an Admin opt out of admin alerts

/tag <player> add antidupe:disable_admin_msg

Let an Admin opt out of all Anti-Dupe alerts (public + admin)

/tag <player> add antidupe:disable_alert

These tags are safe to manage in-game at any time. Changes apply immediately.

 

Adding / Managing Restricted Items (In-Game)

The hopper and dropper protections use a Restricted Items list.

 

What it does

Hoppers: restricted items are removed from the hopper inventory.

Droppers: restricted items are ejected into the world and removed from the dropper inventory.

How to add items

Use Settings → Restricted Items (UI).

 

Accepts item IDs (case-insensitive)

Sanitises IDs into namespace:item format where possible

Capped at 90 entries

Restricted Items Manager Screenshot - Restricted Items Manager

 

Default restricted list targets bundles and their variants (e.g., minecraft:bundle, minecraft:red_bundle, etc.).

 

What This Script Detects & Mitigates

This section reflects current behaviour while remaining readable for server owners.

 

1) Join-Leave Dupe Protection (Ghost Stack)

When it runs: On initial spawn (playerSpawn with initialSpawn === true).

 

What it checks (simplified):

 

The player has a full stack on the cursor (not a normal inventory slot)

Their inventory has no empty slots

What it does:

 

Drops 1 item of that type at the player

Clears the cursor stack

Logs: Ghost Stack Dupe (mode: attempted)

Ghost Stack Mitigation Result Screenshot - Ghost Stack Mitigation Result

 

Developer detail (exact checks):

 

Cursor item: held.amount === held.maxAmount

Inventory empty slots: emptySlotsCount === 0

2) Illegal Stack Size Enforcement

When it runs: Every ILLEGAL_STACK_SCAN_TICKS = 40 ticks (~2 seconds at 20 TPS) per player.

 

What it removes:

 

Non-finite stack amounts

amount <= 0

amount > stack.maxAmount

Any stack above 64 (hard cap enforced by the script)

What it does:

 

Clears illegal stacks from inventory + cursor

Logs: Illegal Stack Size (mode: detected)

Compatibility note: If you intentionally run mechanics that allow stacks above 64, this feature will conflict.

 

3) Tall Plant / Piston Dupe Protection

When it runs: In the player-centric scanner (near players only).

 

What it targets:

 

Two-high plants (tall grass, large fern, sunflower, rose bush, lilac, peony, tall seagrass, etc.)

Pistons/sticky pistons placed close to these plants (common “near-player setup” pattern)

What it does:

 

Searches nearby for pistons at distances 1–2 blocks in 8 directions

Removes the piston (direct set when possible; otherwise falls back to setblock)

Logs: Piston Dupe (mode: attempted)

Piston Removal Example Screenshot - Piston Removal Example

 

4) Restricted Item Removal in Hoppers

When it runs: In the player-centric scanner (near players only).

 

What it does:

 

Scans nearby minecraft:hopper inventories

Removes restricted items (clears slots)

Logs: Hopper Dupe (mode: attempted)

Hopper Removal Example Screenshot - Hopper Removal Example

 

5) Restricted Item Ejection from Droppers

When it runs: In the player-centric scanner (near players only).

 

What it does:

 

Scans nearby minecraft:dropper inventories

For each restricted stack:

Spawns it above the dropper (not destroyed)

Clears the slot

Logs: Dropper Dupe (mode: attempted) with (Item Ejected) context

Dropper Ejection Example Screenshot - Dropper Ejection Example

 

Scanning Model (Performance & Coverage)

Player-Centric Scan Radius

The scanner checks a 9×9×9 cube around each player:

dx, dy, dz from -4 to +4 around the player’s floored position

Plant/hopper/dropper protections apply only inside that cube

Throttling / Work Budget

The scanner runs as a generator with a per-tick budget:

BLOCKS_PER_TICK_LIMIT = 2000 scan steps per tick (shared across all players)

With many players, scans may take multiple ticks to cycle

Practical meaning: strongest coverage where players are active (spawn, bases, shops). This is not a global world scan.

 

Messaging & Alerts (What Players Will See)

Public Chat Alerts

Sent to everyone except players with antidupe:disable_public_msg.

 

Formats:

 

Attempted: <Anti-Dupe> <Player> attempted a <Incident Type> with <Item/Context>.

Detected: <Anti-Dupe> <Player> was found with <Incident Type>: <Item/Context>. Item removed.

Public Chat Alert Example Screenshot - Public Chat Alert Example

 

In current behaviour, detected is used primarily by Illegal Stack Size. Most other protections emit attempted.

 

Admin Alerts

Sent to players with the Admin tag.

 

Admin opt-outs:

 

antidupe:disable_admin_msg (admin alerts only)

antidupe:disable_alert (all alerts)

Admin alerts include:

 

Incident phrasing (attempted/detected)

Dimension + coordinates

Nearby players within 50 blocks (max 12 names)

Admin Alert Example Screenshot - Admin Alert Example

 

Logs & Violation Tracking

Incident Logs

In-memory rolling log: max 100 entries

UI shows: 25 newest

If Dynamic Properties are supported, logs persist under antidupe:logs (size-capped; older entries dropped to fit)

Incident Log Viewer Screenshot - Incident Log Viewer

 

Scoreboard Objectives (If Supported)

ad_total (per-player total)

ad_ghost

ad_plant

ad_hopper

ad_dropper

ad_illegal

ad_other

ad_global (global count stored under participant #global)

Persistent Registry (If Supported)

antidupe:vstats stores high-level totals + “most recent” metadata

violations_db stores per-player entries used by the punishments UI and kick-loop

Migrates legacy violators_db into violations_db if found

Violations Dashboard / Leaderboard Screenshot - Violations Dashboard / Leaderboard

 

Punishments (Optional, Configurable)

Punishments are driven by world configuration (antidupe:config when persistence is available).

 

Defaults (as shipped)

Punishments: enabled

Kicks: disabled by default (allowKick: false)

Default thresholds:

Ghost: 1

Piston (plant): 1

Hopper: 3

Dropper: 3

Illegal: 1

Other: disabled

Punishments / Global Options Screenshot - Punishments / Global Options

 

What punishments can do

Per dupe type (if enabled/configured):

 

Apply a type-specific tag (optional)

Apply a global punishment tag once threshold is reached (optional)

Kick at threshold (only if allowKick: true and that type enables kicking)

Kick on repeat if already tagged (optional)

Safety / Bypass

Admins are never punished (Admin tag is excluded).

A bypass tag can be configured (players with it are exempt).

Kick attempts are throttled by a cooldown (cooldownTicks).

Kick Loop (Persistent Enforcement)

The registry supports a kickLoop flag:

 

When enabled for a player, they may be kicked on join at a configured interval

Intended for repeat offenders

Violation Registry / Player Detail View Screenshot - Violation Registry / Player Detail View

 

Kicking uses /kick. Your environment must allow commands for kicks to succeed.

 

Compatibility / Requirements

Requires a Bedrock environment that supports:

 

@minecraft/server (server-side Script API)

@minecraft/server-ui (Script UI)

Recommended (for best experience, but not required):

 

Dynamic Properties (config + logs + violation registry persistence)

Scoreboard API (per-player breakdowns / leaderboards)

Command-dependent behaviour:

 

Piston removal may fall back to setblock if direct block mutation is unavailable.

Kicks require /kick to be allowed.

What This Pack Does Not Do

It does not scan the entire world continuously (near-player scanning only).

It does not strip restricted items from general storage (chests, barrels, etc.).

It is not a guarantee against all dupes/exploits; it mitigates observable states/setups it can detect.

It treats stacks above 64 as illegal and removes them.

Troubleshooting / FAQ

“Nothing is being detected.”

Ensure players are near the suspected setup (scan radius is small).

Verify protections are enabled in Settings → Configuration (World).

Settings / Configuration Screenshot - Settings / Configuration

 

“Admins are not receiving alerts.”

Ensure staff have the Admin tag: /tag <player> add Admin

Check opt-out tags:

antidupe:disable_admin_msg

antidupe:disable_alert

“Logs do not persist after restart.”

Your runtime likely does not support Dynamic Properties. Logs will be session-only.

“Players are being kicked unexpectedly.”

Kicks are disabled by default. If enabled:

Review allowKick, thresholds, cooldown, and kick-loop settings.

Use a bypass tag for trusted accounts (configured in Punishments).

The Anti-dupe V6 Team

profile avatar
Owner
  • 1
    Projects
  • 47
    Downloads