How to detect if a command block is outputting a redstone comparator signal?

How to detect if a command block is outputting a redstone comparator signal? - Inscription on concrete floor in street

I want to make a pretty much redstone-less contraption, so I want to detect a command block's NBT data, so that when it gives out a comparator signal, another command block detects that and then does something. Any help?



Best Answer

What you want is the stats command, with the SuccessCount stat.

The stats command

The command syntax for what you want to do is

stats block <x> <y> <z> set <stat> <selector> <objective>

<x> <y> <z> are the coordinates of the block running the command you want to get the result data for.

<stat> is one of AffectedBlocks, AffectedEntities, AffectedItems, QueryResult or SuccessCount, depending on what you want to do (check the wiki for more information). SuccessCount is typically the same as output redstone power, but isn't capped to 15 (IIRC, it does vary for some commands).

<selector> and <objective> specify a target entity and a scoreboard objective in which to store the result. I suggest using either @a (useful for executing directly on the players if a condition is met) or a named armor stand as the selector.

Example

We have a command block running a testfor command (at coordinates 1 2 3), and we want to run another command if at least 4 entities (e.g. players) qualify*. We create a (dummy) scoreboard objective called "SCObjective" and summon in an (invisible, marker) armor stand called "SCDummy". We create another command block, running

stats block 1 2 3 set SuccessCount @e[type=ArmorStand,name=SCDummy] SCObjective

Afterwards, we can use

execute @e[type=ArmorStand,name=SCDummy,score_SCObjective_min=4] ~ ~ ~ <other command>

to run our command based on the result of the testfor.

* This is one of the few cases where testfor is useful and can not easily be replaced by execute.


There is an alternate version of the command for use with entities:

stats entity <selector2> set <stat> <selector> <objective>

This will return a <stat> for a command run by <selector2> (including when running execute off that entity).




Pictures about "How to detect if a command block is outputting a redstone comparator signal?"

How to detect if a command block is outputting a redstone comparator signal? - Close-up of a Solid Concrete Block
How to detect if a command block is outputting a redstone comparator signal? - White and Black Concrete Building
How to detect if a command block is outputting a redstone comparator signal? - Tower Block of Flats Surrounded by Trees



How do you detect a command block?

You can also set your Command Block up to be powered by Redstone. Selecting \u201cNeeds Redstone\u201d will make it only activate if the block has Redstone. Selecting \u201cAlways Active\u201d makes the command run regardless. Whatever command you want set up goes into the \u201cCommand Input\u201d section.

Can Redstone activate command block?

-Comparators can also detect the following: Detect if a container block (chest, furnace, hopper minecart, etc) has an item in it.



Redstone Output From Command Blocks! (13w03a)




Sources: Stack Exchange - This article follows the attribution requirements of Stack Exchange and is licensed under CC BY-SA 3.0.

Images: David Underland, Lucas Vinícius Pontes, Erickson Balderama, Mike B