Перейти к содержимому
Mineforgian

Redstone Additions

Best redstone&tech datapack, Super optimized, 55+ blocks (Block breaker, block placer, filters, conveyors, item pipes, breeder, generators, gates, chunk loader, wireless redstone, multiblocks, jetpacks and so much more ! )

Загрузки
3K
Подписчики
11
Обновлён
23 августа 2026 г.
Лицензия
AMDL-v1

Опубликован 11 декабря 2025 г.

Redstone Additions

Redstone Additions

59 custom blocks. 7 tools. 69 recipes. 2 jetpacks and 3 upgrade kits. Vanilla datapack for Minecraft 1.21.9–26.2.

Modrinth GitHub

Minecraft 1.21.9-26.2 Version v5.1.16 59 blocks 7 tools 69 recipes

Every custom block in Redstone Additions, laid out on pillars

Every block the pack adds, in one place. Click to enlarge.


Redstone Additions expands vanilla redstone with logic gates, automation machines, storage, sensors, wireless signaling, chunk loading, multiblocks, and liquid/gas/electric transport networks.

It also goes beyond redstone: jetpacks that fit onto any chestplate, enchant crafting that gambles items on an enchanting table, generators that regrow their own material, and ender links that move items, fluids, power and players between distant places.

All systems run as a pure datapack using marker entities and function-driven runtime logic. No mods required.

Version Compatibility

Supported: Minecraft 1.21.9 – 26.2 (data pack formats 88 – 107).

The pack declares and loads across that whole span. Exactly one thing inside it genuinely changes shape: format 102 (26.2-snapshot-3) rewrote entity predicates into component-map form, so ra:is_sneaking — which gates the wrench's shift action, the goggles' tinker action and the Redstone Remote's channel prompt — needs both spellings. The pack ships both: the base file uses the pre-102 form and overlay_102/ carries the component-map form, applied automatically from 26.2-snapshot-3 onward. Nothing else in the pack touches a feature that broke between 88 and 107 — no filtered loot function, no contents dynamic entry, no renamed game rules, no special crafting recipes.

Earlier versions are not supported, but most of the pack does not actually need 1.21.9 — the hard floor is the pack.mcmeta schema. If you edit pack.mcmeta to a lower pack_format and drop min_format/max_format, this is what breaks and when:

Below What stops working
1.21.9 Nothing in the content itself — only the min_format/max_format fields, which that version introduced
1.21.5 Item Pipe filters, which identify their item frame by block_pos
1.21.2 Almost every item's appearance and identity (item_model, consumable, component removal)
1.20.5 Setting the Redstone Remote's channel (copy_custom_data)
1.20.2 Everything — the pack is built on macro functions and return run

So in practice the content runs on 1.21.5+ with only the pipe filters missing, and on 1.21.2+ in a degraded state. None of that is declared or supported.

I recommend using Bundles Beyond for better bundle previews.


Module Previews

One banner per module. Modules without a screenshot yet show a placeholder — contributions welcome, drop a PNG in docs/images/screenshots/ and swap the row.

Every recipe in the pack is on one page in the Recipe Atlas — listed A to Z and grouped by module.

Module Banner
Logic Gates No screenshot yet
Interactive Machines No screenshot yet
Storage No screenshot yet
Sensors No screenshot yet
Wireless Redstone No screenshot yet
Transport Networks An EU grid running
  ↳ fluids A fluid network
  ↳ Electric Furnace Electric Furnace smelting on EU
  ↳ Industrial Light Industrial Light casting its beam
Chunk Loader No screenshot yet
Multiblocks Blast Forge
Enchant Crafting No screenshot yet
Jetpacks Hover flight
Infinite Generators No screenshot yet
Ender Links No screenshot yet
Tools No screenshot yet

Blocks

Logic Gates (6)

  • UNI Gate
  • Clock
  • Delayer
  • Extender
  • Randomizer
  • Shortener

Interactive Machines (12)

  • Block Breaker
  • Block Placer
  • Item Pipe — filters by an item id set from your hand, no item frame
  • Item Mover
  • Spitter
  • Breeder
  • Magic Crate — pulls dropped items in from 5-20 blocks
  • Big Torch — denies hostile spawns within 1-100 blocks
  • Infinite Water Cauldron
  • Infinite Lava Cauldron
  • Infinite Snow Cauldron
  • Message Block

Storage (2)

  • Boxer
  • Unboxer

Sensors (3)

  • Entity Detector
  • Tag Adder
  • Tag Remover

Wireless (2)

  • Wireless Emitter
  • Wireless Receiver

Transport Networks (21)

Fluids, in millilitres:

  • Copper Pipe
  • Liquid Tank
  • Liquid Pump
  • Liquid Valve — moves contents between the two networks it separates
  • Liquid Filter — passes only the one medium it is set to
  • Liquid Drain — world source in, or network contents back out
  • Gas Tank
  • Gas Pump
  • Gas Valve
  • Boiler — water plus heat to steam

Electricity, in EU:

  • Wire
  • EU Generator — a barrel wearing a furnace; drop fuel in, no smelting slot
  • EU Consumer
  • EU Switch — redstone conducts, no redstone cuts
  • Battery — 10000 EU of grid capacity
  • EU Breaker — evens EU between the grids either side
  • Solar Panel
  • Industrial Light — redstone plus EU, a 10 block beam of real light
  • Electric Furnace — smelts on EU with no fuel, four power modes

Creative, for building and testing:

  • Creative EU Source — refills its grid to capacity every tick
  • Creative Fluid Source — fills with a medium cycled by the wrench

There are no tiers. A netherite pipe was a more expensive way to buy the same block, so the tiered items now place the single version.

Chunk Loader (1)

  • Chunk Loader

Infinite Generators (3)

  • Mineral Generator
  • Nether Generator
  • Poppy Generator

Built from a crafted Generator Casing plus a Core won by sacrificing stone, netherrack or poppies on an enchanting table.

Ender Links (4)

  • Ender Item Vault — barrels that share their contents across a channel
  • Ender Fluid Vault — liquid and gas across a channel, as a fluid network node
  • Ender Power Vault — EU across a channel, as an electric node
  • Teleport Anchor — redstone strength 1-15 picks which anchor you arrive at

Multiblock Bases (5)

  • Copper Multiblock Base
  • Iron Multiblock Base
  • Gold Multiblock Base
  • Diamond Multiblock Base
  • Netherite Multiblock Base

Items (12)

  • Iron Jetpack Kit — right-click while wearing any chestplate to fit it
  • Infinite Iron Jetpack Kit — won on an enchanting table; burns no fuel
  • Thruster Kit — hold sprint while airborne to accelerate
  • Lift Kit — climbs and sinks about twice as fast
  • Scorch Kit — sets fire to what flies under you
  • Generator Casing
  • Mineral Core
  • Nether Core
  • Poppy Core
  • Enchanted Coal — won by sacrificing coal on an enchanting table
  • Enchanted Coal Block — nine of them, plus a stick, make a Big Torch
  • Item Crate — what the Boxer packs a chest into, and the Unboxer unpacks

Fitted kits live on the chestplate and are listed in its lore. /trigger ra.jp.kits switches one off or takes it back as an item.

Tools (7)

  • Wrench — the only tool that changes a block. Shift+RMB cycles a setting, or opens a menu when the block has more than one
  • Goggles — wear or hold to read every block in range. Read-only
  • Data Handler — edits one block's properties in detail
  • Creative Data Handler — edits anything, including what the block owns
  • Clipboard — copies one block's settings onto others of the same kind
  • Multimeter — reads a network's numbers into chat
  • Redstone Remote — wireless channel control

See the Tools page for recipes and usage.


Development Setup

This project uses Beet to build the datapack from source.

Prerequisites

  • Python 3.10 or higher
  • Git

Quick Start

1. Clone the Repository

git clone https://github.com/AnCarsenat/Redstone-Additions.git
cd Redstone-Additions
git checkout beet_rewrite

2. Set Up the Virtual Environment

Navigate to the redstone_additions/ directory and create a Python virtual environment:

cd redstone_additions
python3 -m venv .venv

3. Activate the Virtual Environment

On Linux/macOS:

source .venv/bin/activate

On Windows (CMD):

.venv\Scripts\activate.bat

On Windows (PowerShell):

.venv\Scripts\Activate.ps1

4. Install Dependencies

pip install -r requirements.txt

5. Link to Your Minecraft World

Use beet's link command to connect to your Minecraft world. Specify the path to your Minecraft installation and the world name:

beet link --minecraft /path/to/minecraft <world_name>

Example with PrismLauncher:

beet link --minecraft "~/.local/share/PrismLauncher/instances/26.2 Fabric/minecraft" DevWorld

This creates a symbolic link between the built datapack and your world's datapacks folder.

6. Build and Test

Build the datapack from source:

beet build

The compiled datapack will be generated in the build/ directory and automatically linked to your world.

To enable auto-rebuild when you make changes, use watch mode:

beet watch

Then use /reload in-game to apply changes.

Development Workflow

  1. Navigate to the redstone_additions/ directory
  2. Ensure the virtual environment is activated: source .venv/bin/activate
  3. Edit files in the src/ directory
  4. Use beet watch for automatic rebuilding on file changes
  5. Use /reload in-game to apply changes immediately

Installation

Option A (Modrinth)

  1. Download the latest .zip from Modrinth.
  2. Place it in .minecraft/saves/<your_world>/datapacks/.
  3. Run /reload.

Option B (GitHub)

git clone https://github.com/AnCarsenat/Redstone-Additions.git

Copy redstone_additions into your world datapacks/ directory, then run /reload.

Starter command:

/function ra:give_all_items

Quick Links

Link URL
Docs Home https://ancarsenat.github.io/Redstone-Additions/
Logic Gates https://ancarsenat.github.io/Redstone-Additions/logic-gates/
Interactive Machines https://ancarsenat.github.io/Redstone-Additions/interactive-machines/
Storage https://ancarsenat.github.io/Redstone-Additions/storage/
Sensors https://ancarsenat.github.io/Redstone-Additions/sensors/
Wireless Redstone https://ancarsenat.github.io/Redstone-Additions/wireless-redstone/
Transport Networks https://ancarsenat.github.io/Redstone-Additions/transport-networks/
Tools https://ancarsenat.github.io/Redstone-Additions/tools/
Chunk Loader https://ancarsenat.github.io/Redstone-Additions/chunk-loader/
Multiblocks https://ancarsenat.github.io/Redstone-Additions/multiblocks/
Enchant Crafting https://ancarsenat.github.io/Redstone-Additions/enchant-crafting/
Jetpacks https://ancarsenat.github.io/Redstone-Additions/jetpacks/
Infinite Generators https://ancarsenat.github.io/Redstone-Additions/infinite-generators/
Ender Links https://ancarsenat.github.io/Redstone-Additions/ender-links/
Block Reference https://ancarsenat.github.io/Redstone-Additions/block-reference/
Recipe Reference https://ancarsenat.github.io/Redstone-Additions/recipe-reference/
Changelog https://ancarsenat.github.io/Redstone-Additions/changelog/

Useful Commands

Command Purpose
/function ra:give_all_items One prefilled bundle per namespace
/function ra_gates:items/give_all Logic gate items
/function ra_interactive:items/give_all Interactive machine items
/function ra_storage:items/give_all Storage items
/function ra_sensors:items/give_all Sensor items
/function ra_wireless:items/give_all Wireless items
/function ra_wires:items/give_all Transport and EU items
/function ra_chunk_loader:items/give_all Chunk loader items
/function ra_multiblock:blocks/give_all Multiblock base items
/function ra_infinite:items/give_all Generator casing and generators
/function ra_jetpacks:items/give_all Jetpack kits
/function ra_ender:items/give_all Ender vaults and Teleport Anchors
/function ra:tools/wrench/give Wrench
/function ra:tools/data_handler/give Data Handler
/function ra:tools/creative_data_handler/give Creative Data Handler
/function ra:tools/goggles/give Goggles
/function ra_wireless:tools/remote/give Redstone Remote
/function ra:uninstall Clean uninstall

Documentation


License

Copyright (c) 2026 AnCarsenat. All rights reserved. See LICENSE for the full terms — the short version:

  • Play with it freely on any world, server or realm, including commercial servers.
  • Modify your own copy as much as you like.
  • Do not redistribute it — no reuploads, mirrors, repackages or modpack bundles of the pack or any part of it, modified or not, without written permission. Link to the official pages instead.
  • Addons are welcome and need no permission. A separate pack of your own that depends on RA, in your own namespaces, containing no RA namespace, is yours: publish it anywhere, on any terms, and use the snippets from the docs and ra_example to build it.

Redstone Additions is fan content and is not affiliated with Mojang or Microsoft. The recipe pictures under docs/images/recipes/ are drawn from Minecraft's own textures, which remain Mojang's property and are used under their asset guidelines.


Created by AnCarsenat
Report a Bug · Documentation · Download

Ченджлог

5.1.16+modРелиз26.1.1, 26.1.2, 26.2 · 23 августа 2026 г.

[v5.1.16] - 2026-08-20 - Mixed pipes

Supported versions: 1.21.9 - 26.2 (data pack formats 88 - 107).

Added

  • Networks hold several media at once. Water, lava and steam can share a pipe run, each with its own entry, and the run clogs on the sum rather than on any one medium. A network used to refuse anything but what it already held, so a run was single-purpose for as long as it held anything at all. Nothing refuses an offer now except a lack of room.
  • Liquid Filter. A Valve that passes only the medium it is set to, so a mixed run can be sorted back into single-medium branches. It levels per medium: two runs each holding 5000 mL are not level to a water filter if one is all lava.
  • Potions keep their effects. A potion poured into a Drain is 1000 mL of the potion medium and the network remembers which potion. A Drain set to output applies it to everyone within four blocks, with the duration scaled by how much was drawn and the level the potion says it has. The first potion into a network keeps its identity.
  • item_name properties, and [Set from hand]. A property holding an item id gets a second button that copies whatever you are holding. Nobody should have to spell minecraft:polished_blackstone_slab to configure a sorter.
  • Big Torch. An end rod wearing a torch scaled to a full block tall, always standing up. Denies hostile spawns within 1-100 blocks, set with the Data Handler. It drops what spawned inside the radius into the void and leaves what walked in, by remembering every mob in a band 16 blocks past it — dropping rather than killing is what stops it being a mob farm that also lights the room. Built from Enchanted Coal — sacrifice coal on an enchanting table at 1% — nine of which make an Enchanted Coal Block, which over a stick makes the torch.

