Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
0d1a5c3
Port the Biomes O' Plenty add-on to Minecraft 1.14.4
SkyBlade1978 Oct 31, 2026
2586c54
Pin the core fix and wait for basket save acknowledgements
SkyBlade1978 Nov 1, 2026
f6f092d
Use the core with the updated grass dependency
SkyBlade1978 Nov 1, 2026
bc92abe
Refresh the qualified local dependency source pins
SkyBlade1978 Nov 1, 2026
14e6c9a
Port BOP building pieces and world recovery to Minecraft 1.15.2
SkyBlade1978 Nov 1, 2026
73b9285
Bring Biomes O Plenty building pieces to Minecraft 1.16.5
SkyBlade1978 Nov 1, 2026
242e10d
Port BOP building pieces and world recovery to Minecraft 1.17.1
SkyBlade1978 Nov 1, 2026
e496abc
Include the legacy policy fixture in pack format checks
SkyBlade1978 Nov 2, 2026
f851090
Use queued save hooks from the updated core
SkyBlade1978 Nov 2, 2026
3590dd3
Port Biomes O' Plenty building pieces to Minecraft 1.18.2
SkyBlade1978 Nov 2, 2026
6746ba0
Use the updated local content builds
SkyBlade1978 Nov 3, 2026
4f99221
Port Building Pieces for Biomes O' Plenty to Minecraft 1.19.4
SkyBlade1978 Nov 4, 2026
166e1e2
Port Building Pieces BOP to Forge 1.20.1
SkyBlade1978 Nov 4, 2026
d4c1c1a
Port Building Pieces BOP to Forge 1.20.6
SkyBlade1978 Nov 4, 2026
17f5f0e
Refresh the Forge 1.20.6 development dependency locks
SkyBlade1978 Nov 4, 2026
4f200d0
Port the Building Pieces BOP add-on to Forge 1.21.1
SkyBlade1978 Nov 5, 2026
5b51aa3
Port Building Pieces BOP to Forge 1.21.11
SkyBlade1978 Nov 5, 2026
a45ade8
Use the verified Grass Slabs and Building Pieces dependencies
SkyBlade1978 Nov 5, 2026
adf9c85
Port Building Pieces BOP to Forge 26.1.2
SkyBlade1978 Nov 6, 2026
d14dd89
Port Building Pieces BOP to Minecraft 26.2 on Forge
SkyBlade1978 Nov 6, 2026
caec9fe
Use Building Pieces for larger world upgrade snapshots
SkyBlade1978 Nov 6, 2026
08284da
Port Building Pieces for Biomes O’ Plenty to Minecraft 26.3
SkyBlade1978 Nov 6, 2026
effc7fe
Register individual BOP building pieces and recovered rocks
SkyBlade1978 Nov 8, 2026
1d9859c
Use the building pieces build that recovers compact states
SkyBlade1978 Nov 8, 2026
33fc8d9
Use the building pieces build that keeps named wool pieces
SkyBlade1978 Nov 8, 2026
c84a593
Update the Building Pieces crafting dependency
SkyBlade1978 Nov 9, 2026
a9892fc
Prepare the Forge 26.3 release
SkyBlade1978 Nov 9, 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.
16 changes: 16 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
* text=auto

# Keep the generated Forge defaults unchanged for the startup log controls.
src/bootstrapTest/defaultconfigs/config/forge-client.toml whitespace=-blank-at-eof
src/bootstrapTest/defaultconfigs/defaultconfigs/forge-server.toml whitespace=-blank-at-eof
*.java text eol=lf
*.json text eol=lf
*.lang text eol=lf
Expand All @@ -10,3 +14,15 @@ gradlew text eol=lf
*.bat text eol=crlf
*.png binary
*.jar binary

