Skip to content
BonsUnleashed edited this page Oct 10, 2026 · 7 revisions

Pipez

Minecraft 1.20.1 / Forge: this page documents that build and its measurements. For the separate 205-control Minecraft 1.21.1 port, see Minecraft 1.21.1 NeoForge.

Two controls for Pipez 1.20.1-1.2.26 (mod id pipez): pipes stop re-sorting an unchanged pipe network on every transfer, and pipes without filters stop building filter lists for every slot they try. Every switch checks the code it would change against the tested build; another build is left untouched with one WARN line (see How the patches are applied).

Key Target Side Since Kind
pipez_empty_filter_fast_path Pipez 1.20.1-1.2.26 BOTH 1.0.30 opt
pipez_sorted_connections_memo Pipez 1.20.1-1.2.26 BOTH 1.0.30 opt

pipez_sorted_connections_memo

Since: 1.0.30 · Target: Pipez 1.20.1-1.2.26 · Side: BOTH (pipe logic on the server, incl. the integrated server) · Kind: opt

Mixin: UpgradeTileEntitySortMixin

Pipez pipes stop re-sorting an unchanged pipe network on every transfer. Every item transfer, every fluid and gas pipe tick and every energy push into a pipe asks for the network's destinations in distribution order, and Pipez sorts the connection list again through a stream each time, although the list only changes when pipes change. Each pipe now keeps the order of its last sorted list and hands out a new copy while the list is the same object with the same entries in the same order and the distribution is the same. The order is the original's: both sorts are stable and use the same distance; random distribution still shuffles as before, and any unusual entry (a missing or modded connection) runs the original. Not in our pack: public value.

Idea: our own finding (found while reading Pipez for the Pipez Optimizer idea, idea text only)

Measured: public value; not visible in this pack. Offline on the real classes (untransformed classes as the baseline, 11 interleaved rounds, median): 53 -> 12 ns per call with 1 connection, 114-135 -> 37 ns with 4, 490-500 -> 100 ns with 16, and 330-600 -> 48-128 B; 60 random scenarios (29,857 calls incl. list replacements, in-place edits, all distributions, missing levels, null and modded entries) gave the original's lists.


pipez_empty_filter_fast_path

Since: 1.0.30 · Target: Pipez 1.20.1-1.2.26 · Side: BOTH (pipe logic on the server, incl. the integrated server) · Kind: opt

Mixins: ItemPipeTypeFilterMixin, FluidPipeTypeFilterMixin, GasPipeTypeFilterMixin

Pipez pipes without filters stop building filter lists for every slot they try. Item, fluid and gas pipes check their filters for every slot or tank they try for every destination (in round-robin mode for every single item), and the check builds two filtered lists through streams even when no filter is set, which is the usual case. With no filter the check is now answered at once: over an empty filter list the original cannot refuse, so the answer is the same; pipes with filters run the original check. Not in our pack: public value.

Idea: our own finding (found while reading Pipez for the Pipez Optimizer idea, idea text only)

Measured: public value; not visible in this pack. Offline on the real classes (untransformed classes as the baseline, 11 interleaved rounds, median): item check 133 -> 3.6 ns and 880 -> 0 B per call, fluid check 120 -> 4.9 ns and 816 -> 0 B; 5,803 random checks (empty, missing and filled filter lists of all kinds) answered like the original.

Fixed in 1.0.34. With Pipez Optimizer 1.0.7 installed and Mekanism not installed, 1.0.30 and 1.0.33 failed while mods loaded: Pipez Optimizer loads Pipez's gas pipe class without Mekanism, and the gas-pipe part of this control then needed Mekanism's classes. Since 1.0.34 that part is left out when Mekanism is not installed, with one log line; the item and fluid parts work as before. With 1.0.33, set this key to false or install Mekanism.

Bons and Furious

Minecraft 1.20.1 / Forge 1.0.38

Compatibility

Controls by mod

Links

Clone this wiki locally