Changed

  • The Big Torch drops mobs into the void instead of killing them, and its radius stops advertising a reach it does not have. A kill fires the death, so a torch in a dark room was a passive mob farm that also lit the room; a denied mob is now teleported out of the bottom of the world and nobody collects anything. The destination is deliberately not derived from min_y — void damage starts some distance below it and that distance is not the same across the versions this pack supports, so it goes far enough down that no supported dimension reaches it. The 100-block ceiling was applied to the working value but not written back, so a torch set to 500 swept 100 while the goggles and the Data Handler both said 500.

  • Item Pipe filters are a property, not an item frame. Set with [Set from hand]; the goggles draw the item it is filtering for, above the id. Reading a filter used to mean an entity selector per pipe plus a block_pos comparison per candidate frame, cached and rescanned every 20 ticks — so a frame you had just hung did nothing for up to a second. It is now one data modify with no selector, no cache and no stale second. Existing pipes migrate; their frames are left alone.

  • Tools no longer stack. Every tool is max_stack_size=1. They carry per-tool state — the Clipboard's origin, the Remote's channel — and two in one slot is a stack whose state belongs to whichever was picked up last. The bundles still hold the full set: bundle_contents set by a command is not subject to the weight limit that applies to inserting by hand.

  • The Electric Furnace's top mode cost three EU Generators to run. 1000 EU an item at five ticks an item is 200 EU/t, or about twenty Solar Panels across a daylight cycle — priced out of the game rather than expensive. The table is now anchored on one EU Generator at 60 EU/t: 40/80/160/300 EU per item for low/medium/high/superpowered. Each step still costs more per unit of speed than the one below it.

  • The Creative Fluid Source tops up at a rate instead of claiming the run. It offered the whole of the network's free space every tick, which is what a single-medium source wanted and exactly the wrong thing now that a run can hold several media: one source took the entire network on the tick it was placed — 100000 mL of water in one go — and every other source, Pump and Drain on that run then found a full network for ever. A mixed run could not be built anywhere one was attached, and it looked like the run refusing the new medium rather than like the source having already taken the room. It now adds rate mL per tick, 1000 by default and settable on the Data Handler, so sources sharing a run interleave.

Fixed

  • A nameless total survived every rebuild, and renamed itself to whatever came next. rebuild/snapshot_read would carry a network's bare amount across a rebuild when it had no breakdown to carry, on the grounds that losing the contents silently was worse than losing their name. It is worse. The carried total had nothing to reconstruct amounts from, so the next rebuild carried it again, and the first medium offered afterwards became the only entry in media and therefore the name of all of it — 15000 mL of nothing reporting itself as 15000 mL of the next thing you poured in. Networks reached a state holding a five-figure amount with no medium at all, which neither migration could repair because both are gated on a medium those networks did not have. A rebuild now carries the breakdown and nothing else, and the total is summed back from it, so amount is always exactly the sum of amounts.

  • The read-time migration could never fire on a network that needed it. It tested unless data ... media, and rebuild/reset_net writes media:[] — an empty list is present as far as if data is concerned, so a network holding an amount with an empty breakdown was never migrated. rebuild/snapshot_read made the same test as media[0] and got the right answer; the two disagreeing is what let the state persist.

  • The Big Torch, the Magic Crate and the Breeder each duplicated their own block. All three killed the vanilla drop with a bare kill @e[type=item, ...,distance=..2] — no execute as @e[tag=ra.broken,...] at @s run in front of it — so the distance was measured from wherever the module's tick function stood rather than from the block that had just been broken. The end rod or barrel survived and was handed back alongside the custom item. Every other block in the pack already wrapped this correctly. The bare form also ran every tick, so any end rod or barrel item that drifted near the tick position was deleted.

  • The Data Handler's registry never reached an existing world. It was seeded lazily, unless data storage ra:dh numeric, from three call sites — so a world upgraded from an earlier version already had numeric, the guard passed, and the registry was never rewritten. It kept the old list, with no filter_item and no filter_medium in it and no item_names list at all, so neither filter had a row in the editor on any block. It is now written on every load, like the wrench and readonly registries beside it, and a name added to it reaches an existing world on the next /reload.

  • The Creative Fluid Source's medium could only be set with the wrench. Its medium property was never in the Data Handler's registry, so it had no row — and neither did enabled, which the wrench toggles on emitters and multiblocks. Both are registered now. A medium typed rather than cycled is checked against the media registry before anything is pushed, because free text can name a medium that does not exist and a junk key in a multi-medium network is one nothing could ever drain.

  • The Data Handler had no row for either filter. It draws a row only for a property the block actually has, and Item Pipes were placed carrying none at all, while filter_medium was never added to the registry. Pipes are now placed with an empty filter_item, existing ones get it from the migration, and both names are registered.

  • The same item came out different depending on where it came from. Twenty items had lore that disagreed between the recipe, the give function, the namespace bundle and the block's own break drop — so a crafted Liquid Filter and a broken one were different items and would not stack. All four sources now agree, from the recipe.

  • The Redstone Remote's recipe claimed Channel: default for ever. The lore line was static and set_channel is a copy_custom_data modifier that never touches lore, so a remote switched to another channel went on saying default. The line is gone.

  • The up and down sides read every redstone source as 0. ra_lib:redstone/side substituted the back direction into a redstone_wire connection state, which has no up or down — so the macro line failed to parse and stopped the whole function before it ran. A lever sitting directly on a block never turned it on, and neither did a torch underneath or a redstone block on top. Every block using the library was blind above and below.

  • The readme's counts. The subtitle claimed 52 blocks, 5 tools and 58 recipes while the badges beside it said 57, 7 and 66; the badges were right. The block and tool reference tables were short by four blocks and the Redstone Remote.

5.1.16Релиз26.1.1, 26.1.2, 26.2 · 23 августа 2026 г.

[v5.1.16] - 2026-08-20 - Mixed pipes

Supported versions: 1.21.9 - 26.2 (data pack formats 88 - 107).

Added

  • Networks hold several media at once. Water, lava and steam can share a pipe run, each with its own entry, and the run clogs on the sum rather than on any one medium. A network used to refuse anything but what it already held, so a run was single-purpose for as long as it held anything at all. Nothing refuses an offer now except a lack of room.
  • Liquid Filter. A Valve that passes only the medium it is set to, so a mixed run can be sorted back into single-medium branches. It levels per medium: two runs each holding 5000 mL are not level to a water filter if one is all lava.
  • Potions keep their effects. A potion poured into a Drain is 1000 mL of the potion medium and the network remembers which potion. A Drain set to output applies it to everyone within four blocks, with the duration scaled by how much was drawn and the level the potion says it has. The first potion into a network keeps its identity.
  • item_name properties, and [Set from hand]. A property holding an item id gets a second button that copies whatever you are holding. Nobody should have to spell minecraft:polished_blackstone_slab to configure a sorter.
  • Big Torch. An end rod wearing a torch scaled to a full block tall, always standing up. Denies hostile spawns within 1-100 blocks, set with the Data Handler. It drops what spawned inside the radius into the void and leaves what walked in, by remembering every mob in a band 16 blocks past it — dropping rather than killing is what stops it being a mob farm that also lights the room. Built from Enchanted Coal — sacrifice coal on an enchanting table at 1% — nine of which make an Enchanted Coal Block, which over a stick makes the torch.

Changed

  • The Big Torch drops mobs into the void instead of killing them, and its radius stops advertising a reach it does not have. A kill fires the death, so a torch in a dark room was a passive mob farm that also lit the room; a denied mob is now teleported out of the bottom of the world and nobody collects anything. The destination is deliberately not derived from min_y — void damage starts some distance below it and that distance is not the same across the versions this pack supports, so it goes far enough down that no supported dimension reaches it. The 100-block ceiling was applied to the working value but not written back, so a torch set to 500 swept 100 while the goggles and the Data Handler both said 500.

  • Item Pipe filters are a property, not an item frame. Set with [Set from hand]; the goggles draw the item it is filtering for, above the id. Reading a filter used to mean an entity selector per pipe plus a block_pos comparison per candidate frame, cached and rescanned every 20 ticks — so a frame you had just hung did nothing for up to a second. It is now one data modify with no selector, no cache and no stale second. Existing pipes migrate; their frames are left alone.

  • Tools no longer stack. Every tool is max_stack_size=1. They carry per-tool state — the Clipboard's origin, the Remote's channel — and two in one slot is a stack whose state belongs to whichever was picked up last. The bundles still hold the full set: bundle_contents set by a command is not subject to the weight limit that applies to inserting by hand.

  • The Electric Furnace's top mode cost three EU Generators to run. 1000 EU an item at five ticks an item is 200 EU/t, or about twenty Solar Panels across a daylight cycle — priced out of the game rather than expensive. The table is now anchored on one EU Generator at 60 EU/t: 40/80/160/300 EU per item for low/medium/high/superpowered. Each step still costs more per unit of speed than the one below it.

  • The Creative Fluid Source tops up at a rate instead of claiming the run. It offered the whole of the network's free space every tick, which is what a single-medium source wanted and exactly the wrong thing now that a run can hold several media: one source took the entire network on the tick it was placed — 100000 mL of water in one go — and every other source, Pump and Drain on that run then found a full network for ever. A mixed run could not be built anywhere one was attached, and it looked like the run refusing the new medium rather than like the source having already taken the room. It now adds rate mL per tick, 1000 by default and settable on the Data Handler, so sources sharing a run interleave.

Fixed

  • A nameless total survived every rebuild, and renamed itself to whatever came next. rebuild/snapshot_read would carry a network's bare amount across a rebuild when it had no breakdown to carry, on the grounds that losing the contents silently was worse than losing their name. It is worse. The carried total had nothing to reconstruct amounts from, so the next rebuild carried it again, and the first medium offered afterwards became the only entry in media and therefore the name of all of it — 15000 mL of nothing reporting itself as 15000 mL of the next thing you poured in. Networks reached a state holding a five-figure amount with no medium at all, which neither migration could repair because both are gated on a medium those networks did not have. A rebuild now carries the breakdown and nothing else, and the total is summed back from it, so amount is always exactly the sum of amounts.

  • The read-time migration could never fire on a network that needed it. It tested unless data ... media, and rebuild/reset_net writes media:[] — an empty list is present as far as if data is concerned, so a network holding an amount with an empty breakdown was never migrated. rebuild/snapshot_read made the same test as media[0] and got the right answer; the two disagreeing is what let the state persist.

  • The Big Torch, the Magic Crate and the Breeder each duplicated their own block. All three killed the vanilla drop with a bare kill @e[type=item, ...,distance=..2] — no execute as @e[tag=ra.broken,...] at @s run in front of it — so the distance was measured from wherever the module's tick function stood rather than from the block that had just been broken. The end rod or barrel survived and was handed back alongside the custom item. Every other block in the pack already wrapped this correctly. The bare form also ran every tick, so any end rod or barrel item that drifted near the tick position was deleted.

  • The Data Handler's registry never reached an existing world. It was seeded lazily, unless data storage ra:dh numeric, from three call sites — so a world upgraded from an earlier version already had numeric, the guard passed, and the registry was never rewritten. It kept the old list, with no filter_item and no filter_medium in it and no item_names list at all, so neither filter had a row in the editor on any block. It is now written on every load, like the wrench and readonly registries beside it, and a name added to it reaches an existing world on the next /reload.

  • The Creative Fluid Source's medium could only be set with the wrench. Its medium property was never in the Data Handler's registry, so it had no row — and neither did enabled, which the wrench toggles on emitters and multiblocks. Both are registered now. A medium typed rather than cycled is checked against the media registry before anything is pushed, because free text can name a medium that does not exist and a junk key in a multi-medium network is one nothing could ever drain.

  • The Data Handler had no row for either filter. It draws a row only for a property the block actually has, and Item Pipes were placed carrying none at all, while filter_medium was never added to the registry. Pipes are now placed with an empty filter_item, existing ones get it from the migration, and both names are registered.

  • The same item came out different depending on where it came from. Twenty items had lore that disagreed between the recipe, the give function, the namespace bundle and the block's own break drop — so a crafted Liquid Filter and a broken one were different items and would not stack. All four sources now agree, from the recipe.

  • The Redstone Remote's recipe claimed Channel: default for ever. The lore line was static and set_channel is a copy_custom_data modifier that never touches lore, so a remote switched to another channel went on saying default. The line is gone.

  • The up and down sides read every redstone source as 0. ra_lib:redstone/side substituted the back direction into a redstone_wire connection state, which has no up or down — so the macro line failed to parse and stopped the whole function before it ran. A lever sitting directly on a block never turned it on, and neither did a torch underneath or a redstone block on top. Every block using the library was blind above and below.

  • The readme's counts. The subtitle claimed 52 blocks, 5 tools and 58 recipes while the badges beside it said 57, 7 and 66; the badges were right. The block and tool reference tables were short by four blocks and the Redstone Remote.

5.1.15+modРелиз26.1.1, 26.1.2, 26.2 · 19 августа 2026 г.

[v5.1.15] - 2026-08-19 - Settings

Supported versions: 1.21.9 - 26.2 (data pack formats 88 - 107).

