Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
c31d1ce
Port Terrain Smoother to Minecraft 1.14.4
SkyBlade1978 Nov 1, 2026
c95e369
Use the updated grass and building pieces candidates
SkyBlade1978 Nov 1, 2026
a903fa0
Refresh the qualified local dependency source pins
SkyBlade1978 Nov 1, 2026
55e74ad
Port Terrain Smoother to Minecraft 1.15.2
SkyBlade1978 Nov 1, 2026
b19259b
Keep upgrade fixture checksums stable across checkouts
SkyBlade1978 Nov 1, 2026
199f4a3
Port Terrain Smoother to Minecraft 1.16.5
SkyBlade1978 Nov 1, 2026
9f74946
Port terrain smoothing to Minecraft 1.17.1
SkyBlade1978 Nov 2, 2026
28fbe90
Port terrain smoothing to Minecraft 1.18.2
SkyBlade1978 Nov 2, 2026
3a04288
Register sand recovery after catalogue construction
SkyBlade1978 Nov 3, 2026
8cfcec9
Use the updated local content builds
SkyBlade1978 Nov 3, 2026
790bf21
Port Terrain Smoother to Minecraft 1.19.4
SkyBlade1978 Nov 4, 2026
49f5ca3
Check Forge 45 registry notices against saved fixtures
SkyBlade1978 Nov 4, 2026
fb16f3e
Port Terrain Smoother to Forge 1.20.1
SkyBlade1978 Nov 4, 2026
b9ee8e2
Port Terrain Smoother to Forge 1.20.6
SkyBlade1978 Nov 4, 2026
aab8037
Port Terrain Smoother to Forge 1.21.1
SkyBlade1978 Nov 5, 2026
a73cb5b
Port Terrain Smoother to Forge 1.21.11
SkyBlade1978 Nov 5, 2026
1001d15
Port Terrain Smoother to Forge 26.1.2
SkyBlade1978 Nov 6, 2026
ff25718
Port Terrain Smoother to Forge 26.2
SkyBlade1978 Nov 6, 2026
0f37c81
Port Terrain Smoother to Forge 26.3
SkyBlade1978 Nov 6, 2026
ef84c6d
Build against the flattened building pieces
SkyBlade1978 Nov 8, 2026
19d916c
Use the building pieces build that recovers compact states
SkyBlade1978 Nov 8, 2026
fc08bc1
Use the building pieces build that keeps named wool pieces
SkyBlade1978 Nov 8, 2026
fb1133e
Update the Building Pieces crafting dependency
SkyBlade1978 Nov 9, 2026
c9d9f58
Prepare the Forge 26.3 release
SkyBlade1978 Nov 9, 2026
d7f0dc7
Reuse the pinned Java 25 installation in CI
SkyBlade1978 Nov 9, 2026
3dec825
Build dependencies without changing their wrappers
SkyBlade1978 Nov 9, 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
7 changes: 7 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,10 @@
*.jar binary
*.png binary
*.zip binary

# Keep the native generated defaults byte-for-byte for log-control checks.
src/bootstrapTest/defaultconfigs/config/forge-client.toml whitespace=-blank-at-eof
src/bootstrapTest/defaultconfigs/defaultconfigs/forge-server.toml whitespace=-blank-at-eof

