Java Edition:Update Suppression

Update Suppressor.png
Danger.png
Warning: Corruption 
This feature can corrupt your world. Perform at your own risk.
Barrier.png
Warning: Game Crash 
This feature can crash your game. Perform at your own risk.

Update suppression prevents block updates from being processed. This is done by throwing a Java exception before the game can process all of the updates. Not to be confused with update skipping, which uses intentional update limitations introduced by Mojang in 22w11a (a 1.19 snapshot). This has many applications, such as removing a block without updating the surrounding blocks, slicing nether portals, duplication, and item shadowing. This method is very powerful, but can be very dangerous, potentially making the world unplayable. Use update suppression with caution, and always create backups of your world.

General Information

Update suppression heavily relies on the fact that all block updates will always be processed in a certain order. This order is west, east, down, up, north, and finally south. By chaining the updates from one side of a block into a contraption that throws a Java exception, the remaining sides can be skipped, allowing the updates to never be processed. All sides except west may be suppressed, as the west side is the first in the update order and cannot be skipped.

The only type of update that can be chained into a suppressor without crashing the game are player updates, as they are handled through a try catch block which safely handles any exception[note 1]. Before 14w21a (a 1.8 snapshot), update suppression must be done on a multiplayer server as the internal server's connection was not handled in a try catch block. This would cause any update suppression to crash the game, which can corrupt or delete the level.dat file. The player must be careful when performing update suppression on block removals when playing on a laggy server or poor connection, as the block's removal might be scheduled for a later game tick if the server believes it was mined too quickly, which results in the updates not being processed in a try catch block and the game crashing. A filter can be built for such events as showcased by FloppyDonkey.

Any update suppression method that uses an Error (stack overflow, out of memory) can only be performed without crashing the game in 1.4.3 and above, due to the addition of an additional try catch block that catches any Throwable from the block neighbor update process and re-throws it within a crash exception that can be caught by the packet try catch block. In 24w33a (a 1.21.2 snapshot) and above, if the crash exception catches an out of memory error, the game will not catch the exception and will crash.

Videos explaining the basics of update suppression, including subjects such as update order and safe usage:

Methods

Stack Overflow Error

From the earliest versions[1][2] of Java Edition to 1.19 Deep Dark Experimental Snapshot 1, all block updates were handled with recursive methods. As more and more blocks are updated at once, the Java stack size will increase linearly with each block updated. If this stack exceeds the Java stack limit (the Java stack limit can vary from operating system, Java version, Java flags, hardware, etc.), a StackOverflowError will be thrown.

In 22w11a (a 1.19 snapshot), the recursive update stack was replaced with a queue[3][4], which avoids recursive function calls which patches this method.

This method can be accomplished by updating 2,000-3,000 blocks at once, though this can be lowered by changing the -Xss Java flag which determines the maximum size of the Java stack. The smallest this Java flag can be set to is -Xss160k, which reduces the blocks needed down to only a few hundred. One of the easiest methods is chaining signs or banners off of each other, attached to the block that is being suppressed. Although the signs and banners will drop once broken, they have to be placed back again making this a one-time use. Reusable suppressors typically use BUD powered rails, which can both chain the updates into the suppressor and do the actual suppressing.

Other reusable designs utilize unintentional recursive feedback loops.

Subtract Mode Comparator

When the instant tile ticks flag is enabled, comparators will instantly process their updates. When a subtract mode comparator's output loops into its input and receives a block update, the comparator will process itself continually until suppression.

BUD Powered Dispenser

When the instant tile ticks flag is enabled, dispensers will instantly process their updates. This can be abused by updating a BUD powered dispenser containing either a water or lava bucket. Dispensers do not set themselves as powered until after the liquid has been placed and the updates from that placement finish processing, so once the liquid is placed for the first time, it updates the dispenser again which triggers another fluid placement, which will repeat until suppression occurs.

Trapdoor Dust Loop

An oversight in the 1.16 trapdoor code with redstone dust redirection allows for the creation of an update feedback loop. This method works from 20w18a (a 1.16 snapshot) to 1.19 Deep Dark Experimental Snapshot 1, but it can also be used as an update skipper until 1.20 Pre-release 1.

