Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
ca01ef0
Add ContentSource, one pack id and assets folder to load definitions …
jaymar921 Oct 29, 2026
7264218
Add PackProblem for content pack errors shown in the log and chat
jaymar921 Oct 29, 2026
474de96
Add PackException for packs that cannot be used
jaymar921 Oct 29, 2026
7255f0c
Read the pack.properties manifest of a content pack
jaymar921 Oct 29, 2026
3380d69
Open and check content packs and compute their content hash
jaymar921 Oct 29, 2026
c6f9c10
Scan the packs folder and report packs that are left out
jaymar921 Oct 29, 2026
dc77d39
Record which content pack a definition came from
jaymar921 Oct 29, 2026
02f8bc4
Load definitions from several sources and collect pack problems
jaymar921 Oct 29, 2026
4bdc0a9
Test loading definitions from several packs and reporting problems
jaymar921 Oct 29, 2026
1329bb9
Test opening, checking and hashing content packs
jaymar921 Oct 29, 2026
1f5d28a
Test scanning the packs folder
jaymar921 Oct 29, 2026
e7d39c4
Add the manifest of the example content pack
jaymar921 Oct 29, 2026
2d3027a
Add a readme to the example content pack
jaymar921 Oct 29, 2026
401155b
Add the Rework Scout definition to the example pack
jaymar921 Oct 29, 2026
074d26a
Add the Rework Scout model to the example pack
jaymar921 Oct 29, 2026
a68d40f
Add the Rework Scout default paint to the example pack
jaymar921 Oct 29, 2026
a29bd10
Add the Rework Scout rescue paint to the example pack
jaymar921 Oct 29, 2026
3687d39
Test that the example pack loads without problems
jaymar921 Oct 29, 2026
d237859
Point the tests at the example pack
jaymar921 Oct 29, 2026
8b9768f
Add the pack allow list and size limits to the server config
jaymar921 Oct 29, 2026
56683d9
Add the pack cache size to the client config
jaymar921 Oct 29, 2026
583c196
Load the content packs folder with the server rules applied
jaymar921 Oct 29, 2026
cd6038b
Add the packet listing the server's content packs
jaymar921 Oct 29, 2026
74d1e84
Add the packet asking the server for missing content packs
jaymar921 Oct 29, 2026
6cd6cfb
Add the packet carrying a chunk of a content pack
jaymar921 Oct 29, 2026
4dd79e9
Send content packs to players in chunks
jaymar921 Oct 29, 2026
02e8568
Remove ContentReloadPacket, replaced by the pack list
jaymar921 Oct 29, 2026
42fc04b
Register the content pack packets and bump the protocol to 6
jaymar921 Oct 29, 2026
4fa5455
Route content pack packets to the client
jaymar921 Oct 29, 2026
0686ef1
Reload the content packs and send players the new list
jaymar921 Oct 29, 2026
b69e4b4
Load content packs at startup and again when a server starts
jaymar921 Oct 29, 2026
f26b3fc
Keep 1.0.0 items for the imported vehicles only
jaymar921 Oct 29, 2026
91352fb
Use the kind's item model for pack vehicles
jaymar921 Oct 29, 2026
f40c5e2
Add /mcheli packs and report pack problems after a reload
jaymar921 Oct 29, 2026
78e2c43
Swap the runtime asset roots in one step and release stale textures
jaymar921 Oct 29, 2026
501c519
Turn the client reload into a refresh of models, textures and tabs
jaymar921 Oct 29, 2026
7438ef9
Download, cache and apply the server's content packs on the client
jaymar921 Oct 29, 2026
4aa595e
Install the client pack sync and close packs on logout
jaymar921 Oct 29, 2026
2feb9ae
Add English text for content packs
jaymar921 Oct 29, 2026
cee98ea
Add Japanese text for content pack downloads
jaymar921 Oct 29, 2026
75695de
Add the content pack author guide
jaymar921 Oct 29, 2026
7b936de
Point the modeling guide at content packs
jaymar921 Oct 29, 2026
5b69efc
Describe content packs and their sync in the architecture
jaymar921 Oct 29, 2026
5f0148f
Tick off the content pack items of phase 6
jaymar921 Oct 29, 2026
0b0576a
Add content packs to the phase 6 checklist
jaymar921 Oct 29, 2026
9b157aa
Document content packs, /mcheli packs and the pack settings
jaymar921 Oct 29, 2026
b205738
Add content packs and sync to the changelog
jaymar921 Oct 29, 2026
d3c68c5
Dedicate the example pack to the public domain under CC0 1.0
jaymar921 Oct 29, 2026
fd3a830
Explain the example pack's CC0 licence in its readme
jaymar921 Oct 29, 2026
9f26021
Note the example pack's licence in its manifest
jaymar921 Oct 29, 2026
f8f7e67
Mention that the example pack is public domain
jaymar921 Oct 29, 2026
c7d72f1
Add the mod icon for the mods list
jaymar921 Oct 29, 2026
2d1c127
Point the mod metadata at the icon
jaymar921 Oct 29, 2026
5f37455
Add the full size mod icon for the README and CurseForge
jaymar921 Oct 29, 2026
3a90999
Show the mod icon at the top of the README
jaymar921 Oct 29, 2026
1e0ff76
Note the mod icon in the changelog
jaymar921 Oct 29, 2026
1796056
Add the MCHeli Rework Licence
jaymar921 Oct 29, 2026
0c694f4
Declare the MCHeli Rework Licence in the mod metadata
jaymar921 Oct 29, 2026
07f53c8
Ship the licence inside the jar
jaymar921 Oct 29, 2026
800d26b
Explain the MCHeli Rework Licence in the licensing note
jaymar921 Oct 29, 2026
6907bd4
Note the new licence in the changelog
jaymar921 Oct 29, 2026
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
23 changes: 23 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,35 @@ way to 1.0.0; see [docs/ROADMAP.md](docs/ROADMAP.md).
- Wrecks stay for 30 seconds instead of 25 and keep burning until they disappear: flames, a fire
glow and rising embers that die down over the last five seconds. Sunk wrecks do not burn.
- Screenshots of night glow in `docs/images/phase-6`, shown in the README.
- Content packs: zips or folders in `<game dir>/mcheli/packs` that add vehicles and weapons, with
their models, textures and sounds and a `pack.properties` manifest. Packs are data only; one
holding anything else is refused. A pack can replace an original vehicle by using its name.
- Servers send their packs to players when they join: each player downloads only the packs they
do not have yet and keeps them in `mcheli/cache`, so the next visit is instant. While connected,
players use exactly the server's packs. The original 1.0.3 content is never sent.
- Server settings under `[packs]` in `mcheli-server.toml`: an allow list, and size limits per pack
(8 MB) and for all packs together (64 MB). Client setting `packs.cacheSize` (256 MB) caps the
download cache, deleting the packs used longest ago first.
- Problems with a pack (a bad manifest, a refused file, a broken definition or line, an unknown
weapon) are written to the log and shown to operators in the chat on joining and after
`/mcheli reload`. A broken pack never stops the game from starting.
- `/mcheli packs` lists the packs in use with their vehicle and weapon counts.
- An example pack with our own helicopter, the Rework Scout (two paint schemes), in
`examples/rework-example-pack`, and a pack author guide, `docs/content/packs.md`.
- A mod icon, shown in the mods list and the README.

