How to Limit the Mace to One Per World in Minecraft Multiplayer

Published on

The Mace is overpowered and your players keep farming Trial Chambers for more. Here is how to restrict it to one single instance per world using datapacks or commands.

Written by Jochem Wassenaar – CEO of Space-Node – 15+ years combined experience in game server hosting, VPS infrastructure, and 24/7 streaming solutions. Read author bio →

minecraft limit mace one per world guide

The Mace was added in 1.21 and it changed PvP completely. A single falling hit with the Mace does massive damage based on fall distance. Combined with Wind Charges for quick elevation, it is the most powerful melee weapon in the game.

On multiplayer servers, this creates a balancing problem. Players farm Trial Chambers, collect multiple Maces, and stomp everyone in PvP. Some server owners want to limit the Mace to one per world to keep it rare and valuable.

Here are three ways to do it.


Method 1: Scoreboard Detection and Removal

This method uses a scoreboard to track how many Maces exist in the world. When the count exceeds one, extra Maces are removed from player inventories.

Step 1: Create the scoreboard

/scoreboard objectives add maceCount dummy

Step 2: Set up a repeating command block chain

Block 1 (Repeating, Always Active): Reset the counter

/scoreboard players set #total maceCount 0

Block 2 (Chain, Always Active): Count Maces in inventories

/execute as @a[nbt={Inventory:[{id:"minecraft:mace"}]}] run scoreboard players add #total maceCount 1

Block 3 (Chain, Always Active): If more than 1, clear extras

/execute if score #total maceCount matches 2.. as @a[nbt={Inventory:[{id:"minecraft:mace"}]}] run clear @s minecraft:mace

Block 4 (Chain, Conditional): Give back one Mace to the world

/execute as @r[nbt={Inventory:[{id:"minecraft:mace"}]}] run give @s minecraft:mace 1

Wait. This approach has a race condition. A simpler method works better.


Method 2: Simple Datapack with Advancement Trigger

Create a datapack that awards a custom advancement when someone obtains a Mace, then disables Mace drops from vaults.

Datapack structure:

datapack/
  pack.mcmeta
  data/
    custom/
      advancement/
        got_mace.json
      recipe/
        (empty, no Mace recipe to disable)
      loot_table/
        (override Trial Chamber vault tables)

pack.mcmeta:

{
  "pack": {
    "pack_format": 57,
    "description": "Limits Mace to one per world"
  }
}

Advancement file (got_mace.json):

{
  "criteria": {
    "has_mace": {
      "trigger": "minecraft:inventory_changed",
      "conditions": {
        "items": [
          {
            "items": "minecraft:mace"
          }
        ]
      }
    }
  },
  "rewards": {
    "function": "custom:on_mace_obtained"
  }
}

Function file (on_mace_obtained.mcfunction):

# Announce the Mace holder
tellraw @a [{"text":"[SERVER] ","color":"gold"},{"selector":"@s"},{"text":" found the Mace! There is only one in this world.","color":"yellow"}]

# Revoke advancement so it can trigger again if Mace changes hands
advancement revoke @s only custom:got_mace

This does not remove extra Maces automatically, but it creates awareness. For actual enforcement, combine it with Method 1 or Method 3.


Method 3: Repeating Command Block (Simplest)

The simplest approach uses a single repeating command that runs every few seconds.

Repeating Command Block:

/execute store result score #maces maceCount run clear @a minecraft:mace 0

The 0 at the end means "count items without removing them." The result stores the total Mace count across all inventories.

Chain Block (Conditional):

/execute if score #maces maceCount matches 2.. run title @a[nbt={Inventory:[{id:"minecraft:mace"}]}] actionbar {"text":"Extra Maces detected! Contact an admin.","color":"red"}

For automatic removal, add:

/execute if score #maces maceCount matches 2.. as @a[nbt={Inventory:[{id:"minecraft:mace"}]}] at @s run loot spawn ~ ~ ~ loot custom:single_mace

This drops all Maces and spawns a controlled loot table that only gives one back.


The Practical Approach

For most survival servers, pure command-based limits get complicated. The practical approach:

  1. Modify the Trial Chamber loot tables via a datapack so the Mace has a 0% drop rate after the first one is found
  2. Use a world flag (scoreboard value) to track whether the Mace has been obtained
  3. When a second player finds a Trial Chamber vault, the Mace is replaced with a heavy core or another rare item

This keeps the discovery experience intact while making the Mace genuinely one-of-a-kind.


Plugin Alternative

If you run a Paper/Spigot server, plugins handle this more cleanly. Search for "ItemLimiter" or "UniqueItems" on SpigotMC. These plugins let you set a maximum count for any item ID across the entire server. Configure the Mace to max count 1 and the plugin handles detection, removal, and player notification automatically.

Space-Node servers support datapacks and plugins through the built-in file manager. Upload your datapack to the world/datapacks/ folder and restart. Get started here.

Jochem Wassenaar

About the Author

Jochem Wassenaar – CEO of Space-Node – Experts in game server hosting, VPS infrastructure, and 24/7 streaming solutions with 15+ years combined experience.

Since 2023
500+ servers hosted
4.8/5 avg rating

Our team specializes in Minecraft, FiveM, Rust, and 24/7 streaming infrastructure, operating enterprise-grade AMD Ryzen 9 hardware in Netherlands datacenters. We maintain GDPR compliance and ISO 27001-aligned security standards.

View Space-Node's full team bio and credentials →

Start Minecraft Server in Minutes

Join content creators worldwide who trust our minecraft infrastructure. Setup is instant and support is always available.

How to Limit the Mace to One Per World in Minecraft Multiplayer