# Preserve the exact sealed build fixture and native scripts on Windows.
.gitattributes text eol=lf
*.js text eol=lf
*.yml text eol=lf
ci-fixtures/tools/** -text
*.mcmeta text eol=lf
*.toml text eol=lf
*.py text eol=lf

# Preserve the bytes of the checksum-locked biome recovery proof.
src/testFixtures/bop-1.20.1-biome-recovery.json -text whitespace=cr-at-eol
169 changes: 158 additions & 11 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,123 @@ concurrency:
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 25 ForgeGradle Mavenizer runtime
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '25.0.3+9.0.LTS'

- 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 compilation toolchain
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '25.0.3+9.0.LTS'

- name: Pin production Java
run: echo "SBP_JAVA25_HOME=$JAVA_HOME" >> "$GITHUB_ENV"

- 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: Read pinned dependency sources
id: content
run: |
set -euo pipefail
pieces="$(sed -n 's/^commit=//p' gradle/core-dependency.properties)"
[[ "$pieces" =~ ^[0-9a-f]{40}$ ]]
echo "pieces=$pieces" >> "$GITHUB_OUTPUT"
- name: Check out SkysBuildingPieces
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: SkyBlade1978/SkysBuildingPieces
ref: ${{ steps.content.outputs.pieces }}
path: dependencies/pieces
- name: Read the core's coordinated Grass Slabs source pin
id: grass
shell: bash
run: |
set -euo pipefail
commit="$(sed -n 's/^source.commit=//p' dependencies/pieces/gradle/grass-slabs-release.properties)"
[[ "$commit" =~ ^[0-9a-f]{40}$ ]]
echo "commit=$commit" >> "$GITHUB_OUTPUT"

- name: Check out pinned Grass Slabs source
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: SkyBlade1978/SkysGrassSlabs
ref: ${{ steps.grass.outputs.commit }}
path: dependencies/grass-slabs

- name: Build the coordinated Grass Slabs dependency
shell: bash
run: |
set -euo pipefail
dependency="$GITHUB_WORKSPACE/dependencies/grass-slabs"
chmod +x "$dependency/gradlew"
"$dependency/gradlew" -p "$dependency" assemble --no-daemon --stacktrace
version="$(sed -n 's/^version=//p' dependencies/pieces/gradle/grass-slabs-release.properties)"
echo "ORG_GRADLE_PROJECT_grassSlabsMainJar=$dependency/build/libs/SkysGrassSlabs-$version.jar" >> "$GITHUB_ENV"
echo "ORG_GRADLE_PROJECT_grassSlabsDeobfJar=$dependency/build/libs/SkysGrassSlabs-$version.jar" >> "$GITHUB_ENV"

- name: Build development dependencies
run: |
set -euo pipefail
chmod +x dependencies/*/gradlew
(cd dependencies/pieces && ./gradlew assemble --no-daemon --stacktrace)