# Keep the checksum-verified Mavenizer fixture byte-for-byte.
ci-fixtures/tools/** -text
151 changes: 129 additions & 22 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,22 +1,113 @@
name: Sky's Terrain Smoother 1.12 CI
name: Sky's Terrain Smoother CI

on:
push:
branches:
- master-1.12.2
- 'master-*'
- 'feature/**'
pull_request:
branches:
- master-1.12.2
- 'master-*'

permissions:
contents: read

concurrency:
group: skysterrainsmoother-1.12-${{ github.workflow }}-${{ github.ref }}
group: skysterrainsmoother-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
cold-forge-bootstrap:
name: Cold Forge bootstrap
runs-on: ubuntu-latest
timeout-minutes: 60

steps:
- name: Check out source
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7

- name: Install pinned Java 8 compilation toolchain
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '8.0.502+7'

- name: Install pinned Java 25 Gradle runtime
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '25.0.3+9.0.LTS'

- name: Pin production Java for the dependency builds
run: |
echo "SGS_JAVA25_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "SBP_JAVA25_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "STS_JAVA25_HOME=$JAVA_HOME" >> "$GITHUB_ENV"

- name: Read pinned dependency sources
id: content
run: |
set -euo pipefail
grass="$(sed -n 's/^grass.commit=//p' gradle/content-dependencies.properties)"
[[ "$grass" =~ ^[0-9a-f]{40}$ ]]
echo "grass=$grass" >> "$GITHUB_OUTPUT"
pieces="$(sed -n 's/^pieces.commit=//p' gradle/content-dependencies.properties)"
[[ "$pieces" =~ ^[0-9a-f]{40}$ ]]
echo "pieces=$pieces" >> "$GITHUB_OUTPUT"
- name: Check out SkysGrassSlabs
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: SkyBlade1978/SkysGrassSlabs
ref: ${{ steps.content.outputs.grass }}
path: dependencies/grass
- name: Check out SkysBuildingPieces
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: SkyBlade1978/SkysBuildingPieces
ref: ${{ steps.content.outputs.pieces }}
path: dependencies/pieces
- name: Build development dependencies
run: |
set -euo pipefail
(cd dependencies/grass && bash ./gradlew assemble --no-daemon --stacktrace)
(cd dependencies/pieces && bash ./gradlew assemble --no-daemon --stacktrace)


- name: Bootstrap Forge from an empty cache
shell: bash
env:
GRADLE_USER_HOME: ${{ runner.temp }}/skysterrainsmoother-cold-gradle
run: |
set -euo pipefail
test ! -e .gradle
test ! -e "$GRADLE_USER_HOME"
mkdir -p "$GRADLE_USER_HOME"
chmod +x ./gradlew
gradle_args=(
classes test -PgrassSlabsDirectory=dependencies/grass -PbuildingPiecesDirectory=dependencies/pieces
--no-daemon --no-build-cache --stacktrace --max-workers=2
-Dorg.gradle.java.installations.paths="$JAVA_HOME,$JAVA_HOME_21_X64,$JAVA_HOME_8_X64,$JAVA_HOME_25_X64"
-Dorg.gradle.java.installations.auto-detect=false
-Dorg.gradle.java.installations.auto-download=false
)
./gradlew "${gradle_args[@]}"

- name: Verify same-cache bootstrap offline
shell: bash
env:
GRADLE_USER_HOME: ${{ runner.temp }}/skysterrainsmoother-cold-gradle
ORESPAWN_MAVENIZER_OFFLINE: "true"
run: |
set -euo pipefail
gradle_args=(
classes test -PgrassSlabsDirectory=dependencies/grass -PbuildingPiecesDirectory=dependencies/pieces
--rerun-tasks --offline --no-daemon --no-build-cache --stacktrace --max-workers=2
-Dorg.gradle.java.installations.paths="$JAVA_HOME,$JAVA_HOME_21_X64,$JAVA_HOME_8_X64,$JAVA_HOME_25_X64"
-Dorg.gradle.java.installations.auto-detect=false
-Dorg.gradle.java.installations.auto-download=false
)
./gradlew "${gradle_args[@]}"

build:
name: Build, test, and audit
runs-on: ubuntu-latest
Expand All @@ -26,27 +117,44 @@ jobs:
- name: Check out source
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7

- name: Install Java 8 toolchain
- name: Read target build metadata
id: target
shell: bash
run: |
set -euo pipefail
value() { sed -n "s/^$1=//p" gradle.properties; }
toolchain="$(value java_toolchain_version)"
selector="$(value java_setup_version)"
echo "java_setup_version=${selector:-$toolchain}" >> "$GITHUB_OUTPUT"
echo "java_version=$(value java_version)" >> "$GITHUB_OUTPUT"
echo "minecraft_version=$(value minecraft_version)" >> "$GITHUB_OUTPUT"
echo "gradle_java_version=${selector:-$(value gradle_java_toolchain_version)}" >> "$GITHUB_OUTPUT"
echo "artifact_prefix=SkysTerrainSmoother-$(value mod_version)" >> "$GITHUB_OUTPUT"

- name: Install target Java toolchain
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '8.0.502+7'
java-version: ${{ steps.target.outputs.java_setup_version }}

- name: Pin production Java
if: steps.target.outputs.java_version == '25'
run: |
echo "SGS_JAVA8_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "SBP_JAVA8_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "STS_JAVA8_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "SGS_JAVA25_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "SBP_JAVA25_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "STS_JAVA25_HOME=$JAVA_HOME" >> "$GITHUB_ENV"

- name: Install Java 17 for Gradle
- name: Install Java for Gradle
if: steps.target.outputs.gradle_java_version != steps.target.outputs.java_setup_version
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: microsoft
java-version: '17'
distribution: temurin
java-version: ${{ steps.target.outputs.gradle_java_version }}

- name: Set up Gradle
uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6


- name: Read pinned dependency sources
id: content
run: |
Expand All @@ -72,9 +180,9 @@ jobs:
- name: Build development dependencies
run: |
set -euo pipefail
chmod +x dependencies/*/gradlew
(cd dependencies/grass && ./gradlew jar --no-daemon --stacktrace)
(cd dependencies/pieces && ./gradlew jar --no-daemon --stacktrace)
(cd dependencies/grass && bash ./gradlew assemble --no-daemon --stacktrace)
(cd dependencies/pieces && bash ./gradlew assemble --no-daemon --stacktrace)


