Skip to content
Merged
  •  
  •  
  •  
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Changelog

## 0.2.6.121012

- Keep different materials and shapes on separate recipe-book buttons.
- Use the replacement material's existing recipes for retired BOP pieces, without repeating them in the book.
- Use the core's corrected snow drops, grass lifecycle and wooden-piece fuel values.
- Use the updated Building Pieces grass and snow behaviour.

## 0.2.5.121012

- Give each building piece and fallback rock its own block ID.
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ It doesn't accept unrelated items.
Use the versions for **Minecraft 1.21.1**, with **NeoForge 21.1.247** and
**Java 21**. You'll need:

- **Sky's Building Pieces 0.3.9.121012** and this add-on.
- **Sky's Building Pieces 0.3.10.121012** and this add-on.
- **Biomes O' Plenty 21.1.0.14**, **TerraBlender 4.1.0.8** and **GlitchCore 2.1.0.2**.

Put those jars in `mods` on both the client and server.
Expand Down
2 changes: 2 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -743,3 +743,5 @@ tasks.register('verifyNativeRecipeConflicts', Exec) {
environment 'BUILDING_PIECES_CORE_RESOURCES', new File(coreDirectory, 'src/main/resources').path
}
tasks.named('check') { dependsOn tasks.named('verifyNativeRecipeConflicts') }

apply from: 'gradle/recipe-resource-sync.gradle'
5 changes: 4 additions & 1 deletion docs/RECIPES.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Crafting

Use core 0.3.9.121012 for ordinary crafting recipes. No template or cutting tool
Use core 0.3.10.121012 for ordinary crafting recipes. No template or cutting tool
is required. All ingredients must be the same material, including wood type.

- Three full blocks in a row make six horizontal slabs.
Expand All @@ -24,6 +24,9 @@ does not add templates, wooden walls, fences, gates or terrain generation.
Use BOP's native fences and gates. BOP materials in this catalogue do not
have pane recipes.

Retired BOP materials use the replacement material's existing recipes.
Their saved pieces still recover normally, without adding extra recipe-book entries.

