工业 2(Tinkers’ Construct)集成
基本信息
与 TConstruct 的集成,在 postInit() 中
Loader.isModLoaded("TConstruct") 且
BloodArsenalConfig.tinkersIntegration 为真时触发
(BloodArsenal.java:178-181),只调一行
BloodArsenalTinkers.INSTANCE.init()。
一、静态初始化先于一切
BloodArsenalTinkers 的静态块(:155-159)做两件事:
MinecraftForge.EVENT_BUS.register(new TConEvents())—— 事件注册无条件发生, 不受tinkersIntegration开关控制;- 构造流体
bloodInfusedIronFluid:new Fluid("molten.blood_infused_iron").setDensity(3000).setViscosity(6000).setTemperature(1400)。
二、熔融血浸铁流体
| 项 | 值 |
|---|---|
| 流体名 | molten.blood_infused_iron |
| 密度 | 3000 |
| 黏度 | 6000 |
| 温度 | 1400 |
注册链:
FluidRegistry.registerFluid(bloodInfusedIronFluid)FluidType.registerFluidType(name, ModBlocks.blood_infused_iron_block, 0, 850, fluid, true)—— 方块态用血浸铁块,熔点 850Smeltery.addMelting(...)两条:
| 输入 | 产量 | 温度 |
|---|---|---|
blood_infused_iron_block ×1 |
1296 mB | 850 |
blood_infused_iron ×1 meta 0 |
144 mB | 850 |
三、铸造配方
| 站 | 产物 | 流体量 | 模具 | 永久 | 时间 |
|---|---|---|---|---|---|
getBasinCasting() |
blood_infused_iron_block ×1 |
1296 mB | null |
true |
100 |
getTableCasting() |
blood_infused_iron ×1 |
144 mB | TinkerSmeltery.metalPattern ×1 meta 0 |
false |
50 |
四、IMC 消息(4 条)
用 FMLInterModComms.sendMessage("TConstruct", …) 发送:
| 消息 | 载荷要点 |
|---|---|
addMaterial |
HarvestLevel 3、Attack 3、HandleModifier 1.4F、Reinforced 0、Bow_ProjectileSpeed 5.1F、Bow_DrawSpeed 52、Projectile_Mass 3.1F、Projectile_Fragility 0.7F、Style DARK_RED、Color 16777215 |
addPartCastingMaterial |
FluidName = 流体名、MaterialId |
addMaterialItem |
MaterialId、Item = blood_infused_iron meta 0 的 NBT、Value 2 |
addMaterial载荷里带Bow_*/Projectile_*字段 —— 这是为弓/投掷类 工具准备的材料属性。Color写死为16777215(纯白), 而Style用EnumChatFormatting.DARK_RED。
五、魂绑定修饰符
BloodArsenalModifiers.initModifiers() 走 ModifyBuilder.registerModifier:
| 项 | 值 |
|---|---|
| 修饰符类 | ModSoulbound extends ModBoolean |
| 名称 / 颜色 | "Soulbound" / EnumChatFormatting.DARK_RED |
modifiersRequired |
1 |
| 构造函数 | super(items, 30, "Soulbound", "DARK_RED", "Soulbound") |
| 触发材料 | WayofTime…ModItems.masterBloodOrb,OreDictionary.WILDCARD_VALUE |
ModSoulbound.matches 的判定条件(ModSoulbound.java:22-43):
- 工具需实现
IModifyable,取其getTraits(); - trait 含
"ammo"→ 直接否决(不能用魂绑定弹药类工具); - 槽位里必须恰好一个
IBloodOrb(出现第二个即return false); - 该宝珠
getOrbLevel() >= 4; SoulNetworkHandler.getOwnerName(stack)非空;- 工具尚未带该 key;
InfiTool.Modifiers >= modifiersRequired(1)。
六、客户端资源包
BloodArsenal.proxy.executeClientCode(…) 回调里
new TextureResourcePackBloodInfusedIron("BloodInfusedIron").register(),
基类 TextureResourcePackBase。仅在 TConstruct 分支内、且
@SideOnly(Side.CLIENT)。
相关条目
源码
src/main/java/com/arc/bloodarsenal/common/tinkers/BloodArsenalTinkers.java:90-159src/main/java/com/arc/bloodarsenal/common/tinkers/BloodArsenalModifiers.javasrc/main/java/com/arc/bloodarsenal/common/tinkers/ModSoulbound.javasrc/main/java/com/arc/bloodarsenal/common/tinkers/{TConEvents,TextureResourcePackBase,TextureResourcePackBloodInfusedIron,IClientCode}.java