Added

  • A settings system, ra_settings. Two scopes, reached two ways on purpose. Server settings are /function ra_settings:admin/... and nothing else, because /function autocompletes and that is the only way an operator finds a setting without being told its name. Player preferences are /trigger ra.settings.open and nothing else, so somebody with no permissions can change what they see and hear. /function ra:settings is the short way into the operator panel.
  • Blocks can be turned off. Every placeable block has enable/disable. A disabled block cannot be placed and the item is handed back; anything already built keeps working, and the item can still be crafted and held.
  • A disabled-blocks page, listing every switched-off block in red with a button to re-enable each, plus a warning on every load when the list is not empty — shown whether or not the load message is.
  • Block defaults can be retuned — generator EU/tick, clock interval, vault transfer rates, crate radius and the rest. Applied when a block is placed, so a build balanced around the old numbers is not changed underneath it, with [Apply to placed] as the explicit opt-out.
  • Per-player sound and particle switches, honoured by all 118 playsound and particle calls in the pack, plus a debug switch wired through the existing ra.debug tag.
  • Jetpacks and Enchant Crafting settings pages. Thruster Kit thrust, speed cap and deadzone are tunable; enchant crafting can be switched off. The jetpack values are read once per tick rather than per flying player.
  • Numeric and text settings can be typed, through the same input form the Data Handler opens for a clock's delay, instead of only stepped.
  • The goggles redraw interval and scan range are settings.
  • ra.admin grants server-settings access and persists, so a tagged player opens the panel straight from the button. Managed with ra_settings:admin/grant and /revoke.
  • Uninstall warns twice, the second time listing exactly what is about to be destroyed, and is reachable from the settings index. Its own buttons keep the confirmation dialog on purpose. It also cleans up what the original missed, and the settings half is generated so it cannot drift again.
  • Settings documentation, covering both scopes, the trigger table and the JSON contract for adding a page.

Fixed

  • Ender vaults could not find each other. link/send_items looks for a partner wearing ra.ender.recv_item; item_vault/tick cleared that tag every tick and nothing anywhere set it, so a sending vault searched for a tag no vault could be wearing. Broken since v5.1.8, when the lines that set it were deleted along with the enabled property they mentioned. All three vault types were affected.
  • The Electric Furnace skin flickered, vanished and z-fought while working. apply_lit killed the old block_display and summoned a replacement, but kill does not remove an entity until the end of the tick — so two identical displays overlapped for the rest of it. State changes now edit the display already there.
  • A working furnace was drawn as switched off, one tick in five on superpowered. Whether it looks like it is cooking is now decided by whether it can cook, with the cooldown deciding only which tick an item comes out on.
  • A steam-fed EU Generator produced power while drawn permanently unlit — it read data.data.burn, the solid-fuel countdown, which the steam path never sets.
  • Jetpack upgrade kits fired with the jetpack switched off. The Thruster and Scorch ran on "wearing the kit and off the ground", so in normal mode — where the jetpack only runs while you sneak — jump, sprint, jump gave a forward boost for free. They were also called above the fuel check, so they worked on an empty tank.
  • Text input never completed. A settings text edit opened its input session before ra_lib:input/tick in the tick order, so the book was scanned in the same tick it was handed over — a state the Data Handler cannot reach, which is why its text input worked throughout and this did not.
  • Settings could consume another tool's input session, handing the Data Handler an empty answer and leaving it waiting for one already taken.
  • A failed settings read disabled the module that asked. ra_settings:get answered 0 for a missing key, and zero is a real value — "off" for a flag, "disabled" for a gate. It now requires the caller to say what missing means.
  • The debug setting fought the ra.debug tag, stripping it every tick from anyone who had added it by hand.
  • A bare /trigger ra.settings.admin performed an arbitrary action instead of opening the index.
  • Back redrew the page you had just left on top of the index.
  • /trigger completion was cluttered with nine blanket-enabled triggers. They are now handed out where usable — a tool's while it is in hand, the jetpack's while one is worn, the settings menu's while a menu is drawn — leaving one.

Changed

  • Settings pages are buttons rather than a wall of text, grouped tunables then block switches, one namespace per line on the index.
  • Player-facing links run a trigger rather than suggesting a function: a suggested /function is useless to somebody who cannot run one.
5.1.15Релиз26.1.1, 26.1.2, 26.2 · 19 августа 2026 г.

[v5.1.15] - 2026-08-19 - Settings

Supported versions: 1.21.9 - 26.2 (data pack formats 88 - 107).

Added

  • A settings system, ra_settings. Two scopes, reached two ways on purpose. Server settings are /function ra_settings:admin/... and nothing else, because /function autocompletes and that is the only way an operator finds a setting without being told its name. Player preferences are /trigger ra.settings.open and nothing else, so somebody with no permissions can change what they see and hear. /function ra:settings is the short way into the operator panel.
  • Blocks can be turned off. Every placeable block has enable/disable. A disabled block cannot be placed and the item is handed back; anything already built keeps working, and the item can still be crafted and held.
  • A disabled-blocks page, listing every switched-off block in red with a button to re-enable each, plus a warning on every load when the list is not empty — shown whether or not the load message is.
  • Block defaults can be retuned — generator EU/tick, clock interval, vault transfer rates, crate radius and the rest. Applied when a block is placed, so a build balanced around the old numbers is not changed underneath it, with [Apply to placed] as the explicit opt-out.
  • Per-player sound and particle switches, honoured by all 118 playsound and particle calls in the pack, plus a debug switch wired through the existing ra.debug tag.
  • Jetpacks and Enchant Crafting settings pages. Thruster Kit thrust, speed cap and deadzone are tunable; enchant crafting can be switched off. The jetpack values are read once per tick rather than per flying player.
  • Numeric and text settings can be typed, through the same input form the Data Handler opens for a clock's delay, instead of only stepped.
  • The goggles redraw interval and scan range are settings.
  • ra.admin grants server-settings access and persists, so a tagged player opens the panel straight from the button. Managed with ra_settings:admin/grant and /revoke.
  • Uninstall warns twice, the second time listing exactly what is about to be destroyed, and is reachable from the settings index. Its own buttons keep the confirmation dialog on purpose. It also cleans up what the original missed, and the settings half is generated so it cannot drift again.
  • Settings documentation, covering both scopes, the trigger table and the JSON contract for adding a page.

Fixed

  • Ender vaults could not find each other. link/send_items looks for a partner wearing ra.ender.recv_item; item_vault/tick cleared that tag every tick and nothing anywhere set it, so a sending vault searched for a tag no vault could be wearing. Broken since v5.1.8, when the lines that set it were deleted along with the enabled property they mentioned. All three vault types were affected.
  • The Electric Furnace skin flickered, vanished and z-fought while working. apply_lit killed the old block_display and summoned a replacement, but kill does not remove an entity until the end of the tick — so two identical displays overlapped for the rest of it. State changes now edit the display already there.
  • A working furnace was drawn as switched off, one tick in five on superpowered. Whether it looks like it is cooking is now decided by whether it can cook, with the cooldown deciding only which tick an item comes out on.
  • A steam-fed EU Generator produced power while drawn permanently unlit — it read data.data.burn, the solid-fuel countdown, which the steam path never sets.
  • Jetpack upgrade kits fired with the jetpack switched off. The Thruster and Scorch ran on "wearing the kit and off the ground", so in normal mode — where the jetpack only runs while you sneak — jump, sprint, jump gave a forward boost for free. They were also called above the fuel check, so they worked on an empty tank.
  • Text input never completed. A settings text edit opened its input session before ra_lib:input/tick in the tick order, so the book was scanned in the same tick it was handed over — a state the Data Handler cannot reach, which is why its text input worked throughout and this did not.
  • Settings could consume another tool's input session, handing the Data Handler an empty answer and leaving it waiting for one already taken.
  • A failed settings read disabled the module that asked. ra_settings:get answered 0 for a missing key, and zero is a real value — "off" for a flag, "disabled" for a gate. It now requires the caller to say what missing means.
  • The debug setting fought the ra.debug tag, stripping it every tick from anyone who had added it by hand.
  • A bare /trigger ra.settings.admin performed an arbitrary action instead of opening the index.
  • Back redrew the page you had just left on top of the index.
  • /trigger completion was cluttered with nine blanket-enabled triggers. They are now handed out where usable — a tool's while it is in hand, the jetpack's while one is worn, the settings menu's while a menu is drawn — leaving one.

Changed

  • Settings pages are buttons rather than a wall of text, grouped tunables then block switches, one namespace per line on the index.
  • Player-facing links run a trigger rather than suggesting a function: a suggested /function is useless to somebody who cannot run one.
5.1.14+modРелиз26.1.1, 26.1.2, 26.2 · 18 августа 2026 г.

v5.1.14 (2026-08-18) — Pictures

Added

  • Screenshots in the wiki. Transport Networks opens on a running EU grid and shows a fluid network, the Electric Furnace and the Industrial Light lit beside unlit; Jetpacks shows hover flight. Seven in docs/images/screenshots/.
  • A banner per module in the README, with a generated docs/images/banners/media-missing.png placeholder for the ones that have no screenshot yet. Swapping a placeholder for a real picture is a one-line edit.
  • An Industrial Light section in Transport Networks, which the page never had.

Fixed

  • The README was stale in ways that mattered. It listed Netherite Liquid Pipe, Netherite Gas Pipe and Netherite Electric Wire as separate blocks — the tiers were removed, and those item tags now place the single version. It was missing eight Transport Networks blocks (Battery, EU Breaker, Industrial Light, Boiler, Solar Panel, Electric Furnace and both Creative sources), the Magic Crate, the three new jetpack kits, and the Clipboard and Multimeter. Counts corrected: 57 blocks, 7 tools, 66 recipes — the badges said 52, 5 and 58.
  • Transport Networks still described tiered pipes in its Block Families table, and pointed at ra_wires:items/give_all, which does not exist. It now names the Wires Bundle and the creative give function.
  • readme.bbcode regenerated from the corrected README.

v5.1.13 (2026-08-18) — Documented

Added

  • Recipes for the Clipboard and Multimeter. Both shipped with a give function and nothing else, so in survival they did not exist.
  • A Tools page, which the wiki never had. The Wrench, Goggles, Data Handler, Clipboard and Multimeter were described only in scattered module notes and the technical pages; the Clipboard and Multimeter had no usage documentation at all, only a row in the item table.
  • Missing unlock advancements for the Battery, EU Breaker, Industrial Light, Boiler, Solar Panel — and the Wrench and Data Handler themselves — plus get_* advancements for the Battery, EU Breaker, Industrial Light, Clipboard and Multimeter. Those blocks were craftable but the recipe never unlocked itself.

Removed

  • Three dead advancements: unlock_electric_wire_netherite and unlock_liquid_pipe_netherite, left behind when the tiered wires and pipes were removed, and unlock_conveyor, which pointed at a recipe and a block that do not exist anywhere in the pack.

Changed

  • The wrench and Data Handler sections of How It Works described the old per-block dispatch and the goggles tinker. Rewritten for the registry-driven menu, including the stacked_prop_line / stacked_status_line / stacked_data_line distinction that silently renders N/A when you pick wrong.
  • The Developer Guide now documents the migrations system and the read-only registry.

v5.1.12 (2026-08-18) — Depth

Fixed

  • Skins z-fought with the block underneath. The overlay was scaled 1.004, leaving two thousandths of a block of clearance on each face. That is geometrically separate and practically not: Minecraft's depth buffer loses precision with distance, so a few chunks out both surfaces resolve to the same depth and flicker. The margin is now 1.02 — a hundredth of a block per face, five times the separation, and still about a sixth of a pixel of overhang on a sixteen-pixel texture, so nothing looks fat. Where a neighbour is solid the overhang is buried inside it and never drawn. ra_migrations:5.1.11-to-5.1.12 clears existing skins so they redraw with the new geometry — displays keep whatever transformation they were summoned with, and every skinned block already redraws a missing skin within a tick.

v5.1.11 (2026-08-18) — Read Only

Added

  • One declaration for read-only properties, ra:tools/readonly/init_registry, keyed by block type. A property listed there is shown by the Data Handler with a struck-through [Modify] and a reason on hover, and is never offered by the wrench. Marking something the block owns — a generator's generation_rate, a valve's rate, a breaker's cooldown — is now one edit that both tools obey, instead of one tool knowing and the other not.

    This replaces five per-module tools/hidden_fields.mcfunction files reached through a #ra:hidden_fields function tag, each a chain of tag tests — the same per-block-table shape the Data Handler registry was consolidated to remove. The set is stored as a compound rather than a list because both readers ask "is this name read-only?", which a compound answers in one command and a list needs a walk for.

Removed

  • enabled from the Ender vaults, the Teleport Anchor and the Infinite generators. None of them had anything that could toggle it — no redstone, no wrench action — so it was a property you could set and then watch do nothing. It stays on the Wireless Emitter/Receiver and the Multiblock Base, which are toggled by the wrench's plain right-click and would have no control at all without it. ra_migrations:5.1.9-to-5.1.10 strips the dead copies.

Fixed

  • The wrench filtered read-only entries after counting them, so a block whose only cyclable property was read-only would have cycled it silently on a plain shift-click instead of reporting that it does not cycle. The filter now runs first, and both the menu and the click path build the list through the same function — a button carries a row index, so a click path that built the list any differently would act on a different property than the one on screen.

v5.1.10 (2026-08-18) — No Second Switch

Fixed

  • The Electric Furnace duplicated items — it smelted without consuming the input. When find_try was rewritten so every slot counts as input, the line that put the slot number into ef.hit went with it and only the score was left. take_input is a macro function reading ef.hit, so it had no $(slot) to substitute; a macro with a missing argument fails without running a single one of its lines, so nothing was removed and the #ef.took flag it was supposed to clear still held the 1 from the previous successful smelt. deliver ran on that stale flag and produced an ingot from an ore that was never eaten. The slot is back in ef.hit, and the caller now clears #ef.took itself, so a take that does not run can no longer read as a take that did.

Removed

  • The enabled property, throughout ra_wires. It was a second off switch sitting next to redstone, on blocks that mostly had nothing else to configure — so the new wrench menu opened on a great many blocks just to offer one useless row. Breaking the wire does the same job and reads better. ra_migrations:5.1.9-to-5.1.10 strips it from existing markers so it stops appearing in the Data Handler as a property that does nothing.

Changed

  • The EU Switch runs on redstone. It was the one block whose only control was enabled, which meant the only way to work a switch was to open a menu — in a redstone pack. Powered conducts, unpowered cuts, matching the EU Breaker and the valves, so a lever wired to it now does what a lever obviously should.
  • Menu buttons are bold and spaced[ CYCLE ], [ ON ], [ OFF ], [ REMOVE ] — so they read as buttons and are easier to hit.

v5.1.9 (2026-08-18) — One Tool