Some examples of reusable designs:

Six Sided Piston

Six Sided Pistons are pistons with a data value of 6, 7, 14, and 15 those with a data value of 6 and 14 are especially dangerous. These are created through block transmutation, this method works from Beta 1.7 until they are removed in 14w02a (a 1.8 snapshot). Data value 6 pistons, when powered throw an ArrayOutOfBoundsException upon receiving an update, and data value 14 pistons will throw the exception regardless of whether it is powered or not.

Data value 6 pistons will sometimes check if they are receiving direct power upon being loaded from the disk, if the piston realizes that its hard powered when loaded, it can result in a crash loop until 14w02a (a 1.8 snapshot). This can be prevented by BUD powering the piston, this will allow the block updates to throw the exception, but will not potentially cause a crash loop.

Note Block Class Cast Exception

Before 1.13, note blocks used block entities to track their pitch, and before 1.8, the note block directly cast all block entities fetched from its location to the note block block entity class. If a different block entity was swapped into the note block, it would throw a ClassCastException. This was fixed in 14w29a (a 1.8 snapshot) to check that the fetched block entity was the proper block entity.

Shulker Class Cast Exception

Using update suppression, block entities can be swapped with other block entities. By suppressing the removal of a block entity then placing another block entity in its place, the block entities can be swapped.

When comparators receive an update, they attempt to update their power level depending on the block entity they are reading. Shulker boxes specifically contain a direct cast of the block entity at their location to the Inventory interface within these methods. If the block entity fetched from the shulker box's position does not implement this interface, a ClassCastException exception will be thrown.

There are two block entities that meet the requirements of both sending comparator updates and not implementing the Inventory interface: lecterns and jukeboxes. These block entities also do not intuitively send comparator updates in many versions, so be sure to see the tutorial videos below for your specific version. By suppressing their removal and placing a shulker box at their previous location, the shulker box will then contain a block entity that does not implement the Inventory interface. This suppressor can be disabled by hard powering a solid block between the shulker box and the comparator, as the comparator will read a signal strength of 15 which prevents the comparator from attempting to read the shulker box's fill level.

This method can help overcome the removal of recursive block update suppression as it can be created prior to when recursive suppression was patched, allowing one to maintain an easy to use suppressor in 1.19 and above. This method works from 16w39a (a 1.11 snapshot) to 23w33a (a 1.20.2 snapshot).

Additional resources:

Lever/Button & Shulker Box Null Pointer Exception

In 17w18a (a 1.12 snapshot), when a lever or button (wooden or stone) is updated when placed above a shulker, a NullPointerException exception will be thrown[5]. Any updates chained into the lever or button will be suppressed. Toggling the lever or button will also throw the exception, but not in a useful manner.

Sound Suppression

Gear.gif
This section is a work in progress. 
Please help in the creation of this article by expanding or improving it.
To do: expand vibrations table to include which ones can safely be suppressed without causing a crash

Using update suppression, block entities can be swapped with other block entities. By suppressing the breaking of a sculk sensor with the sculk_sensor_phase:active block state, the block entities can be swapped. This can be done with the sculk sensor from 20w49a (a 1.17 snapshot) (sculk sensors were only first obtainable in survival in 1.19 Deep Dark Experimental Snapshot 1) to 1.21 and the calibrated sculk sensor from 23w12a (a 1.20 snapshot) to 1.21.

To swap the sculk sensor block entity, construct the setup below and break the sculk sensor while it has the active block state. A good hoe (e.g. diamond hoe with Efficiency 5) to break the sculk sensor quickly is recommended.

When any block entity other than a sculk sensor is placed into the sculk sensor's position, any vibration within range of the sculk sensor (an 8 block radius for sculk sensors, a 16 block radius for calibrated sculk sensors) will be update suppressed with an IllegalArgumentException, as the sculk sensor code attempts to fetch the sculk_sensor_phase block state from the block at its position, which is not used on any other block. Note that this occurs before the wool occlusion check, so wool cannot be used to prevent vibrations from being heard!

