
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:
- Modify the Trial Chamber loot tables via a datapack so the Mace has a 0% drop rate after the first one is found
- Use a world flag (scoreboard value) to track whether the Mace has been obtained
- 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.
