After doing some more testing on
MC-128509, I've found that the updates are not exclusive to portals.
This is a problem because it can lead to things being triggered/broken that shouldn't be.
- Download FloatingSand.zip, which contains stairs over floating sand in all possible positions.
- Load it in Minecraft 1.12.2, and observe the totally legitimate floating sand.
- Load it in Minecraft 18w15a (or another 1.13 snapshot), and observe that some of the sand has fallen (note that on lazy (far away) chunks, it will fall on top of the slab instead of breaking).
- Download UpdateDetector.zip, which contains a new form of update detector.
- Load it in 1.12.2, and observe that nothing has exploded.
- Load it in 1.13, and observe an explosion.
The following blocks are known to do it:
- Stairs (all varieties)
- Cobblestone walls
- Fence gates
- Glass panes
- Redstone Repeaters
The following blocks are known not to do it:
- Banners (only tested floor)
- Signs (both wall and floor)
- End rods
- Daylight detector
This only happens for blocks on chunk borders. The blocks that are updated vary by the position: if it's on the edge of a chunk, all blocks on that edge (for all Y values) are updated; if it's on the corner all blocks on that corner are updated. Blocks not on an edge/corner are not updated at all.
Obtained via JDB; these are copied from
Obf, as found in 18w15a:
> stop at bct:109
Set breakpoint bct:109
Breakpoint hit: "thread=Server thread", bct.a(), line=109 bci=0
Server thread where
 bct.a (SourceFile:109)
 bhj.a (SourceFile:244)
 bjc$b$1.a (SourceFile:210)
 bjc.a (SourceFile:155)
 bjc.a (SourceFile:147)
 bjc.a (SourceFile:58)
 biv.B (SourceFile:1,043)
 biv$$Lambda$905.848302274.run (null)
 java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:511)
 java.util.concurrent.FutureTask.run (FutureTask.java:266)
 k.a (SourceFile:146)
 net.minecraft.server.MinecraftServer.w (SourceFile:671)
 net.minecraft.server.MinecraftServer.v (SourceFile:627)
 dal.v (SourceFile:155)
 net.minecraft.server.MinecraftServer.run (SourceFile:532)
 java.lang.Thread.run (Thread.java:748)
And as found in 18w14b:
> stop at bcj:109
Set breakpoint bcj:109
Breakpoint hit: "thread=WorldGen-Worker-3", bcj.a(), line=109 bci=0
 bcj.a (SourceFile:109)
 bgy.a (SourceFile:244)
 bir$b$1.a (SourceFile:210)
 bir.a (SourceFile:155)
 bir.a (SourceFile:147)
 bir.a (SourceFile:58)
 bik.B (SourceFile:1,044)
 bik.G (SourceFile:1,148)
 se.a (SourceFile:33)
 se.put (SourceFile:11)
 it.unimi.dsi.fastutil.longs.Long2ObjectMaps$SynchronizedMap.put (Long2ObjectMaps.java:371)
 sg.a (SourceFile:207)
 sg$$Lambda$937.1969878285.apply (null)
 java.util.concurrent.CompletableFuture.uniApply (CompletableFuture.java:602)
 java.util.concurrent.CompletableFuture$UniApply.tryFire (CompletableFuture.java:577)
 java.util.concurrent.CompletableFuture.postComplete (CompletableFuture.java:474)
 java.util.concurrent.CompletableFuture.postFire (CompletableFuture.java:561)
 java.util.concurrent.CompletableFuture$UniCompose.tryFire (CompletableFuture.java:929)
 java.util.concurrent.CompletableFuture$Completion.exec (CompletableFuture.java:443)
 java.util.concurrent.ForkJoinTask.doExec (ForkJoinTask.java:289)
 java.util.concurrent.ForkJoinPool$WorkQueue.runTask (ForkJoinPool.java:1,056)
 java.util.concurrent.ForkJoinPool.runWorker (ForkJoinPool.java:1,692)
 java.util.concurrent.ForkJoinWorkerThread.run (ForkJoinWorkerThread.java:157)
The first affected snapshot is 17w47b (probably a is affected too; 17w46a is not), which was the snapshot that introduced the flattening.