世界转换(Extra Utilities / Postea)

基本信息

属性 值
兼容目标 Extra Utilities(EU)与 Postea
代码位置 com.fouristhenumber.utilitiesinexcess.compat.exu(3 个类,共 623 行)
门控 Mods.ExtraUtilities.isLoaded() 与 Mods.Postea.isLoaded()(modid postea)
主要文件 PosteaTransforms.java(480 行)、ExuWorldConversionWarning.java(59 行)、ExtendedConfirmationGui.java(84 行)

功能

本模组是 Extra Utilities 的 GTNH 移植版(mcmod.info 描述:“Port of Extra Utilities - adds assorted useful things.”)。为了让从 EU 迁移过来的存档继续可用,本模组用 Postea 的替换管理器把 EU 的方块 / 物品 / TileEntity 映射到 UIE 的对应实现。

PosteaTransforms.postInit() 分四步执行(PosteaTransforms.java:28-33):

  1. transformItems() — 物品替换
  2. transformBlocks() — 方块替换
  3. transformTileEntities() — TileEntity 替换
  4. ignoreMissingMappings() — 忽略无法映射的残留

postInit() 的唯一调用点是 CommonProxy 的 postInit 阶段(CommonProxy.java:150),即 Mods.Postea / Mods.ExtraUtilities 探测通过后执行。

自定义转换器按 Postea 的三个管理器分为 1 个方块 + 4 个物品 + 9 个 TileEntity = 14 个(PosteaTransforms.java 的 import 列表逐条统计),另有 138 处 ItemStackReplacementManager.addSimpleReplacement 直接映射。

数值 — 物品替换

PosteaTransforms.transformItems() 中有 138 处 ItemStackReplacementManager.addSimpleReplacement 简单映射,另加 4 个自定义物品转换器。PosteaTransforms.java:35-52 的映射片段如下(这部分仅摘录本条目核对过的条目):

Extra Utilities 源 UIE 目标
ExtraUtilities:glove ModItems.GLOVE
ExtraUtilities:angelRing meta 0 ModItems.HEAVENLY_RING_MAGIC
ExtraUtilities:angelRing meta 1 ModItems.HEAVENLY_RING_FEATHER
ExtraUtilities:angelRing meta 2 ModItems.HEAVENLY_RING_FAIRY
ExtraUtilities:angelRing meta 3 ModItems.HEAVENLY_RING_DRAGON
ExtraUtilities:angelRing meta 4 ModItems.HEAVENLY_RING_METAL
ExtraUtilities:heatingElement ModItems.FIRE_BATTERY
ExtraUtilities:builderswand ModItems.BUILDERS_WAND
ExtraUtilities:creativebuilderswand ModItems.SUPER_BUILDERS_WAND

5 个天界之环的 meta 映射是可核实的关键细节:EU 的 angelRing 0–4 依次对应 UIE 的魔法、羽毛、妖精、龙、金属——与 UIE 自己的注册顺序(羽毛、龙、妖精、金属、魔法)完全不同,因此映射是显式逐条定义的,不能靠顺序推断。

138 条完整映射清单本条目未逐一抄录——只列出了上面已核对的部分。其余 129 条的具体对应关系请查 PosteaTransforms.transformItems()。

4 个自定义物品转换器:

转换器类 目标
DivisionSigilTransformation 反转徽章(ModItems.INVERSION_SIGIL_*)
GoldenBagTransformation 黄金袋(ModItems.GOLDEN_BAG)
GoldenLassoTransformation 黄金套索(EU 物品,UIE 无同名注册项)
ForgeMicroblockItemTransformer ForgeMicroblock 部件物品

数值 — TileEntity 替换

TileEntityReplacementManager 下的转换器共 9 个:

转换器类 目标 UIE TileEntity
CollectorTransformation 采集器
DrumTransformation 鼓
EnderQuarryTransform 虚空采掘场
FilingCabinetTransformation 文件柜
FullChestTransformation 箱子(marginally_maximised_chest)
MiniChestTransformation 箱子(radically_reduced_chest)
GeneratorTransformation 发电机家族
QEDTransformation 量子纠缠装置(QED)——UIE 中无对应注册项
SpikeTransformation 尖刺

FullChestTransformation 与 MiniChestTransformation 证明 EU 的"大箱子 / 小箱子"被映射到 UIE 的箱子三档。

QEDTransformation 与 GoldenLassoTransformation 是两个没有对应 UIE 注册内容的转换器——UIE 的 101 个方块 / 32 个物品中都不存在这两项。这两个类的完整行为本条目未核实。

交互 — 世界转换警告

ExuWorldConversionWarning implements IWorldConversionWarning(ExuWorldConversionWarning.java:15)向 Postea 注册一个转换前确认提示:

成员 行 说明
public static boolean show :17 静态开关,控制是否弹出确认
shouldShow() :20 是否显示警告
getServerMessage() :25 服务端提示文本
getClientMessage() :32 客户端提示文本
getGui(StartupQuery) :39 返回自定义确认 GUI
doWorldConversion() :43 实际执行转换
onMissingMapping(FMLMissingMappingsEvent) :47 缺失映射处理

自定义 GUI 由 ExtendedConfirmationGui.java(84 行)实现,对 Postea 的标准确认界面做了扩展。

ignoreMissingMappings() 存在的意义是:EU 有一些内容 UIE 没有移植(如 QED、Golden Lasso),这些条目在转换时会产生缺失映射,本步骤将其静默忽略以免刷屏。

合成配方

无——本维度是兼容层,不注册配方。

相关条目