How do I get a command block to affect a specific type of villager (also known as profession)?
So far I know:
/effect @e[type=villager] minecraft:{effect here}To affect all villagers, but I don't know how to change the command to only affect a specific profession. I've tried:
/effect @e[type=villager, Profession:5] minecraft:{effect here}
/effect @e[type=villager; Profession:5] minecraft:{effect here}And also with profession in brackets and with no separator.
2 Answers
You cannot insert NBT data directly into a selector. You must use a valid selector argument, of which there is none for a villager profession (you can find a list of valid arguments here). Selectors must also not contain spaces.
In order to target based on NBT data, you must use the /scoreboard command to assign a label to the target first:
/scoreboard players tag @e[type=villager,tag=!profession5] add profession5 {Profession:5}And then you can target the villager with the particular label:
/effect @e[type=villager,tag=profession5] minecraft:speedAlternatively, you can use a score instead of a tag label:
/scoreboard objectives add Profession dummyAnd the value of the score would represent the profession:
/scoreboard players set @e[type=villager] Profession 5 {Profession:5}This allows you to easily target a range of professions at the same time, unlike tag labels:
/effect @e[type=villager,score_Profession_min=5,score_Profession=5] minecraft:speed This is a very simple fix, easily done with a Villager with a Custom Name. First, summon a Villager of the desired profession
/summon minecraft:villager ~ ~ ~ {Profession:X,CustomName:"Test",CustomNameVisible:0}This will summon a Villager named Test.
Now place an always active, unconditional, repeating command block with this command inside:
/effect @e[type=Villager,name=Test] ID Time AmplifierReplace the name of the villager with whatever you choose, making sure it is contained within the quotations (except when using /testfor, no quotes needed), and replace the ~ ~ ~ with the desired location of the Villager. The profession (X) can be replaced with any of the professions of a Villager (5 is an Illager), but the value has to be a number, not a word. This works with any version, not just 1.11.
Caution: the 5 in 1.11 is an Illager, but in anything below 1.11 it changes back to the first Villager form. For more information, view Skylinerw's link for 1.8, 1.9, and 1.10 NBT tag changes.
2