Unable to exclude two of the same type in a selector

Okay while trying to make a scroll like thing that summons lightning.. I realized it targeted villagers, how can I fix this command to do that?

/execute @e[r=8,type=!Player,type=!Villager,count=-1] ~ ~ ~ /summon LightningBolt ~ ~ ~

Solution 1:

Update for 1.13+: This now just works. type=!player,type=!villager works exactly as expected.


Old answer for 1.12: You cannot have more than one parameter with the same key name. The last one defined will be used instead.

To exclude two different entities based on type, you can assign a label separately and then target those that do not have the label.

As well, the correct parameter for maximum count is c, not count.

Example using a scoreboard team:

/scoreboard teams add Exclude

/scoreboard teams join Exclude @a @e[type=Villager]
/execute @e[r=8,team=!Exclude,c=-1] ~ ~ ~ /summon LightningBolt ~ ~ ~

Example using 1.9's "tags" feature:

/scoreboard players tag @a add Exclude
/scoreboard players tag @e[type=Villager] add Exclude
/execute @e[r=8,tag=!Exclude,c=-1] ~ ~ ~ /summon LightningBolt ~ ~ ~