- name: Make the wrapper executable
run: chmod +x ./gradlew
Expand All @@ -86,27 +194,26 @@ jobs:

- name: Replay artifact checks offline
run: >-
./gradlew assemble verifyReleaseArtifacts writeReleaseChecksums
-PgrassSlabsDirectory=dependencies/grass -PbuildingPiecesDirectory=dependencies/pieces --offline --no-daemon --stacktrace
./gradlew assemble verifyReleaseArtifacts writeReleaseChecksums -PgrassSlabsDirectory=dependencies/grass -PbuildingPiecesDirectory=dependencies/pieces --offline --no-daemon --stacktrace

- name: Upload audited release candidate
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: SkysTerrainSmoother-1.12.2-${{ github.sha }}
name: SkysTerrainSmoother-${{ steps.target.outputs.minecraft_version }}-${{ github.sha }}
if-no-files-found: error
retention-days: 30
path: |
build/libs/SkysTerrainSmoother-0.1.0.112021.jar
build/libs/SkysTerrainSmoother-0.1.0.112021-sources.jar
build/libs/SkysTerrainSmoother-0.1.0.112021-javadoc.jar
build/libs/SkysTerrainSmoother-0.1.0.2603001.jar
build/libs/SkysTerrainSmoother-0.1.0.2603001-sources.jar
build/libs/SkysTerrainSmoother-0.1.0.2603001-javadoc.jar
build/release/SHA256SUMS
CHANGELOG.md

- name: Upload diagnostics on failure
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: SkysTerrainSmoother-1.12.2-diagnostics-${{ github.sha }}
name: SkysTerrainSmoother-${{ steps.target.outputs.minecraft_version }}-diagnostics-${{ github.sha }}
if-no-files-found: ignore
retention-days: 14
path: |
Expand Down
43 changes: 30 additions & 13 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ name: CodeQL
on:
push:
branches:
- master-1.12.2
- 'master-*'
- 'feature/**'
pull_request:
branches:
- master-1.12.2
- 'master-*'
schedule:
- cron: '47 7 * * 4'

Expand All @@ -26,27 +26,44 @@ jobs:
- name: Check out source
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7

- name: Install Java 8 toolchain
- name: Read target build metadata
id: target
shell: bash
run: |
set -euo pipefail
value() { sed -n "s/^$1=//p" gradle.properties; }
toolchain="$(value java_toolchain_version)"
selector="$(value java_setup_version)"
echo "java_setup_version=${selector:-$toolchain}" >> "$GITHUB_OUTPUT"
echo "java_version=$(value java_version)" >> "$GITHUB_OUTPUT"
echo "minecraft_version=$(value minecraft_version)" >> "$GITHUB_OUTPUT"
echo "gradle_java_version=${selector:-$(value gradle_java_toolchain_version)}" >> "$GITHUB_OUTPUT"
echo "artifact_prefix=SkysTerrainSmoother-$(value mod_version)" >> "$GITHUB_OUTPUT"

