From 70734fc040ec804ea27cd886687c6c02c6f05991 Mon Sep 17 00:00:00 2001 From: JohnBraham Date: Wed, 11 Nov 2026 12:02:03 +0000 Subject: [PATCH 1/2] Fix raw meat turning into tallow on NeoForge 1.20.6 --- .github/workflows/ci.yml | 6 +-- CHANGELOG.md | 4 ++ README.md | 6 ++- build.gradle | 6 +-- docs/VERSIONS.md | 4 +- gradle.properties | 2 +- gradle/lighting-catalog.gradle | 4 -- .../recipes/phase_four/tallow_from_beef.json | 40 ------------------- .../phase_four/tallow_from_chicken.json | 40 ------------------- .../phase_four/tallow_from_mutton.json | 40 ------------------- .../phase_four/tallow_from_porkchop.json | 40 ------------------- .../phase_four/tallow_from_rabbit.json | 40 ------------------- .../phase_four/tallow_from_rotten_flesh.json | 40 ------------------- .../recipes/tallow_from_beef.json | 19 --------- .../recipes/tallow_from_chicken.json | 19 --------- .../recipes/tallow_from_mutton.json | 19 --------- .../recipes/tallow_from_porkchop.json | 19 --------- .../recipes/tallow_from_rabbit.json | 19 --------- .../recipes/tallow_from_rotten_flesh.json | 19 --------- 19 files changed, 17 insertions(+), 369 deletions(-) delete mode 100644 src/main/resources/data/ironagefurniture/advancements/recipes/phase_four/tallow_from_beef.json delete mode 100644 src/main/resources/data/ironagefurniture/advancements/recipes/phase_four/tallow_from_chicken.json delete mode 100644 src/main/resources/data/ironagefurniture/advancements/recipes/phase_four/tallow_from_mutton.json delete mode 100644 src/main/resources/data/ironagefurniture/advancements/recipes/phase_four/tallow_from_porkchop.json delete mode 100644 src/main/resources/data/ironagefurniture/advancements/recipes/phase_four/tallow_from_rabbit.json delete mode 100644 src/main/resources/data/ironagefurniture/advancements/recipes/phase_four/tallow_from_rotten_flesh.json delete mode 100644 src/main/resources/data/ironagefurniture/recipes/tallow_from_beef.json delete mode 100644 src/main/resources/data/ironagefurniture/recipes/tallow_from_chicken.json delete mode 100644 src/main/resources/data/ironagefurniture/recipes/tallow_from_mutton.json delete mode 100644 src/main/resources/data/ironagefurniture/recipes/tallow_from_porkchop.json delete mode 100644 src/main/resources/data/ironagefurniture/recipes/tallow_from_rabbit.json delete mode 100644 src/main/resources/data/ironagefurniture/recipes/tallow_from_rotten_flesh.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 082876e593..82725506b8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -89,9 +89,9 @@ jobs: if-no-files-found: error retention-days: 30 path: | - build/libs/iron-age-furniture-0.4.0.120062.jar - build/libs/iron-age-furniture-0.4.0.120062-sources.jar - build/libs/iron-age-furniture-0.4.0.120062-javadoc.jar + build/libs/iron-age-furniture-0.4.1.120062.jar + build/libs/iron-age-furniture-0.4.1.120062-sources.jar + build/libs/iron-age-furniture-0.4.1.120062-javadoc.jar build/release/SHA256SUMS CHANGELOG.md - name: Upload diagnostics on failure diff --git a/CHANGELOG.md b/CHANGELOG.md index a335dd5469..d8b169bdba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +# IronAgeFurniture 0.4.1.120062 + +- Remove the old tallow recipes so raw meat cooks normally again. + # IronAgeFurniture 0.4.0.120062 - Bring Phase 4 to Minecraft 1.20.6: single and double beds, canopies, wingback chairs and thrones in all supported vanilla and BOP woods and colours. diff --git a/README.md b/README.md index a3ea230a28..ae304f7164 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,9 @@ IronAgeFurniture adds chairs, stools, benches, lighting, and other ye olde-style furniture to Minecraft. -This branch is for Minecraft 1.20.6 with NeoForge 20.6.139. The Phase 4 version is `0.4.0.120062`. +This branch is for Minecraft 1.20.6 with NeoForge 20.6.139. The Phase 4 version is `0.4.1.120062`. + +This fixes raw meat turning into tallow when cooked. Minecraft has its own candles now, so the old tallow recipes are no longer needed. Phase 4 adds single and double beds, canopies, wingback chairs, thrones, removable shield displays and sconces that hold up to four candles. Shields and candles keep their names and other saved details when removed. Furniture is organised into four creative tabs, with gameplay settings controlled by the server. All 17 translations are included. @@ -33,7 +35,7 @@ Generate reproducible Eclipse/Buildship metadata with: gradlew.bat prepareEclipse verifyEclipseProductionClasspath ``` -Releases use the manual publication workflow after CI passes. A local build does not publish anything. The Maven coordinate is `zone.moddev.mc:iron-age-furniture:0.4.0.120062`. +Releases use the manual publication workflow after CI passes. A local build does not publish anything. The Maven coordinate is `zone.moddev.mc:iron-age-furniture:0.4.1.120062`. Furniture registrations and their matching blockstates, models, recipes, advancements, and translations are generated from `gradle/furniture-catalog.json`. Normal builds verify committed output without changing it; run `gradlew.bat updateFurnitureCatalog` only when intentionally changing the catalog. diff --git a/build.gradle b/build.gradle index ce7efd484a..489fb802f3 100644 --- a/build.gradle +++ b/build.gradle @@ -601,7 +601,7 @@ tasks.register('verifyReleaseConfiguration') { description = 'Verifies the exact IronAgeFurniture 1.20.6 NeoForge release identity.' doLast { Map expected = [ - mod_version : '0.4.0.120062', + mod_version : '0.4.1.120062', mod_group : 'zone.moddev.mc', mod_archive_name : 'iron-age-furniture', mod_id : 'ironagefurniture', @@ -679,8 +679,8 @@ tasks.register('verifyResourceJson') { include '**/pack.mcmeta' }.files.sort { it.path } // Includes the copper-ingot fallback recipe and its discovery advancement. - if (jsonFiles.size() != 27232) { - throw new GradleException("Expected 27232 runtime JSON documents, found ${jsonFiles.size()}") + if (jsonFiles.size() != 27220) { + throw new GradleException("Expected 27220 runtime JSON documents, found ${jsonFiles.size()}") } jsonFiles.each { candidate -> try { diff --git a/docs/VERSIONS.md b/docs/VERSIONS.md index 7d1960316a..6c2a01c068 100644 --- a/docs/VERSIONS.md +++ b/docs/VERSIONS.md @@ -4,8 +4,8 @@ IronAgeFurniture releases use `Major.Minor.Bug.Target`. The first three componen The target is calculated as `MmmppL`: Minecraft major without padding, two-digit minor, two-digit patch, and a one-digit loader code. Forge uses loader code `1`; NeoForge uses `2`. -For Minecraft 1.20.6 NeoForge, the target is `120062`, so the Phase 4 version is `0.4.0.120062`. The release tag is the complete version, without a prefix. Local builds do not create tags or publish releases. +For Minecraft 1.20.6 NeoForge, the target is `120062`, so the Phase 4 version is `0.4.1.120062`. The release tag is the complete version, without a prefix. Local builds do not create tags or publish releases. -Equivalent Phase 4 ports retain `0.4.0` and change only the target. A player-visible feature or fix changes Major, Minor, or Bug independently of the target. The target does not imply compatibility with saves from newer Minecraft releases. +Equivalent ports retain their functional version and change only the target. A player-visible feature or fix changes Major, Minor, or Bug independently of the target. The target does not imply compatibility with saves from newer Minecraft releases. The complete version must agree with `minecraft_version`, `loader_name`, and `loader_code` in `gradle.properties`. CI build numbers are never appended. diff --git a/gradle.properties b/gradle.properties index 278ba34602..3bfcba71ed 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ org.gradle.caching=true org.gradle.parallel=false # Project and release identity. -mod_version=0.4.0.120062 +mod_version=0.4.1.120062 mod_group=zone.moddev.mc mod_archive_name=iron-age-furniture mod_id=ironagefurniture diff --git a/gradle/lighting-catalog.gradle b/gradle/lighting-catalog.gradle index c48f0a8790..a777bbaded 100644 --- a/gradle/lighting-catalog.gradle +++ b/gradle/lighting-catalog.gradle @@ -135,9 +135,5 @@ ext.renderLightingCatalog = { File outputRoot, Map language -> write("${assets}/models/item/tallow.json", [parent: 'minecraft:item/generated', textures: [layer0: 'ironagefurniture:item/tallow']]) write("${data}/recipes/candles_from_tallow.json", [type: 'minecraft:crafting_shapeless', ingredients: [[item: 'ironagefurniture:tallow'], [item: 'minecraft:string']], result: [id: 'minecraft:candle', count: 8], 'neoforge:conditions': lightConditions]) discover('candles_from_tallow', 'ironagefurniture:tallow', lightConditions) - [porkchop: 3, beef: 2, mutton: 2, rabbit: 1, chicken: 1, rotten_flesh: 1].each { meat, count -> - write("${data}/recipes/tallow_from_${meat}.json", [type: 'minecraft:smelting', category: 'food', ingredient: [item: "minecraft:${meat}"], result: [id: 'ironagefurniture:tallow', count: count], experience: .1, cookingtime: 200, 'neoforge:conditions': lightConditions]) - discover("tallow_from_${meat}".toString(), "minecraft:${meat}".toString(), lightConditions) - } generated } diff --git a/src/main/resources/data/ironagefurniture/advancements/recipes/phase_four/tallow_from_beef.json b/src/main/resources/data/ironagefurniture/advancements/recipes/phase_four/tallow_from_beef.json deleted file mode 100644 index 8f777d9e71..0000000000 --- a/src/main/resources/data/ironagefurniture/advancements/recipes/phase_four/tallow_from_beef.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "minecraft:beef" - ] - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "ironagefurniture:tallow_from_beef" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "ironagefurniture:tallow_from_beef" - ] - }, - "neoforge:conditions": [ - { - "type": "ironagefurniture:feature_enabled", - "feature": "lights" - } - ] -} diff --git a/src/main/resources/data/ironagefurniture/advancements/recipes/phase_four/tallow_from_chicken.json b/src/main/resources/data/ironagefurniture/advancements/recipes/phase_four/tallow_from_chicken.json deleted file mode 100644 index b69bf965f8..0000000000 --- a/src/main/resources/data/ironagefurniture/advancements/recipes/phase_four/tallow_from_chicken.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "minecraft:chicken" - ] - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "ironagefurniture:tallow_from_chicken" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "ironagefurniture:tallow_from_chicken" - ] - }, - "neoforge:conditions": [ - { - "type": "ironagefurniture:feature_enabled", - "feature": "lights" - } - ] -} diff --git a/src/main/resources/data/ironagefurniture/advancements/recipes/phase_four/tallow_from_mutton.json b/src/main/resources/data/ironagefurniture/advancements/recipes/phase_four/tallow_from_mutton.json deleted file mode 100644 index 7fdf68c046..0000000000 --- a/src/main/resources/data/ironagefurniture/advancements/recipes/phase_four/tallow_from_mutton.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "minecraft:mutton" - ] - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "ironagefurniture:tallow_from_mutton" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "ironagefurniture:tallow_from_mutton" - ] - }, - "neoforge:conditions": [ - { - "type": "ironagefurniture:feature_enabled", - "feature": "lights" - } - ] -} diff --git a/src/main/resources/data/ironagefurniture/advancements/recipes/phase_four/tallow_from_porkchop.json b/src/main/resources/data/ironagefurniture/advancements/recipes/phase_four/tallow_from_porkchop.json deleted file mode 100644 index 16caaef231..0000000000 --- a/src/main/resources/data/ironagefurniture/advancements/recipes/phase_four/tallow_from_porkchop.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "minecraft:porkchop" - ] - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "ironagefurniture:tallow_from_porkchop" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "ironagefurniture:tallow_from_porkchop" - ] - }, - "neoforge:conditions": [ - { - "type": "ironagefurniture:feature_enabled", - "feature": "lights" - } - ] -} diff --git a/src/main/resources/data/ironagefurniture/advancements/recipes/phase_four/tallow_from_rabbit.json b/src/main/resources/data/ironagefurniture/advancements/recipes/phase_four/tallow_from_rabbit.json deleted file mode 100644 index 87d5725ed6..0000000000 --- a/src/main/resources/data/ironagefurniture/advancements/recipes/phase_four/tallow_from_rabbit.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "minecraft:rabbit" - ] - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "ironagefurniture:tallow_from_rabbit" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "ironagefurniture:tallow_from_rabbit" - ] - }, - "neoforge:conditions": [ - { - "type": "ironagefurniture:feature_enabled", - "feature": "lights" - } - ] -} diff --git a/src/main/resources/data/ironagefurniture/advancements/recipes/phase_four/tallow_from_rotten_flesh.json b/src/main/resources/data/ironagefurniture/advancements/recipes/phase_four/tallow_from_rotten_flesh.json deleted file mode 100644 index 8e56462672..0000000000 --- a/src/main/resources/data/ironagefurniture/advancements/recipes/phase_four/tallow_from_rotten_flesh.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "items": [ - "minecraft:rotten_flesh" - ] - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "ironagefurniture:tallow_from_rotten_flesh" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "ironagefurniture:tallow_from_rotten_flesh" - ] - }, - "neoforge:conditions": [ - { - "type": "ironagefurniture:feature_enabled", - "feature": "lights" - } - ] -} diff --git a/src/main/resources/data/ironagefurniture/recipes/tallow_from_beef.json b/src/main/resources/data/ironagefurniture/recipes/tallow_from_beef.json deleted file mode 100644 index 7fd9d20b20..0000000000 --- a/src/main/resources/data/ironagefurniture/recipes/tallow_from_beef.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:smelting", - "category": "food", - "ingredient": { - "item": "minecraft:beef" - }, - "result": { - "id": "ironagefurniture:tallow", - "count": 2 - }, - "experience": 0.1, - "cookingtime": 200, - "neoforge:conditions": [ - { - "type": "ironagefurniture:feature_enabled", - "feature": "lights" - } - ] -} diff --git a/src/main/resources/data/ironagefurniture/recipes/tallow_from_chicken.json b/src/main/resources/data/ironagefurniture/recipes/tallow_from_chicken.json deleted file mode 100644 index 2c127778bf..0000000000 --- a/src/main/resources/data/ironagefurniture/recipes/tallow_from_chicken.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:smelting", - "category": "food", - "ingredient": { - "item": "minecraft:chicken" - }, - "result": { - "id": "ironagefurniture:tallow", - "count": 1 - }, - "experience": 0.1, - "cookingtime": 200, - "neoforge:conditions": [ - { - "type": "ironagefurniture:feature_enabled", - "feature": "lights" - } - ] -} diff --git a/src/main/resources/data/ironagefurniture/recipes/tallow_from_mutton.json b/src/main/resources/data/ironagefurniture/recipes/tallow_from_mutton.json deleted file mode 100644 index 4c21ae35a1..0000000000 --- a/src/main/resources/data/ironagefurniture/recipes/tallow_from_mutton.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:smelting", - "category": "food", - "ingredient": { - "item": "minecraft:mutton" - }, - "result": { - "id": "ironagefurniture:tallow", - "count": 2 - }, - "experience": 0.1, - "cookingtime": 200, - "neoforge:conditions": [ - { - "type": "ironagefurniture:feature_enabled", - "feature": "lights" - } - ] -} diff --git a/src/main/resources/data/ironagefurniture/recipes/tallow_from_porkchop.json b/src/main/resources/data/ironagefurniture/recipes/tallow_from_porkchop.json deleted file mode 100644 index 22b91aa75a..0000000000 --- a/src/main/resources/data/ironagefurniture/recipes/tallow_from_porkchop.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:smelting", - "category": "food", - "ingredient": { - "item": "minecraft:porkchop" - }, - "result": { - "id": "ironagefurniture:tallow", - "count": 3 - }, - "experience": 0.1, - "cookingtime": 200, - "neoforge:conditions": [ - { - "type": "ironagefurniture:feature_enabled", - "feature": "lights" - } - ] -} diff --git a/src/main/resources/data/ironagefurniture/recipes/tallow_from_rabbit.json b/src/main/resources/data/ironagefurniture/recipes/tallow_from_rabbit.json deleted file mode 100644 index c8b7ef1b73..0000000000 --- a/src/main/resources/data/ironagefurniture/recipes/tallow_from_rabbit.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:smelting", - "category": "food", - "ingredient": { - "item": "minecraft:rabbit" - }, - "result": { - "id": "ironagefurniture:tallow", - "count": 1 - }, - "experience": 0.1, - "cookingtime": 200, - "neoforge:conditions": [ - { - "type": "ironagefurniture:feature_enabled", - "feature": "lights" - } - ] -} diff --git a/src/main/resources/data/ironagefurniture/recipes/tallow_from_rotten_flesh.json b/src/main/resources/data/ironagefurniture/recipes/tallow_from_rotten_flesh.json deleted file mode 100644 index d5be5d625e..0000000000 --- a/src/main/resources/data/ironagefurniture/recipes/tallow_from_rotten_flesh.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:smelting", - "category": "food", - "ingredient": { - "item": "minecraft:rotten_flesh" - }, - "result": { - "id": "ironagefurniture:tallow", - "count": 1 - }, - "experience": 0.1, - "cookingtime": 200, - "neoforge:conditions": [ - { - "type": "ironagefurniture:feature_enabled", - "feature": "lights" - } - ] -} From 0848b0b94dda501b589f4fc98af855340c70450c Mon Sep 17 00:00:00 2001 From: JohnBraham Date: Wed, 11 Nov 2026 12:16:31 +0000 Subject: [PATCH 2/2] Update the remaining tallow recipe audit on NeoForge 1.20.6 --- build.gradle | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/build.gradle b/build.gradle index 489fb802f3..3cd786db4c 100644 --- a/build.gradle +++ b/build.gradle @@ -733,13 +733,14 @@ tasks.register('verifyResourceJson') { boolean optional = !(metal in ['iron', 'gold', 'copper']) [("light_metal_ironage_sconce_floor_empty_${optional ? 'basemetals_' : ''}${metal}.json".toString()): metal] } - Map tallowYields = [porkchop: 3, beef: 2, mutton: 2, rabbit: 1, chicken: 1, rotten_flesh: 1] - Set waxRecipes = (tallowYields.keySet().collect { "tallow_from_${it}.json".toString() } - + ['candles_from_tallow.json']).toSet() + Set waxRecipes = ['candles_from_tallow.json'].toSet() if (!recipeDocuments.keySet()*.name.containsAll(frameRecipes.keySet() + waxRecipes)) { - throw new GradleException('All 23 fixed-material frame recipes and seven tallow/candle recipes are required') + throw new GradleException('All 23 fixed-material frame recipes and the legacy tallow-to-candle recipe are required') } recipeDocuments.each { recipeFile, document -> + if (document.result instanceof Map && document.result.id == 'ironagefurniture:tallow') { + throw new GradleException("Retired tallow production recipe remains: ${recipeFile}") + } if (recipeFile.name == 'bed_recolour.json') { if (document != [type: 'ironagefurniture:bed_recolour']) throw new GradleException('Manual bed recolouring must retain its exact special recipe identity') @@ -793,19 +794,10 @@ tasks.register('verifyResourceJson') { } } if (waxRecipes.contains(recipeFile.name)) { - if (recipeFile.name == 'candles_from_tallow.json') { - if (document.type != 'minecraft:crafting_shapeless' - || document.ingredients != [[item: 'ironagefurniture:tallow'], [item: 'minecraft:string']] - || document.result != [id: 'minecraft:candle', count: 8]) { - throw new GradleException('Tallow plus string must retain the eight native vanilla candles recipe') - } - } else { - String meat = recipeFile.name.substring('tallow_from_'.length(), recipeFile.name.length() - 5) - if (document.type != 'minecraft:smelting' || document.ingredient != [item: "minecraft:${meat}".toString()] - || document.result != [id: 'ironagefurniture:tallow', count: tallowYields[meat]] - || document.experience != 0.1 || document.cookingtime != 200) { - throw new GradleException("Tallow smelting input, yield or native cooking contract changed: ${recipeFile}") - } + if (document.type != 'minecraft:crafting_shapeless' + || document.ingredients != [[item: 'ironagefurniture:tallow'], [item: 'minecraft:string']] + || document.result != [id: 'minecraft:candle', count: 8]) { + throw new GradleException('Tallow plus string must retain the eight native vanilla candles recipe') } } }