Using a sculk sensor as an update suppressor is extremely dangerous, as there is no way to disable it except for breaking the block entity that contains the sculk sensor, which will destroy the suppressor. It will also suppress any vibration frequency, so any vibration not explicitly produced from a player packet, several of which can be produced without player interaction, will crash the game.

It is highly recommended to use the calibrated sculk sensor variant, as with this variant it is possible to select which vibration frequencies to suppress. To do so, the block entity to be placed must have the "horizontal" facing property (the horizontal facing property has only east, north, south, and west as valid values). These block entities are:

  • Banner (wall)
  • Bed
  • Mob head (wall)
  • Signs (wall)
  • Hanging Signs (wall)
  • Beehive
  • Bee Nest
  • Blast Furnace
  • Campfire
  • Chest
  • Chiseled Bookshelf
  • Decorated Pot
  • Ender Chest
  • Furnace
  • Lectern
  • Redstone Comparator
  • Smoker
  • Soul Campfire
  • Trapped Chest
  • Vault

The suppressor can have the frequency to suppress controlled by a redstone signal provided to the block in the opposite direction of the facing value (e.g. if the block has a facing value of east, the signal must be provided on the west side). The easiest way to do so is to have a lectern with a 15 page book and a comparator power the suppressor, as the lectern and book allows for easy channel selection. No channel is perfectly safe as each has non-player triggers that can cause a crash. Safer channels include 8 and 9. 8 can cause a crash if a player, panda, wandering trader, or witch drinks or eats in range. 9 can cause a crash if redstone components deactivate or if the player closes a container in range.

Vibration Frequency Channels (1.21)
Signal Strength Vibration Type Game Event Description Crashes from Players
1 Step minecraft:step Entity steps Yes
Swim minecraft:swim Entity swims, boat paddles Yes
Flap minecraft:flap Entity flaps (allay, bat, bee, chicken, ender dragon, parrot, phantom, vex)
Resonate 1 minecraft:resonate_1
2 Projectile Land minecraft:projectile_land Projectile lands (e.g. arrow, snowball, egg)
Hit Ground minecraft:hit_ground Entity hits ground post-jump or fall No
Splash minecraft:splash Entity enters water or bubble column Yes
Resonate 2 minecraft:resonate_2
3 Item Interact Finish minecraft:item_interact_finish Item interaction finishes (bone meal, totem of undying, fishing rod, any item that has to be held down to use, e.g. food, shield, spyglass, bow, trident) Yes/No[note 2]
Projectile Shoot minecraft:projectile_shoot Projectile shoots (arrow, firework, etc.) Yes
Instrument Play minecraft:instrument_play Goat horn plays No
Resonate 3 minecraft:resonate_3
4 Entity Action minecraft:entity_action Armadillo rolls or unrolls, camel sits, stands, or jumps, ravager roars, sniffer digs, turtle digs, or wolf shakes (after swimming or rain).
Elytra Glide minecraft:elytra_glide Player glides Yes
Unequip minecraft:unequip Armor unequip (player, armor stand, mob picks up gear and discards worse gear) No
Resonate 4 minecraft:resonate_4
5 Entity Dismount minecraft:entity_dismount Entity dismounts Yes
Equip minecraft:equip Armor equipped (player, armor stand, mob picks up gear) No
Resonate 5 minecraft:resonate_5
6 Entity Mount minecraft:entity_mount Entity mounts (e.g. horse, minecart, boat) Yes
Entity Interact minecraft:entity_interact Player uses item on entity (dye on sheep, name tag, saddle, lead is detached[note 3]) No
Shear minecraft:shear A bogged, mooshroom, sheep, or snow golem is sheared
Resonate 6 minecraft:resonate_6
7 Entity Damage minecraft:entity_damage Entity takes damage Yes
Resonate 7 minecraft:resonate_7
8 Drink minecraft:drink Entity drinks (player, witch, wandering trader) Yes
Eat minecraft:eat Entity eats (player, feeding horses/donkeys/mules/camels, panda) Yes/No[note 4]
Resonate 8 minecraft:resonate_8
9 Container Close minecraft:container_close Container closes (chest, shulker box, or barrel) Yes[note 5]
Block Close minecraft:block_close Door, trapdoor, or fence gate closes No
Block Deactivate minecraft:block_deactivate Block deactivation (piston, button, lever, pressure plate) No[note 6]
Block Detach minecraft:block_detach Tripwire hook detaches Yes/No[note 7]
Resonate 9 minecraft:resonate_9
10 Container Open minecraft:container_open Container opens (chest, shulker box, or barrel) No
Block Open minecraft:block_open Door, trapdoor, or fence gate opens No
Block Activate minecraft:block_activate Block activates (pressure plate, button, empty dropper/dispenser, lever, piston, tripwire hook) Yes/No[note 8]
Block Attach minecraft:block_attach Tripwire hook attaches Yes/No[note 9]
Prime Fuse minecraft:prime_fuse TNT or creeper activates Yes/No[note 10]
Note Block Play minecraft:note_block_play Note block sounds No
Resonate 10 minecraft:resonate_10
11 Block Change minecraft:block_change Block change (fire is placed, bee enters or leaves hive, item placed or removed from campfire, chiseled bookshelf, jukebox, candle, block waxed, bell rung, dripleaf changes tilt, cake is eaten, campfire is extinguished, cauldron changes fill level, glow berries are picked, composter changes fill level, daylight detector state is switched, decorated pot has item inserted, farmland is created or destroyed, lectern has book placed or removed, dripstone converts mud into clay, respawn anchor is charged, sweet berry bush grows or loses berry, turtle eggs crack, axe strips wax, oxidation or bark, shearing cave vines, kelp, weeping vines, or twisting vines, creating dirt paths, or using a spawn egg on a monster spawner) Yes/No
Resonate 11 minecraft:resonate_11
12 Block Destroy minecraft:block_destroy Block destruction
Fluid Pickup minecraft:fluid_pickup Gathered fluid (water, honey bottle, powder snow)
Resonate 12 minecraft:resonate_12
13 Block Place minecraft:block_place Block placement
Fluid Place minecraft:fluid_place Fluid placement
Resonate 13 minecraft:resonate_13
14 Entity Place minecraft:entity_place Entity placement via spawn-egg, mob spawner, or evoker magic
Lightning Strike minecraft:lightning_strike Lightning strikes
Teleport minecraft:teleport Endermen, chorus fruit, shulker teleportation
Resonate 14 minecraft:resonate_14
15 Entity Die minecraft:entity_die Entity dies, firework finishes
Explode minecraft:explode TNT, end crystal, bed/respawn anchor, or creeper explodes
Resonate 15 minecraft:resonate_15

