ModularUI
[!INFO] Minecraft 1.7.10 / Forge 10.13.4.1614 | modid
modularui
ModularUI(GTNewHorizons 开发)是 1.7.10 上的声明式 GUI 界面库,供其他模组构建 统一风格的容器界面。定性为「界面库」成立,但需补充两点:它有一个仅开发环境可见的方块, 并且不提供任何多方块结构。
- modid:
modularui(ModularUI.MODID) - 类:
com.gtnewhorizons.modularui.ModularUI @Mod:acceptedMinecraftVersions = "[1.7.10]"、guiFactory = com.gtnewhorizons.modularui.config.GuiFactory- 依赖:
required-after:gtnhmixins@[2.0.1,);required-after:NotEnoughItems@[2.3.50-GTNH,);after:hodgepodge@[2.0.0,);after:gtnhlib@[0.2.7,);before:gregtech
游戏内容
[!IMPORTANT] 默认配置下 ModularUI 注册 0 个方块、0 个物品、0 个实体。
源码中唯一的
GameRegistry.registerBlock/registerTileEntity位于CommonProxy.preInit,被条件包住:if (ModularUI.isDevEnv || Config.forceEnableDebugBlock) { testBlock = new TestBlock(Material.rock)...; GameRegistry.registerBlock(testBlock, "testBlock"); GameRegistry.registerTileEntity(TestTile.class, "TestTileEntity"); }
isDevEnv取自Launch.blackboard.get("fml.deobfuscatedEnvironment"),正式 GTNH 客户端为false;forceEnableDebugBlock默认为false。两条都不成立时该方块不存在, 因此不为其建立方块条目——否则会把一个开发用占位方块写成正式内容。
多方块结构
本 mod 无多方块结构。 全仓 IMultiblock / multiblock 零命中。
设置列表
- 配置文件 - 6 个分类共 13 个配置项(
config/modularui.cfg)
界面 API
api/widget/ 下共 12 个顶层类型,构成库的公开接口:
Widget(基类)、IWidgetBuilder、IWidgetDrawable、IWidgetParent、IDraggable、
IDragAndDropHandler、IHasStackUnderMouse、ISyncedWidget、IVanillaSlot、
Interactable、FluidInteractionUtil,以及 api/widget/scroll 子包。
配套能力包:api/drawable(含 shapes)、api/animation、api/math、api/screen、
api/fluids、api/forge。
容器与窗口构建入口为静态方法:
ModularUI.createContainer(EntityPlayer, Function<UIBuildContext, ModularWindow>, Runnable)
与客户端版 ModularUI.createGuiScreen(...)。
网络
NetworkHandler 使用 newSimpleChannel("modularui"),共注册 2 个包:
| 方向 | 包 | Handler |
|---|---|---|
| S2C | SWidgetUpdate |
S2CHandler |
| C2S | CWidgetUpdate |
C2SHandler |
包 ID 由 private static int packetId 自增分配(S2C=0,C2S=1)。
提供 sendToServer / sendToWorld(按维度 ID)/sendToPlayer 三个发送方法。
NEI 集成
integration/nei/ModularUIContainerObjectHandler.java 为 NEI 提供容器对象处理。
NEI 在 @Mod 声明中是 required-after 硬依赖。
相关分类
- unimixins - 承载硬依赖
required-after:gtnhmixins@[2.0.1,) - gtnhlib
- hodgepodge
- gregtech
- modularui2
[!NOTE] 另一硬依赖
required-after:NotEnoughItems@[2.3.50-GTNH,)(NEI 本体)不在本 wiki 收录范围: relation.md 只登记了 NEI 的附属(nei-integration、neiaddons、nei-custom-diagram、nei-recipe-panels),没有 NEI 本体的分类。