CTPP (CT++) is the Create/GregTech compatibility module. It defines kinetic/electric machines, Create fan catalyst recipes, custom recipe builders, generated data, and GTCEu addon registration under mod id ctpp.
- Mod entry:
src/main/java/com/mo_guang/ctpp/CTPP.java. Forge mod initialization. - GT addon:
src/main/java/com/mo_guang/ctpp/CTPPGTAddon.java. GTCEu integration. - Registrate:
src/main/java/com/mo_guang/ctpp/CTPPRegistrate.java,CTPPRegistration.java. Core registration helpers. - API:
src/main/java/com/mo_guang/ctpp/api/. Recipe capabilities, multiblock builder, predicates, parallel logic. - Recipes/datagen:
src/main/java/com/mo_guang/ctpp/common/data/recipe/. Recipe builders/providers. - Models:
src/main/java/com/mo_guang/ctpp/common/data/model/. Machine model generation. - Generated resources:
src/generated/resources/data/ctpp/recipes/. Fan catalyst and machine recipe output. - Static resources:
src/main/resources/assets/ctpp/. Hand-authored models/assets.
- Registrate/root:
CTPPRegistration.java,CTPPRegistrate.java; mod/addon entrypoints areCTPP.javaandCTPPGTAddon.java. - Items/blocks/entities:
registry/CTPPItems.java,registry/CTPPBlocks.java,CTPPEntityTypes.java. - Machines/multiblocks:
registry/CTPPMachines.java,registry/CTPPMultiblockMachines.java, builder support inapi/CTPPMultiblockBuilder.java. - Materials:
registry/CTPPMaterials.java,registry/GTMaterialAddon.java. - Recipe types/modifiers/capabilities/conditions:
registry/CTPPRecipeTypes.java,CTPPRecipeModifiers.java,api/CTPPRecipeCapabilities.java,api/CTPPRecipeConditions.java. - Recipe generation:
CTPPGTAddon.addRecipes()callscommon/data/recipe/CTPPRecipes.java; specific Create/kinetic recipes live undercommon/data/recipe/andcommon/data/recipe/builder/. - Datagen/fan processing:
data/CTPPDatagen.java,common/data/recipe/fan_processing/.
CTPP defines two recipe-type families: GT-style GTRecipeType for kinetic/electric machines, and Create-style ProcessingRecipe for fan catalyst processing.
Registered via CTPPRegistration.REGISTRATE.recipeType(...). Kinetic types use StressRecipeCapability (key "su", Float) instead of EU, with RPMCondition + MechanicalTierCondition.
| Constant | Registry ID | 中文 | Group | I/O items | I/O fluids | Notes |
|---|---|---|---|---|---|---|
KINETIC_MIXER_RECIPES |
kinetic_mixer |
应力搅拌 | KINETIC | 6/1 | 2/1 | Commented out |
SMASHING_FACTORY_RECIPES |
smashing_factory_recipes |
粉碎工厂 | KINETIC | 1/4 | 0/0 | Auto-gen from MACERATOR_RECIPES; strips chanced outputs; reads tier/voltage limits from config |
KINETIC_GENERATOR_RECIPES |
kinetic_generator |
应力发电 | KINETIC | 0/0 | 1/0 | Stress → EU |
KINETIC_STEAM_TURBINE_RECIPES |
kinetic_steam_turbine |
蒸汽动力 | KINETIC | 0/0 | 1/1 | Steam → EU |
SEAWEED_FARM |
seaweed_farm |
海草养殖 | ELECTRIC | 2/4 | 0/1 | Multiblock |
WINDMILL_CONTROL |
windmill_control_center |
风车控制中心 | ELECTRIC | 0/0 | 1/0 | Multiblock |
BOOM_OF_CREATE |
boom_of_create |
聚爆应力 | KINETIC | 1/0 | 1/0 | EU IN, explosive catalyst → stress |
BIG_DAM |
big_dam (GTCEu namespace) |
三峡大坝 | ELECTRIC | 0/0 | 1/0 | Registered under GTCEu.id(...) |
Uses IRecipeTypeInfo / ProcessingRecipe from Create. Registered as DeferredRegister entries under ctpp namespace.
| Enum | ID | Max In/Out | Purpose |
|---|---|---|---|
BREATHING |
ctpp:breathing |
1/12 | Fan blowing catalyst |
ACIDWASHING |
ctpp:acidwashing |
4/12 | Fan washing - acid catalyst |
OILING |
ctpp:oiling |
1/12 | Fan processing - oil catalyst |
CTPP wraps Create and addon recipe types with datagen-friendly builders. These are NOT new recipe types; they produce standard Create/addon recipe JSON.
Create vanilla (9 builders) — direct JSON builders with "type": "create:<name>":
| Builder | Recipe type | Notes |
|---|---|---|
CompactingRecipeBuilder |
create:compacting |
item/fluid I/O, heated/superheated |
CrushingRecipeBuilder |
create:crushing |
item I/O with chanced outputs per entry |
CuttingRecipeBuilder |
create:cutting |
item I/O |
ItemApplicationRecipeBuilder |
create:item_application |
item I/O (deployer-style) |
MechanicalCraftingRecipeBuilder |
create:mechanical_crafting |
shaped pattern with key |
MillingRecipeBuilder |
create:milling |
item I/O with chanced outputs per entry |
MixingRecipeBuilder |
create:mixing |
item/fluid I/O, heated/superheated |
SequencedAssemblyRecipeBuilder |
create:sequenced_assembly |
multi-step (filling, pressing, deploying, cutting, curving) |
SplashingRecipeBuilder |
create:splashing |
item I/O |
Create Diesel Generators (2 builders) — use ProcessingRecipeBuilder<>:
| Builder | Target recipe class | Mod |
|---|---|---|
BasinFermentingRecipeBuilder |
BasinFermentingRecipe |
createdieselgenerators |
DistillationRecipeBuilder |
DistillationRecipe |
createdieselgenerators |
Create Metallurgy (5 builders) — use mod-specific builder APIs:
| Builder | Target recipe class / type | Mod |
|---|---|---|
AlloyingRecipeBuilder |
AlloyingRecipe (via ProcessingRecipeBuilder) |
createmetallurgy |
BulkMeltingRecipeBuilder |
BulkMeltingRecipe (via FoundryRecipeBuilder) |
createmetallurgy |
CastingInBasinRecipeBuilder |
CMRecipeTypes.CASTING_IN_BASIN (via CastingRecipeBuilder) |
createmetallurgy |
CastingInTableRecipeBuilder |
CMRecipeTypes.CASTING_IN_TABLE (via CastingRecipeBuilder) |
createmetallurgy |
MeltingRecipeBuilder |
MeltingRecipe (via ProcessingRecipeBuilder) |
createmetallurgy |
Vintage Improvements (7 builders) — extend AbstractVintageRecipeBuilder, use VintageRecipes enum:
| Builder | VintageRecipes enum | Notes |
|---|---|---|
CentrifugationRecipeBuilder |
CENTRIFUGATION |
item/fluid I/O, RPM, heat |
CoilingRecipeBuilder |
COILING |
item/fluid I/O, RPM, heat |
CurvingRecipeBuilder |
CURVING |
item/fluid I/O, RPM, heat |
HammeringRecipeBuilder |
HAMMERING |
item/fluid I/O, RPM, heat |
PressurizingRecipeBuilder |
PRESSURIZING |
item/fluid I/O, RPM, heat |
TurningRecipeBuilder |
TURNING |
item/fluid I/O, RPM, heat |
VibratingRecipeBuilder |
VIBRATING |
item/fluid I/O, RPM, heat |
- Capability
StressRecipeCapability("su"key, Float) — kinetic stress I/O for GT recipes; drives parallel calculation inKineticWorkableMultiblockMachine/KineticOutputMachine. - Conditions
RPMCondition("rpm") andMechanicalTierCondition("mechanical_tier") — RPM/tier requirements on kinetic recipes. - Modifiers
KINETIC_PARALLEL(stress-multiplier + accurate parallel) andKINETIC_PERFECT_PARALLEL(perfect parallel variant) — both targetKineticWorkableMultiblockMachine. - Recipe builder
CTPPRecipeBuilderextendsGTRecipeBuilderwith.rpm(float),.tier(int),.inputStress(float),.outputStress(float),.noEUt().
- Namespace is
com.mo_guang.ctpp; class prefixes useCTPP. src/generated/resourcescontains many Create/Forge/Minecraft tag outputs from datagen.- Static machine part models also exist under
src/main/resources; check path before regenerating or editing.
./gradlew :modules:CTPP:build
./gradlew :modules:CTPP:runData
./gradlew :modules:CTPP:spotlessCheck- Do not treat all recipe JSON as equivalent: fan catalyst/generated outputs and static assets live in different source roots.
- Do not change kinetic/electric machine tiers without checking both registry code and generated models/recipes.