Six wooden sticks make one Flower Basket, using the handle-and-bowl pattern
shown in [the basket guide](FLOWER-BASKET.md). This recipe belongs to the add-on.

Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ release_enabled=true
curseforge_project_id=1755976
mod_name=Sky's Building Pieces - Biomes O Plenty
mod_license=LGPL-2.1-only
mod_version=0.2.5.121012
mod_version=0.2.6.121012
mod_group=zone.moddev.mc.skysbuildingpiecesbop
mod_authors=SkyBlade1978
mod_description=Biomes O Plenty building pieces with ordinary crafting recipes and optional legacy recovery. No world generation.
10 changes: 5 additions & 5 deletions gradle/core-dependency.properties
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
repository=MinecraftModDevelopmentMods/SkysBuildingPieces
kind=local-candidate
commit=98a8c72378829b7815527015c8aa124718beea04
version=0.3.9.121012
kind=release
commit=e251b23632f49eb54573bd6ff7373f4d00eb9560
version=0.3.10.121012
api=1
sha256=6E992F1A5CC79235C4FBD3E8EFCC2A865E147B793D2C7D20D6EF1815630F3105
development.sha256=6E992F1A5CC79235C4FBD3E8EFCC2A865E147B793D2C7D20D6EF1815630F3105
sha256=322C3D68E40630C6C4672CD74FB438FA08E15FB30FE524B421145A80F7E48573
development.sha256=322C3D68E40630C6C4672CD74FB438FA08E15FB30FE524B421145A80F7E48573
bop_modrinth_version=BtZKRp69
bop_sha256=5F3C8D752C2E0464ECA8C9527D8FFE498129FD37A2FE86A266B64C98371763B1
terrablender_modrinth_version=6e8GCrLb
Expand Down
6 changes: 4 additions & 2 deletions gradle/native-probes.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,13 @@ def compileBootstrap = tasks.register('compileNativeBootstrap', JavaCompile) {
source file(new File(project.ext.coreDirectory, 'src/integrationTest/java/zone/moddev/mc/skysbuildingpieces/probe/RecipeBookChecks.java'))
source file(new File(project.ext.coreDirectory, 'src/integrationTest/java/zone/moddev/mc/skysbuildingpieces/probe/RecombinationChecks.java'))
source file(new File(project.ext.coreDirectory, 'src/integrationTest/java/zone/moddev/mc/skysbuildingpieces/probe/PersistenceRegistrationChecks.java'))
['NativeLegacyChecks', 'DirtCoverageChecks', 'CoverageContributor', 'NativeProbeItems'].each { name ->
['NativeLegacyChecks', 'DirtCoverageChecks', 'CoverageContributor', 'NativeProbeItems',
'SurvivalDropChecks', 'FuelChecks', 'RecipeUniquenessChecks'].each { name ->
source file(new File(project.ext.coreDirectory, 'src/integrationTest/java/zone/moddev/mc/skysbuildingpieces/probe/' + name + '.java'))
}
source fileTree(new File(project.ext.coreDirectory, 'src/integrationTest/java/zone/moddev/mc/skysbuildingpieces/probe/legacy'))
['ClientProbe', 'ClientStatus', 'ProbeProxy', 'RecipePreviewModels', 'PresentationChecks', 'ConfigScreenChecks'].each { name ->
['ClientProbe', 'ClientStatus', 'ProbeProxy', 'RecipePreviewModels', 'PresentationChecks',
'ConfigScreenChecks', 'SnowCoverClientChecks', 'RecipeBookGroupChecks'].each { name ->
source file(new File(project.ext.coreDirectory, 'src/integrationTest/java/zone/moddev/mc/skysbuildingpieces/probe/' + name + '.java'))
}
['BasketGuiClientChecks', 'BasketDisconnectClientChecks', 'BasketClientChecks', 'BopProbeItems'].each { name ->
Expand Down
4 changes: 2 additions & 2 deletions gradle/optional-runtime.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Exact optional jars for local runtime verification.
grass.path=../../SkysGrassSlabs1211NEO/SkysGrassSlabs/build/libs/SkysGrassSlabs-1.2.0.121012.jar
grass.sha256=F095DD84AF9BFB6F90A9C3A091B526508C9516D3B76E0162ED67B470004322F8
grass.path=../../SkysGrassSlabs1211NEO/SkysGrassSlabs/build/libs/SkysGrassSlabs-1.2.1.121012.jar
grass.sha256=9A122E63CCAC190246ECA4DD6D5A8D84CA0150A10AF7768142F97EF5DEB8A3C8
mineralogy.path=../../../MinecraftMineralogy/MinecraftMineralogy 1211NEO/MinecraftMineralogy/build/libs/Mineralogy-6.1.4.121012.jar
mineralogy.sha256=E7A29C978CE751735F0842B89D4ADFC3E5B4A34188C3F41B5B2AE24A94BDCFFD
orespawn.path=../../../MinecraftMineralogy/OS1211NEO/OreSpawn/build/libs/OreSpawn-4.2.0.121012.jar
Expand Down
65 changes: 65 additions & 0 deletions gradle/recipe-resource-sync.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
// Keep removed recipes out of packaged resources and existing Eclipse outputs.
def recipeOwners = project.mod_id == 'skysbuildingpiecesbop'
? ['skysbuildingpieces', 'skysbuildingpiecesbop'] : [project.mod_id]
def recipeFolders = recipeOwners.collectMany { owner ->
["data/${owner}/recipe", "data/${owner}/advancement/recipes"]
}

def insideProject = { File directory ->
File resolved = directory.canonicalFile
if (!resolved.toPath().startsWith(projectDir.canonicalFile.toPath())
|| resolved == projectDir.canonicalFile) {
throw new GradleException("Recipe output is outside this checkout: ${resolved}")
}
resolved
}

def recipeFiles = { File root ->
Set<String> files = new TreeSet<>()
recipeFolders.each { relative ->
File folder = new File(root, relative)
fileTree(folder) { include '**/*.json' }.files.each { path ->
files.add(relative + '/' + folder.toPath().relativize(path.toPath()).toString().replace('\\', '/'))
}
}
files
}

tasks.named('processResources') {
doFirst {
File output = insideProject(destinationDir)
recipeFolders.each { relative ->
project.delete(insideProject(new File(output, relative)))
}
}
}

tasks.named('prepareEclipseResources') {
doLast {
File eclipseOutput = insideProject(file('bin/main'))
recipeFolders.each { relative ->
project.sync {
from(layout.buildDirectory.dir("resources/main/${relative}"))
into(insideProject(new File(eclipseOutput, relative)))
}
}
}
}

def verifyRecipeResourceOutputs = tasks.register('verifyRecipeResourceOutputs') {
group = 'verification'
description = 'Checks that processed and Eclipse recipes match the current source resources.'
dependsOn tasks.named('processResources'), tasks.named('prepareEclipseResources')
doLast {
Set<String> expected = new TreeSet<>()
sourceSets.main.resources.srcDirs.each { root -> expected.addAll(recipeFiles(root)) }
[layout.buildDirectory.dir('resources/main').get().asFile, file('bin/main')].each { output ->
Set<String> actual = recipeFiles(output)
if (actual != expected) {
throw new GradleException("Recipe output mismatch in ${output}: "
+ "missing=${expected - actual}, stale=${actual - expected}")
}
}
}
}
tasks.named('check') { dependsOn verifyRecipeResourceOutputs }
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,9 @@ private void started(ServerStartedEvent event) {
NativeNamedForwardChecks.prepare(pendingServer.getLevel(net.minecraft.world.level.Level.OVERWORLD));
return;
}
if (!java.nio.file.Files.exists(java.nio.file.Path.of("forward-fixture.json"))) {
event.getServer().overworld().setChunkForced(-500 >> 4, -500 >> 4, true);
}
audit(event.getServer());
} catch (Exception failure) {
LOGGER.error("Cannot prepare the native BOP fixture", failure);
Expand Down Expand Up @@ -191,6 +194,9 @@ private void finishRecipeBatch() {
return;
}
// Resource reload can interrupt an integrated client's login.
zone.moddev.mc.skysbuildingpieces.probe.SurvivalDropChecks.run(server.overworld());
zone.moddev.mc.skysbuildingpieces.probe.FuelChecks.run();
server.overworld().setChunkForced(-500 >> 4, -500 >> 4, false);
zone.moddev.mc.skysbuildingpieces.probe.RecipeBookChecks.run(server.getLevel(Level.OVERWORLD));
BopPersistenceOrderChecks.verify(server.getLevel(Level.OVERWORLD));
LOGGER.info("BUILDING_PIECES_BOP_NATIVE_BOOTSTRAP_PASS materials=33 palettes=66 retired_items=7");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
@Mod(SkysBuildingPiecesBop.ID)
public final class SkysBuildingPiecesBop {
public static final String ID = "skysbuildingpiecesbop";
public static final String VERSION = "0.2.5.121012";
public static final String VERSION = "0.2.6.121012";

public SkysBuildingPiecesBop(IEventBus modBus) {
if (BuildingPiecesApi.VERSION != 1) {
Expand Down
Loading
Loading