Fix frame flood-fill to follow diagonal (stepped) ring connections

Round/octagonal rings built the normal Minecraft way step diagonally
at the corners - two frame blocks touching only edge-to-edge, not
face-to-face. The scanner only checked the 6 face-adjacent neighbours,
so those blocks were treated as disconnected fragments and the whole
ring failed to register (or only a fraction of it did).

Frame discovery now flood-fills using all 26 surrounding offsets
instead of just the 6 faces. The geometric chevron walk needed the
same fix - its in-plane adjacency now checks 8 directions (orthogonal
+ diagonal) instead of 4, so stepped rings still produce a clean
single-loop walk instead of falling back to evenly-spaced chevrons.

Interior/iris flood-fill is intentionally left orthogonal-only: since
it only ever moves face-to-face, a diagonal-only frame corner already
blocks it from slipping past, so enclosure detection didn't need to
change.
This commit is contained in:
Michael Burgess
2026-08-09 11:04:20 -04:00
parent fe3b2b0f14
commit 282c8cfdbb
2 changed files with 30 additions and 4 deletions
+3
View File
@@ -19,6 +19,9 @@ Build everything with `./gradlew build`. Jars land in each module's `build/libs/
There's no fixed size or shape - build any single connected ring out of
`gate.frame-materials` (default: obsidian, gold block, gilded blackstone, birch/oak
planks) with a fully sealed hollow interior. No gaps; the interior must be enclosed.
"Connected" includes the usual diagonal stepping a round/octagonal ring needs at its
corners (blocks touching only edge-to-edge or corner-to-corner still count), so a
circular build doesn't need every block to share a full face with the next.
Chevrons aren't a separate material you place. When the gate is linked, the plugin
flood-fills the ring, walks it in geometric order, and picks out the blocks that stick