Added

  • The wrench opens a menu on blocks with more than one setting. Shift+RMB still cycles immediately when a block has exactly one cyclable property — a menu with one button is a worse button — but a block with two or more now lists them with their current values and a [Cycle] button each.
  • A cyclable-property registry, ra:tools/wrench/init_registry. The wrench used to be a chain of "if this block tag, run that block's cycler", which allowed exactly one setting per block; anything that wanted a second had to borrow another tool. A block now declares a list and the wrench works out whether to cycle or to open a menu. Adding a setting is an edit in one file.
  • Markers record their block type in data.type, because the registry has to be keyed by something and a data pack cannot ask an entity which of its tags names its kind. ra_migrations:5.1.8-to-5.1.9 fills it in for existing worlds.

Removed

  • The goggles tinker. Sneak+goggles used to cycle modes and toggle enabled, which meant two tools that both changed blocks with no rule about which owned what — the Electric Furnace ended up with its output on the wrench and its power mode on the goggles, and a wrench message addressed to a tag only the goggles ever set. The goggles read; the wrench changes. Everything the tinker did is on the wrench now, including the enabled toggle, which is a menu entry on every RA Wires block, and the Liquid Drain's drain/place mode.

v5.1.8 (2026-08-18) — Reach, Lift, Scorch

Three bugs that all looked like "the block just does nothing", and two new toys.

Added

  • Creative EU Source and Creative Fluid Source (ra_wires) — make power and fluid out of nothing, for building and testing the consuming half of a system without also running a fuel farm to feed it. The EU source refills its grid to capacity every tick, so a machine on a creative grid never browns out; the fluid source fills with a medium cycled by the wrench, because a network holds one medium at a time and a source stuck on water could not test a lava line. No recipes, on purpose; both ship in the Wires Bundle, or /function ra_wires:items/give_creative for just the two.

Added

  • An upgrade menu, /trigger ra.jp.kits. Lists the three kits with their state and two buttons each: switch one off without removing it, or take it off and get the kit back as an item. Re-shown after every action, so it behaves like a panel rather than a one-shot message.

Added

  • Electric Furnace (ra_wires) — smelts with EU and no fuel at all, at up to forty times a vanilla furnace. Four power modes cycled with the wrench:

    Mode Ticks per item EU per item
    low 100 40
    medium 50 100
    high 20 300
    superpowered 5 1000

    EU per item climbs faster than speed does, on purpose — four times quicker for four times the power would make every mode but superpowered pointless.

    Input and output are split by slot inside one barrel: the top row (slots 0–8) is input and is only ever read, rows two and three (slots 9–26) are output and are only ever written. Results are also pushed into any container directly below. That combination is what makes hoppers work with no configuration — a hopper feeding the block fills the lowest free slot, which is the input row, while extraction has to be a push because a hopper underneath would otherwise pull unsmelted ore out of slot 0. With nothing below, results stay in the output rows, so it still works as a standalone block you open by hand.

Added

  • Every entity the pack owns now carries the plain ra tag, so /kill @e[tag=ra] sweeps up the pack and nothing else. A pack built out of markers, block displays and text displays has no other way to be cleaned up, and killing every marker and display in a world takes other people's builds with it. Worlds built before this are caught by ra_migrations:5.1.7-to-5.1.8 on load.
  • A ra_migrations namespace, one function per version step, named for the step it bridges. They run oldest-first from ra:load, and every one runs on every load — so each must be safe to run twice and may only fill in what a newer version expects, never overwrite. (-to- rather than ->: a resource location path may only contain [a-z0-9_.-/], and a file with > in its name is skipped by the datapack loader.)
  • Magic Crate — a barrel that reaches out and takes dropped items from up to 20 blocks away. radius (5–20) and cooldown are both editable in the Data Handler; the sweep takes at most eight items per pulse so a hopper standing over a mob farm never spikes the tick. Whole stacks cross verbatim, so names, enchantments and damage survive the trip. It refuses items on a permanent pickup delay, and drops its whole 27-slot inventory when broken.
  • Jetpack upgrade kits, three of them, right-clicked while wearing a jetpack:
    • Thruster — +45% movement speed, in both flight modes and on the ground.
    • Lift — climbs at about six blocks a second instead of three, and sinks faster by dropping the slow-falling cushion.
    • Scorch — sets fire to anything in a 3×3 column six blocks under your exhaust, with flame and lava particles. Players, dropped items, and every marker and display entity the pack is built from are excluded, so flying over your own base does not burn your machines down.

Fixed

  • The wrench cycled the Electric Furnace's output in silence. Its message was addressed to @a[tag=ra.wires.tinker_user], which is the tag the goggles tinker puts on the player. The wrench never touches the player — it runs as the marker off a raycast — so the selector matched nobody. It now messages @a[distance=..10] like every other wrench action.

Fixed

  • The Thruster never engaged in classic mode. It was gated on a speed floor of 0.18 blocks a tick, and in classic you fly by holding sneak — horizontal air movement never gets near that, because air control is a small fraction of walking speed. The floor was also the wrong idea in general: it cannot tell crossing terrain from lining up a block, since both can be slow. Hold sprint to engage it instead — an explicit input, meaning "go fast" the same way it does everywhere else in the game, identical in both flight modes, and nobody sprints while placing blocks, which is where the jitter was unwelcome.

Fixed

  • Every Electric Furnace readout said N/A. The billboard library has both data_line, which reads data.status, and stacked_data_line, which reads data.data — different places behind near-identical names. The furnace wrote data.status and asked the stacked reader for it, so every value was simply absent and rendered as the fallback. Added the missing stacked_status_line and documented the four-way naming trap at the top of it. The Magic Crate's state line had caught the same edge.
  • A switched-off jetpack kit could never be switched back on. kit/toggle removed the tag, then tested for it again on the next line — after its own removal — and put it straight back, so every click ended muted. Same shape as the Block Breaker cooldown bug: a condition re-tested after your own first line invalidated it. The state is now read into a score before anything changes it.

Fixed

  • Standing on the edge of a block counted as flying, so the Scorch kit set fire to whatever was below a player who was, from their own point of view, standing still on solid ground. The airborne test sampled one point under the player's exact centre, which is over the drop when you stand on a block's edge while your feet are still on the corner. It now samples all four corners of the hitbox as well — a player is 0.6 wide, so +/-0.3 — and any one of them over something solid means supported, which is how vanilla decides it too. Shared by the Thruster, which had the same bug more quietly.

Fixed

  • The Thruster kit did nothing you could feel. It raised minecraft:movement_speed, which governs walking: once you are off the ground, horizontal movement runs on a much smaller air-control factor, so the attribute was a lever that is barely read in flight. It now measures how far you actually moved last tick and adds 55% of it back, capped at 0.2 blocks a tick each way — so it accelerates rather than snapping to speed, pushes whichever way you are really going (strafing and reverse included), does nothing at all while hovering still, and fades on its own as air drag shrinks the delta. It refuses to push you into a wall, since tp does not collide.

Fixed

  • The Scorch kit never set anything on fire. Its selector carried type=!boat, and there has been no minecraft:boat entity type since 1.21.2 — it was split into oak_boat, birch_boat and the rest. One unknown entity type makes the whole selector fail to parse, so the command never ran, while the particles — separate commands — carried on looking correct. The selector now names only three certain types and excludes this pack's own entities with tag=!ra; the decoration exclusions moved into one guard line each, so a future rename costs one guard rather than the entire feature.
  • Scorch now works in hover mode. It was gated on an airborne score computed earlier in the player tick; it re-tests the ground itself, so it no longer depends on where it is called from.

Fixed

  • The EU Generator's skin vanished. Teaching it to glow wrote the state into the block's NAME — minecraft:furnace[lit=true] — and a block_display's Name is a resource location, which cannot contain brackets. It does not error: the display spawns showing nothing, so the block simply loses its skin. Block states now go through ra_lib:skin/apply_lit, which puts them in Properties where they belong.

  • A burning generator reported itself inactive. active was set from how much EU the grid accepted, so a generator with no Battery filled the 50 EU it contributes itself and then read as doing nothing — fuel going down, skin lit, readout saying idle. active now means burning, and a separate line says whether the grid is accepting or full.

  • An unlit Industrial Light re-cleared its whole beam every tick, about sixty commands per light per tick for lights that were simply switched off. It now clears on the tick it goes out, with a sweep every ten seconds for beams orphaned by a chunk unload.

  • A vertical Liquid Drain ignored everything above it. It returned early unless a player was sneaking next to it, so a barrel of water buckets sitting on top — or buckets dropped on the block — did nothing at all, and the hand was the only way to load a network. It now tries the hand, then a container above, then loose items above. Only the hand path still requires sneaking; the other two run unattended, which is what makes a hopper-fed loading point possible.

  • Status billboards rendered inside their own block. The text anchor was the block centre, and the block's top face is only 0.5 above that — so every ladder in the pack, which counts downwards from its first line, put its third line onwards under the top face. Blocks with three or more status lines could only be read by standing inside them. The anchor is now above the block, and a floor in show_literal_line means no ladder can reach back down into it however long it gets.

  • EU Generators reported "No fuel" while full of coal. The fuel check tested Items[0], the first occupied stack. A barrel has 27 slots: one stack of anything that is not fuel — a stray cobble, an empty bucket left by a hopper — sits in front of the coal for ever. It now asks the whole container and takes from whichever slot has it. A generator left over from when the block was a real blast furnace now says so instead of silently reading the wrong container, and the goggles name the fuel ("Coal") rather than printing a registry ID.

  • The Industrial Light never lit, however much EU was on the grid. It read its own eu_use with a bare data get, and a failed read of a missing path does not error — it stores zero. The light asked the grid for nothing, got nothing back, and read "took 0" as "the grid cannot pay". The amount was never the problem, so no amount of EU could fix it. It now reads through ra_lib:util/property like every other numeric property, and the goggles say which of the two conditions is missing — "No redstone" or "No EU" — instead of a bare "Dark".

  • Valves and EU Breakers left one side empty while the other stayed full. They compared raw stored amounts, so a tank farm holding 2000 mL of 300000 looked fuller than a three-pipe stub holding 3000 of 5000, and the bridge called it balanced. They now compare how full each side is, not how much it holds.

  • Valves ping-ponged the same litre forever. Moving the whole difference between two sides swaps them rather than levelling them: 3000/2000 became 2000/3000 and back, which is what the steady "Moving: 1000 mL" was. They now move half the gap, which converges.

Changed

  • The Creative Fluid Source is a beacon, matching the Creative EU Source. A sponge reads as something that absorbs fluid, which is the opposite of what it does. Both break handlers now clear dropped beacons within one block rather than two, so two creative sources side by side cannot eat each other's drop.

Changed

  • Skins take their brightness from the light around them. A block_display samples light at its own position, which is inside the block it draws, where the light is always zero — so every skin needed a brightness override or it rendered pitch black. That override was hardcoded to block:0, right in daylight and wrong beside a torch: the real block would be lit and its skin would not. The level is now sampled one block above, by binary search over fifteen light predicates — four questions rather than fifteen.
  • The Thruster only engages at travel speed. A data pack cannot set a player's velocity: the only server-side ways to move a player are teleporting, knockback and vehicles, so a continuous boost has to be a teleport a tick, and that is visible as jitter no matter how well the magnitude is smoothed. What can be fixed is when it fires. It now engages above 0.18 blocks a tick and holds until you drop below 0.10 — two thresholds so a single one at cruising speed cannot flicker. Crossing terrain it works as before; placing blocks it stays out of the way entirely.

Changed

  • The Electric Furnace pushes its results to a face you choose — under, front, back or top, cycled with the wrench. The old top-row-in/lower-rows-out slot split stopped it re-smelting its own output but made automation awkward, because a hopper cannot be told which rows to touch. Now any smeltable stack anywhere in the barrel is input and nothing ever comes back in, so there is no slot rule to remember and no way for it to find its own product. It refuses to smelt when the destination is missing or full — checked before any EU is spent or any input consumed, so a blocked output costs and loses nothing. Power mode moved to the goggles tinker: two tools, two settings.
  • The furnace skin is a blast furnace, matching the item you place it from, and it now places a light above itself while running — a skin is only a picture and emits no light of its own, unlike the vanilla lit block it imitates.
  • The Thruster no longer jitters. It pushed a fraction of last tick's raw movement, and a single tick's delta is noisy — it carries the player's input, collision nudges and the previous push — so every wobble became a different-sized teleport, which is exactly what renders as shaking. The delta now feeds a running average (smoothed = (smoothed * 3 + delta) / 4, about a four-tick time constant) and the push is built from that, so it changes gradually. Below 0.025 blocks a tick it does not teleport at all, which removes the twitching while drifting to a stop.

Changed

  • Scorch deals real damage, not only fire. /damage 3 minecraft:on_fire, attributed to the pilot so the kill counts and drops experience, on a ten-tick cadence — at one tick apart it would be twenty hits a second, which deletes anything under a hovering player and makes the burning itself pointless. Burning is still applied every tick.
  • Scorch reach is exactly 6 blocks, down from seven.
  • Scorch runs only while airborne, gated both at the call site and inside the function.
  • No more lava particles in the exhaust — the popping blobs read as dripping stone rather than flame. Flame and small_flame only, with the width coming from a much wider spread instead of from the count, and the plume widening with depth the way thrust actually does.
  • The Thruster kit is stronger again — 80% of last tick's travel added back (was 55%), capped at 0.35 blocks a tick each axis (was 0.2), about seven extra blocks a second on top of whatever you were already doing.

Changed

  • Scorch's exhaust is far calmer. It was about a hundred particles a tick including explosion billows and large_smoke — a soot cloud rather than a jet, grey swamping the orange and thick enough to hide your own boots. Now flame and small_flame for the shape with a single lava for weight: no smoke, no explosion, nothing grey.

Changed

  • The Thruster kit is much stronger — +120% movement speed rather than +45%.
  • Scorch's exhaust is a plume, not a pilot light. flame alone reads as a spark however many you ask for; the bulk is lava and large_smoke, and explosion is what makes it puff — one large soft billow does more than hundreds of flame particles.
  • Converting to an infinite jetpack says so when it keeps your kits.

