TL;DR — I added ProjectE to a stock Tekkit SMP v1.0.5 install, noticed most mod items had no EMC and a few had absurd values, so I spent a weekend digging in. Result: a public repo with 152 seed EMC values, 4 exploit fixes, and the Python scripts I wrote to audit everything. Drop-in for anyone running the same pack.

Repo: https://github.com/ilkerdevops/tekkit-smp-projecte-emc Modpack: https://www.technicpack.net/modpack/tekkit-smp (v1.0.5)

The problem

Tekkit SMP v1.0.5 (MC 1.12.2, Forge 14.23.5.2860) ships with ProjectE (Technic fork, PE1.4.8-14). On first boot ProjectE's auto-mapper walks every crafting recipe, every smelting recipe, every OreDict entry, and derives EMC for everything it can reach through those. In theory this gives you the classic "Wood=32 → 4×Plank=8" conservation automatically, all the way up the tech tree.

In practice, after a clean boot I got 2756 items with EMC out of ~7000 registered items. The rest came from mods that don't use vanilla IRecipe:

  • Thaumcraft (Infusion Altar, Crucible, Arcane Workbench)
  • Thaumic Augmentation / Wonders / Tinkerer
  • Galacticraft Core + Planets (NASA Workbench)
  • Industrial Foregoing (machine recipes)
  • Mystcraft / MoreMystcraft (book binder)
  • MFFS, Exchangers, ComputerCraft, Computronics
  • MoCreatures, MagicBees, ForbiddenMagicRe

The mapper can't see their recipes, so every item from those mods gets EMC = null (or sometimes an OreDict-inherited value that makes no sense).

On top of that, logEMCExploits=true produced 43 warnings, including some that are economically devastating.

What I did

1. Inventory

Wrote a Python script that reads every mod jar, extracts blockstates/*.json (blocks) and models/item/*.json (items), then cross-references with lang/en_us.{lang,json} for registry names the asset files miss.

Output: 1878 blocks + 3377 items from blockstates, 2892 blocks + 5048 items from lang (lang-based is more complete). Committed as analysis/blocks_by_mod.md, registry_full.json.

2. Coverage measurement

Enabled pregenerate=true and dumpEverythingToFile=true in mapping.cfg, booted the server once, got a 100 KB pregenerated_emc.json with every derived EMC and a 2.4 GB mappingdump.json with the full conversion graph. Compared the dump to the registry inventory, got a per-mod "missing" count. Published as analysis/real_coverage_v2.md.

Top gap mods at that point: thaumcraft (217 missing blocks), quark (170 — mostly decorative variants, low priority), galacticraftcore (61), cathedral (84 — decorative), balkonsexpansion (253 items, 0% coverage).

3. Seeds

For each major unmapped mod, I picked the base resources — the nodes at the root of the recipe tree — and assigned EMC values anchored to vanilla reference units (Iron Ingot = 256, Diamond = 8192, Gold = 2048). Examples:

"thaumcraft:amber|0": 8,
"thaumcraft:salis_mundus|0": 64,
"thaumcraft:primordial_pearl|0": 8192,
"galacticraftcore:meteoric_iron_raw|0": 1024,
"galacticraftplanets:item_basic_mars|3": 4096,   // desh ingot
"industrialforegoing:plastic|0": 16,
"mystcraft:agebook|0": 4096,
"mocreatures:ancientsilveringot|0": 512

All 152 seed values live in config/ProjectE/customConversions/tekkitsmp_seeds.json. Once seeded, the ProjectE engine re-runs and derives downstream items automatically — second boot produced 3103 EMC entries (+347 from the seeds).

4. Exploit audit

Parsed the EMC Exploit warnings from the server log with a regex. Most (39 of 43) are 9 × nugget → 1 × ingot rounding losses — cost 252, value 256, profit 4 EMC per craft. Not exploitable at any meaningful scale, left alone.

Four are actual exploits:

Item Recipe cost Current EMC Profit Fix
minecraft:minecart 800 (5× bronze) 1280 (5× iron) 480 pin to 800
ProjectRed ruby cevher 1024 2048 1024 pin to 2048
ProjectRed sapphire cevher 1024 2048 1024 pin to 2048
ProjectRed peridot cevher 1024 2048 1024 pin to 2048

The ProjectRed ones are the juiciest — a 1024 EMC resource item converts 1:1 to a 2048 EMC gemstone. An EMC condenser could double-print gems in a loop. All four are pinned in the repo.

What's in the repo

  • config/ProjectE/customConversions/tekkitsmp_seeds.json — the main output, 152 seed EMC values
  • config/ProjectE/custom_emc.json — includes the minecart fix
  • analysis/ — Python scripts (extract_blocks.py, extract_registry_from_lang.py, real_coverage*.py, parse_exploits.py) plus markdown reports and boot logs
  • Full Tekkit SMP v1.0.5 server config snapshot (no mod jars — license + size)
  • README.md with install steps and the "how to add your own seed" recipe

How to use it

If you run Tekkit SMP v1.0.5:

  1. Copy config/ProjectE/customConversions/tekkitsmp_seeds.json and config/ProjectE/custom_emc.json into your server.
  2. Delete pregenerated_emc.json (if it exists) to force a re-map.
  3. Set B:pregenerate=true in mapping.cfg, boot once, stop.
  4. Set B:pregenerate=false.

First boot will take ~30 seconds longer while the mapper re-runs. ProjectE auto-appends B:tekkitsmp_seeds=true to mapping.cfg on first load, so the new conversion file gets picked up without you editing anything.

Known gaps

  • Thaumcraft internal recipes (aspect-heavy items, infused tools) are only partially covered. tc_integration is installed and might extend this — I haven't fully explored its config yet.
  • Decorative variant explosion (Quark, Chisel, Cathedral, ChiselsandBits combined produce ~1000 variant blocks). They're not in the seed list because their economic impact is near zero, but if anyone wants full coverage the actionable list is in analysis/actionable_missing.json.
  • Steve's Carts and Balkons Expansion — their custom assemblers are invisible to ProjectE. Left at EMC=0 as safe default.

Feedback welcome

If you run Tekkit SMP and spot a seed that's miscalibrated (too cheap, too expensive, or just plain wrong) open an issue on the repo — the seeds are quick to revise. Also curious if anyone on a different 1.12.2 modpack has success reusing the seed file; most of the items should resolve as long as the mods are present.

Scripts in analysis/ are general — they work against any 1.12.2 install with ProjectE, you just point them at the mods folder. If you want to audit your own pack the same way, extract_blocks.py + parse_exploits.py will give you 80% of what I found here.

Repo is CC0 / public domain for the config and scripts. Mod jars not included (copyright and 242 MB). Built against Technic's Tekkit SMP v1.0.5.

by mrvolkan

1 Comment