CTNH-Lib is the shared support module for CTNH code. It contains common proxies, registrate builder wrappers, dynamic datapack helpers, language annotations, shared Ponder support, right-side configurator UI, Jade priority infrastructure, and client highlight networking.
- Mod entry:
src/main/java/tech/vixhentx/mcmod/ctnhlib/CTNHLib.java. Library mod initialization. - Registrate helpers:
src/main/java/tech/vixhentx/mcmod/ctnhlib/registrate/.CNRegistrate, networking, builder wrappers. - Builder APIs:
src/main/java/tech/vixhentx/mcmod/ctnhlib/registrate/builders/. Shared block/item/machine/material/recipe builders. - Dynamic data:
src/main/java/tech/vixhentx/mcmod/ctnhlib/data/.CTNHDynamicDataPackandDataFilterPackprovide runtime datapack/filter support. - Shared GUI:
src/main/java/tech/vixhentx/mcmod/ctnhlib/client/gui/.RightConfiguratorPanel,RCUIWidget, and provider interfaces used by Core/Energy machine UIs. - Highlight rendering:
src/main/java/tech/vixhentx/mcmod/ctnhlib/client/render/highlight/,network/packets/BlockHighlightPacket.java. Client block highlight renderer and packet path. - Jade priority:
src/main/java/tech/vixhentx/mcmod/ctnhlib/jade/. Ordered GT provider registration throughJadePriorityManagerandGTProvidersRegistrar. - Ponder framework:
src/main/java/tech/vixhentx/mcmod/ctnhlib/client/ponder/CTNHPonderSceneBuilder.javaandCTNHPonderLang.java. Provides shared baseplate/camera helpers,title/showTextbilingual text registration via module-suppliedLangRegistrar, and shared Ponder scene lang extraction for datagen. - Lang annotations:
src/main/java/com/ctnhlang/.@CN,@EN, category/domain annotations. - Mixins:
src/main/java/tech/vixhentx/mcmod/ctnhlib/mixin/. GT Jade provider ordering, GT recipe/machine builder adjustments, TMRV compatibility, and Forge datagen shutdown behavior.
- Registrate API:
registrate/CNRegistrate.javaextends GTCEuGTRegistrateand provides CTNH item/block/entity/recipe helpers. - Builders:
registrate/builders/CTNHItemBuilder.java,CTNHBlockBuilder.java,CTNHEntityBuilder.java,CTNHMachineBuilder.java,CTNHMultiblockMachineBuilder.java,CTNHRecipeType.java,CTNHMaterial.java,CTNHTagPrefix.java. - Runtime helper item:
common/CommonProxy.javaregistersMultiblockHelperthrough GTCEu's registrate. - Common proxy:
common/CommonProxy.javainitializesGTProvidersRegistrar,CTNHLibNetworking, registers the runtime helper item, and adds thectnhlib:filter_dataserver data pack source. - Networking/datapack:
registrate/CTNHLibNetworking.java,data/CTNHDynamicDataPack.java,data/DataFilterPack.java. - Jade infrastructure:
jade/GTProvidersRegistrar.javaloads ordered GT providers;jade/JadePriorityManager.javalets feature modules register/unregister block data and component providers with explicit priority. - Right configurator UI:
client/gui/RightConfiguratorPanel.java,IRCFancyUIProvider.java,RCUIWidget.java; Core/Energy part machines attach right-side widgets through this shared surface. - Highlight system:
client/ClientProxy.javahooks render-level events intoclient/render/highlight/HighlightRender.java; packets usenetwork/packets/BlockHighlightPacket.java. - Lang/datagen support:
registrate/lang/RegistrateCNLangProvider.javaandcom.ctnhlang.*annotations. - Ponder support:
client/ponder/CTNHPonderSceneBuilder.javais reusable scene infrastructure andCTNHPonderLang.javais reusable datagen lang extraction; modules pass their mod id and registrate lang callback from adapter builders and pass their ownPonderPlugintoCTNHPonderLang.init(...). - Do not add normal gameplay items/blocks here; add shared registration helpers only.
- Main library namespace is
tech.vixhentx.mcmod.ctnhlib; lang annotation namespace iscom.ctnhlang. - Resource count is intentionally tiny compared with gameplay modules.
- Changes here can affect all CTNH modules through shared builders, annotations, Jade provider ordering, right configurator UI, highlight packets, and shared Ponder support.
./gradlew :modules:CTNH-Lib:build
./gradlew :modules:CTNH-Lib:runData
./gradlew :modules:CTNH-Lib:spotlessCheck- Do not add gameplay-specific logic to CTNH-Lib unless it is genuinely shared.
- Do not move module-specific Ponder scene/tag/plugin code or Energy's AE2 cable helper into CTNH-Lib.
- Do not rename lang annotations without checking the custom
com.ctnhlang.langproviderplugin usage. - Do not bypass
JadePriorityManagerfor GT provider ordering; CTNH modules rely on predictable Jade block data/component priority.