工业 2(Tinkers’ Construct)集成

基本信息

与 TConstruct 的集成,在 postInit() 中 Loader.isModLoaded("TConstruct") 且 BloodArsenalConfig.tinkersIntegration 为真时触发 (BloodArsenal.java:178-181),只调一行 BloodArsenalTinkers.INSTANCE.init()。

一、静态初始化先于一切

BloodArsenalTinkers 的静态块(:155-159)做两件事:

  1. MinecraftForge.EVENT_BUS.register(new TConEvents()) —— 事件注册无条件发生, 不受 tinkersIntegration 开关控制;
  2. 构造流体 bloodInfusedIronFluid: new Fluid("molten.blood_infused_iron").setDensity(3000).setViscosity(6000).setTemperature(1400)。

二、熔融血浸铁流体

项 值
流体名 molten.blood_infused_iron
密度 3000
黏度 6000
温度 1400

注册链:

  1. FluidRegistry.registerFluid(bloodInfusedIronFluid)
  2. FluidType.registerFluidType(name, ModBlocks.blood_infused_iron_block, 0, 850, fluid, true) —— 方块态用血浸铁块,熔点 850
  3. Smeltery.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):

  1. 工具需实现 IModifyable,取其 getTraits();
  2. trait 含 "ammo" → 直接否决(不能用魂绑定弹药类工具);
  3. 槽位里必须恰好一个 IBloodOrb(出现第二个即 return false);
  4. 该宝珠 getOrbLevel() >= 4;
  5. SoulNetworkHandler.getOwnerName(stack) 非空;
  6. 工具尚未带该 key;
  7. 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-159
  • src/main/java/com/arc/bloodarsenal/common/tinkers/BloodArsenalModifiers.java
  • src/main/java/com/arc/bloodarsenal/common/tinkers/ModSoulbound.java
  • src/main/java/com/arc/bloodarsenal/common/tinkers/{TConEvents,TextureResourcePackBase,TextureResourcePackBloodInfusedIron,IClientCode}.java