Changed

  • Jetpack upgrades now live on the chestplate, not on the player. Storing them as player tags meant they followed you onto a different chestplate, survived losing the jetpack entirely, and — the way it actually showed up — made every kit report itself already fitted for ever after the first one. The chestplate is now the record: its custom_data carries the flags, the lore lists them, and the flight code re-derives its tags from the worn item every tick, so a jetpack handed to someone else arrives with its upgrades and taking one off stops you having them. Converting an iron jetpack to infinite keeps the kits fitted to it instead of stripping them.
  • The Industrial Light's beam walk no longer depends on constructs I could not verify. The mode travelled as the word "on" in storage and was tested with a root-level compound-filter path, on lines that began with $ while containing no macro placeholder at all — all of it in the one code path that was silently doing nothing. It is now a number in a score compared with matches, and empty space is tested as minecraft:air/minecraft:cave_air by name rather than through the #minecraft:air tag.

Changed

  • The EU Generator now walks its own inventory instead of interrogating the fuel registry. Two earlier attempts asked the registry first — "is there coal in there? charcoal?" — sixteen questions per attempt, first against Items[0] and then via execute if items ... container.*. Both tested the container indirectly, and when it kept reporting no fuel with a full stack of coal in it there was no way to tell which half was lying. It now reads Items the way the rest of the pack reads containers, looks each stack's id up in a new id-keyed fuel_map in one step, and takes it out by index. Also cheaper: one lookup per stack present, rather than sixteen tests regardless.
  • The Thruster kit no longer applies on the ground. A flight upgrade that makes you walk faster around your base is not a flight upgrade; it now applies only while airborne, and comes off cleanly on landing.
  • Fitted jetpack kits are listed on the chestplate, appended to its lore so the tier line survives. (They still live on the player, so swapping chestplates carries the upgrades but not the lore.)
  • The Scorch kit shows itself. Flame, lava and falling-lava at the boots plus a visible column down the burn reach, and the reach went from six blocks to seven.

Changed

  • The Breeder stops before it starts. It ran thirty-five if items checks against its container every tick — one per animal/food pair — before any of them could match, and paid all thirty-five whenever nothing did, which is nearly always: animals wander off, and the ones present are usually already in love or still on cooldown. One entity-type-tag check now answers "is there an animal here that could breed right now?" and skips the other thirty-five.

  • The Unboxer stopped pretending sixteen commands were guarded. Its double-chest handling was sixteen macro lines each reading $execute positioned $(input1) run execute if score ... matches 1 .... Written that way all sixteen still run, still instantiate a macro and still resolve the position, every pass, even for a single chest that can never match. The condition and the positioning moved to one call site.

  • EU Generators show when they are running — the furnace skin lights, they emit smoke and flame, and they cast a light level 10 above themselves. The repaint only happens on the tick the state actually changes.

  • New debug readouts: /function ra_wires:debug/generator and /function ra_wires:debug/light report, per block, every condition that has to hold for it to work.

v5.1.7 (2026-08-18) — Grids, Bridges, Millilitres

Electric stopped pretending to be a network and became one. Fluids got a unit, a hand-loading point and experience. Two library bugs that had been quietly wrong for a long time are fixed, and the redstone reader was rebuilt.

Added

  • Clipboard and Multimeter tools. The Clipboard makes the first block you shift-click the origin and matches every block you shift-click after it, same kind only; shift-click at nothing to clear. Everything is shift+RMB because most configurable blocks are backed by a container and a plain click opens their GUI. The Multimeter reads a block's network in chat: which grid, what it stores, what this block contributes, what it draws or makes.

  • Industrial Light — redstone and EU, projects a 10-block beam of minecraft:light. Stops at the first solid block, and clears only light blocks, so nothing a player built can be removed by it.

  • Clipboard — click a block to make it the origin, then click others of the same kind to match them to it. Shift-click a block to re-origin, shift-click at nothing to clear. Same-kind only, because half the pack has a property called enabled and a Gas Valve's rate landing on a Randomizer's chance would quietly mean something else. Only data.properties travels; a block's private working state stays put.

  • Multimeter — click a block to read its network in chat: which grid, what it stores, what this block contributes, and what it draws or makes.

  • Industrial Light — redstone and EU, projects a 10-block beam of minecraft:light. Stops at the first solid block; when it goes out it clears only light blocks, so nothing a player built can be removed by it.

  • Electric runs on the transport network engine. Adjacent nodes flood-fill into a grid, the charge belongs to the grid, and a generator's output is spendable by a consumer anywhere on it on the same tick. See the note under Fixed for what it replaced.

  • Battery — 10000 EU of grid storage. Wires, switches and breakers now store nothing, so a grid holds what its batteries hold: build them, or spend your generation on the tick it is made.

  • EU Breaker, and the Valve repurposed to match: a bridge belongs to neither of the networks it sits between, and while powered by redstone it moves contents from the network behind it into the network in front. It never merges them — a run with a bridge in it is two networks, always.

  • Ender Power Vault is a wireless bridge. It joins its local grid, contributes no capacity, and moves EU out of the grid at one end into the grid at the other. Anything the far side cannot take is put straight back.

  • Millilitres. A bucket is 5000 mL, a pipe holds 1000, a tank 100000. Network totals moved out of scoreboards and into storage ra:transport nets.n<id>, which is where the per-medium map will go when networks can hold more than one thing at a time.

  • Experience and potions are media. One experience point is 100 mL, in both directions.

  • A vertical drain is the hand-loading point. Sneak beside it holding a full bucket and its contents go into the network, empty bucket back in hand; with nothing in hand it takes your experience instead, ten points a cycle. Set to place, an experience network gives it back as orbs at the same rate.

  • Wrench-configurable throughput: Liquid Drain at 2.5 / 5 / 10 L per second, EU Consumer at 20 / 40 / 80 EU per tick.

  • ra_lib:redstone/any, detect_switch, local/{front,back,left,right,up,down} and side — read only what you need, instead of every block paying for a full twelve-direction sweep it then threw away.

  • Goggles redraw once a second instead of once every two.

Fixed

  • The Liquid Pump could not pump next to water. A pump on two pipes had a 4000 mL network and a water source is 5000 mL, and a source block is all-or-nothing — offering half and deleting the block anyway would quietly destroy a lake. Pumps and drains hold 5000 mL now, one bucket, so they work standing alone. network_too_small is told apart from network_full: one means add a tank, the other means wait.

  • Bridges did nothing unless they happened to face along the pipe run. A valve dropped into an east-west line while the player faced south pointed at two empty blocks, with nothing on the block to say so. They have no facing at all now — they look at all six neighbours, find the networks themselves, and move from the fullest to the emptiest.

  • A Valve's readout reported the fluid-node fields it does not have and printed N/A for every one of them.

  • Bridges have no facing at all now. They look at all six neighbours and find the networks themselves, moving from the fullest to the emptiest. Bridging the block in front and the block behind meant a valve dropped into an east-west pipe run while the player happened to be facing south pointed at two empty spaces and did nothing — with nothing on the block to say so.

  • A Valve's readout reported the fluid-node fields it does not have and printed N/A for all of them. It says what it is moving, and why not when it is not.

  • The Liquid Pump, Gas Pump and Drain hold 5000 mL — one bucket — so a pump works standing alone. A pump on two pipes had a 4000 mL network and could never accept the 5000 mL source block it was sitting next to, so it refused for ever. network_too_small is now told apart from network_full: one means add a tank, the other means wait.

  • One name for one meaning: cooldown. A block that waits N ticks before acting again calls that cooldown, everywhere, and its readout says Cooldown:. The Clock's delay and the Liquid Drain's interval are renamed to it and migrate themselves; the three generators' goggles said Period: over a field called cooldown, which is the kind of drift that makes a setting look like it belongs to something else. delay, extend and pulse on the Delayer, Extender and Shortener stay as they are — those are signal durations, not rate limits, and folding three meanings into one name would be worse than the drift.

  • The Block Breaker and Block Placer had no cooldown at all, and the reason was the same shape as the Clock's: five near-identical execute lines re-testing one condition, with the reset on the last. The first line destroys the block in front, so unless block ^ ^ ^1 #air was false by the time the reset re-tested it and the reset never ran — the counter climbed for ever and the gate was open on every tick. The placer emptied itself at a block a tick the same way. Both are one gated call into a fire function now, which resets before it touches the world, and five whole-world selector sweeps per block per tick became one.

  • The Data Handler's numeric-type list went back to being one entry beside the registry rather than seven per-block functions. The registry exists so that adding a property means editing one list; the per-block version undid that.

  • interval and rate were missing from the registry entirely, so the Handler could not render them — the Liquid Drain's throughput and the bridges' rate were invisible and uneditable. The Industrial Light's eu_use and the bridges' rate are now declared as tuning fields hidden from survival.

  • The Clock ignored its setting, because it had two of them. A clock could carry both delay and cooldown: the Data Handler listed both, process read cooldown, and delay — the one a player naturally reaches for — did nothing. The compatibility line meant to merge them only ran when cooldown was absent, which is precisely the case that did not need fixing. The clock now runs on a single property, delay, in ticks, and folds any leftover cooldown into it on every tick. A delay of 1 pulses every tick.

  • A number typed into the Data Handler could be stored as a string, and every block then read its LENGTH. data get does not fail on a string — it succeeds and returns the character count. So a Clock set to "5" ran with a period of 1 and one set to "100" ran with a period of 3: the number you typed changed nothing but the number of digits, which is exactly what "it ignores its setting" looks like. Nothing errors and nothing logs. The type detection was never wrong; once a value is a string the editor faithfully keeps it one. ra_lib:util/property now re-parses through a macro — substitution inserts a string's raw characters, so "5" and 5 both parse as an integer — and writes the result back as an int, so the repair happens once and the handler offers a number editor from then on.

  • execute store result … run data get <missing path> writes zero, and a period of zero means "fire every tick". Three generators and the EU Consumer read their period that way with no guard, so a block that lost its property did not slow down — it ran flat out. There is now one guarded reader, ra_lib:util/property, with a default and a floor.

  • The Liquid Valve, Gas Valve and EU Breaker could not be placed at all. Giving them a facing meant setblock waxed_cut_copper[facing=south], and that block has no states whatsoever — the command failed and nothing appeared. A new dir_type:3 orients the marker and leaves the block plain.

  • The Block Placer had no cooldown, so a held signal fired it every tick and emptied a stocked placer in under two seconds. Both it and the Block Breaker now run at one action per second, hidden from the survival Data Handler.

  • Electric charge could not travel. Every wire held its own buffer and handed half the difference to one neighbour per tick, which levels charge out rather than delivering it: it crawled a block a tick, a generator with six neighbours fed one of them, and once a run had evened out to within 1 EU the transfer guard stopped it moving at all.

  • A reload emptied a network's identity. transport/init overwrote the storage holding each network's medium on every load, while the amount sat in a scoreboard that survived — so a network filled since the last rebuild came back holding contents with no medium, and refused everything its own pumps offered until a drain emptied it.

  • Pressure plates did nothing. The redstone reader knew about dust, levers, buttons, redstone blocks, torches, repeaters and comparators, and nothing else. Pressure plates, weighted plates, tripwire hooks, observers, lightning rods and daylight detectors are all read now, from block tags rather than six hand-copied direction tests.

  • A torch standing on a block powered it. Vanilla never powers the block a torch is mounted on.

  • The Randomizer overwrote the redstone library's output with a dice roll, mid-read, on the same marker. One roll in a hundred came up zero and made it wipe its own output the instant it fired.

  • Two adjacent skinned blocks deleted each other's appearance. A skin sat on the block corner while the marker sat at the centre, and from a centre every surrounding corner is the same 0.866 away — no radius could tell them apart. Skins are centre-anchored now, and old ones migrate themselves.

  • facing/up and facing/down both claimed left was east, so flipping a block over left its hands unchanged.

  • count_inputs was a hand-copied mirror of the redstone reader, with a comment admitting the two had to be kept in step by hand. They share one implementation.

Changed

  • The EU Generator is a barrel wearing a furnace skin. A real blast furnace brought two input slots and its own smelting, of which only the fuel slot ever meant anything, so players filled the top with ore and waited. Drop coal in a box is the whole interaction now. Burn times live in a fuels registry beside the other tables; steam still works, so the Boiler chain is intact.

  • The Breeder is a barrel wearing a dispenser skin, for the same reason it mattered on the Unboxer: a dispenser throws its own inventory on any rising redstone edge, so a breeder loaded with wheat scattered it across the field the moment you powered it. It reads redstone directly now, since a barrel has no triggered state.

  • Tiered pipes and wires are gone. One Copper Pipe, one Wire. The four pipe variants placed the same block with the same marker and the same capacity — gas and liquid pipes were never different, and the tiers stopped meaning anything once a pipe held a litre. Retired place tags still map to the survivors so items already in a chest still place something.

  • The Poppy Generator's patch mode is gone. A second code path over the same ground for a block whose whole job is one flower at a time. The Wrench no longer cycles anything on it.

  • The survival Data Handler locks fields instead of hiding them: the value is shown with a struck-through red [Modify] and a hover saying why. A censored row made a block look like it had fewer settings than it does. The gamemode test is gone with it — creative players use the Creative Data Handler — and so are redact_next, redact_one and the "N fields hidden" footer. The refusal is enforced server-side too, since a row's action is a /trigger a player can type.

  • The EU Generator is a barrel wearing a furnace, not a blast furnace. A real furnace brings its own two input slots and its own smelting, of which only the fuel slot ever meant anything — so players filled the top slot with ore and waited. A barrel is a plain inventory: drop coal in and that is the whole interaction, and ra_lib:skin/apply puts the furnace back on the outside so it still reads as one. It burns solid fuel from its own inventory now, with burn times in a fuels registry beside the other tables. Steam still works, so the water -> Boiler -> steam -> EU chain is intact: fuel is the direct route, steam is the built one.

  • The Ender Item Vault's shared mode is gone. Three modes remain — link, send, receive — and a vault still set to shared becomes link, the closest of the three. It took two whole-world entity sweeps a tick to work out which vault a player was standing next to, and it was the one mode that followed people rather than machines, which made it the odd one out in a module about automation.

  • Bridges — the Liquid Valve, Gas Valve and EU Breaker — work both ways. They take from whichever side holds more and give to whichever holds less, stopping when the two are level. One-way was a mistake: the placement had a right and a wrong answer that nothing on the block told you about, and a build that looked correct simply did nothing. The facing now picks the axis, not the direction.

  • Goggles print units: EU on electric readouts, mL on fluid ones.

  • Wire readouts replaced Enabled: on — true of every wire ever placed — with the grid's state and its change per second.

  • The Solar Panel's Light: line said "Grid full" when the grid backed up. Split into a grid line and a Sun: line that only ever talks about the sun.

  • Wire tiers removed. L2 differed only in a capacity it no longer has and a transfer rate that stopped existing when charge moved onto the grid.

  • The EU Switch is placed as waxed_cut_copper, the same block as the Valve.

  • The Valve is no longer a shutoff. It is a one-way pump between two networks and needs redstone. Existing builds using one as a closed tap will find it does not conduct until powered, and then only in the direction it faces. To cut a fluid line, remove a pipe. The EU Switch is still a true shutoff.

  • ra_lib:redstone/detect no longer computes look-space scores or the twelve direction tags; nothing in the pack read them. detect_local does, for anyone who wants them. The per-source tags are gone.

  • Netherite pipes hold the same 1000 mL as copper ones.

