Minecraft 1.21.1 mod using NeoForge 21.1.265, ModDevGradle, and Java 21.
Root Java package: zone.moddev.mc.electricadvantage.
Required dependencies (compile and development runtime), all from the
ModDevZone Maven (https://maven.moddev.zone/releases):
zone.moddev.mc.lib:mmdlib:2.0.0.12102+Neo(MMDLib 2.0)zone.moddev.mc.poweradvantage:PowerAdvantage:3.1.1.121012+Neo(Power Advantage 3.1)zone.moddev.mc.orespawn:OreSpawn:4.1.0.121012(MMD OreSpawn 4)
Dependency versions are set in gradle.properties. These
dependencies are not bundled into the mod JAR. Install them alongside
Electric Advantage in a regular Minecraft instance.
Use Java 21 and the checked-in Gradle wrapper:
./gradlew build
./gradlew runClient
./gradlew runServer
./gradlew runDataThe dedicated server requires accepting Minecraft's EULA in run/eula.txt.
Build artifacts are written to build/libs/.
The build follows the MMD mod template. GitHub Actions builds every push and
pull request. Pushing a tag publishes a release. The tag is the mod version,
formatted as major.minor.bug followed by the Minecraft version without dots
and a loader digit (2 for NeoForge); for example, 3.0.0.121012. Local
builds are versioned <mod_version>-development. On a tag, the publish
workflow uploads to the ModDevZone Maven if the MAVEN_UPLOAD_URL,
MAVEN_UPLOAD_USERNAME, and MAVEN_UPLOAD_PASSWORD secrets are set. It also
creates a GitHub release. It uploads to CurseForge (project curseforge_id in
gradle.properties) when the CURSEFORGE_TOKEN secret is set. Add each
release to update.json so NeoForge's update checker can announce it.
All 17 electronics/material and battery items and the seven ore/infrastructure blocks are implemented with textures, translations, tags, and initial recipes. Lithium and sulfur use restricted MMDLib material definitions; other components use standalone definitions. See material selections and ID mapping. All batteries use the same MMDLib-backed energy core; see batteries. Cable/scaffold/switch electricity transport uses the PA3 shared transport core; LED lighting, generated pump pipe, and OreSpawn 4 deposit generation are implemented. See infrastructure behavior and verification. Four generation/storage machines now share data-driven settings and MMDLib XML screens; see generation and storage. The furnace, crusher, oven, distiller and refinery now share a processing core; see processing behavior and remaining machines. The Growth Chamber and its Control Unit are redesigned data-driven greenhouse machines; see growth chamber and control unit. The Electric Pump extends its pipe, traces connected fluid and treats large water/lava bodies as infinite; see electric pump. The Laser Turret and its hidden player-targeting variant are ported from EA2; see laser turret. The Electric Mining Drill is ported from EA2: it mines 3×3 faces and moves along Electric Scaffold; see electric drill. Conditional recipes require compatible material tags; remaining automation machines and complete survival acquisition remain pending. Track implementation and verification in TODO.md.
Run the isolated server integration test (excluded from release JARs):
./gradlew -PgameTests runGameTestServerEA2/ is an untouched archive for reference only; it is not
included as a Gradle project or source directory.
Validate model parents and inherited texture paths with python3 scripts/validate_resources.py.