- name: Bootstrap Forge from an empty cache
shell: bash
env:
GRADLE_USER_HOME: ${{ runner.temp }}/skysbuildingpieces-bop-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 -PbuildingPiecesCoreDir=dependencies/pieces
--no-daemon --no-build-cache --stacktrace --max-workers=2
-Dorg.gradle.java.installations.paths="$JAVA_HOME,$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 }}/skysbuildingpieces-bop-cold-gradle
run: |
set -euo pipefail
gradle_args=(
classes test -PbuildingPiecesCoreDir=dependencies/pieces
--rerun-tasks --offline --no-daemon --no-build-cache --stacktrace --max-workers=2
-Dorg.gradle.java.installations.paths="$JAVA_HOME,$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 @@ -37,26 +154,28 @@ jobs:
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=$(value gradle_java_version)" >> "$GITHUB_OUTPUT"
echo "gradle_java_version=$(value java_setup_version)" >> "$GITHUB_OUTPUT"
echo "artifact_prefix=SkysBuildingPieces-BiomesOPlenty-Addon-$(value mod_version)" >> "$GITHUB_OUTPUT"

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

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

- name: Pin production Java
if: steps.target.outputs.java_version == '8'
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"
run: echo "SBP_JAVA25_HOME=$JAVA_HOME" >> "$GITHUB_ENV"

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

- name: Set up Gradle
Expand All @@ -76,20 +195,48 @@ jobs:
repository: SkyBlade1978/SkysBuildingPieces
ref: ${{ steps.content.outputs.pieces }}
path: dependencies/pieces
- name: Read the core's coordinated Grass Slabs source pin
id: grass
shell: bash
run: |
set -euo pipefail
commit="$(sed -n 's/^source.commit=//p' dependencies/pieces/gradle/grass-slabs-release.properties)"
[[ "$commit" =~ ^[0-9a-f]{40}$ ]]
echo "commit=$commit" >> "$GITHUB_OUTPUT"

- name: Check out pinned Grass Slabs source
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: SkyBlade1978/SkysGrassSlabs
ref: ${{ steps.grass.outputs.commit }}
path: dependencies/grass-slabs

- name: Build the coordinated Grass Slabs dependency
shell: bash
run: |
set -euo pipefail
dependency="$GITHUB_WORKSPACE/dependencies/grass-slabs"
chmod +x "$dependency/gradlew"
"$dependency/gradlew" -p "$dependency" assemble --no-daemon --stacktrace
version="$(sed -n 's/^version=//p' dependencies/pieces/gradle/grass-slabs-release.properties)"
echo "ORG_GRADLE_PROJECT_grassSlabsMainJar=$dependency/build/libs/SkysGrassSlabs-$version.jar" >> "$GITHUB_ENV"
echo "ORG_GRADLE_PROJECT_grassSlabsDeobfJar=$dependency/build/libs/SkysGrassSlabs-$version.jar" >> "$GITHUB_ENV"

- name: Build development dependencies
run: |
set -euo pipefail
chmod +x dependencies/*/gradlew
(cd dependencies/pieces && ./gradlew jar --no-daemon --stacktrace)
(cd dependencies/pieces && ./gradlew assemble --no-daemon --stacktrace)


- name: Make the wrapper executable
run: chmod +x ./gradlew

- name: Build, test, and audit release artifacts
run: >-
./gradlew clean check integrationTest build javadoc verifyReleaseArtifacts writeReleaseChecksums
./gradlew clean check build javadoc verifyReleaseArtifacts writeReleaseChecksums
verifyEclipseProductionClasspath -PbuildingPiecesCoreDir=dependencies/pieces --no-daemon --stacktrace
-x integrationTest -x integrationRecipeBookTest -x nativeInstalledBopPolicyTest

- name: Replay artifact checks offline
run: >-
Expand Down Expand Up @@ -118,6 +265,6 @@ jobs:
path: |
build/test-results/**
build/reports/**
build/*-run/logs/**
build/*-run/**/*.properties
build/*-run*/logs/**
build/*-run*/**/*.properties
build/problems/**
45 changes: 37 additions & 8 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,26 +37,28 @@ jobs:
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=$(value gradle_java_version)" >> "$GITHUB_OUTPUT"
echo "gradle_java_version=$(value java_setup_version)" >> "$GITHUB_OUTPUT"
echo "artifact_prefix=SkysBuildingPieces-BiomesOPlenty-Addon-$(value mod_version)" >> "$GITHUB_OUTPUT"

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

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

- name: Pin production Java
if: steps.target.outputs.java_version == '8'
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"
run: echo "SBP_JAVA25_HOME=$JAVA_HOME" >> "$GITHUB_ENV"

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

- name: Set up Gradle
Expand All @@ -76,11 +78,38 @@ jobs:
repository: SkyBlade1978/SkysBuildingPieces
ref: ${{ steps.content.outputs.pieces }}
path: dependencies/pieces
- name: Read the core's coordinated Grass Slabs source pin
id: grass
shell: bash
run: |
set -euo pipefail
commit="$(sed -n 's/^source.commit=//p' dependencies/pieces/gradle/grass-slabs-release.properties)"
[[ "$commit" =~ ^[0-9a-f]{40}$ ]]
echo "commit=$commit" >> "$GITHUB_OUTPUT"

- name: Check out pinned Grass Slabs source
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: SkyBlade1978/SkysGrassSlabs
ref: ${{ steps.grass.outputs.commit }}
path: dependencies/grass-slabs

- name: Build the coordinated Grass Slabs dependency
shell: bash
run: |
set -euo pipefail
dependency="$GITHUB_WORKSPACE/dependencies/grass-slabs"
chmod +x "$dependency/gradlew"
"$dependency/gradlew" -p "$dependency" assemble --no-daemon --stacktrace
version="$(sed -n 's/^version=//p' dependencies/pieces/gradle/grass-slabs-release.properties)"
echo "ORG_GRADLE_PROJECT_grassSlabsMainJar=$dependency/build/libs/SkysGrassSlabs-$version.jar" >> "$GITHUB_ENV"
echo "ORG_GRADLE_PROJECT_grassSlabsDeobfJar=$dependency/build/libs/SkysGrassSlabs-$version.jar" >> "$GITHUB_ENV"

- name: Build development dependencies
run: |
set -euo pipefail
chmod +x dependencies/*/gradlew
(cd dependencies/pieces && ./gradlew jar --no-daemon --stacktrace)
(cd dependencies/pieces && ./gradlew assemble --no-daemon --stacktrace)


- name: Initialize CodeQL
Expand Down
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -77,3 +77,8 @@ agent_notes/
# Files from Forge MDK
forge*changelog.txt
/README.txt

# Python resource and validation helpers
__pycache__/
*.py[cod]
.pytest_cache/
Loading
Loading