- name: Install target Java toolchain
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '8.0.502+7'
java-version: ${{ steps.target.outputs.java_setup_version }}

- name: Pin production Java
if: steps.target.outputs.java_version == '25'
run: |
echo "SGS_JAVA8_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "SBP_JAVA8_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "STS_JAVA8_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "SGS_JAVA25_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "SBP_JAVA25_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
echo "STS_JAVA25_HOME=$JAVA_HOME" >> "$GITHUB_ENV"

- name: Install Java 17 for Gradle
- name: Install Java for Gradle
if: steps.target.outputs.gradle_java_version != steps.target.outputs.java_setup_version
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: microsoft
java-version: '17'
distribution: temurin
java-version: ${{ steps.target.outputs.gradle_java_version }}

- name: Set up Gradle
uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6


- name: Read pinned dependency sources
id: content
run: |
Expand All @@ -72,9 +89,9 @@ jobs:
- name: Build development dependencies
run: |
set -euo pipefail
chmod +x dependencies/*/gradlew
(cd dependencies/grass && ./gradlew jar --no-daemon --stacktrace)
(cd dependencies/pieces && ./gradlew jar --no-daemon --stacktrace)
(cd dependencies/grass && bash ./gradlew assemble --no-daemon --stacktrace)
(cd dependencies/pieces && bash ./gradlew assemble --no-daemon --stacktrace)


- name: Initialize CodeQL
uses: github/codeql-action/init@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4
Expand Down
10 changes: 4 additions & 6 deletions .github/workflows/deploy-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -321,9 +321,8 @@ jobs:
- name: Build development dependencies
run: |
set -euo pipefail
chmod +x dependencies/*/gradlew
(cd dependencies/grass && ./gradlew jar --no-daemon --stacktrace)
(cd dependencies/pieces && ./gradlew jar --no-daemon --stacktrace)
(cd dependencies/grass && bash ./gradlew assemble --no-daemon --stacktrace)
(cd dependencies/pieces && bash ./gradlew assemble --no-daemon --stacktrace)

- name: Build, test, and audit once
env:
Expand Down Expand Up @@ -518,9 +517,8 @@ jobs:
- name: Build development dependencies
run: |
set -euo pipefail
chmod +x dependencies/*/gradlew
(cd dependencies/grass && ./gradlew jar --no-daemon --stacktrace)
(cd dependencies/pieces && ./gradlew jar --no-daemon --stacktrace)
(cd dependencies/grass && bash ./gradlew assemble --no-daemon --stacktrace)
(cd dependencies/pieces && bash ./gradlew assemble --no-daemon --stacktrace)

- name: Download immutable release artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
Expand Down
6 changes: 5 additions & 1 deletion .github/workflows/release-on-tag.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,11 @@ jobs:
set -euo pipefail
version="$(sed -n 's/^mod_version=//p' gradle.properties)"
test "$GITHUB_REF_NAME" = "$version"
[[ "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.112021$ ]]
minecraft="$(sed -n 's/^minecraft_version=//p' gradle.properties)"
loader="$(sed -n 's/^loader_code=//p' gradle.properties)"
IFS=. read -r major minor patch <<<"$minecraft"
printf -v suffix '%s%02d%02d%s' "$major" "$((10#$minor))" "$((10#${patch:-0}))" "$loader"
[[ "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.${suffix}$ ]]
checks="$(gh api "repos/$GITHUB_REPOSITORY/commits/$GITHUB_SHA/check-runs?per_page=100" --jq '[.check_runs[] | select(.name == "Build, test, and audit" and .conclusion == "success")] | length')"
test "$checks" -gt 0
echo "verifyReleaseArtifacts passed in CI. This tag check publishes nothing."
4 changes: 2 additions & 2 deletions .github/workflows/validate-gradle-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ name: Validate Gradle Wrapper
on:
push:
branches:
- master-1.12.2
- 'master-*'
- 'feature/**'
pull_request:
branches:
- master-1.12.2
- 'master-*'

permissions:
contents: read
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -78,3 +78,7 @@ agent_notes/
# Files from Forge MDK
forge*changelog.txt
/README.txt

# Python caches can contain local source paths.
__pycache__/
*.py[cod]
Loading
Loading