Tags
Creators
Details
All versions
0.0.1+51ca77e3
Release
0.0.1+51ca77e33 weeks ago 2
Compatibility
Minecraft: Java Edition
26.1.2
Platform
NeoForge
Supported environments
Client and server
Changes
Release 0.0.1+51ca77e3
Highlights
- Adds the core Modular Machinery machine system for Minecraft 26.1.2: controllers, casings, item/fluid/energy ports, multiblock structure matching, and data-component-aware machine recipes.
- Adds KubeJS and datapack integration: declare machines, structures, recipes, and exports from KubeJS; reload runtime content with
/mmcr reload. - Adds JEI support: per-machine recipe categories, interactive structure previews, component-based inputs/outputs, machine level requirements, and smart interface modifiers.
- Adds factory/parallel and expandable multiblock systems: factory controller threads, expandable stages, host/module machines with shared IO, terminal assembly, and auto IO.
- Adds new content: thermal smelting furnace levels, distillation tower, eco matrix, space elevator machines, multiblock export tool, dynamic machine overlays, and looping machine sounds.
Fixes
- Fixed data-component handling across recipe inputs/outputs, KubeJS recipes, and JEI displays, including component matching and preserving components when normalizing outputs.
- Fixed world preview stability: previews no longer disappear immediately after formation/controller destruction, lighting and rotation are correct, and stale previews are cleared after terminal builds.
- Fixed multiblock formation and orientation: vertical structures preserve facing/roll, exports normalize to lying-flat templates, port requirements revalidate, and structure retry windows survive mismatches.
- Fixed runtime reload synchronization: KubeJS recipes survive reloads, duplicate JEI displays and recipe layers are avoided, removed JEI recipes are hidden, and recipe locks stay synchronized.
- Fixed shared multiblock IO atomicity: duplicate final output commits are prevented, redstone-paused recipes persist, conflicting component claims are rejected, and structure versions are checked.
Performance
- Added world preview mesh caching, asynchronous mesh compilation, persistent GPU buffers, and batched/layer-based preview drawing.
- Added active incremental structure scans, cross-tick scanning for large structures, throttled retries, and redundant multiblock check elimination.
- Optimized data-component recipe search, structure detection caching, and shared multiblock IO cursor scheduling.
Maintenance
- Finalized the public API: machine/recipe builders, pattern primitives, split registration events, runtime content snapshots, and
IOPortKindextension points are now the supported paths. - Breaking: deprecated public event classes and obsolete registration APIs were removed; addon authors should migrate to the new builders/events. KubeJS scripts cannot mix old and new pattern APIs.
- Removed Jade machine info display.
- Migrated the build to ModDevGradle, split build scripts, added API artifact publishing and nightly CI, and expanded gametests for registration, terminal assembly, shared IO, previews, and factory scheduling.
Full commit list
- ci: mek (51ca77e3)
- fix: relax structure chunk loading (2a19c104)
- chore: project release (bcbcc155)
- feat: remove jade machine info / test: fix async test bug (512c7a60)
- ci: fix api upload (cf5a79b2)
- test: stabilize distillation gametest (bfb448fc)
- start ci (f6b50b41)
- feat: world mesh cache to improve preview performance (4a6d1134)
- fix: gpu world preview render (a8cd9806)
- debug render (0fb8dba5)
- test: remove flaky expandable build gametest (39a7a653)
- perf: compile world preview meshes asynchronously (e8dfb247)
- fix: harden world preview gpu rendering (8581ca79)
- perf: draw preview meshes with persistent gpu buffers (3d7c9132)
- perf: batch world preview mesh drawing (58586a6c)
- test: cover player-specific preview cleanup (16b69e80)
- feat: add world preview mesh GPU uploader (f5348ef5)
- fix: clear world previews after terminal builds (d5f1fcef)
- feat: use cached meshes for world preview (2980aab6)
- feat: submit cached preview meshes by layer (44eccd1a)
- fix: route preview quads by material layer (1776743c)
- test: cover production translucent mesh sorting (514cc4c5)
- fix: connect task 2 compile review seams (199d1c45)
- fix: cover task 2 mesh compiler contracts (1d0d54a7)
- feat: batch world preview meshes (f32f4022)
- fix: require opaque preview mesh requests (e542590a)
- fix: harden world preview mesh cache (ad92da6b)
- feat: cache world preview meshes (01d2d1c0)
- dep: add sodium (4a515fe8)
- test: align gametests with incremental checks (b3e092b3)
- fix: resume deferred sentinel checks (8d21fb74)
- fix: bound incremental structure rechecks (18e19b53)
- fix: clear stale structure diagnostics (d808c4ee)
- fix: align terminal gametests with real ticker (7350295b)
- fix: isolate terminal gametest config (35f1a4dd)
- fix: close task 3 important findings (bbc602eb)
- fix: complete incremental scan gametests (cadbd3c0)
- fix: complete task 3 incremental scan verification (a774c124)
- perf: add active incremental structure scans (797853a7)
- fix: address final task 2 important findings (58d1cf7b)
- fix: address task 2 scan review findings (8621537f)
- docs: record task 2 report commit (62cb4cf5)
- docs: report incremental task 2 (005a926b)
- perf: scan large structures across ticks (50bde94d)
- fix: preserve structure retry window after mismatch (75e09ff9)
- perf: throttle multiblock structure retries (f51d6028)
- fix: enforce real-tick build budget (d5da2b41)
- Update .gitignore (11fb66b5)
- docs: record final review fix commit (20db53ed)
- fix: address final multiblock review findings (d7782b2e)
- test: add terminal assembly game test (3b3a289e)
- test: address task 3 structure review (6b7f54cb)
- perf: avoid redundant multiblock checks (3fec69af)
- fix: consume cached preview models (1a882d23)
- fix: complete task 2 preview review (d111543c)
- docs: clarify task 2 review concerns (ce62fcad)
- docs: record task 2 review fix (c1abf555)
- fix: address task 2 preview review findings (778ec69c)
- perf: cache and cull multiblock previews (ef1a29eb)
- fix: address task 1 build review findings (3fe2ac2f)
- perf: batch multiblock building across ticks (f0155a89)
- feat: new big machine (c0b3bf9c)
- feat: configure multiblock state matching (6115317f)
- chore: example api use (fd0e5cb7)
- fix: a lot of bug fix feat: a lot of new api chore: new example machine (52e8e985)
- fix: preserve data components when normalizing outputs (5cbb2cee)
- fix: match preview lighting to noon (27344f01)
- chore: forget controller (fdb76b8e)
- fix: mark preview lightmap as renderable (32361389)
- fix: isolate JEI preview lighting (c1d5a5cf)
- fix: life cycle / feat: service register (9f747004)
- fix: life cycle / feat: service register (026ffa23)
- fix: event lifecycle (bc8b728d)
- new: KubeJSApi (f3c4e55e)
- docs: clean (da37498e)
- docs: kubejs support (4f2e0345)
- feat: last modify public api (b795161b)
- feat: new api (763b7c21)
- feat: migrate builtins to public api (06bfe275)
- docs: all example polished (e6d4feda)
- docs: all example finished (ec53d5f8)
- fix: host and module kubejs register (de4ae200)
- feat: add expandable structure levels (e963c254)
- fix: resolve KubeJS extension callback overload (b13d2b59)
- fix: 往里修 (52b2a07d)
- fix: bind kubejs structure stage builder (f6d6f4db)
- fix: enable expandable gametest fixtures (ef4a3379)
- fix: isolate kubejs callback structure api (1e6e4bc0)
- docs: record task 3 review fix (3e30796b)
- fix: cover expandable structure boolean overload (6e2c7ba3)
- feat: expose expandable machine flag to kubejs (cda5eb16)
- feat: add kubejs expandable structure chain (5fef7bd6)
- fix: retain stage level slot requirements (7c3bb61c)
- feat: add kubejs structure stage builder (010d2cef)
- fix: a lot of fix (7cad3345)
- fix: format JEI smart interface ranges (5ffa76f1)
- docs: design JEI smart interface range display (5f7ac9c8)
- fix controller tick after removal (4acd38e7)
- chore: add diagnostics for controller and level names (f4022b3f)
- fix: avoid level type display name field clash (5246c124)
- fix: localize kjs level type names (c5c26e6f)
- feat: new kjs (43eee2a3)
- fix: rotate preview level states (f95d63af)
- fix: rotate preview metadata (81c02072)
- fix: rotate client preview patterns (12c54774)
- fix: simplify exported default block states (144897fe)
- test: cover rotated block state consumers (063a4ec7)
- chore: remove unrelated files from task commit (ac12f24b)
- fix: rotate block states with structures (2995a986)
- chore: remove forbidden review report (8ebc4101)
- test: cover preview state payload round-trip (b94bd7b9)
- fix: prioritize exact preview block states (875563e2)
- fix: complete export review findings (14670db4)
- fix: address export review findings (99912698)
- fix: export exact block states (4b4bf45b)
- test: bind export state predicates to pattern symbols (af8fbf4a)
- test: strengthen export regression fixtures (a87bab6b)
- test: define multiblock export regressions (b329b5cc)
- ci: provide release workflow token (e252e388)
- ci: provide token to gh release lookup (043ee6a0)
- build: publish public API artifacts (8ed4f7ae)
- fix: 终于消停一会儿了 (7abbee0d)
- fix: isolate integrated server runtime snapshots (f821ec1a)
- fix: avoid duplicate kubejs recipe layers (b36cfeaf)
- fix: avoid duplicate initial jei displays (6898d00c)
- fix: preserve kubejs recipes across reloads (8af3c2b9)
- chore: remove parallelism diagnostics (685ea50a)
- chore: trace factory thread parallelism (1ddc96f4)
- chore: trace controller parallelism lifecycle (82b62ac7)
- chore: trace JEI runtime recipe reload (171e4184)
- chore: add temporary runtime diagnostics (6546d830)
- fix: restore dynamic JEI recipes and parallelism (bbdf21db)
- fix: preserve recipe ids and reserve pending threads (336201c3)
- chore: add temporary runtime diagnostics (b396f933)
- fix: validate reload recipes against startup structures (96ae4e5d)
- fix: resolve KubeJS recipe and factory issues (45609397)
- fix: restore JEI tag variants and KubeJS reloads (a7afc118)
- fix: restore block tag assembly and JEI recipes (bff86e94)
- fix: disambiguate KubeJS structure patterns (c505bc96)
- chore: update example KubeJS scripts (53aa472b)
- fix: reject mixed KubeJS pattern APIs (54c4265d)
- fix: preserve controller identity in exports (b36e2e8c)
- fix: preserve KubeJS multiblock z slices (a7e1548f)
- feat: add Java and KubeJS multiblock exports (406f342c)
- fix: align JEI metadata cursor coordinates (281e4688)
- fix: place module host reminder after energy outputs (a0f53d79)
- fix: preserve KubeJS structure requirements (475ff7d8)
- feat: add slice patterns to KubeJS structures (c4132e3a)
- exmaple fix (011f7841)
- fix: close final review findings (f6455aa9)
- refactor: replace avoidable fully qualified names (4a5c55cc)
- close Task 6 interface helper review findings (89f2b788)
- fix Task 6 interface helper API mismatch (e4dc106a)
- add reusable interface API helpers (696fc932)
- remove deprecated public event classes (9ba7f50b)
- fix factory snapshot review findings (83ddaa77)
- fix factory controller snapshot protocol safety (63535867)
- fix factory scheduler test seams (26ddbfd9)
- allow multiple factory controllers (07dab8f6)
- guard non-factory scheduler access (4573aea7)
- remove factory scheduler runtime ownership (c0bd8664)
- move factory scheduling to machine controller (afd13cbd)
- test update factory capacity fixtures (cef35f2d)
- fix factory controller capacity aggregation (d79d73e4)
- a lot of fix 我已经有点略显麻木了 (4e05b1ef)
- fix: isolate builtin public registration boundaries (68522991)
- fix: isolate public machine role contract (4716be46)
- fix: keep builtin modifiers on public API (6513cced)
- chore: remove unrelated staged example (ce9e15f5)
- feat: migrate builtin declarations to public contracts (cc6fce1b)
- fix: restore builtin level registration guards (12b12107)
- docs: report task 3 implementation (1b5579e3)
- feat: add public machine level declarations (ec03ec90)
- fix: preserve explicit recipe requirements (db4f95c1)
- feat: add component-aware public recipe items (8654d64f)
- feat: add public component declarations (444d58c0)
- debug: trace recipe registration paths (22c325b2)
- fix: register (f404aeba)
- fix: kubejs register (65ed149a)
- fix: skip missing optional builtin item recipe (6ceca7b6)
- fix: legacy structures (5a9b26d9)
- test: tighten mmcr wiring coverage (b1210000)
- test: cover mmcr event wiring (baf46e4d)
- refactor: simplify mmcr registration entrypoint (654713eb)
- test: close task 3 review gaps (fa9b1838)
- test: cover task 3 registration facades (5ae97a3b)
- refactor: extract runtime and gametest registration (c22344b3)
- fix: preserve delayed kubejs startup commit (5dfc4d67)
- fix: restore startup testing seam (88c114d8)
- chore: keep task report local (0436ece2)
- refactor: extract startup content registration (ce917f93)
- test: restore builtin level test isolation (f7aed2cd)
- test: fix builtin level subscriber fixtures (90effe75)
- test: cover builtin level subscriber behavior (031cf521)
- refactor: move builtin level declarations to public api provider (3be3ad45)
- refactor: rely on builtin public event subscribers (8a01e778)
- fix: complete startup registration atomically (4de89961)
- fix: close task 12 test regressions (35f592ab)
- fix: decouple runtime snapshots from block binding (cdf922b7)
- fix: complete task 11 provider compatibility bridge (c0dfce0c)
- refactor: remove registration lifecycle bypasses (0a6a7070)
- fix: restore public registry compatibility bridges (756da32d)
- refactor: remove obsolete registration APIs (86a35feb)
- fix: synchronize effective runtime content reads (c727c508)
- fix: close task 9 runtime sync review gaps (5818eb25)
- refactor: route reload integrations through content snapshots (25883010)
- test: strengthen task 8 preview stage coverage (640c36ca)
- fix: close task 8 preview cache gaps (cb72053a)
- refactor: migrate content consumers and caches (3334459b)
- fix: finalize runtime snapshot consistency (a446a6fe)
- fix: close runtime snapshot review gaps (924f3a9a)
- fix: harden runtime snapshot synchronization (69387767)
- refactor: synchronize effective content snapshots (a7b26b7e)
- fix: separate startup commit from register attachment (a984429e)
- fix: resolve task 6 static review findings (7eb7dda0)
- test: share startup registration bootstrap (ed8885a9)
- fix: tolerate missing gametest classpath (16e2edf8)
- fix: align startup registration phases (7f44d184)
- test: share startup registration bootstrap (456fdc78)
- fix: close runtime reload transaction boundaries (8716d410)
- refactor: unify runtime content reload transactions (b5f41017)
- refactor: unify static and runtime recipe layers (dd3ee21b)
- fix: remove public api registry side effects (d14d7811)
- fix: preserve complete public machine structures (3551063d)
- refactor: centralize startup content registration (9cfdb837)
- refactor: unify registration event names (c5c3b7d3)
- fix: preserve machine IDs in structure errors (260316ba)
- fix: close registration lifecycle review gaps (e13d2ba2)
- fix: complete core public api registration (25b0402f)
- fix: close lifecycle and registration review gaps (f990d78e)
- fix: close remaining public api lifecycle gaps (3d06cca0)
- refactor: finalize public api event boundaries (9f871762)
- refactor: migrate kubejs machine consumers (7b407507)
- refactor: unify public api lifecycle (948b8b3f)
- docs: restore task 1 report (cebb3cfc)
- test: cover removed machine structure methods (01997928)
- fix: close task 1 adapter review gaps (698ff3e3)
- test: restore task 1 builder coverage (e46ce2ef)
- fix: address task 1 review findings (62ba9f22)
- docs: record task 1 review fix (cf166e2a)
- fix: decouple public machine structures (962c9e9c)
- feat: split public machine registration events (37b52dc0)
- fix: stage fix machine registry (e8e28dfc)
- fix: stage fix lifecycle (5cbc8a38)
- test: align test cube coverage names (6ff590d4)
- docs: record formation coverage follow-up (b425df49)
- test: restore isolated formation coverage (1d8b2c02)
- docs: record task verification (abd3ca3d)
- test: isolate public event subscribers (9d4fb6ea)
- test: bootstrap public builtin runtime (5cb18030)
- fuck test (2d6751a8)
- refactor: public api (5552848b)
- refactor: separate public built-in declarations (1e7e905e)
- refactor: build default content through public API (d072d9c8)
- api: fix final lifecycle review findings (4304550a)
- api: finalize startup registration lifecycle (5907da15)
- api: fix Task 5 public lifecycle boundary (eb559876)
- api: integrate startup registration lifecycle (af7ad2fd)
- api: fix public recipe builder boundaries (61cdc014)
- api: add machine recipe builder (945f0d7f)
- api: fix single-stage registration (7bc4891a)
- api: fix Task 3 review findings (ce245cf7)
- proj: remove oritech (6c8547d8)
- api: add machine definition builders (086958d1)
- api: reject duplicate controller markers (15e9744f)
- api: validate public pattern definitions (f777bd0d)
- api: add public pattern primitives (1dc58f9a)
- test: document public API inventory guard (78a21ec5)
- api: refine public API inventory docs (3726860c)
- api: define public API inventory (e290bb8b)
- lang: add example machine lang (63f5a169)
- fix: remove controller JEI click area (16df5199)
- ui: button to one style (4e6bd398)
- test: assert single target ejection (9dc7bd29)
- test: cover input port ejection (2f486319)
- feat: add input port ejection button (bcf1c4d7)
- feat: add input port ejection packet (1f59fa14)
- feat: eject unused input port contents (aa284acc)
- fix: crop factory scheduler background texture (d6b611d3)
- refactor: split machine controller screen (a0574a16)
- refactor: register dedicated machine screens (8d98f057)
- refactor: split port menu screens (cd82f46c)
- refactor: add shared port screen base (c41f3b7e)
- refactor: 替换内联全限定 java./net./cn./com./io./org. 名称为 import + 简单名 (a53b0138)
- fix: export file to mmcr_structure_export (bcbe7d91)
- ci: add nightly build publish (60be18d7)
- fix: align empty fluid hatch capacity text (dd02e2a7)
- fix: render fluid gui sprites with atlas uv (e9868133)
- fix: try fix fluid render display (0b8a35b3)
- fix: format readable numbers from one million (70ab27cb)
- fix: correct fluid hatch rendering (7028ffc6)
- dep: 投影用不了 (f2310883)
- fix: sample fluid sprites from atlas coordinates (7749b231)
- test: restore injected language (984639ed)
- docs: attribute fluid gui renderer (3a7244b4)
- feat: show fluid type in hatch gui (c1748da8)
- dep: add 投影 (1eae5cc1)
- fix: preserve fluid tile cropping (59cf01bd)
- feat: add reusable fluid gui renderer (1e486571)
- fix: vercel machine contoller place (8b218d71)
- fix: kjs api rename and test vercel machine (0cb7c192)
- feat: int max transfer (d7f3e08c)
- feat: new capability interface / new UI number display (70cc4ecf)
- feat: 微调了一下UI字体大小,稍微能多装一些了 (95cd471e)
- fix: destory block timing (176bb633)
- fix: world preview disappear immediately when structure formed and controller been destoryed / terminal build max (7b41a919)
- ci: fix release body (53978efa)
- fix: some bug fixes (029b30c4)
- fix: mark machine recipes as special to suppress empty ingredients warning (ab6e735d)
- fix: tag item input (4ddfba45)
- fix: client payload (518e3539)
- fix: align runtime sync with structure requirements (36eec78d)
- fix: make runtime sync optional integrations safe (cdea11a8)
- docs: add ai policy (dbdc6a27)
- fix: preserve requirement metadata in migrated structures (1a5155f3)
- fix: clarify runtime sync reload hooks (0e3b6ab9)
- docs: do not include any doc (5a3b27e4)
- feat: wire runtime sync reload hooks (cf547cd9)
- fix: compare modifier requirements by value (70cbf4e7)
- fix: preserve static jei displays during runtime sync (9c1681d6)
- chore: finish structure requirement migration (c5ff3a58)
- fix: hide removed jei runtime recipes (69b8dac2)
- feat: refresh jei recipes after runtime sync (5a232335)
- fix: internalize compiled structure requirement maps (44e639bc)
- feat: apply runtime snapshot on client (5ee8568b)
- feat: sync runtime content to clients (1e57051f)
- refactor: bind modifiers to pattern keys (4a93ed80)
- feat: add runtime content payload (864de592)
- test: cover base-first modifier previews (9cd37605)
- fix: preserve runtime recipe sync flags (e4655402)
- fix: prefer base blocks in structure previews (2617365a)
- feat: add runtime sync codecs (cf7e1bc3)
- feat: allow modifier blocks as structure alternatives (82720896)
- fix: cover modifier replacement api migration (1662ab24)
- test: cover all runtime snapshot maps (bf3b4b8b)
- refactor: remove modifier replacement positions (7d96a609)
- feat: add runtime content snapshot boundary (efa04fd2)
- feat: add character-based structure requirements (b83ff8f2)
- docs: readme (7405abaa)
- fix: slot match (94d70c27)
- fix: kjs recipe inpuy (61a7db81)
- fix: allow empty KubeJS recipe lists (93128ed1)
- test: data recipe (f50e9a88)
- test: add datapack machine recipe gametests (0c436ec4)
- fix: close recipe reload review gaps (20cbc29b)
- fix: harden recipe layer publication (6d7fa964)
- feat: merge recipe reload layers (43adf0ea)
- feat: add machine recipe data reload listener (199056c9)
- fix: route KubeJS recipes through shared normalization (2783ef9a)
- fix: reject overflowing recipe integers (d6d79a6c)
- fix: reject fractional recipe integers (51d689e2)
- fix: harden shared recipe json parsing (3e01e344)
- feat: add shared machine recipe json parser (f19a423e)
- fix: stage fix (4eec85c3)
- feat: new kjs api (888cf95c)
- docs (a317dfe4)
- ci (b2558e09)
- fix: tighten KubeJS declaration semantics (72a66ec9)
- fix: tighten KubeJS declaration semantics (e404b3cf)
- feat: set parallelized and deriveRequirements for example clones (548ffcb1)
- feat: expose parallelized and deriveRequirements for KubeJS builder (dea3e403)
- fix: complete KubeJS default content API (8616fe7d)
- feat: add KubeJS default MMCR content example (8601564a)
- fix: validate component recipe outputs (b945b0ed)
- fix: validate KubeJS recipe outputs (1a726db7)
- Update README.md (683430fd)
- feat: expose complete machine recipes to KubeJS (4d8e0258)
- Update README.md (20e22d3a)
- fix: clean up interrupted KubeJS reloads (21894c05)
- feat: reload MMCR content from KubeJS server scripts (7120ca00)
- feat: support complete KubeJS machine structures (d8fe5c7a)
- fix: avoid default controller registration in production (f21afc92)
- fix: preserve conflicting KubeJS machine roles (74aea780)
- docs (725fddb1)
- feat: expose machine registration settings to KubeJS (71261abc)
- ci: separate release workflows (af062d37)
- fix: validate KubeJS declaration inputs (4d47cbae)
- docs: polish project documentation and releases (06d95e54)
- feat: expose MMCR declaration API to KubeJS (8c7da7a0)
- feat: JEI modifier support (cf722aec)
- feat: recipe (9d4e20ae)
- 往里修 (f62066ff)
- fix: ci (0ee77fd3)
- ci: fix release (f55b3f93)
- fix: 你自己看吧反正是些fix (e8906659)
- assets: add factory controller GUI texture (cc7a6724)
- fix: translate factory controller machine title (78f2f141)
- fix: langs (ef21fc9b)
- feat: raise export volume limit (25e32f38)
- proj: mixin fix (9a844a54)
- build: exclude development content from release (a76d649e)
- test: remove redundant coverage (dc8052c4)
- refactor: move translations to lang resources (64b4c664)
- build: exclude test assets from release jar (882f31d6)
- feat: cycle JEI structure preview levels (55b6545f)
- fix: tooltip display (84212273)
- fix: align JEI preview widget coordinates (ae9d6ebc)
- fix: improve structure preview candidates (2163ba76)
- fix: show fixed structure blocks (ef5e2ee6)
- fix: filter structure previews without catalysts (1c33c5c6)
- fix: hide controllers from structure preview (34df2ca5)
- fix: correct JEI recipe manager mixin signature (b1ce8eed)
- fix: use one JEI structure category (4cf1d368)
- fix: complete JEI structure preview controls (863a881e)
- refactor: defer structure schema creation (356f95ca)
- feat: filter controller structure previews (f96c7164)
- fix: clear recipe lock button focus (ec94592b)
- fix: update JEI UI layout tests (f21d0998)
- UI (2356b6d5)
- fix: restore compact recipe layout (7502d4be)
- fix: restore structure preview layout (f38d4c0f)
- fix: align preview hit coordinates (84b64ab2)
- debug: trace preview click selection (9d247e16)
- debug: log preview outline positions (9b810c9e)
- fix: place preview outlines in world space (3008d4e5)
- fix: stabilize preview hit outlines (6bf29de5)
- debug: trace JEI preview outlines (904b95b8)
- fix: align JEI preview interaction (21df2692)
- fix: improve structure preview interaction (24e9461e)
- fix: enable preview color texture sampling (397f3164)
- fix: guard preview depth readback usage (128d3708)
- fix: own readable preview depth target (246825f0)
- fix: align depth readback mixin (892de0a8)
- feat: separate JEI multiblock structure previews (8091e0c2)
- fix: mixin (3acb0542)
- fix: move depth readback bridge out of mixin package (c5a4d7f0)
- fix: remove relocated mixin tests (086aa1f6)
- fix: isolate mixin packages (691d02a5)
- fix: generate structure preview translations (144c2564)
- fix: align and dispose jei structure previews (98e3d9ea)
- fix: restore complete lgpl notice (225e521d)
- feat: add ldlib scene structure previews (3a8b67f6)
- fix: clear jei preview drag sessions (b586e05d)
- fix: forward jei preview drags (75956ecb)
- fix: keep jei simulate input stateless (a72f13b3)
- fix: honor jei preview input lifecycle (7370e63b)
- feat: show cached structure scenes in jei (c4e3279d)
- fix: preserve preview depth readback state (ae14575a)
- fix: read preview PiP depth texture (e404e3d8)
- fix: correct preview PiP ownership (e7946e22)
- fix: complete preview renderer ownership (0fa73be2)
- feat: render cached structure preview scenes (34040d86)
- docs (3bf3fc6a)
- fix: reuse initial preview translucent index (1a26a908)
- fix: resort preview translucency on eye changes (e38175e8)
- fix: own translucent preview cache results (3386e479)
- fix: avoid preview block entity compilation (8d5abcda)
- feat: cache preview scene meshes (f2a68869)
- feat: expose preview scene camera rotation version (abd810b0)
- feat: register preview mesh data accessor (33a374af)
- fix: isolate preview scene camera context (072b926f)
- feat: add preview scene render infrastructure (cbb08943)
- chore (07e85e44)
- fix: preserve pending preview full rebuild (9a0b04c0)
- test: lock down preview scene api (1a5b7413)
- fix: complete structure preview widget interaction (c6773e79)
- feat: add structure preview camera controls (ae1caa25)
- fix: harden virtual preview level lifecycle (c7ce3c17)
- feat: add virtual structure preview level (3663b6e6)
- test: cover preview stage selection (86502df4)
- feat: build preview schemas from machines (daab1192)
- fix: keep predicate previews out of api internals (2cc2c6d2)
- feat: expose preferred block predicate state (d104d3c8)
- test: cover immutable preview schema snapshots (5cd5c637)
- feat: add structure preview schema model (aa33b9fb)
- release: dev stage close final (7b2d456e)
- fix: use fluid api for hatch bucket interaction (2d40a3f3)
- feat: new feat 你自己看 (17ac68ef)
- feat: add fluid hatch bucket interaction (a33b9270)
- fix: handle missing controller model id (1e7c2803)
- feat: add block loot and item bus drops (3ae40bb4)
- feat: add modularium ingot (71bf45d5)
- fix: remove formed controller in one break (0d265b01)
- fix: retain synced module role in controller menu (e7932a84)
- fix: show module controller status (71827bce)
- fix: preserve jei recipe item counts (efbc667a)
- fix: show offline module failure (962ae2ec)
- fix: use valid space elevator base texture (3ec0db82)
- fix: distinguish space reassembler recipes (b0761297)
- feat: add space elevator machines (7cd2bd6b)
- fix: render (927da90f)
- fix: generate module host translations (8542395d)
- fix: reconcile host module integration (5faf7d77)
- res: new texture (73ee9f37)
- fix: stabilize module connection claims (615ff1b5)
- test: disable flaky auto IO input gametest (2e69c9c0)
- test: cover shared controller recipe continuation (a9e67d8d)
- fix: clear factory continuations on pause (fae36cc3)
- fix: honor factory continuation constraints (9a6f6f33)
- feat: continuously run factory recipes (1afcb143)
- test: cover continuous recipe completion timing (e7870c2c)
- feat: restart completed controller recipes immediately (bb07b6ff)
- feat: expose finished factory thread continuation (89c8b2ba)
- fix: isolate finish-spawned start requests (75464f04)
- chore: record task 3 review results (89419078)
- fix: discard invalid finish-spawned starts (268f4ded)
- feat: resolve shared recipe restarts after finish (4c1f1fde)
- fix: hardcode distillation tower levels (4e7b014a)
- fix: place distillation tower caps at top (c9d013c8)
- fix: reserve JEI text space for empty recipes (727bc7c7)
- fix: require distillation tower caps (c850c40d)
- feat: add distillation tower and eco matrix (661bab4c)
- test: select ordered terminal assembly placements (a2b02ee3)
- test: register terminal assembly continuation coverage (34bb29fb)
- test: update terminal assembly partial build coverage (b99eebd5)
- chore: translations (995ed8b3)
- test: ensure terminal assembly skips missing positions (2d0fa92c)
- test: cover batched terminal assembly (4d2d1427)
- fix: restore batched terminal assembly (55ce704b)
- proj: new module (622a59f1)
- feat: complete modular machine host integration (64047a0e)
- fix: validate dynamic recipe candidates (394fe0d0)
- feat: expose host module declarations to kubejs (2991a2e5)
- fix: atomically commit strict smart interface outputs (063b16b2)
- fix: normalize jei host requirement sets (6fa9ffca)
- fix: keep jei host requirements immutable (2c26f552)
- fix: defer smart interface outputs until completion (21d18ca1)
- feat: show module host requirements in jei (6679915f)
- fix: preserve strict output atomicity and controller validation (52ecab75)
- fix: broadcast module controller state changes (7aa4290d)
- fix: sync exact module host id (973bd16f)
- test: cover expandable partial-output machines (99a93773)
- feat: sync host module controller status (3be76abe)
- fix: guard module recipe io commits (8bfe418b)
- fix: route direct partial output commits (af647244)
- feat: gate module recipes by host connection (9dd02292)
- feat: emit partial item and fluid outputs (d0b0a76c)
- fix: revalidate module bridge connections (99e59ddc)
- feat: add partial recipe output API (efbdb4c1)
- feat: connect host and module multiblocks (920ee58f)
- fix: keep terminal assembly material checks atomic (d43542da)
- feat: assemble expandable structure stages (3f4f371f)
- feat: add module bridge block (675daf7a)
- fix: use staged modifiers during vertical matching (dd319e37)
- fix: add machine role test author metadata (3a5c086e)
- fix: tighten machine role validation (7e3bf3b3)
- fix: complete expandable stage matching tests (6dd953e7)
- feat: add multiblock host and module roles (4eeedf5a)
- docs: (da75a5be)
- fix: translation (af31372e)
- ui: new textures (c7b812cf)
- release: some new feats (4e575e6b)
- fix: try fix stable test (f7cdfa39)
- i18n / dependence / ci / ci test (03fabf78)
- fix: auto io bugs (e7b4df3a)
- fix: recipe lock (6583d477)
- fix: terminal performance bug (1abd9dc6)
- Revert "fix: enforce ordinary recipe lock search" (d36f43db)
- fix: sync ordinary recipe locks on menu open (f4f6b8f9)
- fix: keep recipe lock requests client side (5f899d29)
- fix: remove duplicate ordinary lock field (e40c772e)
- fix: enforce ordinary recipe lock search (9dd928fa)
- fix: enforce ordinary recipe lock search (f0f311bd)
- test: cover recipe locks across redstone pause and reload (8cf00398)
- fix: keep recipe lock buttons off player slots (cc791af6)
- feat: add recipe lock controller buttons (3c97f09c)
- feat: match highest expandable structure stage (a018156f)
- fix: broadcast recipe lock state changes (7c2d67c0)
- feat: handle recipe lock requests on server (e0c94dd0)
- fix: preserve staged modifier replacements (93aa4890)
- feat: compile expandable machine stages (3d329fd6)
- fix: keep controller lock state client synchronized (5ff41ba7)
- feat: sync recipe lock state to controller menus (e0114780)
- fix: validate controllers in full structure stages (ff1be7be)
- feat: restrict recipe searches to locked recipes (669bbf21)
- feat: add expandable structure stages (390522c4)
- feat: persist recipe lock per factory thread (1ab1aabf)
- todoi (1204e753)
- fix: preserve matched structure for terminal operations (cf2485ff)
- Merge branch "feat: io optimi" (b163ab2f)
- fix: preserve matched vertical roll for formed structures (ad7bd58e)
- test: cover vertical roll structure orientation (cca899cb)
- fix: UI 1 (50b6f558)
- fix: export vertical captures as lying-flat templates (64e3d7cf)
- fix: use roll-aware patterns for vertical controllers (416e3fd5)
- fix: align cracker builtin controller facing (f24ea906)
- fix: make cracker use lying-flat template (a29cfd7d)
- fix: add roll-aware vertical structure rotation (89ff50c8)
- some i18n (f92514c9)
- fix: fold auto IO translations into datagen (18e7980f)
- fix: address terminal assembly review findings (dfae626c)
- file: delete 2 (3742749e)
- file: delete unusable textures (3ddc84c0)
- fix: cover terminal demolish skip paths (e58347d4)
- Fix auto IO UI synchronization (baa7bc5a)
- test: cover terminal structure operations (2193eac0)
- Fix recipe retry clock with static test levels (169de403)
- refactor: share multiblock build execution (9eb63c3a)
- Add auto IO integration gametests (0896ea32)
- feat: add terminal config and translations (52afd662)
- Polish auto IO control interactions (ed6d53a1)
- feat: add terminal item (71ced6cc)
- feat: add shared multiblock assembly service (df480e37)
- Fix auto IO output label resolution (17cd5f99)
- feat: add structure inventory transfer APIs (107f3ef7)
- Add auto IO menu controls (d30c22bc)
- feat: add terminal mode component (44b968ee)
- Add auto IO config packet (56b01c60)
- Fix auto IO empty candidate recheck (f08272ea)
- Add auto IO transfer handlers (07856944)
- fix: a lot of fix (b21db365)
- feat: add auto io state to ports (55076625)
- feat: add auto io config model (57291687)
- test: cover vertical controller preview orientation (bd77f6ca)
- feat: in game rendering (28978f47)
- feat: render multiblock previews client side (64acb85e)
- feat: send multiblock preview payloads (d0d999cb)
- feat: build multiblock preview snapshots (140813fe)
- feat: add multiblock preview snapshot model (abce0775)
- feat: project some polishment (39be7282)
- fix: test recipe (158f8c8c)
- fix: wire purpur furnace machine sounds (136becc5)
- fix: tag recipe and tag data recipe (6628db91)
- test: cover tag ingredients with components (528c5bfd)
- fix: gametest failed (55bb3c65)
- new bug fix (3f9eab4e)
- fix: sync smart interface defaults and tests (00eb2c3b)
- fix: keep smart interface description single-line (1c1f403b)
- i18n (4293ccbf)
- some fix (a4524200)
- fix: JEI rendering with smart interface (7b91df5a)
- fix: apply smart interface input chance modifiers (a9eaf224)
- feat: show smart interface modifiers in jei (7db5ad51)
- feat: expose shared smart interface update events (3f75b203)
- feat: edit smart interface parameters by type (42fa6716)
- feat: apply smart interface runtime modifiers (82d61d7e)
- refactor: store smart interface parameters on interface (235ec80b)
- feat: expose smart interface runtime parameter builders (71e84073)
- feat: add smart interface parameter model (9f8bf42e)
- feat: structure construct failed highlight (fee8f1a8)
- fix: smart interface texture rendering fix (40dea811)
- feat: share linked component casing appearance (c73c5baa)
- feat: link parallel controllers to formed casing (ec3d180c)
- feat: render smart interfaces with linked casing (ecb6a680)
- refactor: share linked component appearance (18f6f5d3)
- fix: stage 6 bug fix 1 (04a5e4e8)
- fix: render smart interface dynamically (4a23b057)
- feat: port smart interface UI resources (a2f30027)
- fix: restore client runtime sound state (fc88c5a2)
- test: cover machine loop sound lifecycle (9066d8cd)
- fix: resolve client machine sound lookup (5f8b3093)
- feat: play looping machine sounds (12de0192)
- fix: avoid uninitialized kubejs smart interface events (745ea95f)
- feat: finish smart interface (fc3eee59)
- fix: correct runtime sound synchronization (3e2587f3)
- feat: expose smart interface integrations (090032d3)
- feat: sync machine runtime sound state (9a4a0947)
- feat: add smart interface menu (5cdca68a)
- feat: add smart interface recipe requirements (19a58e41)
- feat: play machine completion sounds (f942586b)
- feat: bind smart interfaces to structures (b24ace7d)
- test: bootstrap smart interface registry (c76f3ac0)
- feat: add smart interface block (7e821bf5)
- feat: expose machine sounds to kubejs (17ca53c3)
- feat: declare smart interface types (feb18847)
- feat: add machine sound declarations (70028463)
- release: stage 5 and feat 3 (2be37586)
- proj: split build.gradle (5a443b89)
- revert: rollback build setup before moddevgradle (8ef1e583)
- release: 3 feats finished, move to main line development (0d3c0832)
- docs: clean (baaa5359)
- docs: (812c1bff)
- proj: move to moddevgradle (7ae13a06)
- proj: some additions (1dcc5749)
- fix: 2 bugs (0022407a)
- 还有俩Bug没修明天再说吧 我这辈子没见过DataComponent这么阴间的东西 (ca350257)
- test fix modification and a lot so on bugs (48659f51)
- fix: rebuild JEI item outputs with explicit component ops (fb2edc07)
- fix: cancel threads when a non-consumable input goes missing (0d3152ff)
- fix: prioritize base lane within same controller in shared IO (cdfc468b)
- test: fix gametest (110d09be)
- fix: shared structrue (0ec25b5a)
- docs: clean (8b9553b5)
- fix: fix a lot of data component bugs (449efc2d)
- merge: integrate dev/neo/26.1.2 into feat/shared-multiblock-io (b38cb96f)
- fix: normalize item bus holders (f19aa200)
- fix: preserve KubeJS item output holders (a944e6ff)
- fix: sync item bus client slots (1df644d3)
- fix: remove repair cost from sharpness input (b6b3abbe)
- fix: use world registry ops for recipe inputs (0d9d7e72)
- fix: match input components with registry codecs (e96c957c)
- docs: design component input matching (56ca337d)
- fix: match array encoded enchantments (7956308a)
- fix: match enchanted component inputs (5f54b0df)
- fix: try fix data item input and output (52ca1963)
- feat: add complex recipe with non-consumed and chance inputs/outputs (6da0fef8)
- fix: JEI data item render (6547dfd5)
- test: drop untestable (76e919bd)
- fix: JEI text render (0f0ddc10)
- test: some keeps (5488dfaf)
- feat: export component predicates to JEI (99a9c103)
- fix: 我已经不知道try fix多少次了兄弟 (07ff776c)
- docs: add JEI component item input plan (420fcd90)
- docs: specify JEI data component item inputs (c5f24a1d)
- test: cover default machine component recipes (236d4a7d)
- perf: optimize data component recipe searches (bc684f20)
- docs: specify default machine component recipe tests (0da73830)
- fix: Controller UI display / multi thread max set to 1 (7c57055a)
- test: fix level UI regressions (41ff4f31)
- fix: Level UI ui: new ui (8a841815)
- docs: plan factory controller level UI (be6128fb)
- docs: specify factory controller level UI (570916ef)
- fix: sync controller machine levels (c6beba6b)
- feat: show machine levels in controller and JEI (770f4cad)
- docs: specify machine level displays (9f191cb7)
- fix: register default levels before recipes (a69fac4a)
- feat: add thermal smelting furnace levels (715fae8e)
- fix: handle empty machine level snapshots (6d0b3920)
- fix: preserve machine levels across reload (8c872aba)
- docs: document machine level kubejs api (5833b7c2)
- feat: expose machine levels to kubejs (24221b3b)
- feat: display machine level requirements in JEI (6b40a795)
- feat: apply machine level recipe effects (a9ed78aa)
- feat: resolve formed machine levels (d30f23fa)
- feat: add machine recipe level requirements (10281cf9)
- feat: add machine level declarations (ba15aa0b)
- docs: plan machine level system migration (8d931751)
- docs: specify machine level system migration (1bddc5bd)
- fix: performance (4382cffb)
- feat: expose KubeJS recipe builder binding (04322ed4)
- fix: guard factory menu failure key (4bb7aa34)
- fix: restore fluid recipe routes after load (2f87df91)
- fix: coordinate shared controller IO (f2cb8cae)
- 碎碎的念 (c3b3a38e)
- fix: preserve paused factory recipes (7a3536cf)
- fix: persist paused recipe routes (243789db)
- test: verify shared energy grants across ticks (1af0666e)
- docs: record shared multiblock IO verification (d92a2438)
- test: cover shared multiblock IO (9e8856be)
- fix: retain paused controller context (4ad8a8a6)
- fix: make shared finish state durable (e632eab7)
- fix: defer KubeJS component output decoding (2431e7e5)
- fix: persist redstone-paused controller recipes (0aee139d)
- fix: preflight shared final tick outputs (870d2774)
- test: cover redstone recipe pause persistence (cd49e8ef)
- fix: prevent duplicate synchronous finish IO (0e4b9de3)
- test: fix test machine structure (650481cb)
- docs: document component item outputs (19f260b2)
- fix: parse KubeJS output components with registry ops (55fc60ee)
- fix: keep unformed controller menu open (e8e14dcd)
- feat: add component KubeJS item outputs (7d242ec7)
- fix: separate synchronous recipe IO (5d35914f)
- test: cover component recipe outputs (e5cd780f)
- fix: commit shared per-tick inputs (e17c502e)
- fix: avoid repeated shared finish IO (f1eea8a4)
- test: add new test machine (260e06d3)
- fix: make shared runtime IO atomic (d0ec9a0c)
- feat: coordinate shared runtime IO (a90015eb)
- fix: guard stale shared start requests (de2133f1)
- Remove final review process report (3f0fc209)
- fix: address shared start review findings (91257b9f)
- fix: exclude unrelated task report (6dfb74f0)
- fix: address component recipe input review (abb6b94c)
- docs: record task 5 result (33db2ba6)
- feat: coordinate shared recipe starts (5b526f3f)
- docs: document component recipe inputs (273275a7)
- feat: show component recipe inputs in JEI (8a444c8c)
- feat: add KubeJS item input options (f25b08f8)
- test: cover stale shared IO callbacks (1d4cdd26)
- fix: validate shared IO structure versions (2a48d544)
- feat: persist recipe input consumption (57e4b8a6)
- test: strengthen shared IO cursor coverage (9992374f)
- docs: add task 2 report (c617cffd)
- docs: record shared IO test result (b100f9a5)
- feat: enrich recipe item inputs (f935a11e)
- test: cover shared IO cursor scheduling (cf2194b4)
- feat: schedule shared multiblock IO fairly (aa14cab4)
- feat: add data component predicates (c0f87495)
- fix: refresh controller resource domain (a87b8471)
- test: cover controller claim formation (09e10434)
- feat: claim multiblock components during formation (f6de162f)
- test: cover shared port appearance persistence (94bf5506)
- feat: support shared IO port appearances (60ff722d)
- fix: reject conflicting exclusive component claims (cf8d8430)
- feat: add structure claim registry (7c3353e9)
- test: fix some (8684e080)
- docs: plan shared multiblock io (a8dbcb96)
- fix: recalculate parallelism on recipe restart (8adef6c0)
- test: fix performance (d7dada34)
- fix: resolve controller item textures dynamically (413b7979)
- fix: isolate cached runtime model definitions (1b9addad)
- fix: keep runtime model definitions immutable (08b0766e)
- fix: cache explicit runtime model definitions (4419fd5a)
- test: cover dynamic item model port definitions (87ef905d)
- refactor: resolve dynamic item models from definitions (2c87da9a)
- refactor: generate runtime resources from model definitions (4c146b93)
- refactor: define runtime block models explicitly (5160b6aa)
- docs: add dynamic model registry design (8bd91dad)
- release: stage 5 多线程和并行 (bff949ec)
- docs: TODO里的碎碎念 (0ae39d5e)
- feat: run declared factory core threads (a54c172f)
- test: update factory lane scheduling expectations (eb1f1d5f)
- fix: render idle factory threads at zero parallelism (ea7b6e90)
- fix: show selected factory thread parallelism (bf28113e)
- fix: make factory parallelism per thread (dbee236c)
- 有本事你再来点Bug我看看 (7e7c1be6)
- test: cover factory thread scheduling (ad7cc4b1)
- feat: reuse factory recipe threads (2b6b58a3)
- feat: cache factory thread recipes (28f3daa0)
- feat: UI scroll block (aed233cf)
- Bug往里修 (1e046353)
- 还有第二关 (0b610232)
- 这扫码并行和多线程Bug怎么这么多 (894574b8)
- fix: use tank texture for fluid hatch ticks (7c70404c)
- feat: add factory controller interface (15540923)
- feat: render MMCE hatch GUI bars (2d6b0a22)
- fix: simplify factory thread capacity label (efd7b063)
- feat: translate factory thread capacity (8199af95)
- feat: show factory thread capacity in controller UI (e6f35ac9)
- docs: specify hatch GUI bar overlay (a54ffc6c)
- feat: sync factory thread capacity to controller menu (0668d73e)
- docs: plan factory controller UI (32b504da)
- fix/feat: new optimization, git ignore (d15089f6)
- docs: specify factory controller UI (9b884a58)
- feat: optimize recipe concurrency handling (8e7fd3f4)
- fix: sync controller parallel display (30b8028b)
- fix: UI and Jade Display (aa5bbb97)
- fix feat test modfications docs (9874f3ca)
- docs: plan mmce parallel factory alignment (682ffad8)
- fix: decouple recipe search from parallel scaling (3050230d)
- feat: render parallel and factory overlays dynamically (5e8e75d8)
- fix: port check and status (c9ce8020)
- fix: controller model and texture render (fcdfddad)
- fix: dymatic texture render fix2 (8823dc0b)
- fix: dymatic texture render (403e77b2)
- test: cover all Task 2 model exclusions (cc05caf6)
- fix: test ModelGen registration output (77c39556)
- docs: record Task 2 follow-up commit (c267c94f)
- fix: complete Task 2 model generation follow-up (26fbd6e5)
- refactor: remove dynamic machine models from datagen (dca35fea)
- fix: close machine registry phase by default (7535465f)
- refactor: freeze machine registrations before registry load (48d0bc34)
- feat: render fix1 (c40f1ddd)
- fix: initialize linked port tracking defensively (2aa7e528)
- fix: register native port capabilities dynamically (6d545fba)
- feat: persist dynamic machine appearance cache (d4b761c2)
- feat: sync formed machine casing to ports (63204554)
- feat: add dynamic machine overlay models (dce316c2)
- feat: add machine appearance sync foundation (29851e0f)
- feat: 我也不知道feat了多少东西 (18a4f477)
- test: route default test machines through structures (173cec4e)
- refactor: split dynamic machine lifecycle (f0c20e96)
- feat: enforce port tier requirements (892d19e2)
- feat: add port tier requirement API (4fe39b61)
- docs: add port tier requirement implementation plan (b519a36d)
- fix: stage fix (6648520c)
- docs(stage5): mark factory lanes complete (b71e8fc3)
- test(stage5): verify factory lane lifecycle safety (94bdb916)
- feat(stage5): run factory recipes in server tick lanes (ca5a7f62)
- feat(stage5): add concrete factory recipe lanes (223c362e)
- fix: avoid duplicate generated normal port resources (ad91d51a)
- fix: extend io variant resource test and revert unrelated zh translation (ba797e23)
- feat: add basic io variant resources (e1df7280)
- test: verify fluid and energy variant ui capacities (8009f4d3)
- feat: split item bus background into safe texture-height blits (d5593c13)
- fix(stage5): wire factory and kubejs parallel opts (163c7b47)
- feat: scale item bus ui by variant size (e5854495)
- fix: tighten io port menu id matching (7fffcd70)
- fix(stage5): show idle factory diagnostics (d55f1b52)
- feat: route all basic io variant menus (f80ba081)
- docs(stage5): finalize parallel factory stage (7af30704)
- fix: bind port block entities in test bootstrap (d4e68582)
- fix(stage5): stop factory lanes on unload (7086da04)
- feat: apply basic io variant capacities (ec5e6bc4)
- feat(stage5): add factory scheduler foundation (7bdd6d05)
- feat(stage5): add parallel controller blocks (575b4b94)
- feat: register all basic io variants (ac2a659d)
- feat(stage5): scale recipe io by parallelism (c24ba09d)
- feat: add basic io size definitions (91d733e3)
- feat(stage5): add parallel recipe model (f18e46de)
- test: fixes (8119a8c7)
- fix: warm launch (2a77389e)
- fix: keep recipe delay warm between runs (1733fda9)
- feat: delay conflict-prone recipe starts (d2b20977)
- fix: recipe logic (fe1b1f87)
- fix: JEI UI display (1e0e10e4)
- test: update JEI translation labels (1733ff46)
- feat: add default machine recipe coverage (f6bf7b5f)
- fix(jei): retain empty overflow entries (cd3a740b)
- fix(jei): skip empty overflow ingredients (b3472183)
- feat: render controllers from synced specs (3c6de5e1)
- feat(jei): separate machine recipe inputs and outputs (de2cb697)
- feat: send controller specs on reload (4b8d6591)
- feat(jei): plan bounded machine recipe grids (29727995)
- feat: sync controller spec snapshots (f1f7b086)
- feat: cache synced controller specs (f0ed0099)
- docs: add JEI recipe layout design (a7665d74)
- fix: restrict controller item reservations to registered items (d607bb1d)
- fix: jei display data compoments (3e405d04)
- test: exercise controller item registration supplier (8f5d6550)
- fix: verify controller item reservations (a8e3a0f9)
- fix: atomically replace dynamic reload snapshots (01d9ea9a)
- feat: expose controller reservations (97abe812)
- feat: reload dynamic mmcr content (544be8f6)
- feat: add atomic dynamic content reload (6e79ee7d)
- feat: layer dynamic machine recipes (89dc9e29)
- feat: replace dynamic runtime machines (c595bd47)
- feat: layer dynamic machine definitions (5ae25dd6)
- docs: plan dynamic controller client (f9f2c5e3)
- docs: add dynamic controller client design (e1efebaf)
- fix(jei): open recipes for current controller (80699035)
- docs: plan dynamic content reload (a9172045)
- feat(jei): register recipes per machine (9af03d97)
- docs: add dynamic reload design (df495831)
- docs: add JEI machine categories design (3fe4e394)
- fix(datagen): generate JEI translations (387067ff)
- release: stage 3 finished (72476186)
- fix: translations (54ed0b0f)
- test: furance (afab52b4)
- fix(jei): remove duplicate input ingredient, switch fluid output background, fix layout overflow (390871ac)
- test: new test machine (c71adc70)
- fix(stage3b): harden replacement boundaries (12221936)
- docs: mark stage 3B complete (9285d8d3)
- test(stage3b): cover rotated position modifiers (386b2103)
- chore: exclude unrelated gtceu reference (79eb0f34)
- chore: restore tracked task report (2aa4d1b5)
- fix(recipe): clarify modifier snapshots (edfd4553)
- Revert "test: new test machine for modifier" (04a4ba1c)
- fix(recipe): refresh active duration after modifier changes (1d2192eb)
- test: new test machine for modifier (2f3c031f)
- fix(recipe): keep active context routes on modifier refresh (6d94b232)
- feat(recipe): apply structure position modifiers at runtime (2e41a94a)
- fix(machine): refresh matched modifiers during formed checks (d06758ed)
- feat(machine): collect matched position modifiers (249faaa1)
- fix(machine): preserve replacement matches after formation (e9199f7c)
- feat(machine): match single block replacements (b13d5161)
- feat(machine): compile position modifier rotations (363a11be)
- feat(machine): expose position modifier replacements (e40a68cd)
- test(modifier): document single block replacement test (a8a82ed4)
- feat(modifier): add single block replacement metadata (a0f47c7a)
- docs(plan): plan stage 3B pattern modifiers (32892a93)
- docs: mark stage 4 jei complete (9a1396f8)
- feat(jei): add machine recipe integration (9ca6fdb5)
- docs(spec): design stage 3B pattern modifiers (6fdddd65)
- docs: add stage 4 jei implementation plan (0c506a3b)
- docs: consolidate docs/ into MAIN.md + MMCE.md (5d1329d8)
- release: stage 3 in (4d0e6c2a)
- fix(recipe): skip impossible zero chance outputs (50f95a00)
- test(recipe): cover modifier output edge cases (e411490c)
- docs(plan): p2 energy requirement output + reactor recipe implementation plan (3a88d588)
- docs(spec): p2 energy requirement output + reactor recipe design (15ba8b8a)
- docs: place p3a status under subsection (5bf964be)
- docs: update p3a modifier roadmap status (fa04b2f0)
- feat(recipe): expose modifiers through recipe authoring (7a2f3809)
- feat(recipe): apply output chance on finish (e67dab1c)
- test(recipe): lock raw modifier serialization (d66b2b01)
- feat(recipe): apply modifiers to runtime requirements (602a5e6b)
- feat(recipe): add machine outputs with chance (f0148dbf)
- feat: show multiblock detector selection visuals (8482576a)
- feat(recipe): expand modifier operations (54d381d0)
- docs: nova commit (45475072)
- fix(recipe): isolate search task failures (e454e56d)
- feat: optimize structure detection cache (54ee3a8a)
- feat(recipe): add throttled search context pooling (ff2788f8)
- release: some fix and some feats (92068d44)
- fix: vertical structure export (6d622481)
- docs: (9cd02239)
- fix: reset non-opt-in vertical controller state (4c22a9c9)
- fix(controller): revalidate cached port requirements (0ef543f7)
- docs: plan vertical controller facing (1436348f)
- feat: gate vertical controller placement (ca559fa2)
- test(controller): cover blast furnace port requirements (ab1cf160)
- feat(controller): validate formation port requirements (269df918)
- feat: add vertical controller opt-in (656d7a7a)
- test: align vertical export fixture with plan (c5abdac9)
- feat: support vertical multiblock export normalization (bab962f8)
- feat(machine): require blast furnace ports (1dd708e6)
- feat(machine): add port requirement spec (f000222d)
- feat: add six-way multiblock transforms (d7acfbe1)
- docs: plan port formation requirements (6428aa33)
- docs: design port formation requirements (150a8dc0)
- release: Fix gametests again (f35bbe31)
- release: fix test and re run failed dev release (3e82e83e)
- release: P2 finished (8115706a)
- test: modify to suit the situation (ee42dad7)
- fix: item input bus extract dis behaviour (c5892af5)
- refactor(recipe): close phase 2 requirement routing gaps (e71b8fcb)
- fix(controller): log formed component counts (29b6f9a4)
- release: P1 finish (6573601e)
- refactor(export): unify multiblock export to BuiltInRegistries lookup (15f36214)
- feat: stage finished (a646f576)
- feat(gui): surface controller aggregate energy/fluid in machine screen (phase 2 task 15) (0d2c87ce)
- feat(controller): aggregate energy/fluid getters for GUI preview (phase 2 task 14) (f6d245d1)
- feat(recipe): requirement tag codec + tag-aware runtime matching (phase 2 task 12) (862ce7ca)
- feat(machine/recipe): add selector tag metadata model (phase 2 task 11) (2dad6067)
- feat(recipe): extend requirement failure trace with searched/matched components (phase 2 task 10) (73ad2996)
- feat(recipe): route fluid/energy requirements by recipe index (phase 2 task 8-9) (fe7c6d37)
- feat: stages (5bc15dcd)
- fix(recipe): normalize legacy output stacks (8a37e517)
- feat: stage commit (4fe55a50)
- feat: add multiblock detector export tool (69d677ff)
- docs(spec): design multiblock detector export tool (dba071a1)
- fix(recipe): preflight routed io commits (f35e8562)
- fix(recipe): make routed io simulation cumulative (6f690048)
- test(recipe): cover routed context io and finalize phase1 checks (693e05d6)
- feat: add machine requirement routing core (66a881be)
- feat(gui): wire controller failure / redstone pause / 0.72x scale per §11 (daec7cb8)
- feat(recipe): wire RecipeFailureActions through Machine / context / active recipe (caa92c78)
- feat(recipe): add fluid outputs to MachineRecipe and route through context (12da587a)
- refactor(recipe): route RecipeCraftingContext IO via cached getComponents() routes (5af8488c)
- docs(spec): fold controller GUI increments into phase 1 finish / phase 2 designs (99b21b30)
- docs(spec): phase 1 finish + phase 2 requirement/component designs (9ac18ed0)
- chore(log): drop noisy recipe detection / simulate / scan diagnostics (7fbd7f84)
- feat: UI display / modify recipes and structures (af84f85e)
- feat: controller tick and recipe process (0e2b5a6c)
- feat: stage (f3a19795)
- docs(spec): component requirements and interface tier design (d68a0c16)
- feat(debug): wrench shift+right-click also injects into energy output hatch (01c94309)
- feat(debug): wrench shift+right-click injects 1k FE into energy input hatch (creative) (ab30b136)
- feat(debug): wrench right-click prints IOPort storage to chat (43538710)
- feat(item): add debug WrenchItem with datagen model and translations (6cedc996)
- docs(plan): debug wrench (WrenchItem + WrenchDebugHandler) (845b040c)
- docs(spec): debug wrench (right-click IO port to print storage to chat) (41df1a78)
- docs(plan): refine RecipeCraftingContext code (drop machineRecipe indirection, clean loadAdditional rewrite) (5c32ec0f)
- docs(plan): controller runtime MMCE-faithful port plan (per-tick energy, fluid output, failure actions) (16dcf228)
- docs(spec): refine MMCE-faithful controller runtime spec (ioTick timing, fluidOutput typo, inline commit) (9d03f63e)
- docs(spec): MMCE-faithful controller runtime port (per-tick energy, fluid output, failure actions) (3916e085)
- feat(controller): persist ActiveMachineRecipe across chunk reload via ValueOutput (65b4c214)
- refactor(controller): delegate recipe execution to ActiveMachineRecipe and RecipeCraftingContext (e56b8ace)
- feat(recipe): add ActiveMachineRecipe.tick with TickStatus (f86c1f0a)
- feat(recipe): add RecipeCraftingContext for staged simulate/commit (9acbe4f2)
- docs(plan): controller crafting tick refactor plan (06145c2e)
- docs(spec): refine controller crafting tick design (1e0f997f)
- docs: design controller crafting tick (6663336a)
- style: use distinct vanilla-style textures for debug source blocks (ad4c8920)
- feat: add debug infinite source blocks for energy, water, lava (c5698e7b)
- feat: recipes system / UI modifications / project modifications (4d7f0ae6)
- feat(recipe): port core recipe runtime + modifier system (5635d560)
- release: stage release triager (dd46349d)
- feat: texture overlay render / UI modifications / capabilities (675952c6)
- feat: UI (69e627e3)
- release: stage release (7dabe375)
- feat: port new (15787d54)
- refactor: structure feat (6b6968d6)
- fix(asset): composite MMCE overlays onto casing texture for IO ports (13e95bf5)
- feat(datagen,asset): extract MMCRTranslations + copy 4 distinct textures for IO ports/controller (fdce9aec)
- refactor(block): delete ItemBusBlock/FluidHatchBlock/EnergyHatchBlock + BE ioType overrides (07c75856)
- refactor: switch MMCR.java to new registries; delete legacy datagen + MMCRRegistries (21729316)
- refactor(registry): add 4 new registry files + migrate all consumers from MMCRRegistries (d50ea2d7)
- project: do not submit gen datas (47ef50e1)
- feat(registry,tile): add MMCRPortKinds + extend IO port BEs from IOPortBlockEntity (6c1e7b50)
- docs(plan): correct API name BlockEntityFactory → BlockEntitySupplier per MC 26.1.2 (3ba86a77)
- feat(block,tile): unify IO port into IOPortBlock and abstract IOPortBlockEntity (66860b5b)
- feat(port): add IOPortKind interface as extension point for IO port types (0f6d344e)
- docs(plan): resolve pre-flight finding — inline CREATIVE_TABS in MMCR.java per R5, fix commit command (2d00ae1d)
- docs(plan): add implementation plan for registry/datagen/lang refactor (ad307996)
- docs(spec): add MMCR refactor design — registry split, IOPortKind interface, lang decoupling (1ef95e9d)
- release: base structure (b8341c3d)
- ci: replace mod version line in workflows (da919353)
- refactor: move KubeJS integration under compat package (12211f31)
- fix: recheck inputs before completion and honor item resource extraction (3e5953ae)
- fix: wire controller defaults, datapack recipes, safe outputs, and KubeJS demo (c1e0c065)
- feat: final E2E verification examples (c3d3450b)
- feat: MachineRecipeBuilderJS (96d537e4)
- feat: MachineBuilderJS .pattern() grid-string (103c8ae5)
- fix: register KubeJS JSON recipe component (d1f5216a)
- feat: KubeJS programmatic RecipeSchema + factory (56cff9d2)
- fix: add KubeJS Maven repository (5f18067c)
- feat: KubeJS plugin scaffolding (optional binding) (ffdec374)
- fix: register 5 item models in MMCRItemModelProvider (4d241799)
- feat: add resource datagen and sample recipe (b47e040c)
- feat: /mmcr reload command (5bef01f4)
- fix: ensure machine state broadcast on unformed transitions (87238b03)
- feat: PktMachineStatePayload + broadcast (c390e090)
- fix: E2E structure layout, fluid amount gate, energy accounting (e5b80d7f)
- feat: Controller recipe search + tick execution + E2E GameTest (97be60aa)
- feat: MachineControllerBlockEntity.serverTick() + structure check (be13920d)
- feat: MachineControllerBlock + BlockEntity shell (ca736555)
- feat: MachineCasingBlock (81b181f9)
- feat: EnergyHatchBlock + BlockEntity + EnergyStorage capability (a4ef84a9)
- feat: FluidHatchBlock + BlockEntity + FluidHandler capability (3034d588)
- feat: ItemBusBlock + ItemBusBlockEntity + ItemHandler capability (a653793b)
- feat: MachineRecipe record + MapCodec + Serializer + RecipeRegistry (22d582df)
- feat: Machine sealed interface + DynamicMachine + MachineRegistry (7c4691e0)
- feat: MachineIngredient sealed interface with discriminator Codec (5949c878)
- fix: correct StructureMatcher east west rotation (5f33166c)
- ci: add release workflows (7084bed7)
- feat: StructureMatcher.matches() with 4-way facing rotation (82149e8b)
- fix: some modifiesz (6aee406e)
- feat: BlockArray record + extent calculation (067711cb)
- fix: restore empty repositories block (01092d58)
- fix: limit Task 3 build.gradle changes to test setup (6f09e70f)
- feat: BlockPredicate sealed interface (ca46eee0)
- feat: MMCRConfig with ModConfigSpec (878ce2d2)
- feat: MMCR mod entry scaffolding + DeferredRegister sets (a3081440)
- docs(plan): Task 18 use datagen for all generatable resources (blockstate/model/item/lang); manual only 1 texture + 1 recipe (16085fd0)
- docs(plan): Task 18 explicitly reuse MMCE casing texture + lang; minimal new JSON (02b1504c)
- docs: MMCR MVP implementation plan (23 tasks, TDD, ~80 steps) (f5e60386)
- docs(kubejs-integration): remove stale JSON mention in plugin skeleton + migration note (83b0b075)
- docs(v1.2): Mixin allowed on-demand; restore KubeJS JSON recipes; add testing strategy (aa203197)
- docs(v1.1): remove all JSON recipe/machine definitions; KubeJS schema via programmatic RecipeSchema only (f619667c)
- docs: MMCR MVP design (scope / api-mapping / kubejs-integration / architecture / spec) (6599be34)
- init: workflow modify (0d7ba361)
- Add GNU General Public License v3 (014db6a9)
- init: License (b2bac879)
- init: modify version files (c06bed4c)
- Initial commit (ab0e1d29)
Optional dependencies
Any compatible version
Any compatible version
Any compatible version
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:bUctkb7B:prFj1Mzz"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:bUctkb7B:prFj1Mzz"
}

