Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,19 @@ way to 1.0.0; see [docs/ROADMAP.md](docs/ROADMAP.md).

## [Unreleased]

## [1.1.0-beta.8.1] - 2026-11-06

A hotfix for the Forge 26.3 jar, with no other changes. Worlds from 1.1.0-beta.8 load as before, and
the network protocol is unchanged. Betas are not uploaded to CurseForge.

### Fixed

- Released jars were missing files the game needs, because the list of files allowed into the jar was
written by hand and never kept up: the equipment recipes (since 1.1.0-beta.4), the thermal view's
post effect and shader (since beta.5), and the smoke particle and the drafting table's recipe, model
and block state (since beta.6). Development runs read the source folders, so they hid it. The list now
comes from the repository's resource folders.

## [1.1.0-beta.8] - 2026-11-06

Phase 12 of the road to 1.1.0: the second half of the vehicle workshop. Betas are not uploaded to
Expand Down Expand Up @@ -705,6 +718,7 @@ Phase 1: foundation and flyable helicopters.
- Free look moved from Left Ctrl to Left Alt, because Left Ctrl is now the vanilla sprint key.
- Roll damping runs per tick instead of per frame, so handling no longer depends on frame rate.

[1.1.0-beta.8.1]: https://github.com/JnH-Projects/MCHeli-Rework-Forge/releases/tag/v1.1.0-beta.8.1
[1.1.0-beta.8]: https://github.com/JnH-Projects/MCHeli-Rework-Forge/releases/tag/v1.1.0-beta.8
[1.1.0-beta.7]: https://github.com/JnH-Projects/MCHeli-Rework-Forge/releases/tag/v1.1.0-beta.7
[1.1.0-beta.6]: https://github.com/JnH-Projects/MCHeli-Rework-Forge/releases/tag/v1.1.0-beta.6
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ MCHeli Rework is a ground-up port of MCHeli 1.0.3, a mod that stopped at Minecra
system is rewritten for the modern game, while the original vehicle definitions, models,
textures and sounds load unchanged.

> **Status:** on the way to 1.1.0, now at phase 12 (`1.1.0-beta.8`). Every helicopter, plane,
> **Status:** on the way to 1.1.0, now at phase 12 (`1.1.0-beta.8.1`). Every helicopter, plane,
> tank, car and ground vehicle can be placed, crewed and driven with the original handling, all
> 229 weapons fire, and the scripted HUDs, fuel, the vehicle screen and all of the original's
> equipment are in, down to UAV stations, the drafting table and the team manager. The vehicle
Expand Down
12 changes: 7 additions & 5 deletions docs/DEVELOPMENT.md
Original file line number Diff line number Diff line change
Expand Up @@ -179,17 +179,19 @@ releases page. See [the release channels](ROADMAP.md#release-channels).
## Original content

Neither the repository nor the jar may contain EMB4's files. Don't commit anything from the zip
or from `run/mcheli/imported`. As a guard, the `jar` task excludes everything under
`assets/mcheli` except `lang`, the four fallback item models of the generic vehicle items and
the night glow particle (`particles/glow.json`, `textures/particle/glow.png`, both our own).
or from `run/mcheli/imported`. As a guard, the `jar` task leaves out anything under `assets/mcheli`
or `data/mcheli/recipe` that the resource folders of `common` and `minecraft-<version>` do not hold,
such as copies left in the build output by an older build or the IDE. So what is committed there
ships, and anything added there is ours to redistribute.

After a build, check every jar with:

```
for jar in build/release/*.jar; do unzip -l "$jar" | grep -v "com/"; done
```

which should list only the manifest, `mods.toml`, `pack.mcmeta`, the two lang files, the four
generic item models, the glow particle and its texture, and the damage type data.
which should list only the manifest, the loader's metadata, `pack.mcmeta`, and the files in those
resource folders.

When the conversion changes, change `content.LegacyImporter` and bump its `FORMAT`, so existing
installs, the dev run and the tests all convert again. Keys the rework adds go into the lang files
Expand Down
1 change: 1 addition & 0 deletions docs/ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ Rules that hold for every beta:
| 10 | `1.1.0-beta.6` | The rest of the equipment (Forge 26.3 only) | Released |
| 11 | `1.1.0-beta.7` | Workshop: model, parts and tuning (Forge 26.3 only) | Released |
| 12 | `1.1.0-beta.8` | Workshop: textures, sounds and sharing (Forge 26.3 only) | Released |
| | `1.1.0-beta.8.1` | Hotfix: the files missing from the released jars | Released |
| 13 | `1.1.0-beta.9` | Every loader on every supported version, 1.19.4 to 26.3 | Planned |
| | `1.1.0` | Release on CurseForge | Planned |

Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ net.minecraftforge.gradle.merge-source-sets=true
mod_id=mcheli
mod_name=MCHeli Rework
mod_group=com.jnhprojects.mcheli
mod_version=1.1.0-beta.8
mod_version=1.1.0-beta.8.1
mod_authors=JayMar921 (rework), EMB4 (original author), Fureniku (CurseForge maintainer)
mod_license=MCHeli Rework Licence 1.0 (see LICENSE)

Expand Down
21 changes: 14 additions & 7 deletions gradle/loader.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -70,20 +70,27 @@ tasks.named('processResources', ProcessResources) {
}
}

// What the repository holds under its resource folders is ours and ships. Worked out from the
// folders, because a hand-written list misses every file added later and nothing shows it:
// development runs read the source folders, so only a real jar lacked them (betas 4 to 8 shipped
// without the equipment recipes, the thermal shader, the smoke particle or the drafting table model).
def ownResources = [] as Set<String>
if (!scaffold) {
[project(':common').file('src/main/resources'),
rootProject.file("minecraft-${minecraft_version}/src/main/resources")].each { root ->
fileTree(root).visit { if (!it.directory) ownResources << it.relativePath.pathString }
}
}

tasks.named('jar', Jar) {
// EMB4's content is never redistributed: players import it from their own copy of the original
// zip (LegacyContent). The repository no longer holds it, but the jar is packed from the
// resource output, which can still have copies from older builds and from the IDE.
def shipped = ['assets/mcheli/items/helicopter.json', 'assets/mcheli/items/plane.json',
'assets/mcheli/items/tank.json', 'assets/mcheli/items/vehicle.json',
// Our own: the night glow sprite (generated, no EMB4 content) and its particle definition.
'assets/mcheli/particles/glow.json', 'assets/mcheli/textures/particle/glow.png']
exclude { FileTreeElement element ->
String path = element.relativePath.pathString
!element.directory && path.startsWith('assets/mcheli/') && !path.startsWith('assets/mcheli/lang/') &&
!shipped.contains(path)
!element.directory && (path.startsWith('assets/mcheli/') || path.startsWith('data/mcheli/recipe/')) &&
!ownResources.contains(path)
}
exclude 'data/mcheli/recipe/**'
includeEmptyDirs = false
// The licence travels with every copy of the jar.
from(rootProject.file('LICENSE'))
Expand Down
Loading