Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 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
597f26d
Port Building Pieces BOP to NeoForge 1.20.1
SkyBlade1978 Nov 4, 2026
576de90
Port Building Pieces BOP to NeoForge 1.20.6
SkyBlade1978 Nov 5, 2026
076db3b
Port Building Pieces BOP to NeoForge 1.21.1
SkyBlade1978 Nov 5, 2026
3818993
Pin the NeoForge soil support builds
SkyBlade1978 Nov 5, 2026
831ed93
Give BOP pieces and fallback rocks individual block IDs
SkyBlade1978 Nov 7, 2026
810404e
Pin the verified Building Pieces source
SkyBlade1978 Nov 7, 2026
972b069
Pin Building Pieces with the config screen
SkyBlade1978 Nov 7, 2026
bead32a
Prepare the NeoForge 1.21.1 release
SkyBlade1978 Nov 7, 2026
e43de95
Reuse the pinned Java toolchain for NeoForge CI
SkyBlade1978 Nov 7, 2026
8d09c4e
Include the shared config screen check in the add-on probe
SkyBlade1978 Nov 7, 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.
13 changes: 13 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,12 @@ 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
157 changes: 138 additions & 19 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,109 @@ concurrency:
cancel-in-progress: true

jobs:
cold-neoforge-bootstrap:
name: Cold NeoForge bootstrap
runs-on: ubuntu-latest
timeout-minutes: 60

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

- name: Install pinned Java 21 compilation toolchain
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '21.0.7+6.0.LTS'

- name: Install pinned Java 21 Gradle runtime
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '21.0.7+6.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 NeoForge 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"
-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
./gradlew clean --offline --no-daemon --no-build-cache
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"
-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,7 +140,6 @@ 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 "artifact_prefix=SkysBuildingPieces-BiomesOPlenty-Addon-$(value mod_version)" >> "$GITHUB_OUTPUT"

- name: Install target Java toolchain
Expand All @@ -46,19 +148,6 @@ jobs:
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"

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

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

Expand All @@ -76,20 +165,50 @@ 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
verifyEclipseProductionClasspath -PbuildingPiecesCoreDir=dependencies/pieces --no-daemon --stacktrace
./gradlew clean check build javadoc verifyReleaseArtifacts writeReleaseChecksums
preparePackagedNativeProbe registryControlJar eclipse verifyEclipseConfiguration
-PbuildingPiecesCoreDir=dependencies/pieces --no-daemon --stacktrace
-Declipse.application=org.eclipse.ui.ide.workbench


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

- name: Install target Java toolchain
Expand All @@ -46,19 +45,6 @@ jobs:
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"

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

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

Expand All @@ -76,11 +62,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/
67 changes: 67 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,72 @@
# Changelog

## 0.2.5.121012

- Give each building piece and fallback rock its own block ID.
- Convert pieces and rocks from existing worlds when their chunks load.

## 0.2.4.121012

- Updated the add-on to Minecraft 1.21.1 and NeoForge 21.1.247.
- Kept the existing building pieces, recipes and Flower Basket contents.

## 0.2.4.120062

- Ported to Minecraft 1.20.6 and NeoForge.
- Preserved Flower Basket contents through the item data update.
- Updated old maple foliage, potted plants and three retired BOP biomes to their current equivalents.

## 0.2.4.120012

- Ported to Minecraft 1.20.1 and NeoForge 47.1.106.
- Kept existing pieces and baskets. Added replacements for removed BOP wood,
plants and biomes when opening older worlds.

## 0.2.4.119041

- Added the Minecraft 1.19.4 version for Forge 45.4.0.
- Kept the building catalogue, Flower Basket and saved pieces compatible with earlier versions.
- Added replacements for BOP's removed mud pieces, rooted sand and four biomes.
- Updated crafting-book categories and the vanilla mud-brick textures.

## 0.2.4.118021 - Minecraft 1.18.2 (unreleased)

- Bring the BOP pieces and Flower Basket to Minecraft 1.18.2.
- Use BOP with TerraBlender and the matching core.
- Replace removed roots with similar plants, keeping water and growth states.
- Retain saved biome identities through the new chunk format.

## 0.2.4.117011 - Minecraft 1.17.1 (unreleased)

- Bring the existing BOP pieces, decorations and Flower Basket to Minecraft 1.17.1.
- Keep saved material palettes, orientations, waterlogging and basket contents.
- Replace removed nether crystals with rose quartz, keeping their attachment directions.
- Keep recipe-book unlocks and translated material names working with the matching core.

## 0.2.4.116051

- Added the Minecraft 1.16.5 port for Forge 36.2.34 and BOP 13.1.0.488.
- Kept existing piece IDs, material slots, Flower Baskets and saved contents.
- Added replacements for BOP plants and biomes removed on this upgrade route.


## 0.2.4.115021 - Minecraft 1.15.2 (unreleased)

- Bring BOP building pieces, restored decorations and the Flower Basket to 1.15.2.
- Use the matching core pieces and BOP 10 materials.
- Recover retired ethereal wood as birch, with white cherry leaves and saplings.
- Replace dried sand with dried salt and barley with tall wheat.
- Preserve saved biome identities when upgrading, including chunks opened later.

## 0.2.4.114041

- Ported to Minecraft 1.14.4 and native waterlogging.
- Reused BOP's current slabs, stairs and walls where equivalent pieces exist.
- Added replacements for retired woods, gems and thatching when loading old pieces.
- Kept Flower Basket inventories, with old plant names converted before loading.
- Preserved existing migration totals and supported saved, unpopulated chunks.
- Added recipe-book unlocks for converting fallback rocks to Mineralogy blocks.

## 0.2.4.112021

- Updated for Building Pieces 0.3.8.112021.
Expand Down
3 changes: 3 additions & 0 deletions NOTICE
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,6 @@ see MINERALOGY-LGPL-3.0.txt and MINERALOGY-GPL-3.0.txt. The original PNG source
files are included in the source distribution and can be replaced by a
resource pack. No Mineralogy Java code is bundled.
Source: https://github.com/MinecraftModDevelopmentMods/MinecraftMineralogy

The build checks also include a small snapshot of Mineralogy's native recipe
and tag data, under the same accompanying Mineralogy licence notices.
Loading
Loading