Documentation

  • Every recipe picture regenerated, and the Recipe Atlas rebuilt — 59 recipes. Two stale pictures for retired tiers removed.
  • The Breeder now documents what it breeds: all 22 animals and the food each takes, extracted from the dispatch table so the page cannot drift from the code.
  • Item reference, interactive machines, infinite generators, transport networks and ender links updated for everything above.

Known

  • Nothing in this release has been tested in game.
  • Networks still hold one medium at a time. Filters, and telling one potion from another, wait on that.
  • Battery, EU Breaker and Industrial Light have no unlock advancement, and the Clipboard and Multimeter have no recipe — both are given by function for now.
5.1.14Релиз26.1.1, 26.1.2, 26.2 · 18 августа 2026 г.

v5.1.14 (2026-08-18) — Pictures

Added

  • Screenshots in the wiki. Transport Networks opens on a running EU grid and shows a fluid network, the Electric Furnace and the Industrial Light lit beside unlit; Jetpacks shows hover flight. Seven in docs/images/screenshots/.
  • A banner per module in the README, with a generated docs/images/banners/media-missing.png placeholder for the ones that have no screenshot yet. Swapping a placeholder for a real picture is a one-line edit.
  • An Industrial Light section in Transport Networks, which the page never had.

Fixed

  • The README was stale in ways that mattered. It listed Netherite Liquid Pipe, Netherite Gas Pipe and Netherite Electric Wire as separate blocks — the tiers were removed, and those item tags now place the single version. It was missing eight Transport Networks blocks (Battery, EU Breaker, Industrial Light, Boiler, Solar Panel, Electric Furnace and both Creative sources), the Magic Crate, the three new jetpack kits, and the Clipboard and Multimeter. Counts corrected: 57 blocks, 7 tools, 66 recipes — the badges said 52, 5 and 58.
  • Transport Networks still described tiered pipes in its Block Families table, and pointed at ra_wires:items/give_all, which does not exist. It now names the Wires Bundle and the creative give function.
  • readme.bbcode regenerated from the corrected README.

v5.1.13 (2026-08-18) — Documented

Added

  • Recipes for the Clipboard and Multimeter. Both shipped with a give function and nothing else, so in survival they did not exist.
  • A Tools page, which the wiki never had. The Wrench, Goggles, Data Handler, Clipboard and Multimeter were described only in scattered module notes and the technical pages; the Clipboard and Multimeter had no usage documentation at all, only a row in the item table.
  • Missing unlock advancements for the Battery, EU Breaker, Industrial Light, Boiler, Solar Panel — and the Wrench and Data Handler themselves — plus get_* advancements for the Battery, EU Breaker, Industrial Light, Clipboard and Multimeter. Those blocks were craftable but the recipe never unlocked itself.

Removed

  • Three dead advancements: unlock_electric_wire_netherite and unlock_liquid_pipe_netherite, left behind when the tiered wires and pipes were removed, and unlock_conveyor, which pointed at a recipe and a block that do not exist anywhere in the pack.

Changed

  • The wrench and Data Handler sections of How It Works described the old per-block dispatch and the goggles tinker. Rewritten for the registry-driven menu, including the stacked_prop_line / stacked_status_line / stacked_data_line distinction that silently renders N/A when you pick wrong.
  • The Developer Guide now documents the migrations system and the read-only registry.

v5.1.12 (2026-08-18) — Depth

Fixed

  • Skins z-fought with the block underneath. The overlay was scaled 1.004, leaving two thousandths of a block of clearance on each face. That is geometrically separate and practically not: Minecraft's depth buffer loses precision with distance, so a few chunks out both surfaces resolve to the same depth and flicker. The margin is now 1.02 — a hundredth of a block per face, five times the separation, and still about a sixth of a pixel of overhang on a sixteen-pixel texture, so nothing looks fat. Where a neighbour is solid the overhang is buried inside it and never drawn. ra_migrations:5.1.11-to-5.1.12 clears existing skins so they redraw with the new geometry — displays keep whatever transformation they were summoned with, and every skinned block already redraws a missing skin within a tick.

v5.1.11 (2026-08-18) — Read Only

Added

  • One declaration for read-only properties, ra:tools/readonly/init_registry, keyed by block type. A property listed there is shown by the Data Handler with a struck-through [Modify] and a reason on hover, and is never offered by the wrench. Marking something the block owns — a generator's generation_rate, a valve's rate, a breaker's cooldown — is now one edit that both tools obey, instead of one tool knowing and the other not.

    This replaces five per-module tools/hidden_fields.mcfunction files reached through a #ra:hidden_fields function tag, each a chain of tag tests — the same per-block-table shape the Data Handler registry was consolidated to remove. The set is stored as a compound rather than a list because both readers ask "is this name read-only?", which a compound answers in one command and a list needs a walk for.

Removed

  • enabled from the Ender vaults, the Teleport Anchor and the Infinite generators. None of them had anything that could toggle it — no redstone, no wrench action — so it was a property you could set and then watch do nothing. It stays on the Wireless Emitter/Receiver and the Multiblock Base, which are toggled by the wrench's plain right-click and would have no control at all without it. ra_migrations:5.1.9-to-5.1.10 strips the dead copies.

Fixed

  • The wrench filtered read-only entries after counting them, so a block whose only cyclable property was read-only would have cycled it silently on a plain shift-click instead of reporting that it does not cycle. The filter now runs first, and both the menu and the click path build the list through the same function — a button carries a row index, so a click path that built the list any differently would act on a different property than the one on screen.

v5.1.10 (2026-08-18) — No Second Switch

Fixed

  • The Electric Furnace duplicated items — it smelted without consuming the input. When find_try was rewritten so every slot counts as input, the line that put the slot number into ef.hit went with it and only the score was left. take_input is a macro function reading ef.hit, so it had no $(slot) to substitute; a macro with a missing argument fails without running a single one of its lines, so nothing was removed and the #ef.took flag it was supposed to clear still held the 1 from the previous successful smelt. deliver ran on that stale flag and produced an ingot from an ore that was never eaten. The slot is back in ef.hit, and the caller now clears #ef.took itself, so a take that does not run can no longer read as a take that did.

Removed

  • The enabled property, throughout ra_wires. It was a second off switch sitting next to redstone, on blocks that mostly had nothing else to configure — so the new wrench menu opened on a great many blocks just to offer one useless row. Breaking the wire does the same job and reads better. ra_migrations:5.1.9-to-5.1.10 strips it from existing markers so it stops appearing in the Data Handler as a property that does nothing.

Changed

  • The EU Switch runs on redstone. It was the one block whose only control was enabled, which meant the only way to work a switch was to open a menu — in a redstone pack. Powered conducts, unpowered cuts, matching the EU Breaker and the valves, so a lever wired to it now does what a lever obviously should.
  • Menu buttons are bold and spaced[ CYCLE ], [ ON ], [ OFF ], [ REMOVE ] — so they read as buttons and are easier to hit.

v5.1.9 (2026-08-18) — One Tool

Added

  • The wrench opens a menu on blocks with more than one setting. Shift+RMB still cycles immediately when a block has exactly one cyclable property — a menu with one button is a worse button — but a block with two or more now lists them with their current values and a [Cycle] button each.
  • A cyclable-property registry, ra:tools/wrench/init_registry. The wrench used to be a chain of "if this block tag, run that block's cycler", which allowed exactly one setting per block; anything that wanted a second had to borrow another tool. A block now declares a list and the wrench works out whether to cycle or to open a menu. Adding a setting is an edit in one file.
  • Markers record their block type in data.type, because the registry has to be keyed by something and a data pack cannot ask an entity which of its tags names its kind. ra_migrations:5.1.8-to-5.1.9 fills it in for existing worlds.

Removed

  • The goggles tinker. Sneak+goggles used to cycle modes and toggle enabled, which meant two tools that both changed blocks with no rule about which owned what — the Electric Furnace ended up with its output on the wrench and its power mode on the goggles, and a wrench message addressed to a tag only the goggles ever set. The goggles read; the wrench changes. Everything the tinker did is on the wrench now, including the enabled toggle, which is a menu entry on every RA Wires block, and the Liquid Drain's drain/place mode.

v5.1.8 (2026-08-18) — Reach, Lift, Scorch

Three bugs that all looked like "the block just does nothing", and two new toys.

Added

  • Creative EU Source and Creative Fluid Source (ra_wires) — make power and fluid out of nothing, for building and testing the consuming half of a system without also running a fuel farm to feed it. The EU source refills its grid to capacity every tick, so a machine on a creative grid never browns out; the fluid source fills with a medium cycled by the wrench, because a network holds one medium at a time and a source stuck on water could not test a lava line. No recipes, on purpose; both ship in the Wires Bundle, or /function ra_wires:items/give_creative for just the two.

Added

  • An upgrade menu, /trigger ra.jp.kits. Lists the three kits with their state and two buttons each: switch one off without removing it, or take it off and get the kit back as an item. Re-shown after every action, so it behaves like a panel rather than a one-shot message.

Added

  • Electric Furnace (ra_wires) — smelts with EU and no fuel at all, at up to forty times a vanilla furnace. Four power modes cycled with the wrench:

    Mode Ticks per item EU per item
    low 100 40
    medium 50 100
    high 20 300
    superpowered 5 1000

    EU per item climbs faster than speed does, on purpose — four times quicker for four times the power would make every mode but superpowered pointless.

    Input and output are split by slot inside one barrel: the top row (slots 0–8) is input and is only ever read, rows two and three (slots 9–26) are output and are only ever written. Results are also pushed into any container directly below. That combination is what makes hoppers work with no configuration — a hopper feeding the block fills the lowest free slot, which is the input row, while extraction has to be a push because a hopper underneath would otherwise pull unsmelted ore out of slot 0. With nothing below, results stay in the output rows, so it still works as a standalone block you open by hand.

Added

  • Every entity the pack owns now carries the plain ra tag, so /kill @e[tag=ra] sweeps up the pack and nothing else. A pack built out of markers, block displays and text displays has no other way to be cleaned up, and killing every marker and display in a world takes other people's builds with it. Worlds built before this are caught by ra_migrations:5.1.7-to-5.1.8 on load.
  • A ra_migrations namespace, one function per version step, named for the step it bridges. They run oldest-first from ra:load, and every one runs on every load — so each must be safe to run twice and may only fill in what a newer version expects, never overwrite. (-to- rather than ->: a resource location path may only contain [a-z0-9_.-/], and a file with > in its name is skipped by the datapack loader.)
  • Magic Crate — a barrel that reaches out and takes dropped items from up to 20 blocks away. radius (5–20) and cooldown are both editable in the Data Handler; the sweep takes at most eight items per pulse so a hopper standing over a mob farm never spikes the tick. Whole stacks cross verbatim, so names, enchantments and damage survive the trip. It refuses items on a permanent pickup delay, and drops its whole 27-slot inventory when broken.
  • Jetpack upgrade kits, three of them, right-clicked while wearing a jetpack:
    • Thruster — +45% movement speed, in both flight modes and on the ground.
    • Lift — climbs at about six blocks a second instead of three, and sinks faster by dropping the slow-falling cushion.
    • Scorch — sets fire to anything in a 3×3 column six blocks under your exhaust, with flame and lava particles. Players, dropped items, and every marker and display entity the pack is built from are excluded, so flying over your own base does not burn your machines down.

Fixed

  • The wrench cycled the Electric Furnace's output in silence. Its message was addressed to @a[tag=ra.wires.tinker_user], which is the tag the goggles tinker puts on the player. The wrench never touches the player — it runs as the marker off a raycast — so the selector matched nobody. It now messages @a[distance=..10] like every other wrench action.

Fixed

  • The Thruster never engaged in classic mode. It was gated on a speed floor of 0.18 blocks a tick, and in classic you fly by holding sneak — horizontal air movement never gets near that, because air control is a small fraction of walking speed. The floor was also the wrong idea in general: it cannot tell crossing terrain from lining up a block, since both can be slow. Hold sprint to engage it instead — an explicit input, meaning "go fast" the same way it does everywhere else in the game, identical in both flight modes, and nobody sprints while placing blocks, which is where the jitter was unwelcome.

Fixed

  • Every Electric Furnace readout said N/A. The billboard library has both data_line, which reads data.status, and stacked_data_line, which reads data.data — different places behind near-identical names. The furnace wrote data.status and asked the stacked reader for it, so every value was simply absent and rendered as the fallback. Added the missing stacked_status_line and documented the four-way naming trap at the top of it. The Magic Crate's state line had caught the same edge.
  • A switched-off jetpack kit could never be switched back on. kit/toggle removed the tag, then tested for it again on the next line — after its own removal — and put it straight back, so every click ended muted. Same shape as the Block Breaker cooldown bug: a condition re-tested after your own first line invalidated it. The state is now read into a score before anything changes it.

