Repository navigation
Releases
Releases · UpperMoon0/CreateHorsePower-CE
Create Horse Power - CE v1.2.11
Create Horse Power CE 1.2.11
Forward-compatible dependency metadata
- Replace hard upper bounds on Create and exact-version restrictions on optional Icy's Better Horses with minimum-only loader ranges on Forge and NeoForge.
- Keep the minimum Create release at 6.0.8 and Icy API baseline at 2.1.7, without rejecting newer mod releases by version number alone.
- Preserve exact Minecraft target versions because the Forge and NeoForge artifacts are compiled against distinct game APIs. Existing Forge and NeoForge loader ranges were already minimum-only.
- Add a release-jar verifier requirement that all non-Minecraft mod/loader dependencies have no upper bound, including future declared dependencies.
- Update the opt-in Icy compatibility test artifacts to published 2.1.8 for both loaders; Gradle artifacts remain fixed for reproducible CI while runtime metadata stays open-ended.
Verification
- On-prem-1 validation with published Icy 2.1.8 passed 32/32 required GameTests on both Forge and NeoForge, after changing the dependency metadata. Both loader builds, unit tests and release-jar dependency verifiers also passed.
- This policy permits future updates to load; it does not claim untested upstream API changes are compatible. CI and release acceptance must still exercise exact test binaries.
Create Horse Power - CE v1.2.10
Create Horse Power CE 1.2.10
Create: Bionics compatibility
- Add optional Oxhauler worker support for Forge 1.20.1 (Bionics source version 2.0.0) and NeoForge 1.21.1 (released Bionics 2.5.0), with no hard dependency in normal builds.
- Require complete assembly, fuel, and unoccupied/unsubmerged movement. Spend exactly one finite fuel unit per active crank tick and fail closed when the upstream setter fails.
- Exempt assembled robots from livestock-only taming policy; route NeoForge tool-part lead interactions through the normal player item lifecycle, retaining creative refunds and final survival lead destruction events.
- Upgrade NeoForge Create to 6.0.9, the minimum required by published Bionics 2.5.0.
- Guard the upstream Forge Oxhauler's client-only Create ambient sound helper on logical servers. The original Forge source calls this from its unconditional entity tick and crashes on unloaded client config in the dedicated-server test runtime; CE's optional mixin skips only server-side ambience, not real robot ticking or fuel/movement.
Verification and release limitations
- Add isolated two-loader real Bionics GameTests and a separate-process restart CI lane, with explicit mod-version, test-count, and evidence checks; normal installations remain Bionics-free.
- Forge 2.0.0 currently has upstream source code but no verified official published binary: CI builds the exact pinned source commit instead. This is not equivalent to verifying an official released Forge jar.
- Client multiplayer raycast and packet-level plough/harvester hitbox verification requires dedicated client acceptance; do not claim this is covered by headless server GameTests.
Create Horse Power - CE v1.2.9
Create Horse Power CE 1.2.9
Icy's Better Horses compatibility
- Added optional compatibility with Icy's Better Horses 2.1.7 on Forge 1.20.1 and NeoForge 1.21.1, recognizing all fifteen released horse breeds.
- Respect Icy ownership and trusted players, prevent competing rider/cart/wagon control, and release crank control after successful recall, send-home and revival while preserving assignments when commands fail.
- Preserve worker identity, original AI state and attachment item disposition across replacement, delayed leash restoration, chunk unloading and world restarts.
- Honor settled no-drop decisions during snapshot recall and cross-dimension recovery while preserving unrelated detach records.
- Retain normal individual-stat balance: inherited movement speed affects RPM, maximum health affects stress capacity, and Icy's existing bond speed modifier is counted once. Jump strength does not add crank power.
Regression coverage
- Added real-Icy checks for every breed's bond thresholds, repeated/reset bond changes, actual offspring inheritance, independent speed/health output, and serialized inherited/bonded stat recovery without modifier stacking.
- Verify that an actively ticking crank refreshes bond-driven RPM and health-driven stress capacity, preserves its worker and orbit, and returns to baseline when those stats are restored.
- Compatibility acceptance, lifecycle, public commands, packaging and separate-process restart checks cover both supported loaders. Client visuals and player-driven UI remain manual acceptance.
Create Horse Power - CE v1.2.8
Create Horse Power CE 1.2.8
Restart and chunk-load recovery
- Preserve assigned workers while entity storage or saved vanilla leashes are still loading. Missing-attachment grace now follows actual worker ticks instead of crank ticks, without force-loading worker chunks.
- Keep saved worker positions synchronized and migrate older stale assignment coordinates so chunk-boundary recovery uses the latest known position.
- Reconcile saved crank generation through Create’s normal shutdown before the first kinetic validation. This prevents a reproduced load-order speed-cycle conflict that could break an adjacent cogwheel while workers were still resolving, without bypassing Create’s protection against genuine rotation conflicts.
- Preserve saved generation directions, avoid power from unresolved workers, and retain normal broken-leash and missing-worker cleanup.
Regression coverage
- Added cross-loader coverage for delayed leash restoration, unloaded and genuinely missing workers, legitimate detach behavior, and complete saved kinetic network reconstruction in both load orders.
- Verify every network node, worker assignment, saved direction, pending output, and real-source capacity, including mixed resolved and unresolved workers.
- Corrected interaction-test structure bounds so chunk-edge test origins cannot hide the selected worker.
These fixes prevent the covered restart failures; they do not automatically reclaim ownership that an older version has already erased. Reattach affected workers normally before testing a healthy saved setup.
Create Horse Power - CE v1.2.7
Create Horse Power CE 1.2.7
Animal-power data/runtime foundation
- Added cross-loader data-driven attachment profiles with exact item/tag selectors, worker/machine restrictions, backend-safe persistence/recovery, radius limits, consumption/drop policy, and output multipliers.
- Attachment ownership now rejects cross-machine steals before mutating leashes, vanilla-leash profiles bind only the selected worker instead of batch-moving unrelated leashables, and consumed attachments preserve their full per-stack NBT/data-component state when returned.
- Extracted the Horse Crank's single-worker lifecycle behind a reusable animal-power engine and added bounded assignment persistence/migration groundwork while preserving legacy Horse Crank NBT/runtime behavior. Multi-worker lifecycle/output semantics remain follow-up work.
- Added exact per-machine worker-stat overrides with field inheritance and deterministic profile-source precedence, including loader-neutral worker-profile datapack JSON on Forge/NeoForge and the NeoForge KubeJS startup-profile map API.
- Ported Forge recipes/tags datagen, switched Forge shared datapack resources from hand-maintained JSON to generated output, and added generated-output parity/drift gates.
Release-readiness and packmaker surfaces
- Fresh 1.2+ server configs now leave legacy path lists empty so bundled path profiles are not shadowed (dirt
0.70, gravel1.10); upgraded 1.1 files keep their stored path entries. - Added shared
createhorsepower/worker_profilesdatapack JSON on both loaders, including machine overrides and deterministic priority/tie handling. - Attachment JSON parsing, shared worker JSON, fresh-default path behavior, and NeoForge KubeJS machine overrides now have parser/source-boundary regression coverage.
- KubeJS worker-profile maps reject unknown top-level or machine-override keys instead of silently ignoring snake_case keys; public docs now show the exact camelCase scripting schema.
- README/CurseForge/packmaker docs now distinguish bundled vanilla-lead gameplay from pack-supplied
harness,yoke, andvirtual_tetherframework modes and use the unified changelog path.
Create Horse Power - CE v1.2.6
Create Horse Power - CE 1.2.6
Fixes
- Fixed NeoForge path output being applied twice after the
pathEvaluatedKubeJS hook. With KubeJS installed and no listener registered, a Great path could incorrectly turn a2.0xRPM multiplier into4.0x, and non-neutral stress multipliers could likewise be squared. - Defined
pathEvaluatedspeed/stress values as final absolute path multipliers. Scripts may still replace them withsetSpeedMultiplier()/setStressMultiplier(), but the crank now assigns the returned final values instead of multiplying them again. - Fixed NeoForge path effects being lost when KubeJS is not installed. The no-KubeJS
firePathEvaluatedfallback now preserves the evaluator's absolute speed/stress multipliers instead of replacing them with neutral1.0xvalues. - Preserved Forge behavior by keeping the common no-op script hook aligned with the evaluator's existing path multipliers.
Regression coverage
- Added discriminating evaluator coverage for
LEGACY,WORST_BLOCK, andWEIGHTED_AVERAGEusing a mixed custom path whose expected speed and stress outputs differ by mode. - Added coverage proving disabling path stress scaling leaves RPM, validity, coverage accounting, and efficiency unchanged while neutralizing only the final path stress multiplier.
- Added coverage proving the stress toggle cannot bypass minimum path coverage.
- Added Forge 1.20.1 and NeoForge 1.21.1 crank GameTests for the production-shaped case: 16 base RPM / 32 base SU on a Great path keeps the
2.0xRPM path bonus while final stress remains exactly 32 SU. - Added a NeoForge no-KubeJS regression verifying
OptionalIntegrations.firePathEvaluated()preserves a2.0xspeed /1.10xstress result unchanged. - Retained the NeoForge KubeJS-present runtime regression so both optional-integration branches are covered.
Create Horse Power - CE v1.2.5
Create Horse Power - CE 1.2.5
Balance configuration
- Added
path.enableStressScalingto control path-based stress-capacity scaling independently from path RPM scaling. - The option defaults to
true, preserving existing behavior for current worlds and modpacks. - When disabled, path quality still controls RPM, validity, coverage, and path-efficiency behavior, but the path stress multiplier is fixed at
1.0so a worker configured for 32 SU remains at 32 SU on Poor, Normal, or Great paths. balance.enableIndividualAnimalStatscontinues to control only animal movement-speed/max-health bonuses; path stress scaling is now explicitly configurable instead of being coupled to path quality.
Verification
- Added regression coverage proving the default policy preserves the existing 0.90x/1.00x/1.10x path stress multipliers.
- Added regression coverage proving the disabled policy neutralizes Poor/Normal/Great path stress multipliers to 1.00x.
Create Horse Power - CE v1.2.4
Create Horse Power - CE 1.2.4
Verification
- Added two worker-first recovery regression scenarios for issue #4, each mirrored across Forge 1.20.1 and NeoForge 1.21.1.
- The live-owner regression proves recovery remains queued while the recorded crank chunk is unavailable, never force-loads that chunk, and preserves attachment plus AI-suppression ownership and
NoAI=truewhen the matching crank becomes available later. - The complementary orphan regression proves the same deferred worker-first ordering recovers immediately once the delayed chunk becomes inspectable with no matching owner: stale attachment/activity ownership is cleared and the worker's original
NoAI=falsestate is restored before the 1200-tick timeout. - Both worker-first regressions now rely on the real loader
EntityJoinLevelEventhook to enqueue the reloaded worker instead of manually scheduling recovery from the test. - Together these regressions close the remaining coverage gap around the recovery behavior introduced in 1.2.1; no worker-recovery gameplay semantics are changed in this release.
Release infrastructure
- Consolidated changelogs to one shared file per mod version at
changelog/<mod_version>.mdinstead of duplicating files per Minecraft version. - Migrated historical changelogs to the shared naming scheme.
- CI now validates the shared changelog contract before loader builds.
- GitHub Release and both CurseForge uploads now consume the same shared changelog file.
Create Horse Power - CE v1.2.3
See changelog: Create Horse Power - CE 1.2.3
Create Horse Power - CE v1.2.2
See changelog: Create Horse Power - CE 1.2.2