Eng:Forever If () (block)

The Forever If  block was a Control block and a C block. The block would continuously check its Boolean condition. If the condition is true, the code held inside the block would run, and then the script continues, but if the condition is false, nothing would happen until it becomes true again. The block continuously runs in a loop; in fact, this block worked just like the If block placed into the Forever block. After being removed, this block is replaced with its workaround.

Workaround
This block can be simulated with the following code:

forever if <...> then . . . end end or forever wait until <...> . . . end or forever repeat until > . . . end end

Removal
Due to the block's simplicity to recreate, that it has less functionality than the replication (you cannot stack multiple If blocks inside the Forever If  block), and that new Scratchers sometimes confuse it with the Repeat Until  block, there have been many campaigns to remove the block. Eventually in 2.0, the block was removed. The block had an advantage, though: it runs some milliseconds faster than its replication, so it could be used to combat extreme lag.

Despite the simple workaround, multiple users have suggested the block be brought back, because it seems more natural to use for those newer to programming.

Using the workaround gives an advantage too you can place multiple If  statements (and If  Then, Else statements, and even other blocks) in the Forever loop. An example:

forever if  then set [Page v] to (1) end if  then set [Page v] to (2) end if  then broadcast [Render v] end end

In Scratch 2.0, this block has been removed. Uploading a project from Scratch 1.4 that contains the block will cause it to transform into its replication. This is also similar to the stop [all v] block, because when uploading a 1.4 version of a stop all block, it will also be changed.

Example Uses
Due to its unpopularity, the block is not widely used. Some common uses, however, are:
 * Reducing lag
 * Swift script construction
 * Simple cases where there only needs to be one If block in a Forever block, so the Forever If  is used instead
 * To save time; instead of using multiple blocks to create the code you only needed one

when gf clicked forever if <(loudness) > [30]> say [Shh... do not wake anyone up.]