Fixed

  • Standing on the edge of a block counted as flying, so the Scorch kit set fire to whatever was below a player who was, from their own point of view, standing still on solid ground. The airborne test sampled one point under the player's exact centre, which is over the drop when you stand on a block's edge while your feet are still on the corner. It now samples all four corners of the hitbox as well — a player is 0.6 wide, so +/-0.3 — and any one of them over something solid means supported, which is how vanilla decides it too. Shared by the Thruster, which had the same bug more quietly.

Fixed

  • The Thruster kit did nothing you could feel. It raised minecraft:movement_speed, which governs walking: once you are off the ground, horizontal movement runs on a much smaller air-control factor, so the attribute was a lever that is barely read in flight. It now measures how far you actually moved last tick and adds 55% of it back, capped at 0.2 blocks a tick each way — so it accelerates rather than snapping to speed, pushes whichever way you are really going (strafing and reverse included), does nothing at all while hovering still, and fades on its own as air drag shrinks the delta. It refuses to push you into a wall, since tp does not collide.

Fixed

  • The Scorch kit never set anything on fire. Its selector carried type=!boat, and there has been no minecraft:boat entity type since 1.21.2 — it was split into oak_boat, birch_boat and the rest. One unknown entity type makes the whole selector fail to parse, so the command never ran, while the particles — separate commands — carried on looking correct. The selector now names only three certain types and excludes this pack's own entities with tag=!ra; the decoration exclusions moved into one guard line each, so a future rename costs one guard rather than the entire feature.
  • Scorch now works in hover mode. It was gated on an airborne score computed earlier in the player tick; it re-tests the ground itself, so it no longer depends on where it is called from.

Fixed

  • The EU Generator's skin vanished. Teaching it to glow wrote the state into the block's NAME — minecraft:furnace[lit=true] — and a block_display's Name is a resource location, which cannot contain brackets. It does not error: the display spawns showing nothing, so the block simply loses its skin. Block states now go through ra_lib:skin/apply_lit, which puts them in Properties where they belong.

  • A burning generator reported itself inactive. active was set from how much EU the grid accepted, so a generator with no Battery filled the 50 EU it contributes itself and then read as doing nothing — fuel going down, skin lit, readout saying idle. active now means burning, and a separate line says whether the grid is accepting or full.

  • An unlit Industrial Light re-cleared its whole beam every tick, about sixty commands per light per tick for lights that were simply switched off. It now clears on the tick it goes out, with a sweep every ten seconds for beams orphaned by a chunk unload.

  • A vertical Liquid Drain ignored everything above it. It returned early unless a player was sneaking next to it, so a barrel of water buckets sitting on top — or buckets dropped on the block — did nothing at all, and the hand was the only way to load a network. It now tries the hand, then a container above, then loose items above. Only the hand path still requires sneaking; the other two run unattended, which is what makes a hopper-fed loading point possible.

  • Status billboards rendered inside their own block. The text anchor was the block centre, and the block's top face is only 0.5 above that — so every ladder in the pack, which counts downwards from its first line, put its third line onwards under the top face. Blocks with three or more status lines could only be read by standing inside them. The anchor is now above the block, and a floor in show_literal_line means no ladder can reach back down into it however long it gets.

  • EU Generators reported "No fuel" while full of coal. The fuel check tested Items[0], the first occupied stack. A barrel has 27 slots: one stack of anything that is not fuel — a stray cobble, an empty bucket left by a hopper — sits in front of the coal for ever. It now asks the whole container and takes from whichever slot has it. A generator left over from when the block was a real blast furnace now says so instead of silently reading the wrong container, and the goggles name the fuel ("Coal") rather than printing a registry ID.

  • The Industrial Light never lit, however much EU was on the grid. It read its own eu_use with a bare data get, and a failed read of a missing path does not error — it stores zero. The light asked the grid for nothing, got nothing back, and read "took 0" as "the grid cannot pay". The amount was never the problem, so no amount of EU could fix it. It now reads through ra_lib:util/property like every other numeric property, and the goggles say which of the two conditions is missing — "No redstone" or "No EU" — instead of a bare "Dark".

  • Valves and EU Breakers left one side empty while the other stayed full. They compared raw stored amounts, so a tank farm holding 2000 mL of 300000 looked fuller than a three-pipe stub holding 3000 of 5000, and the bridge called it balanced. They now compare how full each side is, not how much it holds.

  • Valves ping-ponged the same litre forever. Moving the whole difference between two sides swaps them rather than levelling them: 3000/2000 became 2000/3000 and back, which is what the steady "Moving: 1000 mL" was. They now move half the gap, which converges.

Changed

  • The Creative Fluid Source is a beacon, matching the Creative EU Source. A sponge reads as something that absorbs fluid, which is the opposite of what it does. Both break handlers now clear dropped beacons within one block rather than two, so two creative sources side by side cannot eat each other's drop.

Changed

  • Skins take their brightness from the light around them. A block_display samples light at its own position, which is inside the block it draws, where the light is always zero — so every skin needed a brightness override or it rendered pitch black. That override was hardcoded to block:0, right in daylight and wrong beside a torch: the real block would be lit and its skin would not. The level is now sampled one block above, by binary search over fifteen light predicates — four questions rather than fifteen.
  • The Thruster only engages at travel speed. A data pack cannot set a player's velocity: the only server-side ways to move a player are teleporting, knockback and vehicles, so a continuous boost has to be a teleport a tick, and that is visible as jitter no matter how well the magnitude is smoothed. What can be fixed is when it fires. It now engages above 0.18 blocks a tick and holds until you drop below 0.10 — two thresholds so a single one at cruising speed cannot flicker. Crossing terrain it works as before; placing blocks it stays out of the way entirely.

Changed

  • The Electric Furnace pushes its results to a face you choose — under, front, back or top, cycled with the wrench. The old top-row-in/lower-rows-out slot split stopped it re-smelting its own output but made automation awkward, because a hopper cannot be told which rows to touch. Now any smeltable stack anywhere in the barrel is input and nothing ever comes back in, so there is no slot rule to remember and no way for it to find its own product. It refuses to smelt when the destination is missing or full — checked before any EU is spent or any input consumed, so a blocked output costs and loses nothing. Power mode moved to the goggles tinker: two tools, two settings.
  • The furnace skin is a blast furnace, matching the item you place it from, and it now places a light above itself while running — a skin is only a picture and emits no light of its own, unlike the vanilla lit block it imitates.
  • The Thruster no longer jitters. It pushed a fraction of last tick's raw movement, and a single tick's delta is noisy — it carries the player's input, collision nudges and the previous push — so every wobble became a different-sized teleport, which is exactly what renders as shaking. The delta now feeds a running average (smoothed = (smoothed * 3 + delta) / 4, about a four-tick time constant) and the push is built from that, so it changes gradually. Below 0.025 blocks a tick it does not teleport at all, which removes the twitching while drifting to a stop.

Changed

  • Scorch deals real damage, not only fire. /damage 3 minecraft:on_fire, attributed to the pilot so the kill counts and drops experience, on a ten-tick cadence — at one tick apart it would be twenty hits a second, which deletes anything under a hovering player and makes the burning itself pointless. Burning is still applied every tick.
  • Scorch reach is exactly 6 blocks, down from seven.
  • Scorch runs only while airborne, gated both at the call site and inside the function.
  • No more lava particles in the exhaust — the popping blobs read as dripping stone rather than flame. Flame and small_flame only, with the width coming from a much wider spread instead of from the count, and the plume widening with depth the way thrust actually does.
  • The Thruster kit is stronger again — 80% of last tick's travel added back (was 55%), capped at 0.35 blocks a tick each axis (was 0.2), about seven extra blocks a second on top of whatever you were already doing.

Changed

  • Scorch's exhaust is far calmer. It was about a hundred particles a tick including explosion billows and large_smoke — a soot cloud rather than a jet, grey swamping the orange and thick enough to hide your own boots. Now flame and small_flame for the shape with a single lava for weight: no smoke, no explosion, nothing grey.

Changed

  • The Thruster kit is much stronger — +120% movement speed rather than +45%.
  • Scorch's exhaust is a plume, not a pilot light. flame alone reads as a spark however many you ask for; the bulk is lava and large_smoke, and explosion is what makes it puff — one large soft billow does more than hundreds of flame particles.
  • Converting to an infinite jetpack says so when it keeps your kits.

Changed

  • Jetpack upgrades now live on the chestplate, not on the player. Storing them as player tags meant they followed you onto a different chestplate, survived losing the jetpack entirely, and — the way it actually showed up — made every kit report itself already fitted for ever after the first one. The chestplate is now the record: its custom_data carries the flags, the lore lists them, and the flight code re-derives its tags from the worn item every tick, so a jetpack handed to someone else arrives with its upgrades and taking one off stops you having them. Converting an iron jetpack to infinite keeps the kits fitted to it instead of stripping them.
  • The Industrial Light's beam walk no longer depends on constructs I could not verify. The mode travelled as the word "on" in storage and was tested with a root-level compound-filter path, on lines that began with $ while containing no macro placeholder at all — all of it in the one code path that was silently doing nothing. It is now a number in a score compared with matches, and empty space is tested as minecraft:air/minecraft:cave_air by name rather than through the #minecraft:air tag.

Changed

  • The EU Generator now walks its own inventory instead of interrogating the fuel registry. Two earlier attempts asked the registry first — "is there coal in there? charcoal?" — sixteen questions per attempt, first against Items[0] and then via execute if items ... container.*. Both tested the container indirectly, and when it kept reporting no fuel with a full stack of coal in it there was no way to tell which half was lying. It now reads Items the way the rest of the pack reads containers, looks each stack's id up in a new id-keyed fuel_map in one step, and takes it out by index. Also cheaper: one lookup per stack present, rather than sixteen tests regardless.
  • The Thruster kit no longer applies on the ground. A flight upgrade that makes you walk faster around your base is not a flight upgrade; it now applies only while airborne, and comes off cleanly on landing.
  • Fitted jetpack kits are listed on the chestplate, appended to its lore so the tier line survives. (They still live on the player, so swapping chestplates carries the upgrades but not the lore.)
  • The Scorch kit shows itself. Flame, lava and falling-lava at the boots plus a visible column down the burn reach, and the reach went from six blocks to seven.

Changed

  • The Breeder stops before it starts. It ran thirty-five if items checks against its container every tick — one per animal/food pair — before any of them could match, and paid all thirty-five whenever nothing did, which is nearly always: animals wander off, and the ones present are usually already in love or still on cooldown. One entity-type-tag check now answers "is there an animal here that could breed right now?" and skips the other thirty-five.

  • The Unboxer stopped pretending sixteen commands were guarded. Its double-chest handling was sixteen macro lines each reading $execute positioned $(input1) run execute if score ... matches 1 .... Written that way all sixteen still run, still instantiate a macro and still resolve the position, every pass, even for a single chest that can never match. The condition and the positioning moved to one call site.

  • EU Generators show when they are running — the furnace skin lights, they emit smoke and flame, and they cast a light level 10 above themselves. The repaint only happens on the tick the state actually changes.

  • New debug readouts: /function ra_wires:debug/generator and /function ra_wires:debug/light report, per block, every condition that has to hold for it to work.

v5.1.7 (2026-08-18) — Grids, Bridges, Millilitres

Electric stopped pretending to be a network and became one. Fluids got a unit, a hand-loading point and experience. Two library bugs that had been quietly wrong for a long time are fixed, and the redstone reader was rebuilt.

Added

  • Clipboard and Multimeter tools. The Clipboard makes the first block you shift-click the origin and matches every block you shift-click after it, same kind only; shift-click at nothing to clear. Everything is shift+RMB because most configurable blocks are backed by a container and a plain click opens their GUI. The Multimeter reads a block's network in chat: which grid, what it stores, what this block contributes, what it draws or makes.

  • Industrial Light — redstone and EU, projects a 10-block beam of minecraft:light. Stops at the first solid block, and clears only light blocks, so nothing a player built can be removed by it.

  • Clipboard — click a block to make it the origin, then click others of the same kind to match them to it. Shift-click a block to re-origin, shift-click at nothing to clear. Same-kind only, because half the pack has a property called enabled and a Gas Valve's rate landing on a Randomizer's chance would quietly mean something else. Only data.properties travels; a block's private working state stays put.

  • Multimeter — click a block to read its network in chat: which grid, what it stores, what this block contributes, and what it draws or makes.

  • Industrial Light — redstone and EU, projects a 10-block beam of minecraft:light. Stops at the first solid block; when it goes out it clears only light blocks, so nothing a player built can be removed by it.

  • Electric runs on the transport network engine. Adjacent nodes flood-fill into a grid, the charge belongs to the grid, and a generator's output is spendable by a consumer anywhere on it on the same tick. See the note under Fixed for what it replaced.

  • Battery — 10000 EU of grid storage. Wires, switches and breakers now store nothing, so a grid holds what its batteries hold: build them, or spend your generation on the tick it is made.

  • EU Breaker, and the Valve repurposed to match: a bridge belongs to neither of the networks it sits between, and while powered by redstone it moves contents from the network behind it into the network in front. It never merges them — a run with a bridge in it is two networks, always.

  • Ender Power Vault is a wireless bridge. It joins its local grid, contributes no capacity, and moves EU out of the grid at one end into the grid at the other. Anything the far side cannot take is put straight back.

  • Millilitres. A bucket is 5000 mL, a pipe holds 1000, a tank 100000. Network totals moved out of scoreboards and into storage ra:transport nets.n<id>, which is where the per-medium map will go when networks can hold more than one thing at a time.

  • Experience and potions are media. One experience point is 100 mL, in both directions.

  • A vertical drain is the hand-loading point. Sneak beside it holding a full bucket and its contents go into the network, empty bucket back in hand; with nothing in hand it takes your experience instead, ten points a cycle. Set to place, an experience network gives it back as orbs at the same rate.

  • Wrench-configurable throughput: Liquid Drain at 2.5 / 5 / 10 L per second, EU Consumer at 20 / 40 / 80 EU per tick.

  • ra_lib:redstone/any, detect_switch, local/{front,back,left,right,up,down} and side — read only what you need, instead of every block paying for a full twelve-direction sweep it then threw away.

  • Goggles redraw once a second instead of once every two.

