21

I have a spawn area I am hoping to make a safe haven, so I have a command block on a clock that kills each hostile mob type. This works to keep the place free of any hostile mobs, however every night I see rotten flesh, bones, arrows, and string everywhere.

I would like to add something to my command blocks so that they are killed without dropping loot. How can I accomplish this?

Note that I want mobs to drop loot generally elsewhere in the world, so /gamerule doMobLoot false will not do the trick for me. I'm hoping for a command that only applies to the mobs killed by the command block, and not anything else.

1
  • 1
    Watch out for unintended consequences. Even without loot, a crafty player may well develop strategies around luring mobs to the spawn area. Jul 4, 2016 at 20:35

6 Answers 6

38

You can simply teleport all hostile mobs in a certain radius 256 blocks down. May they, and their drops, rest in peace in the void below the world.

2
  • 1
    Fantastic idea, thank you. This has the added benefit of not seeing or hearing the mob's death.
    – Gigazelle
    Jul 27, 2016 at 20:05
  • I don't think this is the best method. If there is lag, this will not prevent it at all.
    – Korogue
    Apr 9, 2021 at 16:33
46

The DeathLootTable string tag can modify which loot table the mob will use when killed. The "empty" loot table will cause it to drop nothing:

1.12 and lower:

/entitydata @e[type=Zombie,r=40] {DeathLootTable:"minecraft:empty"}

1.13:

/execute as @e[type=zombie,distance=..40] run data merge entity @s {DeathLootTable:"minecraft:empty"}
8

You should teleport the entity into the void. That will drop the items, but in the void too.

/tp @e[selector] ~ -100000 ~

This will take a few gameticks to kill the mob, but with the amount of natural spawns, this does not matter.

4

I have a not so compact idea, but it will fit for your needs:

  1. First you will need to give a score for each item you don't need to be on ground. I added the r selector, the number depending of your spawn radius

    /scoreboard objectives add trash dummy - Add the scoreboard
    

Now these command in a clock / repeating command block:

/scoreboard players set @e[type=Item,r=50] trash 1 {Item:{id:"minecraft:bone"}}

/scoreboard players set @e[type=Item,r=50] trash 2 {Item:{id:"minecraft:rotten_flesh"}}

Explanation : Each type of item will have their own number in the scoreboard to diffetentiate them later. I wrote only some examples above. You can continue the list

  1. Now that all your "trash" has their own "recognize ID" just simply run this command in a repeating command block.

    /kill @e[score_trash_min=1,score_trash=#]
    

Explanation : Where I put the # mark , you need to put the maximum number of item you put on your "kill list". So I pretend I choose 6 type of items to be erased, so I will put put 6 instead of #.

1
  • The teleporting ideas are good, but you all don't payed enough attention to what he said. He already have a killing mob machine, but he needs something to clear the items. However, your ideas in a big image are more compact than mine.
    – iDoomfull
    Jul 4, 2016 at 7:47
0

The old-fashioned way would be to build a structure that keeps mobs out (a fence is sufficient) and adequate lighting inside.

1
  • 4
    the question has the minecraft-commands so I assume they were looking for a command to solve this.
    – Codingale
    Feb 23, 2017 at 9:57
0

Give your self 2 command blocks, set at repeating. unconditional, no Redstone in one paste this: kill @e[type=minecraft:creeper,distance=..170]

in the second one paste this: kill@e[type=minecraft:item,nbt{Item{id:"minecraft:gunpowder"}},distance=..170]

-170 is how many blocks around the command block it will kill entities for, you must put the .. before the 170(or how every many blocks out you want to go.) this works in 1.18. you will need to replace creeper with what ever mob and replace gunpowder with that mobs specific drop. ex: for zombie it will be "minecraft:zombie" and "minecraft:rotten_flesh"

1
  • Hi MissMadness, welcome to Arqade! It seems like this answer would also delete mob loot that the player intentionally drops, correct? Like for example if they wanted to give some gunpowder to a friend?
    – Gigazelle
    Dec 10, 2021 at 1:53

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .