File Details
tfmg-1.2.3-arcadia-fix
- R
- Jul 5, 2026
- 4.82 MB
- 7
- 1.21.1
- NeoForge
File Name
tfmg-1.2.3-arcadia-fix.jar
Supported Versions
- 1.21.1
Curse Maven Snippet
## [1.2.3] - 2026-07-05
### Added
- **Hydrogen is now part of the game** — It was registered but had no source and no use. Produce it by **electrolysing water** in a chemical vat (2 electrode holders, any vat tier), then burn it in the **firebox** or in gas engines as the fastest, cleanest and weakest engine fuel (speed 1.4 / efficiency 0.5 / stress 0.6). The mod authors had left a commented-out hydrogen fuel type — it is now finished.
- **Butane and Propane are now obtainable** — Both existed only as creative buckets: nothing produced them, so the existing "butane + propane → LPG" pressure recipe was dead content. A **freezer vat recipe now separates LPG (1000 mB) into butane (500 mB) + propane (500 mB)**, making the loop functional in both directions. As engine fuels they specialize LPG (1.2/0.7/0.7): **butane** trades efficiency for speed (1.3/0.6/0.6), **propane** trades speed for efficiency (1.1/0.9/0.8).
- **Gas engine cylinders by spout-filling** — Fill a plain engine cylinder with 250 mB of hydrogen, butane or propane on a Create spout to get the matching pre-configured cylinder (JEI-visible); the three variants also appear in the creative tab next to the LPG one.
- **TFMG tools are enchantable** — Steel/aluminum/lead tools now carry the vanilla `minecraft:enchantable/*`, `pickaxes`, `axes`, `swords`, `hoes`, `shovels` item tags (they were missing from the shipped data).
### Changed
- **NeoForge minimum raised to 21.1.219** — Create 6.0.10 requires it; the project still targeted 21.1.213, which broke datagen and any launch on older NeoForge builds.
### Fixed
- **Electric bridge rings no longer crash the server** (QA r4) — Wiring electric switches/diodes/transformers in a feedback ring made `getPowerUsage` recurse across networks until `StackOverflowError`; with a creative generator powering the ring the server crashed again on every world load. A re-entrancy guard now makes a feedback loop contribute 0 W instead of recursing.
- **Coke Oven partial bottom layers no longer tear the structure** (QA r4) — A partial extra layer placed under the middle of the wall created a rogue corner whose small scan stole a chunk of the intact oven (the anchor search never looked forward). The anchor search now covers a fixed reach in every plane direction and the over-size path heals the whole connected component: square members rejoin the anchor, everything else becomes standalone.
- **Hellfire works for mob wielders and explains itself** (QA r4) — `Item#hurtEnemy` only fires for player attacks, so a zombie holding the lit lithium blade never applied Hellfire; a damage-event hook now mirrors the blade's behaviour for non-player attackers. The effect also has a description lang entry (`effect.tfmg.hellfire.description`) for JEI/effect-description mods.
- **Vat machines are always listed as attachments** (QA r3) — Freezers and compressors reported an empty operation id while unpowered/stopped, so the vat's scan skipped them entirely: they never appeared in the goggle attachments and freeze/pressure recipes (LPG separation) could not match. Identity is now constant (`canOperate` alone gates operation), the stored id refreshes when a compressor flips direction, and the LPG separation recipe accepts all vat tiers like the other freezer recipes.
- **Converter is observable and honest** (QA r3) — FE transfer and the recharge cooldown ran on the client too, drifting the displayed FE amount away from reality (which made working converters look dead); the cooldown timer is now synced/persisted, all FE logic is server-side, and the multimeter shows the wrench-toggled mode (TFMG→FE / FE→TFMG) plus the depletion cooldown.
- **Transformer explains itself** (QA r3) — Creative/JEI electromagnetic coils had no turns component, silently forcing the ratio to 0 (dead transformer with zero feedback). Coils now default to 100 turns and the multimeter says "Needs two coils with at least 50 turns each" when the ratio is 0.
- **Pumpjack reversed-rotation exploit** (QA r3) — The crank speed cap only bounded positive speeds; feeding the pumpjack reversed rotation spun it unbounded and pumped faster than intended. The cap now bounds the magnitude in both directions.
- **Coke Oven no longer shifts when over-built** — Adding a 7th layer below or in front of a full oven let the freshly placed corner steal controllership and re-form the square shifted by one block, orphaning the far row. The formation scan now detects that the wall continues past the largest formable square, keeps the structure **anchored on its existing controller**, and leaves the extra layer as standalone oven blocks. The detach pass also covers both the previous and the new footprint, so shrinking a structure resets every former member.
- **Machines survive chunk unload/reload** — The #1 reported bug. Nothing electrical was ever saved: large switches reopened (closed/angle now persisted), electric switches lost their signal, engines lost rpm/torque and stayed dead until a redstone change (now persisted + signal re-derived on load), vats lost recipe progress/heat/pressure, blast stoves and coke ovens lost their timers/size, accumulators forgot their chain controller, and pumpjack/blast-furnace/engine-controller/piping-upgrade cached block-entity references went stale after reload (all now validated with `isRemoved()`).
- **Electrical networks no longer thrash chunks** — Network lookups force-loaded unloaded chunks (permanent load/unload flip-flop at chunk borders) and deleted the whole network when its key block was in an unloaded chunk, rebuilding it one member at a time. Lookups are now chunk-safe and networks survive partial loading, re-keying to a loaded member when their owner block is really gone.
- **Client/server desyncs eliminated** — Vats, coke ovens, casting basins, fireboxes, blast-furnace hatches, flamethrowers, fire extinguishers, screwdrivers and cannons ran server logic on the client too (ghost items/fluids, double sounds, diverging fuel counts, client-side block destruction on overload). All destructive/recipe paths are now server-authoritative; the coke oven no longer visually breaks after a reload because the client re-scanned it from a half-loaded chunk.
- **Server crashes fixed** — Lit lithium blade crashed the server when a mob held it; unknown saved engine upgrades corrupted chunk loading; `EntityType.create` results and the TFMG pump's scheduled tick were not null-checked; distillation `canSurvive` blind-cast worldgen level readers.
- **Multiplayer hardening** — Disconnecting while driving an engine controller locked the player out of every controller forever (cleanup ran client-side only); engine-controller packets accepted any position from any client (now range- and load-validated).
- **Pumpjack actually pumps** — The server crank angle came from an identity hashCode (constant per session), so the pump rate was random per server run and could be ~0. The angle now advances per tick and persists.
- **Vat fluid no longer deleted on deform** — Breaking a vat block voided everything above one segment's capacity; the overflow is now redistributed to the surviving blocks.
- **Distillation recipe cache repaired** — `matches` compared the output count against the ingredient count (always 1), forcing a full recipe rescan plus a sync packet every tick on every heated tower.
- **Quad Potato Cannon spread** — Operator-precedence bug made all 4 potatoes fly the same vector; ammo is also no longer consumed on aborted shots (advanced cannon) and stacked buckets survive concrete interactions.
- **Traffic light runs on the server** — The whole phase machine was client-local (desynced between players, reset on relog); the server now drives it and syncs phase changes only.
- **Oil deposits stay in bounds** — Worldgen wandered up to ~120 blocks outside the writable region (dropped blocks); the mixin that silenced the vanilla far-chunk warning game-wide is removed.
- **Packets moved to the `tfmg:` namespace** — They were registered under `create:`, risking collisions with future Create versions.
- **Flywheel declared as required dependency** — A dedicated server without the Flywheel jar crashed at mod construction.
- **Stale datagen resources purged** — Hand-authored files (compressor/freezer recipes, Chinese translation) moved out of `src/generated` where any datagen run deleted them; the two conflicting `zh_cn.json` files merged into one (1298 keys); leftover stale copies of the fixed vat recipes removed from the jar.
- **Vat pressure & freeze recipes now trigger** — Compressors and freezers declared `PositionRequirement.TOP`, yet the vat only read their pressure/heat contribution from the layer directly **below** it, so a machine placed where it actually affected the vat was never counted toward the recipe's machine list. Both now use `PositionRequirement.ANY` and the vat derives pressure/heat from the position-validated machine set, so LPG, Liquid Air and Cooling Fluid finally run whether the machine is placed under or on top of the vat.
- **Freeze recipes no longer permanently blocked** — The recipe heat gate (`heatLevel < recipe.heatLevel`) rejected any vat colder than 0, which every freeze recipe is by definition. A minimum-heat check is now only enforced when a recipe actually requires heat (`recipe.heatLevel > 0`), so Cooling Fluid completes.
- **Vat machines matched by containment, not exact count** — A recipe listing one compressor no longer refuses to run because the player filled every slot under a 3×3 vat with compressors. The vat must now hold *at least* the machines a recipe requires; extras are ignored, matching the pressure/heat "threshold" design.
- **Industrial Blast Furnace consumes Hot Air for Silicon** — The Silicon recipe shipped with no `hot_air_usage`, so it defaulted to 0 and drained nothing (and needed no hatch). It now consumes 20 mB/tick of Hot Air like the steel recipes.
- **Converter now outputs FE and TFMG power both ways** — TFMG→FE: the converter only *exposed* an energy capability, so passive consumers (energy cubes in input mode) received nothing and only a puller cable worked; it now actively pushes stored FE into adjacent consumers on every non-TFMG face. FE→TFMG: incoming FE never re-triggered the electrical network, leaving the blue-side cable at 0 V; the energy tank now schedules a network update on change, publishing the converted voltage.
- **Chemical Vats place a full layer at once** — All three vats reused the steel-tank item whose bulk-placement routine only understood steel tanks and silently no-opped for a vat. It now branches on the vat's own API, so a 2×2 / 3×3 layer places in a single click like a tank.
- **Traffic Light cycle corrected** — Sequence was Red → Orange → Green → Orange → Red. It now runs Red → Orange → Green → Red (the green phase holds until the cycle resets instead of showing a second orange).
- **Metal doors sound metallic when broken** — The four metal doors (Heavy Casing, Steel, Aluminum, Heavy Plated) forced Create's glass block-set type, so they shattered like glass. They now use the vanilla copper block-set type, giving the same metallic break sound as a TFMG metal tank.
- **Blast Stove 3×3 faces are no longer invisible** — The connected-texture atlases had fully transparent "both-sides-connected" (center-of-face) tiles, so the middle block of each face of a 3×3 stove rendered as a hole. The transparent tiles are refilled from the base texture.
### Performance
- **Cable networks** — One graph walk with a visited set instead of O(k²) walks and packets per connector; network current computed once per update instead of per cable; allocation-free membership checks.
- **Idle machines stop spamming** — Machine-less vats no longer rescan + sync every 10 ticks forever; large engines send one packet on change instead of 20/s; coke ovens cache their recipe; pumpjack scans throttled; duplicated redstone scans and loop-checks removed.
- **Dead code removed** — Unused mixins (`UtilMixin`, `TFMGMixinPlugin`, two recipe accessors), the never-fired generator tick branch, lithium block random ticking, dead NBT keys, duplicate `ControllerPos` writes; client-only mixins are now declared in the client array with `compatibilityLevel` JAVA_21; 6033 tracked build artifacts (`bin/`) untracked from git.
### Known issues
- **Aluminum / LPG require the right vat tier** — Aluminum (electrolysis) and LPG (pressure) are intentionally restricted to **Steel** and **Firebrick-lined** vats, not Cast Iron. Using a Cast Iron vat is why they appeared broken; the mechanics themselves are correct.
### Ajouts
- **L'hydrogène fait enfin partie du jeu** — Il était enregistré mais sans source ni usage. Produisez-le par **électrolyse de l'eau** en cuve chimique (2 porte-électrodes, tout palier de cuve), puis brûlez-le dans le **firebox** ou dans les moteurs à gaz comme le carburant le plus rapide, le plus propre et le plus faible (vitesse 1.4 / efficacité 0.5 / stress 0.6). Les auteurs du mod avaient laissé un type de carburant hydrogène en commentaire — il est désormais terminé.
- **Le butane et le propane sont désormais obtenables** — Ils n'existaient qu'en seaux créatifs : rien ne les produisait, la recette « butane + propane → LPG » était du contenu mort. Une **recette de congélateur sépare le LPG (1000 mB) en butane (500 mB) + propane (500 mB)**, rendant la boucle fonctionnelle dans les deux sens. Comme carburants moteurs ils spécialisent le LPG (1.2/0.7/0.7) : le **butane** échange l'efficacité contre la vitesse (1.3/0.6/0.6), le **propane** la vitesse contre l'efficacité (1.1/0.9/0.8).
- **Cylindres à gaz par remplissage au bec verseur** — Remplissez un cylindre de moteur avec 250 mB d'hydrogène, de butane ou de propane sur un bec Create pour obtenir le cylindre préconfiguré correspondant (visible dans JEI) ; les trois variantes apparaissent aussi dans l'onglet créatif à côté de celle au LPG.
- **Les outils TFMG sont enchantables** — Les outils en acier/aluminium/plomb portent désormais les tags d'items vanilla `minecraft:enchantable/*`, `pickaxes`, `axes`, `swords`, `hoes`, `shovels` (absents des données livrées).
### Modifications
- **Minimum NeoForge relevé à 21.1.219** — Create 6.0.10 l'exige ; le projet ciblait encore 21.1.213, ce qui cassait le datagen et tout lancement sur un NeoForge plus ancien.
### Correctifs
- **Les anneaux de ponts électriques ne crashent plus le serveur** (QA r4) — Câbler interrupteurs/diodes/transformateurs en boucle de rétroaction faisait récurser `getPowerUsage` entre réseaux jusqu'au `StackOverflowError` ; avec un générateur créatif alimentant la boucle, le serveur re-crashait à chaque chargement du monde. Un garde de réentrance fait qu'une boucle de rétroaction rapporte 0 W au lieu de récurser.
- **Les couches inférieures partielles ne déchirent plus le Four à Coke** (QA r4) — Une couche partielle posée sous le milieu du mur créait un coin parasite dont le petit scan volait un morceau du four intact (la recherche d'ancre ne regardait jamais vers l'avant). La recherche couvre désormais une portée fixe dans toutes les directions du plan et le chemin de sur-dimensionnement guérit tout le composant connexe : les membres du carré rejoignent l'ancre, le reste redevient indépendant.
- **Hellfire fonctionne pour les mobs et s'explique** (QA r4) — `Item#hurtEnemy` ne se déclenche que pour les attaques de joueurs : un zombie tenant la lame de lithium allumée n'appliquait jamais Hellfire ; un hook d'événement de dégâts reproduit le comportement de la lame pour les attaquants non-joueurs. L'effet a aussi une description (`effect.tfmg.hellfire.description`) pour JEI et les mods de description d'effets.
- **Les machines de cuve sont toujours listées dans les attachements** (QA r3) — Congélateurs et compresseurs renvoyaient un id d'opération vide quand ils étaient sous-alimentés/arrêtés : le scan de la cuve les ignorait totalement, ils n'apparaissaient jamais dans les attachements et les recettes de gel/pression (séparation LPG) ne pouvaient pas correspondre. L'identité est désormais constante (`canOperate` seul gère l'état de marche), l'id stocké se rafraîchit quand un compresseur change de sens, et la séparation LPG accepte tous les paliers de cuve comme les autres recettes de congélation.
- **Le convertisseur est observable et honnête** (QA r3) — Le transfert FE et le cooldown tournaient aussi côté client, faisant dériver la jauge affichée (un convertisseur fonctionnel semblait mort) ; le timer est synchronisé/persisté, toute la logique FE est côté serveur, et le multimètre affiche le mode basculé à la clé (TFMG→FE / FE→TFMG) plus le cooldown d'épuisement.
- **Le transformateur s'explique** (QA r3) — Les bobines électromagnétiques créatives/JEI n'avaient aucun composant de tours, forçant silencieusement le ratio à 0 (transformateur mort sans retour). Les bobines ont désormais 100 tours par défaut et le multimètre indique qu'il faut deux bobines d'au moins 50 tours quand le ratio est 0.
- **Exploit de rotation inversée du pumpjack** (QA r3) — Le cap de vitesse de la manivelle ne bornait que les vitesses positives ; alimenter le pumpjack en rotation inverse le faisait tourner sans limite et pomper plus vite que prévu. Le cap borne désormais la magnitude dans les deux sens.
- **Le Four à Coke ne se décale plus quand on le sur-construit** — Ajouter une 7e couche en dessous ou devant un four complet laissait le coin fraîchement posé voler le contrôle et re-former le carré décalé d'un bloc, orphelinant la rangée du fond. Le scan de formation détecte désormais que le mur continue au-delà du plus grand carré formable, garde la structure **ancrée sur son contrôleur existant**, et laisse la couche excédentaire en blocs indépendants. La passe de détachement couvre aussi l'ancienne ET la nouvelle emprise, donc rétrécir une structure réinitialise chaque ancien membre.
- **Les machines survivent au déchargement de chunk** — Le bug n°1 signalé. Rien d'électrique n'était sauvegardé : les gros interrupteurs se rouvraient (closed/angle désormais persistés), les interrupteurs électriques perdaient leur signal, les moteurs perdaient rpm/couple et restaient morts jusqu'à un changement de redstone (persistés + signal re-dérivé au chargement), les cuves perdaient progrès/chaleur/pression, blast stoves et fours à coke perdaient timer/taille, les accumulateurs oubliaient leur contrôleur de chaîne, et les références de block entities en cache (pumpjack, haut fourneau, contrôleur de moteur, upgrade de tuyauterie) devenaient obsolètes après rechargement (toutes validées via `isRemoved()`).
- **Les réseaux électriques ne martyrisent plus les chunks** — Les recherches de réseau forçaient le chargement de chunks déchargés (va-et-vient permanent aux frontières) et supprimaient le réseau entier quand son bloc-clé était déchargé, le reconstruisant membre par membre. Les recherches sont désormais sûres et les réseaux survivent au chargement partiel.
- **Désynchronisations client/serveur éliminées** — Cuves, fours à coke, bassins de coulée, fireboxes, trappes de haut fourneau, lance-flammes, extincteurs, tournevis et canons exécutaient la logique serveur aussi côté client (items/fluides fantômes, sons doublés, compteurs de carburant divergents, destruction de blocs côté client en surcharge). Tous les chemins destructifs/recettes sont désormais autoritatifs côté serveur ; le four à coke ne « casse » plus visuellement après rechargement.
- **Crashs serveur corrigés** — La lame de lithium allumée crashait le serveur tenue par un mob ; un upgrade de moteur inconnu corrompait le chargement de chunk ; `EntityType.create` et le tick programmé de la pompe TFMG sans null-check ; `canSurvive` de la distillation castait aveuglément.
- **Durcissement multijoueur** — Se déconnecter en conduisant bannissait le joueur de tous les contrôleurs de moteur pour toujours (nettoyage côté client uniquement) ; les paquets du contrôleur acceptaient n'importe quelle position de n'importe quel client (désormais validés portée + chargement).
- **Le pumpjack pompe vraiment** — L'angle serveur venait d'un hashCode d'identité (constant par session) : débit aléatoire par serveur, parfois ~0. L'angle avance désormais par tick et persiste.
- **Le fluide des cuves n'est plus supprimé à la déformation** — Casser un bloc de cuve videait tout au-delà de la capacité d'un segment ; le surplus est désormais redistribué aux blocs survivants.
- **Cache de recette de distillation réparé** — `matches` comparait le nombre de sorties au nombre d'ingrédients (toujours 1) : re-scan complet + paquet de sync à chaque tick sur toute tour chauffée.
- **Dispersion du Quad Potato Cannon** — Bug de précédence d'opérateurs : les 4 patates partaient sur le même vecteur ; les munitions ne sont plus consommées sur les tirs annulés (canon avancé) et les piles de seaux survivent aux interactions béton.
- **Le feu de circulation tourne côté serveur** — Toute la machine à états était locale au client (désynchronisée entre joueurs, reset au relog) ; le serveur la pilote désormais et ne synchronise qu'aux changements de phase.
- **Les dépôts de pétrole restent dans les limites** — Le worldgen s'éloignait jusqu'à ~120 blocs hors de la zone inscriptible (blocs perdus) ; le mixin qui masquait l'avertissement vanilla pour tout le jeu est supprimé.
- **Paquets déplacés vers le namespace `tfmg:`** — Ils étaient enregistrés sous `create:`, risque de collision avec les futures versions de Create.
- **Flywheel déclaré en dépendance requise** — Un serveur dédié sans le jar Flywheel crashait au démarrage.
- **Ressources datagen périmées purgées** — Les fichiers écrits à la main (recettes compresseur/congélateur, traduction chinoise) sont déplacés hors de `src/generated` où tout datagen les effaçait ; les deux `zh_cn.json` concurrents fusionnés en un seul (1298 clés) ; les copies périmées des recettes de cuve corrigées retirées du jar.
- **Les recettes de pression et de gel de la cuve se lancent enfin** — Les compresseurs et congélateurs déclaraient `PositionRequirement.TOP`, alors que la cuve ne lisait leur pression/chaleur que dans la couche **en dessous** d'elle : une machine placée là où elle agissait réellement n'était jamais comptée dans la liste de machines de la recette. Les deux utilisent désormais `PositionRequirement.ANY` et la cuve calcule pression/chaleur depuis l'ensemble de machines validé par position, donc le LPG, l'Air Liquide et le Fluide de Refroidissement fonctionnent que la machine soit sous ou sur la cuve.
- **Les recettes de gel ne sont plus bloquées en permanence** — Le contrôle de chaleur (`heatLevel < recipe.heatLevel`) rejetait toute cuve plus froide que 0, ce que toute recette de gel est par définition. Un minimum de chaleur n'est désormais exigé que si la recette requiert vraiment de la chaleur (`recipe.heatLevel > 0`), donc le Fluide de Refroidissement se termine.
- **Machines de cuve comparées par inclusion, pas par nombre exact** — Une recette listant un compresseur ne refuse plus de tourner parce que le joueur a rempli de compresseurs tous les emplacements sous une cuve 3×3. La cuve doit désormais contenir *au moins* les machines requises ; les surplus sont ignorés, conformément à la logique de « seuil » de pression/chaleur.
- **Le Haut Fourneau Industriel consomme de l'Air Chaud pour le Silicium** — La recette de Silicium était livrée sans `hot_air_usage`, donc par défaut 0 et ne drainait rien (ni ne nécessitait de trappe). Elle consomme désormais 20 mB/tick d'Air Chaud comme les recettes d'acier.
- **Le Convertisseur restitue l'énergie FE et TFMG dans les deux sens** — TFMG→FE : le convertisseur ne faisait qu'*exposer* une capacité d'énergie, donc les consommateurs passifs (energy cubes en mode entrée) ne recevaient rien et seul un câble en aspiration fonctionnait ; il pousse désormais activement le FE stocké vers les consommateurs adjacents sur chaque face non-TFMG. FE→TFMG : le FE entrant ne relançait jamais le réseau électrique, laissant le câble côté bleu à 0 V ; le réservoir programme désormais une mise à jour du réseau à chaque changement, publiant la tension convertie.
- **Les Cuves Chimiques se posent par couche entière** — Les trois cuves réutilisaient l'objet du réservoir en acier, dont la pose groupée ne comprenait que les réservoirs en acier et ne faisait rien pour une cuve. Elle s'appuie désormais sur l'API propre de la cuve, donc une couche 2×2 / 3×3 se pose en un clic comme un réservoir.
- **Cycle du Feu de Circulation corrigé** — La séquence était Rouge → Orange → Vert → Orange → Rouge. Elle est désormais Rouge → Orange → Vert → Rouge (le vert est maintenu jusqu'au reset du cycle au lieu d'un second orange).
- **Les portes métalliques sonnent métallique quand on les casse** — Les quatre portes métalliques (Blindage Lourd, Acier, Aluminium, Plaqué Lourd) forçaient le type de bloc « verre » de Create et se brisaient donc comme du verre. Elles utilisent désormais le type de bloc « cuivre » vanilla, donnant le même son métallique qu'un réservoir métallique TFMG.
- **Les faces du Blast Stove 3×3 ne sont plus invisibles** — Les atlas de texture connectée avaient des tuiles « connecté des deux côtés » (centre de face) totalement transparentes, donc le bloc central de chaque face d'un four 3×3 apparaissait comme un trou. Les tuiles transparentes sont recomblées depuis la texture de base.
### Performance
- **Réseaux de câbles** — Une seule marche de graphe avec ensemble de visités au lieu de O(k²) marches et paquets par connecteur ; courant réseau calculé une fois par mise à jour ; vérifications d'appartenance sans allocation.
- **Les machines inactives arrêtent de spammer** — Les cuves sans machines ne re-scannent plus toutes les 10 ticks pour toujours ; les gros moteurs envoient un paquet au changement au lieu de 20/s ; les fours à coke mettent leur recette en cache ; scans du pumpjack throttlés ; scans redstone et checks de boucle dupliqués supprimés.
- **Code mort supprimé** — Mixins inutilisés (`UtilMixin`, `TFMGMixinPlugin`, deux accesseurs de recettes), branche de tick du générateur jamais atteinte, random tick du bloc de lithium, clés NBT mortes, double écriture `ControllerPos` ; les mixins client sont déclarés dans le tableau client avec `compatibilityLevel` JAVA_21 ; 6033 artefacts de build (`bin/`) désindexés de git.
### Problèmes connus
- **Aluminium / LPG nécessitent le bon palier de cuve** — L'Aluminium (électrolyse) et le LPG (pression) sont volontairement réservés aux cuves en **Acier** et **Briques Réfractaires**, pas en Fonte. Utiliser une cuve en Fonte explique pourquoi ils semblaient cassés ; les mécaniques elles-mêmes sont correctes.