### Changed

- Vehicles no longer flash red when hit.
- Hits no longer jolt a vehicle that someone is flying or driving, and explosions no longer push
it. An empty vehicle still rocks a little from a nearby blast (a quarter of the old push).
- `/mcheli reload` now reloads the content packs too, with the server's settings, and sends every
player the new pack list. Before, a dedicated server and its players each reread their own files.
- The network protocol changed: players need the same version as the server.
- The rework's own code is now under the MCHeli Rework Licence (`LICENSE`, also inside the jar)
instead of plain All Rights Reserved: free to play, to include in free modpacks, to read, build
and contribute to; redistributing the source or modified builds and selling the mod still need
permission. EMB4's original content is not affected.

## [1.1.0-beta.1] - 2026-10-29

Expand Down
61 changes: 61 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
MCHeli Rework Licence, version 1.0

Copyright (c) 2026 JayMar921 (JnH Projects). All rights reserved, except as granted below.

MCHeli Rework ("the Mod") is a rework of MCHeli 1.0.3 by EMB4 for newer versions of Minecraft.
The original MCHeli and its content (models, textures, sounds, definitions and documentation)
belong to EMB4, are not covered by this licence and are not included in this repository or in
the Mod's releases.

1. What you may do

a. Use. You may download the official releases of the Mod and use them, for free, in single
player, on servers (including public and paid servers) and in videos and streams.

b. Modpacks. You may include an unmodified official release in a modpack, on CurseForge,
Modrinth or elsewhere, as long as the modpack is free to download and credits the Mod.

c. Read and build. You may read the source code, build it, and run your own builds for
personal use, testing and development.

d. Contribute. You may fork this repository to propose changes through pull requests. By
sending a contribution you agree that it may be distributed under this licence, and under
any later version of it, as part of the Mod.

e. Learn. You may study how the Mod works and write your own code based on what you learned,
as long as you do not copy the Mod's source code into it.

2. What you may not do without written permission

a. Redistribute the source code, or builds made from it, modified or not, except as allowed
in 1(b) and 1(d).

b. Publish the Mod, or a fork of it, as your own project or under another name.

c. Sell the Mod or charge for access to it, including putting it behind a paywall.

d. Remove or change the copyright notices or the credits to EMB4 and Fureniku.

3. Content made for the Mod

Content packs, models, textures and sounds you make for the Mod are yours. This licence does
not apply to them. The example pack in examples/rework-example-pack is public domain (CC0 1.0,
see its own LICENSE file).

4. No warranty

The Mod is provided "as is", without warranty of any kind. The authors are not liable for any
damage or loss arising from its use, including lost worlds or corrupted saves. Keep backups.

5. Ending the licence

If you break these terms, your rights under this licence end automatically. They come back
if you fix the breach within 30 days of being told about it.

6. Later versions

