Java Edition.png

Java Edition:Population Suppression

From Minecraft Discontinued Features Wiki
Jump to navigation Jump to search

Barrier.png
Warning: Game Crash 
This feature can crash your game. Perform at your own risk.
Gear.gif
This article is a work in progress. 
Please help in the creation of this article by expanding or improving it.

Population suppression is a collection of bugs which can be used to activate powerful hidden global flags, which can in turn be used to obtain many discontinued features. Population suppression is vital to the creation of Parallel Asynchronous Threads, making it one of the most important bugs in pre-flattening Minecraft.

How to Manipulate Population

A simple Instant Tile Tick proof BUD line

As taking advantage of these flags requires manipulating terrain population, one needs to have a basic understanding of its mechanics. One should also be familiar with Update Suppression and Chunk Savestating.

When a 2x2 grid of chunks is loaded, the game checks whether the south-west chunk has been marked as populated. If it has, then nothing occurs. If it hasn't, then the game will proceed to populate a 16x16 area centered in the 2x2 chunk grid, and then mark the chunk as populated.

Population Diagram (1.12).png

To toggle one (or more) of these flags, one must locate a chunk containing something to be suppressed, and quickly savestate the chunk before an auto save, which occurs every 45 seconds (900 game ticks) from when a world is opened. Once the chunk is savestated, one can build the suppressor. It is important to not build your contraption within the south-west chunk, as it will be deleted when the savestate is loaded, as the chunk on disk is empty. A BUD line must then be built to load the 2x2 chunk grid required to trigger population from outside the player's render distance, as the population must be triggered by a player update, or the game will crash. Once this is done, one can simply fly away, unloading the 2x2 chunk grid, wait for an autosave, and then update the BUD line to toggle the flag. One can either attach an automatic savestate device to the BUD line, or simply fly in and place one by hand if one wishes to use the machine repeatedly.

The Instant Falling Flag

The instant falling flag is a global flag that gets enabled during the population of a chunk. This flag is not only cross-dimensional between all dimensions, but is also cross-world in singleplayer due to the variable's definition as a static variable. Static variables in Java have exactly one instance of themselves in the Java runtime, so it is possible to enable the flag in a singleplayer world, leave that world, and enter another singleplayer world with the flag still enabled. This does not work across servers, due to the server's Java runtime being unique to each server. This flag makes all blocks that can fall arrive at their destination instantly, without creating a falling block entity. It was implemented in order to decrease the lag of large amounts of falling blocks starting to fall when generating above air in new chunks. This lag is very noticeable in Beta 1.7.3 in the Far Lands, where the flag failed to do its job due to gravity blocks not receiving updates until after the flag was disabled.

Enabling the Flag

To keep the flag enabled in 1.12.2 and below, one must update suppress an update produced during chunk population. Updates that one can suppress include dungeons placing air, or water/lava springs.

In 1.13 to 1.13.2, one must suppress the placement of an end ship's elytra in an item frame by having a floating comparator behind the item frame, which is the only known way to leak updates from the world generation thread in those versions, but this is much more difficult, requiring the savestating of both the end ship chunk and the base of the end city's chunk (as the structure list needs to be regenerated to allow the ship to regenerate). No other chunks can be generated until the world is closed and re-opened, as the world generation code will hold onto the exception and re-throw it.

Disabling the Flag

To disable the flag, one can either populate a chunk, close the game, or stop/crash the server.

Uses

There are not many specific uses for the instant falling flag. Mainly, dragon eggs will always use instant falling behavior, meaning they can be used to break bedrock in entity-processing chunks due to a bug[1] in their lazy falling code from 1.8 to 1.12.2. This is very convenient because the player can simply place dragon eggs anywhere to break unbreakable blocks such as bedrock, instead of needing to let the dragon eggs fall in lazy chunks.

The Instant Tile Tick Flag

Instant tile ticks, abbreviated as ITT, is a flag which gets enabled during the placement of a water or lava spring. This flag was implemented so springs completed flowing instantly upon generating the chunk, instead of being able to see them flow down upon their generation. This flag is dimension dependent: if enabled in the Nether, it won't be enabled in the Overworld. This also means that it is impossible to get in the End, because no springs are ever placed there. This flag is quite simple: all tile ticks get completed instantly instead of waiting for their tick to process. This means that, for example, stone buttons, which usually take 20 game ticks to unpress, now unpress instantly, generating only 0 tick signals. Repeaters are also affected: a 4 redstone tick repeater will transfer the signal instantly instead of waiting 8 game ticks.

Enabling the Flag

Observer detects a lava flowing from a spring.

This flag can be enabled by update suppressing the placement of a water or lava spring. This will also enable the instant falling flag.

It is also much easier to suppress the placement of these springs, as instant tile ticking allows for many extremely easy update suppressors to be created, such as the observer loop suppressor pictured to the right. It is important to mention that tile ticks only process if a 16x16 area centered on the update is fully loaded, so if your spring isn't flowing all the way, this is why.

Disabling the Flag

To disable the flag, one can either populate a chunk containing a water or lava spring, close the game, or stop/crash the server.

Uses

ITT has many uses. The largest usage is easy update suppression, giving access to update suppression's powerful abilities with ease. ITT can also be used to duplicate movable falling blocks if instant falling is also enabled. By making a sticky piston pulse like the contraption in the picture, the game will first remove the block below the sand, and because instant tile tick is on, the sand block will instantly try to fall, and it will instantly fall through the moving piston block. The issue here is that the piston has already made the list of blocks it's going to move, which means it will place a second sand block when the piston's firing completes. This also works with other gravity blocks, but it only produces data value 0 blocks as when instant fall is enabled, the data value of the blocks will not be correctly transferred.

A video detailing some of the effects of instant scheduling can be found here.

Redstone Dust Power

Gear.gif
This section is a work in progress. 
Please help in the creation of this article by expanding or improving it.
Various blocks not powered due to the redstone power flag being disabled.

References

  1. MC-94186. bugs.mojang.com.

See Also