A ready-to-use template for building Create mod addons with Java and NeoForge 1.21.1.
- NeoForge 1.21.1 with Create 6.0.10 dependency
- Create Registrate — Create's registration system, pre-configured
- Ponder & Flywheel — Create's rendering and documentation libraries
- JEI — recipe viewer integration (optional, compile-only)
- Mixin support — pre-configured mixins
- GitHub Actions — automatic builds on push/PR
- Gradle 8.10 with configuration cache enabled
The template ships small examples of the most common Create addon
additions. All of their recipes and assets are produced by data generation
(./gradlew runData) into src/generated/resources — nothing is hand-written.
-
SU-consuming kinetic block + goggle overlay —
content/kinetics/ExampleKineticBlock+ExampleKineticBlockEntity. An encased-shaft-style block that joins the kinetic network and draws Stress Units. Its stress impact is registered on the block inAllBlocksviaBlockStressValues.IMPACTS(from the sharedSTRESS_IMPACTconstant). Its model is an inset casing andExampleShaftRendererspins a Create shaft that pokes out of it, so the rotation is actually visible. It overridesaddToGoggleTooltipto add a live "Drawing stress" readout beneath the default kinetic stats. -
Kinetic generator + goggle overlay —
content/kinetics/ExampleGeneratorBlock+ExampleGeneratorBlockEntity. The counterpart source: it adds stress capacity (BlockStressValues.CAPACITIES, registered inAllBlocks) and produces rotation viagetGeneratedSpeed(). Crucially it overridesinitialize()to callupdateGeneratedRotation()— without that a generator never pushes its speed into the network and nothing turns. It sharesExampleShaftRendererand adds custom lines to the Engineer's Goggles tooltip (IHaveGoggleInformation#addToGoggleTooltip). -
Display Link source —
content/display/ExampleDisplaySource+AllDisplaySources. ADisplaySourcethat reports a block's kinetic speed onto a Display Board; attached to the generator inAllBlocksvia.transform(DisplaySource.displaySource(...)). -
Processing recipes —
datagen/Example*RecipeGenfor crushing, milling, pressing, cutting, mixing (heated), compacting, filling & emptying (fluids), and deploying, plus splashing and haunting fan processing. -
Sequenced assembly recipe —
datagen/ExampleSequencedAssemblyGen. An item is processed through a Deployer then a Mechanical Press, looping twice, using a transitional "incomplete" item. -
Ponder plugin —
content/ponder/ExamplePonderPlugin+ExamplePonderScenes. Wires up Create's in-game animated manual for the addon and is registered client-side inExampleMod#onClientSetup. Ships a worked scene driven by theassets/examplemod/ponder/example_ponder.nbtschematic (two Mechanical Arms and a sign), demonstrating base-plate reveal, camera panning, and outlined captions. Its scene text is generated intoen_us.jsonthrough Registrate's lang provider (ExampleMod#registerPonderLang), so it appears after./gradlew runData. -
Create-style item tooltip — the
example_item's tooltip is authored as lang keys inassets/examplemod/lang/default/tooltips.json(.tooltip.summary+.tooltip.condition1/.behaviour1). TheItemDescriptionmodifier set up on the Registrate inExampleModreads them and adds the "Hold Shift" prompt and highlight styling automatically — no customItemclass needed. Wrap words in_underscores_to highlight them. -
Lang: keys in code, copy in JSON — like Create, English strings live in hand-authored partials under
assets/examplemod/lang/default/(interface.json,tooltips.json), whileLangholds only translation keys.datagen/ExampleLangMergermerges the partials into theen_us.jsonthat Registrate generates for block/item names, so./gradlew runDatawrites a single lang file. Add copy by editing a partial (or dropping a new one and listing it inExampleLangMerger) — never by putting English in Java. -
Additional languages —
assets/examplemod/lang/de_de.jsonis a worked German translation. Registrate only generatesen_us, so every other language is a plain static file (exactly how Create ships its Crowdin translations): copy the keys from the generateden_us.json, translate the values, and Minecraft overlays them when that language is selected, falling back toen_usfor any key you leave out. It needs no datagen — the file is loaded as-is. (_underscores_and%splaceholders must be kept in the translation.)
Item models borrow existing vanilla textures so the template builds with no .png
files of its own — swap the textures in AllItems/AllBlocks for your own art.
Use the create-addon-cli tool for quick scaffolding
npm create addon-cli@latest
# or
npx create-addon-cli my-mod --name "Sick Mod"It clones this template and rebrands every Example / examplemod reference to your
mod. The scaffolder lives in its own repo,
create-addon-cli. Skip straight to
Build and run.
Click "Use this template" on GitHub, or clone and rename.
Run the bootstrap task once — it rewrites every Example / examplemod reference,
moves the Java package, renames the Example* classes and the mixin config, and
clears src/generated:
./gradlew renameMod --name "Sick Mod"
# optional overrides:
./gradlew renameMod --name "Sick Mod" --id sickmod --group com.acme.sickmod--id defaults to the name lowercased (sickmod); --group defaults to
com.example.<id>. Commit or stash first — it edits files in place; review the
result with git diff. Once you're happy, delete gradle/rename-mod.gradle and its
apply from: line in build.gradle, then regenerate assets with ./gradlew runData.
Finish up in gradle.properties (author, description, version, license):
mod_version=0.1.0
mod_authors=YourName
mod_description=Your mod description.
mod_license=MITPrefer to rename by hand?
- Edit
mod_id/mod_name/mod_group_idingradle.properties - Rename
src/main/java/com/example/examplemod/to match yourmod_group_id - Update
ExampleMod.java— changeIDto yourmod_id - Rename
src/main/resources/examplemod.mixins.jsonto{mod_id}.mixins.jsonand update thepackagepath inside it
./gradlew build # Build the mod
./gradlew runClient # Launch Minecraft with your mod
./gradlew runServer # Launch a dedicated server
./gradlew runData # Run data generators- Go into your ExampleMod.java class to get a quick overview over what is defined and where exactly.
This template is provided under the MIT License. Your mod built from this template can use any license you choose.