The copyright holder may publish new versions of this licence. Each release of the Mod is
covered by the version included with it.

Questions and permission requests: open an issue at
https://github.com/JnH-Projects/MCHeli-Rework-Forge/issues
27 changes: 24 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# MCHeli Rework

<img src="docs/images/mcheli-rework-icon.png" alt="MCHeli Rework icon" width="160">

Helicopters, planes, tanks and ground vehicles for **Minecraft 26.3** on **Forge 66.1**.

MCHeli Rework is a ground-up port of MCHeli 1.0.3, a mod that stopped at Minecraft 1.7.10. Every
Expand Down Expand Up @@ -112,7 +114,13 @@ original files: only the new Java code and the rework's own translations. Player
original zip from the CurseForge page themselves, and the mod converts it on their machine.

This repository holds no original files either; the unit tests import the developer's own copy
of the zip. The project metadata declares All Rights Reserved for the rework's own code.
of the zip.

The rework's own code is under the [MCHeli Rework Licence](LICENSE): play it anywhere, include
official releases in free modpacks, read and build the source, and send pull requests.
Redistributing the source, modified builds or forks, and selling the mod need written
permission. Content packs you make are yours. Because the engine is a rework of EMB4's All Rights
Reserved original, the code is source available rather than open source.

## Requirements

Expand Down Expand Up @@ -223,7 +231,8 @@ bottom right shows hit points, the weapon, ammunition, reload, heat, lock and fl
| `/mcheli` | everyone | Where the vehicles were loaded from, and how many of each kind |
| `/mcheli list [helicopter\|plane\|tank\|vehicle]` | everyone | The loaded vehicles by name |
| `/mcheli give <players> <vehicle> [count]` | operators | Hands out vehicles, for example `/mcheli give @s ah-64` |
| `/mcheli reload` | operators | Reads the vehicle and weapon files again without a restart |
| `/mcheli packs` | everyone | The content packs in use, and any problems with them |
| `/mcheli reload` | operators | Reads the vehicle and weapon files and the content packs again without a restart, and sends players the new packs |

Each world has `serverconfig/mcheli-server.toml` (created on first start, edits apply while the
server runs):
Expand All @@ -235,12 +244,24 @@ server runs):
| `vehicles.damageFactor` | `1.0` | Multiplies the damage vehicles take; `0.5` makes them twice as tough |
| `vehicles.disabled` | `[]` | Vehicles that cannot be placed, by name, such as `["ah-64", "f-35b"]` |
| `weapons.infiniteAmmo` | `false` | Vehicle weapons never run out of ammunition |
| `packs.allowList` | `[]` | Content packs the server loads, by id; empty loads all of them |
| `packs.maxPackSize` | `8` | Largest content pack the server loads and sends to players, in MB |
| `packs.maxTotalSize` | `64` | Most the server loads and sends in all, in MB |

Each player also has `config/mcheli-client.toml`, which only changes what that player sees:

| Setting | Default | Meaning |
|---------|---------|---------|
| `effects.nightGlow` | `true` | Tracers, rocket motors, flares and explosions glow: faintly by day, brightly at night, in caves and under water |
| `packs.cacheSize` | `256` | How much the content packs downloaded from servers may take up in `mcheli/cache`, in MB |

## Content packs

Content packs add vehicles and weapons: drop a pack (a zip or a folder) into
`<game dir>/mcheli/packs`. On a server only the server needs it; players download the server's
packs automatically when they join. [examples/rework-example-pack](examples/rework-example-pack)
adds a small helicopter, the Rework Scout. To make your own, see
[docs/content/packs.md](docs/content/packs.md).

## Documentation

Expand All @@ -249,7 +270,7 @@ Each player also has `config/mcheli-client.toml`, which only changes what that p
* [Architecture](docs/ARCHITECTURE.md): how the mod is put together
* [Development](docs/DEVELOPMENT.md): building, running, testing and releasing
* [In-game test plan](docs/TESTING.md)
* Content authoring: [modeling in Blockbench or Blender](docs/content/modeling.md), [vehicles](docs/content/aircraft.md), [weapons](docs/content/weapons.md), [HUD scripts](docs/content/hud.md)
* Content authoring: [content packs](docs/content/packs.md), [modeling in Blockbench or Blender](docs/content/modeling.md), [vehicles](docs/content/aircraft.md), [weapons](docs/content/weapons.md), [HUD scripts](docs/content/hud.md)
* [Contributing](CONTRIBUTING.md): rules for pull requests and bug reports

## Building from source
Expand Down
3 changes: 3 additions & 0 deletions common/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,7 @@ tasks.named('test', Test) {
// and are skipped where the zip is absent, such as on CI.
systemProperty 'mcheli.legacyZip', legacyZip
systemProperty 'mcheli.testContent', layout.buildDirectory.dir('legacy-content').get().asFile.absolutePath
// Our own example content pack, which needs nothing from the original.
systemProperty 'mcheli.examplePack', rootProject.file('examples/rework-example-pack').absolutePath
inputs.dir(rootProject.file('examples/rework-example-pack')).withPropertyName('examplePack')
}
Loading
Loading