AutoEMC
Fill missing ProjectE EMC values with recipe checks, fallback pricing, safety reports, and settings for modpacks.
介绍
AutoEMC
DOWNLOAD · DISCORD · SOURCE CODE
AutoEMC fills missing ProjectE EMC values for modpacks. It checks recipes and available data before using fallback prices, while keeping values set by ProjectE or the pack author separate.
What you can do
Both versions share the same safety philosophy — don’t let automated pricing wreck a pack’s economy:
- Creative-only / no-recipe technical items are locked to
1 EMCby default, so they can never leak into survival as a source of infinite value. - Large-drop protection blocks any single scan from crashing an already-priced item’s value beyond a configurable ratio — instead it gets logged to a quarantine report rather than silently applied.
- Ownership tracking: AutoEMC keeps its own record of which values it generated, separate from ProjectE/pack-author values, so it knows what it’s allowed to touch again later.
- 1.16.5 specifically has an “ownership arbiter” that prevents ProjectE simply echoing back AutoEMC’s last value from being mistaken for a manual override (which would otherwise delete AutoEMC’s tracking of that entry).
- Never lowers ProjectE-owned values.
- Adaptive, batched scanning — works in small chunks across server ticks instead of freezing the server on startup, even with thousands of items.
- 1.20.1 additionally: skips rescanning if nothing changed since the last scan, and can require a minimum number of successfully-loaded recipes before it trusts normal fallback (catches broken recipe loading early).
What you can do
- Fill missing EMC values using recipes and fallback data.
- Review generated entries, safety reports, and logs.
- Adjust scans and fallback values for your pack.
Review generated values before using them in a modpack. Fallback prices are estimates and may need balance changes.
Install, update, and check compatibility
Requirements Recap
1.16.5 build:
- Minecraft 1.16.5, Forge
- ProjectE (required)
- ProjectE Integration (required — both for baseline data and for its own integrations to function)
1.20.1 build:
- Minecraft 1.20.1, Forge 47.x, Java 17
- ProjectE (required, but no jar needs to be bundled — uses reflection/compat)
- ProjectE Integration (used as a baseline data source)
Play: controls, commands, and progression
The Big Picture: What AutoEMC Does
AutoEMC never wants to replace ProjectE — it just fills in the gaps. On startup it:
- Checks what EMC values ProjectE already knows.
- Reads all loaded recipes.
- Tries to derive missing values from recipes it understands (this is always preferred over guessing).
- Falls back to smart guesses only when no recipe path exists.
- Writes everything out to ProjectE’s value file, plus its own diagnostic logs.
The core rule in both versions: AutoEMC will not intentionally lower a value ProjectE or a pack author already set. It only fills gaps or (in 1.20.1) raises its own earlier fallback guesses when new recipe evidence justifies it.
How Values Get Solved (Recipe Solving)
This is the preferred method in both versions — solving prices from actual crafting recipes before ever guessing.
- If every ingredient in a recipe has a known EMC value, AutoEMC can calculate the output’s value (roughly: total ingredient cost ÷ output count).
- 1.20.1 adds more nuance here:
- Runs multiple solving “passes” (
maxRecipePasses) so chains of recipes can resolve in stages. - Seeds raw/source materials with a starting fallback value so recipes that depend on them can still be solved, then re-solves afterward.
- Can later reprice fallback outputs upward if a loaded recipe proves an item should cost more (
postFallbackRecipeUpgrade). - Handles smithing transform recipes specially (upgraded tools/armor inherit value from their base item + upgrade material), but skips cosmetic smithing trims since they’d create noisy/misleading values.
- When an ingredient has multiple matching options, it defaults to the safer, lower EMC value (
allowRecipeValueIncreasecan change this, but it’s safer left off).
- Runs multiple solving “passes” (
- 1.16.5 also uses bundled mapping/conversion data (from ProjectE Integration) as extra “recipe-like” edges, so things that aren’t normal crafting recipes (like item-conversion mechanics) still count as solvable paths.
Fallback Pricing (When There’s No Recipe)
If a recipe can’t solve the price, AutoEMC falls back through several layers, roughly in this order:
-
Bundled baseline values — pulled from ProjectE Integration’s shipped data (Botania, EnderIO, Mekanism, Create, and dozens of other mods).
-
Material/tag-based fallback — matches tags like
forge:ingots/copper,forge:gems/diamond,forge:dusts/sulfur,forge:storage_blocks/iron, etc. A base material value gets multiplied by its form (e.g. a storage block ≈ 9 ingots, a nugget ≈ 1/9 of an ingot). -
Rarity/tier-based fallback as a last resort:
-
1.16.5: plain rarity-based fallback, with a “reverse-recipe floor” so raw materials can’t end up cheaper than the processed goods made from them.
-
1.20.1: adds rarity + stack size + durability fallback, plus a dedicated progression tier system for powerful modded items so they never get a cheap generic value:
- Strong — e.g. Allthemodium, Wyvern-tier items
- Very Strong — e.g. Vibranium, Draconic, Draconium, Awakened-tier items
- OP — e.g. Unobtainium, Chaos/Chaotic, Infinity/Infinite, Creative-tier items
Tier matches can trigger from the mod namespace, an exact item ID, or a keyword in the item’s path.
-
Fallback is on by default in both versions (since it’s what makes huge packs usable), but can be tightened or disabled for stricter setups.
NBT-Tagged Items
Both versions understand that some items (potions, enchanted books, material-tagged items) vary by their NBT data, not just their base ID.
- A pluggable NBT material resolver framework prices these based on their actual embedded material, instead of lumping every variant into one generic value.
- Built-in support for things like Avaritia singularities (priced from their material + a multiplier).
- Can run as a pre-scan pass and, in some cases, live during actual ProjectE conversions.
maxNbtVariantsPerItemcaps how many variants one item ID can generate, so one item can’t explode into hundreds of entries in a huge pack.
Commands (1.20.1)
/autoemc rescan
Requires permission level 2. Forces a fresh scan immediately, without waiting for a server restart.
Configure and customize
Key Config Options
General
enabled— master on/off switch.alwaysRescan(1.20.1) — scan every server start even if nothing changed.chatNotifications/chatVerbosity— scan messages in chat (0 = minimal, 2 = verbose).itemsPerTick/adaptiveBatchSizing/adaptiveBatchTargetMs— control scan batching/lag.
Recipe solving
solveRecipes— turn recipe-derived values on/off.maxRecipePasses(1.20.1) — how many dependency-solving passes to run.allowRecipeValueIncrease— use the highest vs. lowest ingredient option (lowest/off is safer).useBundledProjectEMappingConversions/useMapperFramework— use bundled ProjectE-style conversion data as extra recipe edges.
Fallback
useFallbackForUnsolvable— allow fallback pricing at all.useForgeTagFallback— use material tags before generic rarity fallback.useProjectEIntegrationBaselines— use bundled baseline values.giveCreativeNoRecipeItemsOneEmc— the 1-EMC safety floor for creative/no-recipe items.tagFallbackNamespaces— which tag namespaces to check (defaults:forge,mekanism,create).protectedCheapFallbackPatterns(1.20.1) — item ID fragments that should never get a cheap fallback value.
Safety
largeDropProtectionThreshold/maxAllowedDropRatio— tune the large-drop guard.ownershipSmallDifferenceRatio— how much difference between AutoEMC’s and ProjectE’s values counts as “just noise.”consistencyWarnMinRatio/consistencyWarnMinAbsoluteDelta(1.16.5) — thresholds for the underpriced-input report.
NBT
scanNbtVariants— scan NBT-tagged item variants.maxNbtVariantsPerItem— cap variants generated per item ID.useNbtMaterialResolvers/useLiveNbtMaterialResolution— enable material-aware NBT pricing.nbtMaterialMultipliers— multipliers used by material-tagged NBT resolvers.
All of the above live in autoemc-common.toml.
Backups and recovery
Before changing your setup
Back up your world and configuration files before updating the project or changing its settings. Keep the old instance until you have checked that the updated setup works.
Troubleshooting, logs, and technical details
Reports & Logs
Both versions write diagnostic files so you can audit exactly what happened and why:
generated_entries.json— everything AutoEMC currently owns/generated.underpriced_inputs_report.json(1.16.5) — flags non-owned items that look priced too low relative to what they’re used to craft.quarantined_drops.json(1.16.5) — value changes blocked for looking unsafe.autoemc-debug.log/autoemc-debug.previous.log(1.20.1) — main troubleshooting log, plus the log from the prior run.recipe_solve_state.json(1.20.1) — scan state, so an unchanged pack can skip unnecessary rescans.known_items.json(1.20.1) — tracked item registry state.config/ProjectE/custom_emc.json— the actual file ProjectE reads to apply EMC values.
Every generated value is tagged with its source (baseline, tag-material, rarity-fallback, reverse-recipe-floor, creative-no-recipe, etc.) so you can trace exactly how a number was reached.
Build Info (1.20.1)
- Mod ID:
autoemc - Version:
2.0.0 - Build command:
.\gradlew.bat clean build - Output jar:
build/libs/autoemc-2.0.0.jar
Pre-release smoke test checklist:
- Launch with ProjectE + AutoEMC installed.
- Confirm a scan-start message appears in the log.
- Confirm no errors in
latest.logorconfig/autoemc/autoemc-debug.log. - Confirm
config/ProjectE/custom_emc.jsongets written/updated. - Restart or
/reloadso generated values take effect.
Note: the first scan on a large pack can take 5+ minutes and may look like nothing is happening — it’s working through items, recipes, and fallback logic. Wait for the completion message before assuming it’s stuck.
Get help
For help or bug reports, use Discord. Include the project file, Minecraft version, mod loader, and the steps that caused the problem.
About this project
Author and links
I create and maintain AutoEMC as Dnydd (formerly known as dklyntly).
Official CurseForge page · Discord · GitHub source
License and permissions
Read the full license and the terms included with your downloaded version; permissions granted to earlier versions remain in effect.
Support my work
If you enjoy my projects, you can support my work through Ko-fi or PayPal. Support is always optional.
常见问题
AutoEMC 支持哪些 Minecraft 版本?
AutoEMC 支持 Minecraft Java 版 1.12–1.21.1,共 7 个版本,可用的加载器:Forge / NeoForge。下载时注意选择和你游戏版本一致的文件。
AutoEMC 怎么安装?
先用 PCL2 或 HMCL 启动器安装对应版本的 Forge / NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。
Dnydd 的其他作品
查看全部 →Modded Oneblock Skyblock
一个 Minecraft 1.16.5 的 OneBlock 空岛整合包,包含 700+ 模组、任务、自动化、魔法、维度以及 Boss 战。
Random Oneblock Skyblock
在会掉落200多个模组随机物品的单方块上生存,然后建造你的岛屿并选择发展路线。
Random Item Generator Resurrected
Break regenerating blocks for random items, entities, enchanted books, or chest loot, with filters for modded content.
Randomized Block & Mob Drops
Shuffle block and mob drops, including modded loot, with saved world seeds, filters, and commands to find items.
评论
登录后评论和评分