In the source there are couple functions that attempt to obtain a target: one that selects players first (and if it fails, falls back to the other function), and one that does not have a bias towards any type. Every command must choose which one to use when it has a selector.
However, player bias will only occur if the selector itself is @p
or @r
(without c
being changed) or the c
parameter is set to value of exactly "1". If so, the selector won't be processed yet and the command class itself will use one of those functions to process it. Otherwise, the selector is processed first with no bias and then the command is processed for each target found, being handed the already-obtained target (and not a selector to process).
Almost all /scoreboard
commands use the player bias function, except for /scoreboard players tag ...
and /scoreboard teams join ...
. The stored selector for CommandStats also uses it.
The only way to prevent it from targeting players is to exclude players from selection:
/execute @e[type=ArmorStand] ~ ~ ~ detect ~ ~-1 ~ stone 0 scoreboard players set @e[type=!Player,c=1] myObj 1
This does mean that if you want a nested /scoreboard
command or CommandStats to still target all entities including players, you'd have to create two copies: one for players and one for non-player entities:
/execute @e[type=!Player] ~ ~ ~ /scoreboard players set @e[type=!Player,c=1] OBJ 1
/execute @a ~ ~ ~ /scoreboard players set @a[c=1] OBJ 1
Or:
/stats entity @e[type=!Player] set SuccessCount @e[type=!Player,c=1] OBJ
/stats entity @a set SuccessCount @a[c=1] OBJ
You could summon the sheep with something like a custom name or scoreboard tag, then specify that name/tag in your selector:
summon Sheep ~ ~ ~ {Tags:["Summoned"]}
Then:
execute @r[type=Sheep,tag=Summoned] ~ ~ ~ setblock ~ ~-2 ~ redstone_block
Best Answer
Seeing as running a
/tp
command from a command block teleports relative to the command block, you’ll need to execute the command relative to the armour stand.How to: run a command relative to the armour stand.
Using this command, we can execute a command from the position of the armour stand as if it became the command block.
/execute @e[type=armor_stand] ~~~ tp @e[type=armor_stand] ~1~~
Hope this helped!