材料系统
概述
材料系统是 GT5-Unofficial 的数据底座,全仓共 930 个材料(Materials.java 静态字段),配套 16818 行的材料注册代码(MaterialsInit.java)。每一种材料都是一个 Materials 静态实例,通过 MaterialBuilder 链式构建。
它不只是「一个配方输入」——材料的物理属性(密度、熔点、放射性)会门控机器能力,这在 GT5 里是最容易踩坑的机制之一。
代码基线:GT5U 5.09.54.183(Minecraft 1.7.10)。
材料是怎么定义的
以铁为例(MaterialsInit.java:865):
private static Materials loadIron() {
return new MaterialBuilder().setName("Iron")
.setDefaultLocalName("Iron")
.setElement(Element.Fe) // 元素绑定
.setColor(Dyes.dyeLightGray).setARGB(0x00c8c8c8)
.setTool(256, 2, 6.0f) // 工具属性:耐久/等级/速度
.addDustItems().addMetalItems() // 前缀→物品的批量注册
.addOreItems().addPlasma().addToolHeadItems().addGearItems()
.setMeltingPoint(1_811) // 熔点 K
.addAspect(TCAspects.METALLUM, 3) // 神秘时代四灵绑定
.addOreByproduct(() -> Materials.Nickel) // 伴生矿
.addOreByproduct(() -> Materials.Tin)
.addSubTag(SubTag.BLASTFURNACE_CALCITE_TRIPLE)
.addSubTag(SubTag.METAL)
.addSubTag(SubTag.MORTAR_GRINDABLE)
.addSubTag(SubTag.MULTI_PLATE)
.addOrePrefix(OrePrefixes.nanite)
.removeOrePrefix(OrePrefixes.block) // 让位给 minecraft:iron_block
.removeOrePrefix(OrePrefixes.ingot) // 让位给 minecraft:iron_ingot
.constructMaterial();
}
关键点:
addXxxItems()是批量注册——一行声明某材料拥有某前缀下的所有形态removeOrePrefix让 GT 材料让位给原版铁块/铁锭,避免两种物品并存addOreByproduct直接决定离心机的伴生产出
46 个材料分组
MaterialsInit.load() 调用 46 个分组方法,分批定义材料。分组大致是:
| 分组 | 内容 |
|---|---|
loadElements |
基础元素金属与非金属 |
loadIsotopes |
同位素材料(放射性/粒子源) |
loadSuperconductorBases / loadSuperconductors |
超导基材与各电压等级超导体 |
loadOverpoweredMaterials |
超力场材料(GTNH 特色) |
loadUEVPlusMaterials |
UEV 及以上电压材料 |
loadGTNHMaterials |
GTNH 整合包专属材料 |
loadLabGrownGems / loadChimeraGems |
实验室培育宝石、嵌合体宝石 |
loadAcidRecipes / loadWaterLineChemicals |
化学线材料 |
loadSiliconLine |
硅材料线(半导体/芯片) |
loadUnclassified01–07 |
未分类杂项 |
loadGalaxySpace / loadNetheriteLine / loadRadoxLine |
外星/下界合金/Radox 线 |
loadBotaniaMaterials / loadMagicMaterials |
魔法侧材料 |
loadKevlarLine / loadPolybenzimidazoleLine |
高分子纤维线 |
超导体的设计:每个电压等级一个(SuperconductorMV / HV / EV …),用于低温超导线圈配方。
影响矿物加工的属性字段
| 字段 | 默认值 | 作用 |
|---|---|---|
mOreMultiplier |
1 | 矿石产量倍率,决定粉碎/锤击产出多少粉碎矿 |
mByProductMultiplier |
1 | 伴生粉概率倍率,放大离心机伴生概率 |
mSmeltingMultiplier |
1 | 熔炉/高炉锭产出倍率 |
mMacerateInto |
this |
粉碎/离心后变成哪种材料的粉 |
mOreReplacement |
this |
矿物替代(某些材料用替代品) |
mDirectSmelting |
this |
直接熔炼的目标材料 |
mOreByProducts |
空列表 | 伴生材料列表,离心分离的目标 |
mMacerateInto 是最容易被误解的:它允许「A 矿粉碎后得到 B 的粉」。mOreByProducts 则是离心机的可分离列表——ProcessingOre.java:129 遍历它生成伴生概率。
实际影响
- 铁有
mOreMultiplier=1,而富矿是 ×2(aMultiplier=2)→ 富铁矿出 2 倍粉碎矿 - 铱、钍等稀有金属通过
mOreByProducts让铱/钍粉从别的矿的离心中产出
门控机器的属性字段
| 字段 | 类型 | 作用 |
|---|---|---|
mMeltingPoint |
int (K) | 熔点,决定需要的机器等级 |
mDensity |
long | 密度,决定需要的机器等级/结构强度 |
mBlastFurnaceRequired |
boolean | 强制走高炉,GT 会移除原版熔炉配方 |
mAutoGenerateBlastFurnaceRecipes |
boolean | 是否自动生成高炉配方 |
mDurability |
int | 工具耐久 |
mToolSpeed |
float | 工具速度 |
mHeatDamage |
float | 热伤害 |
mFuelPower / mFuelType |
int | 燃料发热值与类型 |
mSteamMultiplier / mGasMultiplier / mPlasmaMultiplier |
float | 锅炉/发电机产能倍率 |
mBlastFurnaceRequired 是最容易踩坑的开关——设为 true 后 ProcessingOre.java:148 会调用 removeFurnaceSmelting 删掉原版熔炉配方,玩家会发现「原版炉子烧不动这块矿」。
[!NOTE] 放射性不在 Materials 字段里。GT5U 的核燃料走 IC2 反应堆组件(
ItemRadioactiveCell/ItemRadioactiveCellIC),由 bartworks 的Element/ 同位素系统提供数据。
SubTag:57 个行为开关
SubTag 不是枚举,而是可动态注册的类(getNewSubTag("NAME"))。共 57 个,是玩家可见的行为开关。
矿物加工相关
| SubTag | 效果 |
|---|---|
NO_ORE_PROCESSING |
完全跳过所有矿物加工配方 |
SMELTING_TO_GEM |
熔炼产物从锭改为宝石 |
SMELTING_TO_FLUID |
熔炼产物为流体 |
BLASTFURNACE_CALCITE_DOUBLE |
高炉 + 方解石/生石灰 → 锭 ×2 |
BLASTFURNACE_CALCITE_TRIPLE |
同上 → 锭 ×3 |
DONT_ADD_DEFAULT_BBF_RECIPE |
不生成砖砌/青铜高炉默认配方 |
WASHING_MERCURY |
可用汞洗矿(金 Gold、锇 Osmium、铂 Platinum、银 Silver、Cooperite、AstralSilver、秘银 Mithril) |
WASHING_MERCURY_99_PERCENT |
汞洗矿 99% 产出(仅银 Silver) |
WASHING_SODIUMPERSULFATE |
可用过硫酸钠洗矿(钴 Cobalt、铜 Copper、镍 Nickel、锌 Zinc、钴砷矿 Cobaltite、硫砷铜矿 Tetrahedrite) |
ELECTROMAGNETIC_SEPERATION_GOLD |
可用电磁分离器提纯金 — 磁铁矿、花岗岩矿砂、钒磁铁矿、玄武岩矿砂 |
ELECTROMAGNETIC_SEPERATION_IRON |
可提纯铁 — 锑、铬、锰、镍、锡、条带状铁矿、褐褐铁矿、铬铁矿、钛铁矿、黄铁矿、黄褐铁矿、黄榴石、海绿石、海绿石砂、镍黄铁矿、蛭石(共 16 种) |
ELECTROMAGNETIC_SEPERATION_NEODYMIUM |
可提纯钕 — Forcicium、Forcillium、氟碳铈矿、独居石 |
PULVERIZING_CINNABAR |
粉碎辰砂改走水晶形态 |
ICE_ORE |
冰矿特殊处理 |
MORTAR_GRINDABLE |
可用研钵研磨 |
NO_SMELTING |
无熔炼配方 |
NO_RECIPES |
无配方 |
NO_RECYCLING / NO_RECYCLING_RECIPES |
无回收配方 |
NO_WORKING |
无法加工 |
NO_SMASHING |
无法破碎 |
物理属性相关
METAL、STONE、WOOD、PAPER、CRYSTAL、QUARTZ、SOFT、EXPLOSIVE、FLAMMABLE、BURNING、UNBURNABLE、INVISIBLE、TRANSPARENT、HAS_COLOR、FOOD、PEARL、MAGICAL、STRETCHY、BOUNCY、ICE_ORE。
能量类型相关
ENERGY_ELECTRICITY、ENERGY_STEAM、ENERGY_HEAT、ENERGY_AIR、ENERGY_REDSTONE_FLUX、ENERGY_ROTATIONAL —— 标记材料由哪种能量转化而来。
焊料等级
SOLDERING_MATERIAL_BAD(锡/铅)、SOLDERING_MATERIAL(普通)、SOLDERING_MATERIAL_GOOD(金/银焊料)—— 决定 EFR 覆盖板焊接的焊料等级要求。
前缀(OrePrefixes)
OrePrefixes 定义了材料的所有形态。它是「材料 × 形态」的组合器:
- 矿物类:
ore、oreSmall、orePoor、oreNormal、oreRich、oreDense、oreNether、oreNetherrack、oreEnd、oreEndstone、oreDeepslate、oreGravel、oreSand(+ 各种 Stone 基底) - 加工中间体:
clump、shard、crushed、crushedPurified、crushedCentrifuged、dirtyGravel - 粉:4 档 ——
dustImpure(不纯)、dust、dustSmall、dustTiny - 宝石:5 档品质 ——
gemExquisite、gemFlawless、gem、gemFlawed、gemChipped - 零件:
ingot、nugget、plate、stick、stickLong、bolt、screw、gear、ring、rod、wire、cable、fineWire、foil、plateDouble、plateTriple、gearSmall、circuit、dust(电学)等
4 档粉的设计意义:dustTiny 用于低倍率矿石,dust 用于正常矿石,dustSmall/dustImpure 用于分离产物。数量递减匹配不同产量。
5 档宝石见 矿物加工 — 筛分机按概率产出不同品质。
玩家如何规划
- 看到矿石不能加工 → 查该材料是否带
NO_ORE_PROCESSING,只能走熔炼/合成。 - 原版炉子烧不动 → 该材料
mBlastFurnaceRequired=true,必须用 GT 电弧高炉。 - 想提高某个矿的收益 → 优先挖富矿/致密矿(×2),而不是找
mOreMultiplier更大的材料。 - 分离稀有金属 → 看
mOreByProducts,某些稀有粉是从大宗矿的离心中出来的。 - 焊板/电路焊接失败 → 检查焊料等级 SubTag,需要更高等级的焊锡/银焊料。
- 材料值不值得做 → 看
mMeltingPoint和mDensity:两者高意味着需要更高级的机器/结构,投入产出比要算清楚。