mirror of
https://github.com/GTNewHorizons/ForgeMultipart.git
synced 2026-11-13 17:04:25 +00:00
rayTraceAll was the one method the read-path cleanup restructured, moving from an indexed loop over a copied list to an iterator with a manual counter, and nothing covered it. The index it writes into ExtendedMOP.data is what reduceMOP hands back to every click, activate, harvest and pick block, so an off-by-one there would misroute interactions silently. Six tests pin the index production: a part that misses still consumes its index, sorting by distance happens after the indices are assigned, the part's own data is nested underneath rather than replaced, subHit keeps its default because data is assigned directly, and an index taken from a hit still selects the part that produced it. harvestPart's indexing and collisionRayTrace's nearest-or-null are covered alongside. All six also pass against the pre-cleanup implementation at 370b353^, which is the evidence that the restructure preserved behavior.