mojira.dev
MC-87524

Repeating Conditional Command Blocks have very strange chaining properties.

Overview

If you have a repeat command block on conditional mode and attach a trailing chain of chain command blocks to it, you can activate and deactivate all of the chain (including the repeat command block itself) by powering and unpowering the repeat command block with no problem, as long as it's condition is true, if however the condition is false, it strangely powers all the chain command blocks exactly once when receiving a redstone signal. If you keep it powered and instead change the state of the condition, then the execution of the repeat command block both starts and stops one tick earlier then the rest of the chain.

Exact reproduction steps

First you setup 4 command blocks:
(a) Impulse, Unconditional, Needs Redstone
(b) Repeat, Conditional, Needs Redstone
(c) Chain, Unconditional, Needs Redstone
(d) Chain, Unconditional, Needs Redstone

Here (a), (b), (c), (d) should be in a straight line with (a) pointing into (b), (b) pointing into (c) and (c) pointing into (d).

They have the following commands:

(a) say success

(b) say repeat

(c) say chain1

(d) say chain2

Then you try the following things

#1

Remove all redstone blocks from previous tests.

If you just did #3, you first need to create (a) again.
Do "/say ----------------", so you can later scroll through the chat and know where you started.

[@] ----------------

Power (a) with a redstone block.

[@] success

Then Power (b) and quickly unpower (b) afterwards so you chat doesn't get spammed.

[@] repeat
[@] chain1
[@] chain2
[@] repeat
[@] chain1
[@] chain2
[@] repeat
[@] chain1
[@] chain2
[@] repeat
[@] chain1
[@] chain2
[@] repeat
[@] chain1
[@] chain2

As you can see the redstone block activated and deactivated the repeat and chain command blocks as expected.

#2

Remove all redstone blocks from previous tests.

If you just did #1, you need to remove (a) and create it again so that it has SuccessCount data of 0.
If you just did #3, you might want to create (a) again, but it is actually not involved in this part of the bug reproduction.
Do "/say ----------------", so you can later scroll through the chat and know where you started.

[@] ----------------

Then power (b) with a redstone block.

[@] chain1
[@] chain2

As you can see, the repeat command block (b) doesn't execute any command, but upon being powered it powers the chain on it exactly once. I find this very strange and it seems buggy.

#3

Remove all redstone blocks from previous tests.

If you just did #1, you need to remove (a) and place it again so that it has SuccessCount data of 0.
You need to power (b) and keep it powered with a redstone block.
Do "/say ----------------", so you can later scroll through the chat and know where you started.

[@] ----------------

Then power (a) with a redstone block and quickly break (a) afterwards so you chat doesn't get spammed.

[@] repeat
[@] repeat
[@] chain1
[@] chain2
[@] repeat
[@] chain1
[@] chain2
[@] repeat
[@] chain1
[@] chain2
[@] repeat
[@] chain1
[@] chain2
[@] chain1
[@] chain2

As you can see, (b) both starts and stops outputting one tick before (c) and (d) do.

Attachments

Comments 8

BTW: This is actually already a bug in 15w34d. (You would use redstone blocks to power the chain command blocks then, because of the Always Active option missing.)

I find your summary pretty confusing, can you leave out information that isn't needed at all?

Here are some scenarios. I suspect that this has to do with block ticks vs. redstone ticks and thus will be hard to fix.

Unfortunately, this fix causes conditional chain command blocks not to detect the success of the block behind them, making all three scenarios operate improperly. All scenarios involving repeating conditional command blocks now execute all commands in the chain at least twice, because the evaluation of the condition is delayed until the next execution. The scenario involving the impulse command block does not function at all because of a lack of repeated invocations. (See MC-87566 )

Update: The issue is mediated somewhat in 15w35d, however all repeating command chains execute twice, and the impulse chain works correctly in a success condition, but not in a failure condition.

What do you mean by "however all repeating command chains execute twice"?

EDIT: I think I got you, I didn't see the screenshots.

EDIT2: ..but what do you mean by "and the impulse chain works correctly in a success condition, but not in a failure condition"

Conditional command blocks will execute when the condition returns success, but conditional command blocks will not not execute when the condition returns failure.

You description has probably a mistake as c and d won't do anything at all unless they are set to "Always active" or powered by a redstone source.

If the fixed caused a new bug (and it still occurs in 15w44a), please create a separate ticket for it.

Frank Steffahn

michael

Unconfirmed

Minecraft 15w35b

Minecraft 15w35c

Retrieved