Additional resources:

23w13a_or_b Votes

Pink Wither.png
Warning: April Fools' 
This method requires April Fools' versions and may require the use of file modifications to load. See the tutorial for information on loading these versions.

The April Fools' snapshot 23w13a_or_b introduced several methods to obtain normally unobtainable features.

  • The less_interaction_updates vote, when applied, suppresses certain block updates from the player, allowing the player to make certain block configurations.

The less_interaction_updates vote suppresses any block update from the player breaking or placing blocks, although other sources of block updates (e.g. redstone) will still create block updates normally. Because of this, blocks which are affected by block updates, like sand or water, can be put into abnormal or discontinued configurations. Unlike update suppression, this works with features on the west side of blocks. No exceptions are thrown, so not everything that update suppression can be used for can be replicated with this vote.


Out Of Memory Error

When traditional update suppression was removed in 22w11a (a 1.19 snapshot), a new method was developed which utilizes the OutOfMemoryError exception. This method is tricky to use as it requires filling up the game's random access memory (RAM) to a very specific amount to allow the upsizing of a Set or HashSet to cause the Java Virtual Machine to be completely out of RAM, throwing the exception. This can be accomplished in two ways: either using the synced block event queue or the server entity manager's various trackers.

These methods work from at least 22w11a (PLEASE use StackOverflowError instead if you're in a version before 22w11a) until 25w42a (present), but they are particularly tricky as everyone's world will most likely need different contraptions to fill RAM to the proper amount.

Synced Block Event Queue

The synced block event queue is used to ensure some blocks have consistent update orders. These scheduled events are usually ticked and discarded quickly, but by triggering pistons or noteblocks that are within border chunks, those events will not tick and will remain in the queue. This mechanic is used to bring the list to the brink of upsizing without having to trigger all the necessary block events from the suppressor BUD line.

The suppressor BUD line must run through two high data chunks, utilized to fill the majority of the game's RAM. The amount of data required in these chunks will vary from setup to setup and will have to be determined experimentally. The data required should be roughly split between the two chunks and the two chunks should not be within render distance of each other, as loading both at the same time in normal gameplay would likely cause the game to crash. At the end of the suppressor BUD line, several floating comparators are updated as they handle updates through a necessary try catch block. The floating comparators must update a handful of BUD powered pistons or noteblocks to schedule enough sync block events to cause the list to upsize and throw the exception.

The table below provides the values where the set upsizes and how much RAM is necessary for each, or in other words, you need to have less than Y bytes available when the upsize occurs at X entries to throw the exception.

Block Event Upsize Values
Resize Value RAM needed (<32 GB allocated) RAM needed (>=32 GB allocated)
0 192 bytes 256 bytes
13 384 bytes 512 bytes
25 768 bytes 1.0 kilobytes
49 1.5 kilobytes 2.0 kilobytes
97 3.0 kilobytes 4.0 kilobytes
193 6.0 kilobytes 8.0 kilobytes
385 12.0 kilobytes 16.0 kilobytes
769 24.0 kilobytes 32.0 kilobytes
1,537 48.0 kilobytes 64.0 kilobytes
3,073 96.0 kilobytes 128.0 kilobytes
6,145 192.0 kilobytes 256.0 kilobytes
12,289 384.0 kilobytes 512.0 kilobytes
24,577 768.0 kilobytes 1.0 megabytes
49,153 1.5 megabytes 2.0 megabytes
98,305 3.0 megabytes 4.0 megabytes
196,609 6.0 megabytes 8.0 megabytes
393,217 12.0 megabytes 16.0 megabytes
786,433 24.0 megabytes 32.0 megabytes
1,572,865 48.0 megabytes 64.0 megabytes
3,145,729 96.0 megabytes 128.0 megabytes
6,291,457 192.0 megabytes 256.0 megabytes
12,582,913 384.0 megabytes 512.0 megabytes
25,165,826 768.0 megabytes 1.0 gigabytes
50,331,651 1.5 gigabytes 2.0 gigabytes
100,663,301 3.0 gigabytes 4.0 gigabytes
201,326,601 6.0 gigabytes 8.0 gigabytes
402,653,201 12.0 gigabytes 16.0 gigabytes
805,306,401 IllegalArgumentException thrown

Server Entity Manager

The server entity manager contains 4 hashsets used for keeping track of loaded entities. Whenever an entity is loaded, the game will add its information to these sets. Entities can be loaded however one likes to fill the set, but its highly recommended to place these entities within border chunks. This will prevent them from being ticked by the game, greatly improving performance and allowing one to load potentially millions of entities at once.

The suppressor BUD line must run through two high data chunks, utilized to fill the majority of the game's RAM. The amount of data required in these chunks will vary from setup to setup and will have to be determined experimentally. The data required should be roughly split between the two chunks and the two chunks should not be within render distance of each other, as loading both at the same time in normal gameplay would likely cause the game to crash. At the end of the suppressor BUD line, a BUD powered trapdoor is opened which allows a precise amount of support blocks (like signs) to be broken off resulting in item entities, bringing the set close of upsizing. This buffer is necessary to accommodate any normal entities that can load into the world normally before performing suppression. Lastly, BUD powered TNT underneath the rails is updated, causing the entity lists to upsize and throw the exception.

The table below provides the values where the sets upsize and how much RAM is necessary for each, or in other words, you need to have less than Y bytes available when the upsize occurs at X entries to throw the exception.

Entity Upsize Values
Resize Value RAM needed (<32 GB allocated) RAM needed (>=32 GB allocated)
0 384 bytes 576 bytes
13 768 bytes 1.1 kilobytes
25 1.5 kilobytes 2.3 kilobytes
49 3.0 kilobytes 4.5 kilobytes
97 6.0 kilobytes 9.0 kilobytes
193 12.0 kilobytes 18.0 kilobytes
385 24.0 kilobytes 36.0 kilobytes
769 48.0 kilobytes 72.0 kilobytes
1,537 96.0 kilobytes 144.0 kilobytes
3,073 192.0 kilobytes 288.0 kilobytes
6,145 384.0 kilobytes 576.0 kilobytes
12,289 768.0 kilobytes 1.1 megabytes
24,577 1.5 megabytes 2.3 megabytes
49,153 3.0 megabytes 4.5 megabytes
98,305 6.0 megabytes 9.0 megabytes
196,609 12.0 megabytes 18.0 megabytes
393,217 24.0 megabytes 36.0 megabytes
786,433 48.0 megabytes 72.0 megabytes
1,572,865 96.0 megabytes 144.0 megabytes
3,145,729 192.0 megabytes 288.0 megabytes
6,291,457 384.0 megabytes 576.0 megabytes
12,582,913 768.0 megabytes 1.1 gigabytes
25,165,826 1.5 gigabytes 2.3 gigabytes
50,331,651 3.0 gigabytes 4.5 gigabytes
100,663,301 6.0 gigabytes 9.0 gigabytes
201,326,601 12.0 gigabytes 18.0 gigabytes
402,653,201 24.0 gigabytes 36.0 gigabytes
805,306,401 IllegalArgumentException thrown

Additional Resources

The following resources give more information on this method:

Uses

Alternative Discontinued Feature Methods

Update suppression can be used as an alternative to obtain discontinued block configurations. Any block with placement restrictions, such as support blocks or those only placeable on certain blocks, can have their restrictions bypassed by suppressing the removal of its supporter block and the placement of the invalid block. An example of this would be getting a Wither Rose on Nether Bricks as they are not normally able to be placed on Nether Bricks. This list includes, but is not limited to:

Block Entity Swap

In 1.21 and before, block entities can be swapped into other blocks using update suppression. By suppressing the removal of a block entity, it may be kept when another block is placed into its location. The update that is suppressed must be created before the block entity is removed, such as observing comparator updates, which is the primary method for block entity swapping.

Another block entity must be placed in the old block entity's location to preserve it upon reloading, otherwise the block entity will remove itself upon loading. Block entities in mismatched block entity blocks can be updated up to 1.21. In 1.21.1 Release Candidate 1 and later, block entities in mismatched block entity blocks are deleted and set to the correct block entity when loaded.

Block Entities Able to be Swapped
  • Barrel
  • Blast Furnace
  • Chest
  • Calibrated Sculk Sensor
  • Dispenser
  • Dropper
  • Furnace
  • Hopper
  • Jukebox[note 11]
  • Lectern[note 12]
  • Sculk Sensor
  • Shulker Box
  • Smoker
  • Trapped Chest
Block Entities Able to be Swapped Into
  • Banner
  • Barrel
  • Beacon
  • Beds
  • Bee Nest
  • Beehive
  • Bell
  • Blast Furnace
  • Brewing Stand
  • Campfires
  • Chest
  • Command Blocks
  • Comparator
  • Conduit
  • Dispenser
  • Dropper
  • Enchanting Table
  • End Gateway
  • End Portal
  • Ender Chest
  • Furnace
  • Hopper
  • Jigsaw Block
  • Jukebox
  • Lectern
  • Shulker Boxes
  • Signs
  • Skulls
  • Smoker
  • Spawner
  • Structure Block
  • Trapped Chest

Additional resources:

Duplication

When a player places a block, all updates are processed before the block is removed from the player's inventory. If an exception is thrown while the game is processing the updates from placement, the code to remove the item from the player's inventory will not be called, allowing blocks to be duplicated. Suppression occurs before the block entity data of an item is applied, so placing shulker boxes will not duplicate the contents.

When a player places an item into an item frame, if a floating comparator is updated behind the item frame and the update is suppressed, the code to remove the item from the player's inventory is skipped, allowing for any item to be duplicated. Unlike block placement, this preserves the item's data, so duplicating a shulker box with items duplicates the contents as well.

Item Shadowing

From 14w21a (a 1.8 snapshot) to 1.19 Deep Dark Experimental Snapshot 1, update suppression can be utilized to duplicate references of a single ItemStack, allowing for an item to be in two or more places at once. These duplicated references also allow for item duplication in a number of ways.

Resources on performing item shadowing and utilizing shadowed items:

Cursor Swap

From 14w21a to 1.19 Deep Dark Experimental Snapshot 1, suppressing the direct swapping of an item with another item that it cannot stack with in the cursor can shadow items. To shadow items, create the below setup with the rail line pointing to your suppressor of choice. Place a sacrificial item that does not stack with the item to shadow into the container and another into your inventory. Either suppress the removal of the block below the comparator or open the trapdoor below the comparator to leave it floating, whichever is applicable. Open the container and place the stack which you want to shadow into the cursor, click once on the sacrificial item in the container, click once on the item in your inventory, and click on an empty slot. Close and re-open the container to fix any inventory desync that may have occurred.

Number Key Swap

From 1.12 to 1.18[test], suppressing the usage of the number keys to insert items into an inventory from the hotbar can shadow items. To shadow items, create the below setup with the rail line pointing to your suppressor of choice. Either suppress the removal of the block below the comparator or open the trapdoor below the comparator to leave it floating, whichever is applicable. Open the container and use the number keys to move the stack to shadow into the container. Close and re-open the container to fix any inventory desync that may have occurred.

Furnace Recipe Book

Gear.gif
This section is a work in progress. 
Please help in the creation of this article by expanding or improving it.
To do: https://youtu.be/HSOSWHIg7Mk

Sound Suppression

Gear.gif
This section is a work in progress. 
Please help in the creation of this article by expanding or improving it.
To do: https://youtu.be/77M8Adnxmsw

Invalid Exit Portal

When the dragon is summoned/dead, if the end portal/bedrock is suppressed, it will create an invalid end exit

It also has the side effect of replacing bedrock and end portal with endstone when summoning a dragon and causing the dragon to be "suppressed from death" when killing a dragon

Summon Dragon

When the dragon is summoned, the exit portal will be updated in order west, north, south, east(in individual blocks). From 1.10.2 to present, when summoning a dragon, the exit portal will be processed in the following steps: replace the old structure (including bedrock blocks and end portal) with endstone, delete blocks in range, place the new structure. By suppressing the bedrock, end portal or torch in the respective directions or bedrock/end portal is inserted into another block of the gate (e.g. the bedrock replaces the end stone and is suppressed), the bedrock and end portal that have not been updated in order will turn into endstone including the blocks placed by the player within the exit portal range(all blocks with height between top bedrock and bottom endstone and in 7*7 square containing the exit portal). However that also led to the dragon summoning failing and make exit portal removal inactive. One special thing is that the torch will always be placed if there is no block occupying the space.

From 19w41a to present, if the suppressed block has been destroyed (e.g. the endstone or bedrock block is broken by the player and it was suppressed when summoning dragon) and this is not the first dragon summon , this will result in the dragon still being summoned while the portal is in an invalid state.(Placed end crystals will not have a summoning animation). This will result in the endstone being replaced from the south to the straight line of the suppressed block. Note that channels 12 of sound suppression will also achieve the same effect with other suppression methods

Killing Dargon

After dragon has complete its death animation, game will try enable exit portal by placing blocks in rows starting from north, then removing the block that occupies the empty space within range (From 15w31a to 17w47a, game will delete blocks in range) and create end gateway. Finally game will marked dragon died, remove dargon hp bar and set DragonKiller parameter turn into 1 . If exit portal is suppressed, exit portal will become invalid state and dragon will die incorrectly. Howerver, since code change in some version, so this method not work in some version. From 15w31a[test] to 17w47a[test], suppressing the bedrock in the bedrock pillar will prevent the dragon from dying and the end portal will be created from the north to the line of the suppressed block. Also torch only create in the south of exit portal. However, the dragon will attempt to die, causing the exit portal to continuously regenerate, resulting in the portal returning to its normal state.(this happens because every suppression method in these versions is either in delete blocks in range scope, resulting in a crash that will then remove the budded rail connected to the suppressor, the number of crashes is based on the number of budded rails connected to the suppressor e.g. 4 CCE shulker suppressions will crash 4 times in order of exit portal update)

From 1.17 to present, if the suppressed block has been destroyed and not the top bedrock(e.g. the endstone or bedrock block is broken by the player and it was suppressed when killing dragon ), dragon will die, but will be stuck in a "dead" state and the end portal will be created from the north to the suppression block's path similar to the old version. One special thing is that because the end stone is created before the end portal, suppressing the end stone will prevent the end portal from being created. Note that channels 12 of sound suppression will also achieve the same effect with other suppression methods

From 1.14 to 1.16.5 this method does not work

Dragon in a "dead" state will drop xp indefinitely, fly to infinite heights and prevent new dragons from being summoned with end crystals even though it do not exist as entities. This is because DragonKiller is set to 1 when a dragon is killed, but suppressing exit portal causes this parameter to remain at 0. The simplest way to fix this is to use chunk regeneration that contains the dragon's main hitbox.

Waterlogging Falling Blocks

Update suppression can be used on falling blocks to obtain that falling block with its waterlogged state. When falling blocks land in water, if they are waterloggable, the falling block will set itself to waterlogged for a brief moment as it places itself into the world. If the updates from that placement are suppressed then the falling block may be recovered, but as its waterlogged variant. This can be performed on falling blocks obtained from any falling block in 1.12.

These falling blocks can be used in 24w19a (a 1.21 snapshot) or above for water in the nether.

Additional resources:

Population Suppression

Update suppression can be applied to world generation. This can be used to toggle hidden and extremely powerful game flags which allow the player to access many unique mechanics and asynchronous exploits.

See also

Notes

  1. The packet try catch block catches any Exception and its subclasses. Note that this does not include Error and its subclasses.
  2. Only the player consuming food causes a crash.
  3. The lead popping off for any other reason than the player directly interacting with the mob will not trigger this frequency.
  4. The player can still eat cake without causing a crash. This also will allow for eating the cake infinitely as the cake will never consume a slice when frequency 8 is suppressed.
  5. The game will not crash if the player attempts to manually close a container (as this action is suppressed), but leaving the range of the container or opening another will cause a crash.
  6. Must instantly deactivate, e.g. lever
  7. If the string is broken, the game will crash. If the tripwire hook is directly broken by the player, the game will not crash.
  8. All except the lever are not instant, so they will crash.
  9. If a string is the final block placed, the game crashes. If the tripwire hook is the final block placed, the game does not crash.
  10. The player directly igniting TNT either with an instant redstone signal or a flint and steel will not cause a crash.
  11. Prior to 1.17, comparator updates were not correctly sent upon the removal of jukeboxes. From 1.5 to 1.12.2, the player must suppress the insertion of a music disk into the jukebox. This prevents the block entity's cached block state from being cleared, which allows another check when breaking the jukebox to produce comparator updates. From 1.13 to 1.16.5, the player must directly replace the jukebox with a non-air block to allow comparator updates to occur when breaking, which can only be done by generating a Nether portal (directly replaces the jukebox with obsidian). Nether portal placement can only be suppressed without crashing on a multiplayer connection. End portals can only be used to swap a jukebox into an end portal as end portals cannot be removed in a way that preserves the jukebox block entity.
  12. Prior to 1.17, comparator updates were not correctly sent upon the removal of lecterns. The player must place a book with 2 or more pages into the lectern and then suppress block updates from the block location below the lectern, which receives updates upon the lectern switching to its powered state when turning the book's pages. This will produce a permanently powered lectern, which allows for updates to be provided again to the block location below the lectern upon breaking the lectern in the correct phase of block breaking to preserve the lectern block entity.

References

  1. Video of Bluecrab2 performing update suppression in Classic 0.0.19a_04
  2. MC-1510. bugs.mojang.com.
  3. MC-157020. bugs.mojang.com.
  4. MC-231185. bugs.mojang.com.
  5. MC-116976. bugs.mojang.com.