Repository navigation
Codex Processing Materials
QNet has no fixed list of metals. It reads the materials of your modpack from the common c: item tags and makes its recipes for every one of them: the tin, nickel, silver or lead of whatever mods you play with. This page explains how materials are found, which item a machine makes, where recipes come from and how QNet keeps recipes from creating material out of nothing.
An item in the tag c:<form>/<material> is that form of that material, for example c:ingots/tin, c:dusts/tin or c:ores/tin. Every form has a size in material units (MU):
| Form | Tag | MU |
|---|---|---|
| Ore | c:ores/<m> |
180 |
| Raw metal | c:raw_materials/<m> |
90 |
| Raw block | c:storage_blocks/raw_<m> |
810 |
| Storage block | c:storage_blocks/<m> |
810 |
| Ingot | c:ingots/<m> |
90 |
| Nugget | c:nuggets/<m> |
10 |
| Dust | c:dusts/<m> |
90 |
| Plate | c:plates/<m> |
90 |
| Rod | c:rods/<m> |
45 |
| Gear | c:gears/<m> |
360 |
| Wire | c:wires/<m> |
45 |
| Gem | c:gems/<m> |
90 |
Ore, raw metal and raw blocks are source forms: they come out of the world. Processing them may give more than they are worth (an ore counts as two dusts), but no recipe may make them.
-
Old tags: while
works.legacyMaterialTags(default true) is on, old-style tags such asc:iron_ingotsorc:tin_dustsfill a form that the modern tag leaves empty. They never override a modern tag. - Ambiguous items: an item that is tagged as two materials, or as two forms of one material, is left out of every derived recipe and reported. A wrong tag in one mod can therefore never make nonsense recipes.
A data pack or a mod can describe a material in data/<namespace>/qnet/material/<name>.json. A file only adds to the tags:
-
forms: extra items or tags per form, for items a mod does not tag; -
preferred: the item a machine should make for a form; -
units: other MU for a form; -
byproduct: an item or tag and its chance, for processing the ore; -
melting_pointandcolor: for the Foundry.
QNet brings files for seventeen materials: brass, bronze, conductive alloy, constantan, copper, electrum, gold, invar, iron, lead, netherite, nickel, precision alloy, silver, steel, tin and zinc. Several files for one material add their forms together; for the other values the later file wins.
When several mods make the same form (three mods with a tin ingot), every one of them is accepted as an input, but a machine produces only one:
- the
preferreditem of the material file, if it is a member of that form; - otherwise the item of the first mod in
works.preferredNamespaces(default minecraft,qnet, allowed comma-separated names); - otherwise the item with the smallest id.
For the same input the first source in this order wins:
- Recipe files of data packs and mods, QNet's own included.
- Recipes other mods register through the QNet API.
- The game's recipes: the Induction Furnace takes over every smelting recipe of every mod.
- Derived recipes from templates: one recipe per material that has both forms of a template.
-
Fallback recipes that turn finished parts back into dust, while
works.fallbackRecipes(default true) is on. - Foreign recipes of other mods' machines (see below).
Within one source a recipe with a higher priority wins, then the more exact one (an item before a tag), then the recipe id. A recipe that never runs because another one with the same input comes first is listed in the material report, so data pack authors see such conflicts.
A template (data/<namespace>/qnet/processing_template/) is a rule "form → form" of one process type, applied to every material that has both forms. A template that does not start from a source form may not give more MU than it takes; for a material where it would, it is skipped. QNet's templates belong to these machines:
- Crusher: ores, raw metal, raw blocks into dust; ingots, plates, rods, gears, gems and blocks back into dust.
- Metal Former: ingots into plates, rods, gears and wire; nuggets into ingots, ingots and gems into blocks.
-
Industrial Centrifuge: raw metal into dust and by-products. - Chemical Plant: ore leaching, three dusts per ore.
For example the Metal Former's compacting:
| In | Out | E/t | Ticks | When |
|---|---|---|---|---|
| 9 × Nugget | Ingot | 60 | 60 | always |
| 9 × Gem | Storage block | 60 | 120 | always |
| 9 × Ingot | Storage block | 60 | 120 | always |
With Create or Mekanism installed, QNet machines also run some of their recipes:
- Create crushing and milling, Mekanism crushing and enriching run in the Crusher, at 40 E/t for 140 ticks. Of Create's results the Crusher keeps the main result and the first further one.
- Create pressing runs in the Metal Former with the plate die, at 60 E/t for 160 ticks.
- Only recipes with exactly one input and no fluids are taken over. Every QNet and data pack recipe for the same input wins.
- Each integration has its own switch:
features.integration.create(default true) andfeatures.integration.mekanism(default true).
After every data reload QNet checks all active recipes together:
-
Gain loops: recipes are followed from form to form, counted in MU. A loop that ends with more material than it started with (for example a data pack recipe that grinds one ingot into two dusts, which smelt back into two ingots) is broken: the derived, fallback and foreign recipes in it are switched off; the explicit recipes in it are reported, and switched off as well while
works.strictBalance(default false) is on. This repeats until no loop is left. -
Making ore: a recipe that produces ore or raw metal is reported (switched off with
works.strictBalance(default false)); a foreign recipe that makes ore is always switched off. Only the Deep Core Extractor may bring up ore. - Wide loops: loops that run across materials or through fluids and gases are only reported, never switched off, because such a finding can be a false alarm.
The Matter Reconstructor's rules pass the same check.
Chances in machine recipes are paid out by count, not by a random roll: a 10 % by-product comes exactly every tenth run.
-
/qnet materialsshows a summary: how many materials, derived recipes (and how many the balance check switched off) and ambiguous items. -
/qnet materials show <material>lists one material's forms. -
/qnet materials reportwrites everything (materials and their items, ambiguous items, derived recipes and their state, skipped templates, balance findings, overruled recipes, data problems) toqnet/materials-report.txtin the server directory.
Tip
A metal is missing a recipe?
Check its tags first: a template only works for a material that has both forms. /qnet materials show <material> shows which forms QNet found, and the report names the ambiguous items and why a template was skipped.
QNet Codex
Getting Started
- Welcome to QNet
- The First Machines
- Tiers and Components
- Energy, Fluids and Gases
- Building Plants
- The Quanta Linker
- Teams and Rights
- Upgrades and Plant Modules
Energy
- Energy Overview
- Basic Dynamo
- Thermoelectric Generator
- Stirling Generator
- Geothermal Heat Exchanger
- Solar Array
- Wind Turbine
- Solar Thermal Field
- Industrial Boiler
- Steam Turbine
- Gasifier
- Natural Gas and the Gas Derrick
- Gas Engine
- Gas Turbine
- Fission Reactor
- Nuclear Fuel Cycle
- Advanced Reactor Model
- Centrifuge Cascade
- Tokamak
- Little Star
- Micro Black Hole Plant
- Hawking Reactor
- Capacitor Bank
- Battery Hall
- Molten-Salt Store
- Gravity Store
- SMES
- Dimensional Store
- Process Heat
- Electric Heater and Heat Exchanger
- Incidents and Safety
- Radiation
Processing
- Crusher
- Induction Furnace
- Metal Former
- Assembler
- Plant Processor
- Farming Station
- Tree Harvester
- Electrolyzer
- Air Separator
- Chemical Reactor
- Industrial Centrifuge
- Crystallizer
- Tunnel Furnace
- Foundry
- Chemical Plant
- Assembly Complex
- Agricultural Facility
- Particle Facility
- Quantum Facility
- Matter Reconstructor
- Deep Core Extractor
- Plant Speed Modules
- Materials and Recipes
Rift
- The Rift
- Building the Complex
- Structure Parts
- Rift Gate Assembly
- Power Injection Array
- Stabilization Tower
- Coordinate Computation Array
- Dimensional Observatory
- Extraction Array
- Matter Receiving Facility
- Linking the Complex
- Running the Rift
- The Rift Console
- Research and Signals
- The Research Tree
- Mining
- Sectors and Diminishing Returns
- The Job Program
- Rift Map Table
- Command Terminal and Monitors
- Rift Materials
Storage
- The Storage Network
- Storage Controller
- Storage Units
- Storage Access Terminal
- Storage Interface
- External Storage Interface
- Bulk Tank
- Warehouse
- Linking Storage
Logic
Reference
Items and Blocks
- Advanced Circuit
- Ash
- Basic Circuit
- Bio Fertilizer
- Biomass
- Block Die
- Block Mold
- Casting Basin
- Charged Quantum Crystal
- Coal Dust
- Conductive Alloy Ingot
- Conveyor
- Copper Coil
- Copper Dust
- Copper Plate
- Copper Wire
- Creative Battery
- Creative Gas Tank
- Deepslate Lead Ore
- Deepslate Lithium Ore
- Deepslate Uranium Ore
- Efficiency Upgrade
- Emergency Vent
- Energy Cell
- Energy Transformer
- Exotic Matter
- Field Emitter
- Field Stabilizer
- Fluid Tank
- Gas Compressor
- Gas Tank
- Gear Die
- Gear Mold
- Generator Coil
- Gold Dust
- Gold Plate
- Heat Exchanger Tubes
- Induction Coil
- Industrial Frame
- Ingot Mold
- Iron Dust
- Iron Plate
- Irradiated Residue
- Laser Optic
- Block of Lead
- Lead Ingot
- Lead Ore
- Lithium Carbonate
- Lithium Dust
- Lithium Ore
- Machine Frame
- Nugget Mold
- Parallel Upgrade
- Pattern Card
- Plant Fiber
- Plate Die
- Plate Mold
- Polymer Sheet
- Precision Alloy Ingot
- Precision Frame
- Pump
- Quanta Linker
- Quantum Crystal
- Quantum Frame
- Quantum Processor
- Range Upgrade
- Raw Lead
- Raw Lithium
- Raw Uranium
- Refractory Bricks
- Rod Die
- Rod Mold
- Rotor Blade
- Rotor Shaft
- Sensor Module
- Servo Motor
- Silicon
- Silicon Boule
- Silicon Wafer
- Solidified Melt
- Speed Upgrade
- Stabilized Matter
- Steel Blend
- Steel Dust
- Steel Gear
- Steel Ingot
- Steel Plate
- Steel Rod
- Superconductor Wire
- Uranium Dust
- Uranium Ore
- Wire Die
- Yield Upgrade