Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
7523475
Backport Middle-earth 1.0.1 to NeoForge 1.21.1
Campione01 Jul 27, 2026
56793cc
Fix clean-environment NeoForge dependency resolution
Campione01 Jul 27, 2026
64255a1
Fix backported block and screen rendering
Campione01 Jul 27, 2026
f19dfee
Complete 1.21.1 backport parity fixes
Campione01 Jul 27, 2026
607eb73
Fix onboarding attribute compatibility crash
Campione01 Jul 28, 2026
46fae72
Fix worldgen, plate, and NPC regressions
Campione01 Jul 29, 2026
299d452
Fix worldgen compatibility and gameplay regressions
Campione01 Jul 29, 2026
b0d1061
Fix NPC renderer compatibility and gameplay regressions
Campione01 Jul 29, 2026
160a276
Fix concurrent structure queries and orphan leaf drops
Campione01 Jul 29, 2026
9cd2337
Fix hanging vine generation state
Campione01 Jul 30, 2026
b3767bc
Backport latest upstream fixes to NeoForge 1.21.1
Campione01 Jul 31, 2026
04ed06e
Fix NeoForge rendering and recipe viewer parity
Campione01 Aug 2, 2026
d206f64
Fix phial return and advance upstream baseline
Campione01 Aug 15, 2026
b4c6a62
Backport upstream 1.0.2 content to NeoForge 1.21.1
Campione01 Aug 15, 2026
253c030
Fix Wild Things item assets in clean builds
Campione01 Aug 17, 2026
3abc022
Run CI for 1.0.2 backport pull requests
Campione01 Aug 17, 2026
04d06b6
Fix clean backport data generation and packaging
Campione01 Aug 17, 2026
f5ed8bc
Remove deprecated event bus selector
Campione01 Aug 17, 2026
bc44ebf
Align NPC render contract with NeoForge events
Campione01 Aug 17, 2026
a6c60b7
Sync backport to upstream 1.0.2 tag
Campione01 Aug 18, 2026
45d515f
Verify tagged compatibility resources in CI
Campione01 Aug 18, 2026
e99d413
Record dev-neoforge ancestry for PR retarget
Campione01 Aug 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
73 changes: 46 additions & 27 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,45 +1,64 @@
name: build-nightly
run-name: Automatically building nightly-version...
name: build-neoforge-backport
run-name: Build the NeoForge 1.21.1 Jar-in-Jar

on:
push:
branches: [ dev ]
branches:
- dev
- 1.0.1-1.21.1-neoforge-backport
- 1.0.2-1.21.1-neoforge-backport
pull_request:
workflow_dispatch:

jobs:
build:
strategy:
matrix:
# need to be changed as minecraft version changed
# java 17 for minecraft 1.20.x
# java 21 for minecraft 1.21.x
java: [
21,
]
runs-on: ubuntu-latest
steps:
- name: checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v7

- name: validate gradle wrapper
uses: gradle/wrapper-validation-action@v2
uses: gradle/actions/wrapper-validation@v6

- name: setup jdk ${{ matrix.java }}
uses: actions/setup-java@v4
- name: setup jdk 21
uses: actions/setup-java@v5
with:
java-version: ${{ matrix.java }}
java-version: 21
distribution: 'microsoft'

- name: make gradle wrapper excutable
run: chmod +x ./gradlew
- name: setup gradle
uses: gradle/actions/setup-gradle@v6

- name: data generation
run: ./gradlew middle-earth:runDatagenClient
- name: make gradle wrapper executable
run: chmod +x ./gradlew

- name: build
run: ./gradlew build
- name: generate data and build
run: ./gradlew clean build --console=plain

