兼容适配
[!INFO] 注册真源:
compat/DefaultCompat.java(由BogoSorter.java的onPreInit调用DefaultCompat.init(BogoSortAPI.INSTANCE))
本模组不注册任何方块或物品,其「兼容」表现为:为其他 mod 的容器提供整理能力,以及为部分物品提供额外排序维度。
容器兼容(经 mixin 注入 Container)
以下容器通过 mixins/late/ 下的 mixin 暴露槽位,从而可被整理:
| 目标 mod | mixin 类 |
|---|---|
| CompactStorage | mixins/late/compactstorage/MixinContainerChest.java、MixinContainerChestBuilder.java |
| Controlling | mixins/late/controlling/MixinGuiNewKeyBindingList.java(+ GuiNewKeyBindingListKeyEntryAccessor) |
| EnderIO | mixins/late/enderio/MixinBuffer.java、MixinVacuumChest.java |
| Et Futurum | mixins/late/etfuturum/MixinContainerChestGeneric.java |
| GalacticCraft(核心) | mixins/late/galacticraft/core/MixinContainerRocketInventory.java |
| GalacticCraft(行星) | mixins/late/galacticraft/planets/MixinContainerSlimeling.java |
| Iron Chests | mixins/late/ironchests/MixinIronChestContainer.java |
| Thermal Expansion | mixins/late/thermal/MixinContainerSatchel.java、MixinContainerStrongbox.java |
| Witching Gadgets | mixins/late/witchinggadgets/MixinContainerBag.java、MixinContainerCloak.java |
原版容器 mixin(mixins/early/minecraft/,14 个类)
ContainerHorseInventoryMixin、CreativeSlotMixin、GuiEditSignMixin、MinecraftMixin 等 14 个类;GuiContainerAccessor、GuiScreenAccessor、SlotAccessor 为 @Accessor 接口,用于读取受保护的 GUI 字段。
非容器兼容
| 类 | 目标 | 行为 |
|---|---|---|
compat/Mods.java |
41 个枚举项 / 38 个不同 modid | mod 存在性判定,含版本谓词 |
compat/ThaumicEnergisticsHelper.java |
Thaumic Energistics | 精华容器整理 |
compat/VendingMachineCompat.java |
Vending Machine | 自动售货机容器整理 |
compat/adventurebackpack/AdventureBackpackPinnedSlots.java |
Adventure Backpack | 固定槽位同步 |
compat/backpack/BackpackPinnedSlots.java |
Backpack | 固定槽位同步 |
compat/ae2/Ae2TerminalGuiDetector.java / Ae2TerminalSearchAdapter.java |
AE2 | 终端检测与搜索适配 |
compat/nei/Ae2TooltipClient.java |
NEI / AE2 | 悬浮提示 |
compat/screen/WarningScreen.java |
通用 | 警告界面 |
Mods 枚举中的版本判定(易被误读)
compat/Mods.java 共 41 个枚举项,但只对应 38 个不同 modid。三组用 Predicate<ModContainer> 区分同名/改名 mod,不是重复定义:
GT5u(gregtech,谓词!Loader.isModLoaded("gregapi"))与GT6(gregtech,谓词Loader.isModLoaded("gregapi"))IC2(IC2,谓词mod.getName().endsWith("Classic")取反)与IC2Classic(同 modidIC2,谓词取正)BetterStorage(版本范围[,0.14))与BetterStorageFixed([0.14,))—— 同一 modid 的新旧版本分派
[!NOTE] 「41 项 vs 38 modid」的差额正来自这三组同 modid 分派。按 modid 字符串去重统计会低估判定逻辑的数量。
关联:BogoSort API · Mixin 列表