Revision as of 03:24, 26 January 2014 by VoxBot (talk | contribs) (→‎Removal: Linking project SEMI_AUTOMATIC)

Archive.png This article or section documents something not included in the current version of Scratch (3.0). It is only useful from a historical perspective.
Forever If ()
Forever if ().png
Category Control
Type C
Introduced in 1.0
Removed in 2.0
The block in Scratch 2.0 before its removal.

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.


Main article: List of Block Workarounds

This block can be replicated with the following code:

 if <condition goes here> then
  . . .


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.[1][2] 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.

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:

 if <key [1 v] pressed?> then
  set [Page v] to (1)
 if <key [2 v] pressed?> then
  set [Page v] to (2)
 if <key [space v] pressed?> then
  broadcast [Render v]

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.

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... don't wake anyone up.]

See Also


Cookies help us deliver our services. By using our services, you agree to our use of cookies.