- name: capture build mod jar
uses: actions/upload-artifact@v4
with:
name: SevenStars Project Nightly
path: build/libs/
- name: verify bundled modules
shell: bash
run: |
set -euo pipefail
mapfile -t player_jars < <(find middle-earth/build/libs -maxdepth 1 -type f -name 'Middle-earth-*.jar' ! -name '*-sources.jar')
test "${#player_jars[@]}" -eq 1
jar tf "${player_jars[0]}" > "$RUNNER_TEMP/middle-earth-player-jar-entries.txt"
grep -Eq '^META-INF/jarjar/.+SevenStarsAPI.+\.jar$' "$RUNNER_TEMP/middle-earth-player-jar-entries.txt"
grep -Eq '^META-INF/jarjar/.+Of-Beasts-and-Wild-Things.+\.jar$' "$RUNNER_TEMP/middle-earth-player-jar-entries.txt"
grep -Fxq 'META-INF/neoforge.mods.toml' "$RUNNER_TEMP/middle-earth-player-jar-entries.txt"
! grep -Fxq 'fabric.mod.json' "$RUNNER_TEMP/middle-earth-player-jar-entries.txt"
grep -Fxq 'data/middle-earth/recipe/corrupted_moss_carpet.json' "$RUNNER_TEMP/middle-earth-player-jar-entries.txt"
grep -Fxq 'data/middle-earth/recipe/forest_moss_carpet.json' "$RUNNER_TEMP/middle-earth-player-jar-entries.txt"
grep -Fxq 'data/middle-earth/recipe/saddle.json' "$RUNNER_TEMP/middle-earth-player-jar-entries.txt"
grep -Fxq 'data/middle-earth/advancement/recipes/misc/saddle.json' "$RUNNER_TEMP/middle-earth-player-jar-entries.txt"
grep -Fxq 'data/middle-earth/loot_table/blocks/forge.json' "$RUNNER_TEMP/middle-earth-player-jar-entries.txt"
grep -Fxq 'data/middle-earth/loot_table/blocks/skeletal_pile_layer.json' "$RUNNER_TEMP/middle-earth-player-jar-entries.txt"
grep -Fxq 'data/middle-earth/loot_table/blocks/waste_pile_layer.json' "$RUNNER_TEMP/middle-earth-player-jar-entries.txt"
grep -Fxq 'assets/middle-earth/models/item/gondorian_sword.json' "$RUNNER_TEMP/middle-earth-player-jar-entries.txt"
wild_things_entry=$(grep -E '^META-INF/jarjar/.+Of-Beasts-and-Wild-Things.+\.jar$' "$RUNNER_TEMP/middle-earth-player-jar-entries.txt")
unzip -p "${player_jars[0]}" "$wild_things_entry" > "$RUNNER_TEMP/wild-things.jar"
jar tf "$RUNNER_TEMP/wild-things.jar" > "$RUNNER_TEMP/wild-things-entries.txt"
for item in bird_nest raw_venison cooked_venison raw_poultry cooked_poultry raw_swan cooked_swan swan_feather swan_egg deer_spawn_egg swan_spawn_egg pheasant_spawn_egg snail_spawn_egg; do
grep -Fxq "assets/wild-things/models/item/${item}.json" "$RUNNER_TEMP/wild-things-entries.txt"
grep -Fxq "assets/wild-things/textures/item/${item}.png" "$RUNNER_TEMP/wild-things-entries.txt"
done
sha256sum "${player_jars[0]}"
10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
.gradle
.gradle-local-maven/
**/build/
!src/**/build/

Expand Down Expand Up @@ -27,3 +28,12 @@ bin/main/*
middle-earth/src/main/java/net/sevenstars/middleearth/block/ModBlocks.java
/.idea
/.run2

# Local crash/test artifacts
__pycache__/
*.py[cod]
.pytest_cache/
hs_err_pid*.log
replay_pid*.log
*.hprof
.codex-*.init.gradle
41 changes: 40 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,33 @@

-----

## Unofficial NeoForge 1.21.1 backport

The `1.0.2-1.21.1-neoforge-backport` branch is an unofficial semantic
backport of the official upstream
[`1.0.2-1.21.8-beta`](https://github.com/Jukoz/middle-earth/releases/tag/1.0.2-1.21.8-beta)
tag at
[`fe655f713`](https://github.com/Jukoz/middle-earth/commit/fe655f71374db31629c228e1435e64636698b56c).
That tagged tree is identical to the fully merged upstream `dev` tree at
[`b92dbab45`](https://github.com/Jukoz/middle-earth/commit/b92dbab458da78a36378e18b7afa216288631f14).
All compatible source, resource, data, recipe, loot, translation, model,
balance, and gameplay changes in that release are represented either directly
or by a 1.21.1/NeoForge semantic adaptation. Known upstream defects are
corrected while translating them to the older APIs. The upstream wild-spawn
chunk cache and global mob-cap implementations are not copied because their
global state and coarse rejection semantics are incompatible with this port;
the existing bounded, dimension-aware spawning implementation is retained.
It is not an official release from the original Middle-earth mod team.

All original copyright notices, credits, trademarks and the ARR license remain
unchanged. This fork grants no additional rights; see [LICENSE](./LICENSE) and
the [upstream repository](https://github.com/Jukoz/middle-earth).

Target runtime: Minecraft 1.21.1, Java 21 and NeoForge 21.1.233 or newer within
the 21.1 line. The build currently validates against NeoForge 21.1.244.

-----

## Current state of the mod
As of now, the mod is in the Alpha development stage, meaning this project is still a prototype, and missing many core features we are planning on adding.

Expand Down Expand Up @@ -85,6 +112,18 @@ dylanhugh and Angmarzku for their ideas & arts for Gundabad and more.

-----

## Building the NeoForge 1.21.1 backport

Build all three source modules with Java 21:

```shell
./gradlew build
```

The player artifact is `middle-earth/build/libs/Middle-earth-<version>.jar`. It embeds Seven Stars API and Of Beasts and Wild Things through NeoForge Jar-in-Jar, so players should install only this outer Middle-earth jar. The standalone jars under the two subproject build directories are intermediate development artifacts and are not part of the player release.

-----

## License
All of our content is under the **ARR** license (**All Right Reserved**), meaning you cannot use our code without our written consent. If you want to use our code in any way, please write an issue using the [request template in our Github](https://github.com/Jukoz/middle-earth/issues/new?assignees=&labels=request&projects=&template=code_use_permission_request.yml).
> **Please be aware that this project is a Minecraft Parody set in the Middle-earth universe and all rights are reserved under Tolkien domain.**
Expand All @@ -109,4 +148,4 @@ if you want to participate in the localization, please join our [Discord server]

[github]: https://github.com/Jukoz/middle-earth
[discord]: https://discord.gg/9yQ7UWkVUz
[crowdin]: https://crowdin.com/project/middle-earth-mod
[crowdin]: https://crowdin.com/project/middle-earth-mod
Loading