Fixed

  • The Liquid Pump could not pump next to water. A pump on two pipes had a 4000 mL network and a water source is 5000 mL, and a source block is all-or-nothing — offering half and deleting the block anyway would quietly destroy a lake. Pumps and drains hold 5000 mL now, one bucket, so they work standing alone. network_too_small is told apart from network_full: one means add a tank, the other means wait.

  • Bridges did nothing unless they happened to face along the pipe run. A valve dropped into an east-west line while the player faced south pointed at two empty blocks, with nothing on the block to say so. They have no facing at all now — they look at all six neighbours, find the networks themselves, and move from the fullest to the emptiest.

  • A Valve's readout reported the fluid-node fields it does not have and printed N/A for every one of them.

  • Bridges have no facing at all now. They look at all six neighbours and find the networks themselves, moving from the fullest to the emptiest. Bridging the block in front and the block behind meant a valve dropped into an east-west pipe run while the player happened to be facing south pointed at two empty spaces and did nothing — with nothing on the block to say so.

  • A Valve's readout reported the fluid-node fields it does not have and printed N/A for all of them. It says what it is moving, and why not when it is not.

  • The Liquid Pump, Gas Pump and Drain hold 5000 mL — one bucket — so a pump works standing alone. A pump on two pipes had a 4000 mL network and could never accept the 5000 mL source block it was sitting next to, so it refused for ever. network_too_small is now told apart from network_full: one means add a tank, the other means wait.

  • One name for one meaning: cooldown. A block that waits N ticks before acting again calls that cooldown, everywhere, and its readout says Cooldown:. The Clock's delay and the Liquid Drain's interval are renamed to it and migrate themselves; the three generators' goggles said Period: over a field called cooldown, which is the kind of drift that makes a setting look like it belongs to something else. delay, extend and pulse on the Delayer, Extender and Shortener stay as they are — those are signal durations, not rate limits, and folding three meanings into one name would be worse than the drift.

  • The Block Breaker and Block Placer had no cooldown at all, and the reason was the same shape as the Clock's: five near-identical execute lines re-testing one condition, with the reset on the last. The first line destroys the block in front, so unless block ^ ^ ^1 #air was false by the time the reset re-tested it and the reset never ran — the counter climbed for ever and the gate was open on every tick. The placer emptied itself at a block a tick the same way. Both are one gated call into a fire function now, which resets before it touches the world, and five whole-world selector sweeps per block per tick became one.

  • The Data Handler's numeric-type list went back to being one entry beside the registry rather than seven per-block functions. The registry exists so that adding a property means editing one list; the per-block version undid that.

  • interval and rate were missing from the registry entirely, so the Handler could not render them — the Liquid Drain's throughput and the bridges' rate were invisible and uneditable. The Industrial Light's eu_use and the bridges' rate are now declared as tuning fields hidden from survival.

  • The Clock ignored its setting, because it had two of them. A clock could carry both delay and cooldown: the Data Handler listed both, process read cooldown, and delay — the one a player naturally reaches for — did nothing. The compatibility line meant to merge them only ran when cooldown was absent, which is precisely the case that did not need fixing. The clock now runs on a single property, delay, in ticks, and folds any leftover cooldown into it on every tick. A delay of 1 pulses every tick.

  • A number typed into the Data Handler could be stored as a string, and every block then read its LENGTH. data get does not fail on a string — it succeeds and returns the character count. So a Clock set to "5" ran with a period of 1 and one set to "100" ran with a period of 3: the number you typed changed nothing but the number of digits, which is exactly what "it ignores its setting" looks like. Nothing errors and nothing logs. The type detection was never wrong; once a value is a string the editor faithfully keeps it one. ra_lib:util/property now re-parses through a macro — substitution inserts a string's raw characters, so "5" and 5 both parse as an integer — and writes the result back as an int, so the repair happens once and the handler offers a number editor from then on.

  • execute store result … run data get <missing path> writes zero, and a period of zero means "fire every tick". Three generators and the EU Consumer read their period that way with no guard, so a block that lost its property did not slow down — it ran flat out. There is now one guarded reader, ra_lib:util/property, with a default and a floor.

  • The Liquid Valve, Gas Valve and EU Breaker could not be placed at all. Giving them a facing meant setblock waxed_cut_copper[facing=south], and that block has no states whatsoever — the command failed and nothing appeared. A new dir_type:3 orients the marker and leaves the block plain.

  • The Block Placer had no cooldown, so a held signal fired it every tick and emptied a stocked placer in under two seconds. Both it and the Block Breaker now run at one action per second, hidden from the survival Data Handler.

  • Electric charge could not travel. Every wire held its own buffer and handed half the difference to one neighbour per tick, which levels charge out rather than delivering it: it crawled a block a tick, a generator with six neighbours fed one of them, and once a run had evened out to within 1 EU the transfer guard stopped it moving at all.

  • A reload emptied a network's identity. transport/init overwrote the storage holding each network's medium on every load, while the amount sat in a scoreboard that survived — so a network filled since the last rebuild came back holding contents with no medium, and refused everything its own pumps offered until a drain emptied it.

  • Pressure plates did nothing. The redstone reader knew about dust, levers, buttons, redstone blocks, torches, repeaters and comparators, and nothing else. Pressure plates, weighted plates, tripwire hooks, observers, lightning rods and daylight detectors are all read now, from block tags rather than six hand-copied direction tests.

  • A torch standing on a block powered it. Vanilla never powers the block a torch is mounted on.

  • The Randomizer overwrote the redstone library's output with a dice roll, mid-read, on the same marker. One roll in a hundred came up zero and made it wipe its own output the instant it fired.

  • Two adjacent skinned blocks deleted each other's appearance. A skin sat on the block corner while the marker sat at the centre, and from a centre every surrounding corner is the same 0.866 away — no radius could tell them apart. Skins are centre-anchored now, and old ones migrate themselves.

  • facing/up and facing/down both claimed left was east, so flipping a block over left its hands unchanged.

  • count_inputs was a hand-copied mirror of the redstone reader, with a comment admitting the two had to be kept in step by hand. They share one implementation.

Changed

  • The EU Generator is a barrel wearing a furnace skin. A real blast furnace brought two input slots and its own smelting, of which only the fuel slot ever meant anything, so players filled the top with ore and waited. Drop coal in a box is the whole interaction now. Burn times live in a fuels registry beside the other tables; steam still works, so the Boiler chain is intact.

  • The Breeder is a barrel wearing a dispenser skin, for the same reason it mattered on the Unboxer: a dispenser throws its own inventory on any rising redstone edge, so a breeder loaded with wheat scattered it across the field the moment you powered it. It reads redstone directly now, since a barrel has no triggered state.

  • Tiered pipes and wires are gone. One Copper Pipe, one Wire. The four pipe variants placed the same block with the same marker and the same capacity — gas and liquid pipes were never different, and the tiers stopped meaning anything once a pipe held a litre. Retired place tags still map to the survivors so items already in a chest still place something.

  • The Poppy Generator's patch mode is gone. A second code path over the same ground for a block whose whole job is one flower at a time. The Wrench no longer cycles anything on it.

  • The survival Data Handler locks fields instead of hiding them: the value is shown with a struck-through red [Modify] and a hover saying why. A censored row made a block look like it had fewer settings than it does. The gamemode test is gone with it — creative players use the Creative Data Handler — and so are redact_next, redact_one and the "N fields hidden" footer. The refusal is enforced server-side too, since a row's action is a /trigger a player can type.

  • The EU Generator is a barrel wearing a furnace, not a blast furnace. A real furnace brings its own two input slots and its own smelting, of which only the fuel slot ever meant anything — so players filled the top slot with ore and waited. A barrel is a plain inventory: drop coal in and that is the whole interaction, and ra_lib:skin/apply puts the furnace back on the outside so it still reads as one. It burns solid fuel from its own inventory now, with burn times in a fuels registry beside the other tables. Steam still works, so the water -> Boiler -> steam -> EU chain is intact: fuel is the direct route, steam is the built one.

  • The Ender Item Vault's shared mode is gone. Three modes remain — link, send, receive — and a vault still set to shared becomes link, the closest of the three. It took two whole-world entity sweeps a tick to work out which vault a player was standing next to, and it was the one mode that followed people rather than machines, which made it the odd one out in a module about automation.

  • Bridges — the Liquid Valve, Gas Valve and EU Breaker — work both ways. They take from whichever side holds more and give to whichever holds less, stopping when the two are level. One-way was a mistake: the placement had a right and a wrong answer that nothing on the block told you about, and a build that looked correct simply did nothing. The facing now picks the axis, not the direction.

  • Goggles print units: EU on electric readouts, mL on fluid ones.

  • Wire readouts replaced Enabled: on — true of every wire ever placed — with the grid's state and its change per second.

  • The Solar Panel's Light: line said "Grid full" when the grid backed up. Split into a grid line and a Sun: line that only ever talks about the sun.

  • Wire tiers removed. L2 differed only in a capacity it no longer has and a transfer rate that stopped existing when charge moved onto the grid.

  • The EU Switch is placed as waxed_cut_copper, the same block as the Valve.

  • The Valve is no longer a shutoff. It is a one-way pump between two networks and needs redstone. Existing builds using one as a closed tap will find it does not conduct until powered, and then only in the direction it faces. To cut a fluid line, remove a pipe. The EU Switch is still a true shutoff.

  • ra_lib:redstone/detect no longer computes look-space scores or the twelve direction tags; nothing in the pack read them. detect_local does, for anyone who wants them. The per-source tags are gone.

  • Netherite pipes hold the same 1000 mL as copper ones.

Documentation

  • Every recipe picture regenerated, and the Recipe Atlas rebuilt — 59 recipes. Two stale pictures for retired tiers removed.
  • The Breeder now documents what it breeds: all 22 animals and the food each takes, extracted from the dispatch table so the page cannot drift from the code.
  • Item reference, interactive machines, infinite generators, transport networks and ender links updated for everything above.

Known

  • Nothing in this release has been tested in game.
  • Networks still hold one medium at a time. Filters, and telling one potion from another, wait on that.
  • Battery, EU Breaker and Industrial Light have no unlock advancement, and the Clipboard and Multimeter have no recipe — both are given by function for now.
5.1.6+modРелиз26.1.1, 26.1.2, 26.2 · 17 августа 2026 г.

v5.1.6 (2026-08-17) — Recipe Atlas, Data Handler Repairs, Licence

A follow-up to v5.1.5: one page holding every recipe, a Data Handler that no longer mangles what it edits, blocks that decide for themselves what a survival player may retune, and a licence that says what it was always meant to say.

Added

  • Recipe Atlas — all 58 recipes on one page, A to Z and by module, with the station each is made at and the give-everything command. Generated from the recipe files, so it cannot drift. It lists the four items that have no recipe too, with the sacrifice and chance that win them on an enchanting table.
  • Blocks declare which of their own fields the survival Data Handler hides, so one block's tuning knob is no longer every block's: cooldown is tuning on a generator and the whole point of a Clock. Creative mode shows everything.
  • /function ra_ender:debug/vaults reports each vault's mode, channel and reachable partners.

Fixed

  • The Data Handler asked for a number when editing any string, and writing one broke what it touched — an ender vault channel written that way stopped matching its partner, so the vault stopped sending. data get succeeds on a string and returns its length, which is what the old type test mistook for a number.
  • Properties with no editor were invisible, and hidden ones were still printed in the raw list. Everything a block carries is shown now; only what a block explicitly hides is withheld.
  • 23 block types never said they registered, and 13 more said it to everyone rather than to players wearing ra.debug.
  • Coal in the offhand did not count as jetpack fuel.
  • A Teleport Anchor could not fire on a player's first tick in the world.
  • Two enchanting tables a block apart could take each other's result.

Documentation

  • The licence is rewritten: addons are explicitly free to build and publish, the snippets in the docs are licensed for that purpose, and the clause that accidentally permitted redistributing the pack "in part and modified" is gone. Adds contributions and Mojang-assets clauses, and a version stamp.
  • The home page no longer claims redstone on the Boxer and Unboxer is a lock: both run while powered, and following that warning would have broken working builds.
  • The readme covers the four new modules, with corrected counts (52 blocks, 58 recipes).
5.1.6Релиз26.1.1, 26.1.2, 26.2 · 17 августа 2026 г.

v5.1.6 (2026-08-17) — Recipe Atlas, Data Handler Repairs, Licence

A follow-up to v5.1.5: one page holding every recipe, a Data Handler that no longer mangles what it edits, blocks that decide for themselves what a survival player may retune, and a licence that says what it was always meant to say.

Added

  • Recipe Atlas — all 58 recipes on one page, A to Z and by module, with the station each is made at and the give-everything command. Generated from the recipe files, so it cannot drift. It lists the four items that have no recipe too, with the sacrifice and chance that win them on an enchanting table.
  • Blocks declare which of their own fields the survival Data Handler hides, so one block's tuning knob is no longer every block's: cooldown is tuning on a generator and the whole point of a Clock. Creative mode shows everything.
  • /function ra_ender:debug/vaults reports each vault's mode, channel and reachable partners.

Fixed

  • The Data Handler asked for a number when editing any string, and writing one broke what it touched — an ender vault channel written that way stopped matching its partner, so the vault stopped sending. data get succeeds on a string and returns its length, which is what the old type test mistook for a number.
  • Properties with no editor were invisible, and hidden ones were still printed in the raw list. Everything a block carries is shown now; only what a block explicitly hides is withheld.
  • 23 block types never said they registered, and 13 more said it to everyone rather than to players wearing ra.debug.
  • Coal in the offhand did not count as jetpack fuel.
  • A Teleport Anchor could not fire on a player's first tick in the world.
  • Two enchanting tables a block apart could take each other's result.

Documentation

  • The licence is rewritten: addons are explicitly free to build and publish, the snippets in the docs are licensed for that purpose, and the clause that accidentally permitted redistributing the pack "in part and modified" is gone. Adds contributions and Mojang-assets clauses, and a version stamp.
  • The home page no longer claims redstone on the Boxer and Unboxer is a lock: both run while powered, and following that warning would have broken working builds.
  • The readme covers the four new modules, with corrected counts (52 blocks, 58 recipes).

Комментарии

Загружаем…