From 414afb15da464e8894b9dda6010978f98c468191 Mon Sep 17 00:00:00 2001 From: koka Date: Thu, 27 Aug 2026 12:20:14 +0200 Subject: [PATCH] release: prepare 26.2.0-alpha.202 --- CHANGELOG.md | 12 ++ README.md | 4 +- build.gradle | 178 +++++++++++++----- gradle.properties | 8 +- iliketomoveit/build.gradle | 38 +++- itsalive/build.gradle | 58 +++++- ...1-waystone-shop-culinary-to-alpha.202.json | 56 ++++++ pack/packwiz/index.toml | 26 +-- pack/packwiz/pack.toml | 4 +- pack/prism/modrinth.index.json | 2 +- pack/release.json | 4 +- sanctuary/build.gradle | 55 +++++- 12 files changed, 358 insertions(+), 87 deletions(-) create mode 100644 pack/migrations/26.2.0-alpha.201-waystone-shop-culinary-to-alpha.202.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b6f570..e126843 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,18 @@ Ce journal suit les **versions du modpack**. Lorsqu'un seul module change, sa ve - Depuis `26.2.0-alpha.6`, le pack et les modules ont des versions indépendantes. I Like To Move It et Only Fun deviennent les cinquième et sixième modules actifs dans l'alpha 46. - Les versions ci-dessous ont été reconstituées à partir des JAR archivés, des packs locaux et du code source actuel. Les dates n'étant pas enregistrées de manière fiable, elles ne sont pas inventées. +## `26.2.0-alpha.202` + +Modules modifiés : **It's Alive `0.0.0-alpha.31`**, **I Like To Move It `0.0.0-alpha.14`** et **Sanctuary `0.0.0-alpha.117`**. Les sept autres modules conservent leur version issue de l’alpha.201. + +- autorise la descente directe par un ascenseur de Waystones vers l’étage immédiatement inférieur encore inconnu et le découvre après l’arrivée ; +- exige toujours une découverte préalable pour monter par l’ascenseur ou emprunter un trajet Waystone ordinaire ; +- compte et consomme les rubis, saphirs et émeraudes du Shop et du marché noir dans toutes les rangées Sanctuary débloquées, y compris les rangées d’overflow, sans compter deux fois une pile visible par plusieurs vues ; +- permet de poser le livre de recettes culinaires It’s Alive sur un pupitre vanilla et d’y consulter le catalogue appris par le joueur qui l’a placé ; +- efface cette inscription lorsque le livre est retiré ou le pupitre cassé, afin que le livre redevienne personnel dans l’inventaire ; +- ajoute l’infobulle FR/EN/RU du livre partageable et le tag vanilla `minecraft:lectern_books` ; +- conserve les données It’s Alive v1, I Like To Move It v3 et Sanctuary v11, leurs protocoles 3, 5 et 21, tous les IDs et toutes les sauvegardes existantes. + ## `26.2.0-alpha.201` Module modifié : **Sanctuary `0.0.0-alpha.116`**. Les neuf autres modules conservent leur version issue de l’alpha.200. diff --git a/README.md b/README.md index 624662b..af3e985 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,9 @@ Licence : **GNU GPL 3.0 or Later** (`GPL-3.0-or-later`) Les descriptions FR/EN/RU sont déclarées dans chaque `fabric.mod.json` et dans les fichiers de langue. Les images fournies servent d'icônes Fabric de leur module. -Version courante du pack local : **`26.2.0-alpha.201`**. Sanctuary passe en **`0.0.0-alpha.116`** ; les neuf autres modules conservent leur version de l’alpha.200. +Version courante du pack local : **`26.2.0-alpha.202`**. It’s Alive passe en **`0.0.0-alpha.31`**, I Like To Move It en **`0.0.0-alpha.14`** et Sanctuary en **`0.0.0-alpha.117`** ; les sept autres modules conservent leur version de l’alpha.201. + +L’alpha.202 permet de descendre par un ascenseur de Waystones vers l’étage immédiatement inférieur encore inconnu, sans ouvrir la montée ni les trajets ordinaires aux destinations non découvertes. Le Shop et le marché noir comptent et consomment désormais les rubis et saphirs de toutes les rangées débloquées, y compris l’overflow. Le livre culinaire peut enfin être posé sur un pupitre vanilla pour partager le catalogue de recettes de son propriétaire ; retiré du pupitre, il redevient personnel. L’alpha.201 rend les demandes communautaires réellement terminables. Le demandeur dépose la récompense lors de la publication, le preneur confirme sans commande après avoir lu les détails, KILL progresse automatiquement, BRING livre les objets au demandeur et PAY est confirmé par le joueur désigné. La récompense séquestrée est ensuite expédiée une seule fois dans la Mailbox du preneur. Le pseudonyme conserve la couleur du joueur et le panneau rose adopte une palette plus claire et poudrée. diff --git a/build.gradle b/build.gradle index 9a26495..7362dea 100644 --- a/build.gradle +++ b/build.gradle @@ -3427,8 +3427,8 @@ tasks.register("verifyProgressivePauseMenuRelease") { [(locale): new JsonSlurper().parse(file( "sanctuary/src/main/resources/assets/sanctuary/lang/${locale}.json"))] } - if (rootProject.pack_version != "26.2.0-alpha.201" - || rootProject.sanctuary_version != "0.0.0-alpha.116" + if (rootProject.pack_version != "26.2.0-alpha.202" + || rootProject.sanctuary_version != "0.0.0-alpha.117" || rootProject.onlyfun_version != "0.0.0-alpha.19" || release.pack_version != rootProject.pack_version || index.versionId != rootProject.pack_version || migration.source?.modules != [sanctuary: "0.0.0-alpha.108", onlyfun: "0.0.0-alpha.17"] @@ -3477,7 +3477,7 @@ tasks.register("verifyMirrorLavenderDrawerRelease") { def redStonerRegistry = file( "redstoner/src/main/java/fr/koka99cab/sanctuary26/redstoner/registry/RedStonerRegistries.java").text def drawerRecipe = file("redstoner/src/main/resources/data/redstoner/recipe/drawer.json") - if (rootProject.pack_version != "26.2.0-alpha.201" + if (rootProject.pack_version != "26.2.0-alpha.202" || rootProject.anotherworld_version != "0.0.0-alpha.49" || rootProject.redstoner_version != "0.0.0-alpha.10" || release.pack_version != rootProject.pack_version || index.versionId != rootProject.pack_version @@ -4122,9 +4122,9 @@ tasks.register("verifyShopPricingLayoutRelease") { "pack/migrations/26.2.0-alpha.192-shop-pricing-layout-to-alpha.193.json")) def release = new JsonSlurper().parse(file("pack/release.json")) def index = new JsonSlurper().parse(file("pack/prism/modrinth.index.json")) - if (rootProject.pack_version != "26.2.0-alpha.201" + if (rootProject.pack_version != "26.2.0-alpha.202" || rootProject.onlyfun_version != "0.0.0-alpha.19" - || rootProject.sanctuary_version != "0.0.0-alpha.116" + || rootProject.sanctuary_version != "0.0.0-alpha.117" || release.pack_version != rootProject.pack_version || index.versionId != rootProject.pack_version || migration.source?.pack_version != "26.2.0-alpha.192" || migration.target?.pack_version != "26.2.0-alpha.193" @@ -4167,8 +4167,8 @@ tasks.register("verifyCuisineCropsRelease") { def climate = file("itsalive/src/main/java/fr/koka99cab/sanctuary26/itsalive/agriculture/ClimateCropForaging.java").text def rice = file("itsalive/src/main/java/fr/koka99cab/sanctuary26/itsalive/agriculture/RiceCropBlock.java").text def bean = file("itsalive/src/main/java/fr/koka99cab/sanctuary26/itsalive/agriculture/BeanCropBlock.java").text - if (rootProject.pack_version != "26.2.0-alpha.201" - || rootProject.itsalive_version != "0.0.0-alpha.30" + if (rootProject.pack_version != "26.2.0-alpha.202" + || rootProject.itsalive_version != "0.0.0-alpha.31" || release.pack_version != rootProject.pack_version || index.versionId != rootProject.pack_version || migration.source?.pack_version != "26.2.0-alpha.193" || migration.source?.modules != [itsalive: "0.0.0-alpha.26"] @@ -4216,9 +4216,9 @@ tasks.register("verifyShopCsvBossGatesRelease") { def bossGate = file("onlyfun/src/main/java/fr/koka99cab/sanctuary26/onlyfun/shop/OnlyFunBossShopGate.java").text def catalog = file("onlyfun/src/main/java/fr/koka99cab/sanctuary26/onlyfun/shop/OnlyFunShopCatalog.java").text def offerCatalog = file("sanctuary/src/main/java/fr/koka99cab/sanctuary26/sanctuary/shop/ShopOfferCatalog.java").text - if (rootProject.pack_version != "26.2.0-alpha.201" + if (rootProject.pack_version != "26.2.0-alpha.202" || rootProject.onlyfun_version != "0.0.0-alpha.19" - || rootProject.sanctuary_version != "0.0.0-alpha.116" + || rootProject.sanctuary_version != "0.0.0-alpha.117" || release.pack_version != rootProject.pack_version || index.versionId != rootProject.pack_version || migration.source?.pack_version != "26.2.0-alpha.194" || migration.source?.modules != [onlyfun: "0.0.0-alpha.18", sanctuary: "0.0.0-alpha.110"] @@ -4262,7 +4262,7 @@ tasks.register("verifyCulinaryMailboxGrappleFixesRelease") { def release = new JsonSlurper().parse(file("pack/release.json")) def prism = new JsonSlurper().parse(file("pack/prism/modrinth.index.json")) def packwiz = file("pack/packwiz/pack.toml").text - if (rootProject.pack_version != "26.2.0-alpha.201" + if (rootProject.pack_version != "26.2.0-alpha.202" || migration.source?.pack_version != "26.2.0-alpha.195" || migration.target?.pack_version != "26.2.0-alpha.196" || migration.target?.modules != [ @@ -4280,10 +4280,10 @@ tasks.register("verifyCulinaryMailboxGrappleFixesRelease") { || migration.distribution?.jei?.target != "30.26.0.182" || migration.compatibility?.save_migration_required != false || migration.compatibility?.registry_ids_changed != false - || release.pack_version != "26.2.0-alpha.201" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.201.mrpack" - || prism.versionId != "26.2.0-alpha.201" - || !packwiz.contains('version = "26.2.0-alpha.201"')) { + || release.pack_version != "26.2.0-alpha.202" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.202.mrpack" + || prism.versionId != "26.2.0-alpha.202" + || !packwiz.contains('version = "26.2.0-alpha.202"')) { throw new GradleException("The alpha.196 culinary, mailbox and grapple release contract is incomplete") } } @@ -4308,9 +4308,9 @@ tasks.register("verifyQuestRequestsCauldronBatchesRelease") { def prism = new JsonSlurper().parse(file("pack/prism/modrinth.index.json")) def packwiz = file("pack/packwiz/pack.toml").text def sanctuaryManifest = new JsonSlurper().parse(file("sanctuary/src/main/resources/fabric.mod.json")) - if (rootProject.pack_version != "26.2.0-alpha.201" - || rootProject.itsalive_version != "0.0.0-alpha.30" - || rootProject.sanctuary_version != "0.0.0-alpha.116" + if (rootProject.pack_version != "26.2.0-alpha.202" + || rootProject.itsalive_version != "0.0.0-alpha.31" + || rootProject.sanctuary_version != "0.0.0-alpha.117" || migration.source?.pack_version != "26.2.0-alpha.196" || migration.target?.pack_version != "26.2.0-alpha.197" || migration.target?.modules != [itsalive: "0.0.0-alpha.29", sanctuary: "0.0.0-alpha.113"] @@ -4328,10 +4328,10 @@ tasks.register("verifyQuestRequestsCauldronBatchesRelease") { || migration.distribution?.jei?.target != "30.26.0.186" || migration.compatibility?.sanctuary_target_network_protocol != 19 || sanctuaryManifest.custom?.sanctuary26?.network_protocol != 21 - || release.pack_version != "26.2.0-alpha.201" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.201.mrpack" - || prism.versionId != "26.2.0-alpha.201" - || !packwiz.contains('version = "26.2.0-alpha.201"')) { + || release.pack_version != "26.2.0-alpha.202" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.202.mrpack" + || prism.versionId != "26.2.0-alpha.202" + || !packwiz.contains('version = "26.2.0-alpha.202"')) { throw new GradleException("The alpha.197 quest-request and cauldron-batch release contract is incomplete") } } @@ -4358,8 +4358,8 @@ tasks.register("verifyFermentationBarrelAutomationRelease") { def packwiz = file("pack/packwiz/pack.toml").text def packwizIndex = file("pack/packwiz/index.toml").text def itsAliveManifest = new JsonSlurper().parse(file("itsalive/src/main/resources/fabric.mod.json")) - if (rootProject.pack_version != "26.2.0-alpha.201" - || rootProject.itsalive_version != "0.0.0-alpha.30" + if (rootProject.pack_version != "26.2.0-alpha.202" + || rootProject.itsalive_version != "0.0.0-alpha.31" || migration.source?.pack_version != "26.2.0-alpha.197" || migration.target?.pack_version != "26.2.0-alpha.198" || migration.target?.modules != [itsalive: "0.0.0-alpha.30", sanctuary: "0.0.0-alpha.114"] @@ -4377,11 +4377,11 @@ tasks.register("verifyFermentationBarrelAutomationRelease") { || migration.distribution?.packwiz_index_refreshed != true || itsAliveManifest.custom?.sanctuary26?.data_version != 1 || itsAliveManifest.custom?.sanctuary26?.network_protocol != 3 - || release.pack_version != "26.2.0-alpha.201" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.201.mrpack" - || prism.versionId != "26.2.0-alpha.201" - || !packwiz.contains('version = "26.2.0-alpha.201"') - || !packwizIndex.contains('file = "mods/itsalive-0.0.0-alpha.30.jar"')) { + || release.pack_version != "26.2.0-alpha.202" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.202.mrpack" + || prism.versionId != "26.2.0-alpha.202" + || !packwiz.contains('version = "26.2.0-alpha.202"') + || !packwizIndex.contains('file = "mods/itsalive-0.0.0-alpha.31.jar"')) { throw new GradleException("The alpha.198 fermentation barrel release contract is incomplete") } } @@ -4408,9 +4408,9 @@ tasks.register("verifyQuestRequestContractsRelease") { def packwiz = file("pack/packwiz/pack.toml").text def packwizIndex = file("pack/packwiz/index.toml").text def sanctuaryManifest = new JsonSlurper().parse(file("sanctuary/src/main/resources/fabric.mod.json")) - if (rootProject.pack_version != "26.2.0-alpha.201" - || rootProject.itsalive_version != "0.0.0-alpha.30" - || rootProject.sanctuary_version != "0.0.0-alpha.116" + if (rootProject.pack_version != "26.2.0-alpha.202" + || rootProject.itsalive_version != "0.0.0-alpha.31" + || rootProject.sanctuary_version != "0.0.0-alpha.117" || migration.source?.pack_version != "26.2.0-alpha.198" || migration.source?.modules?.sanctuary != "0.0.0-alpha.114" || migration.target?.pack_version != "26.2.0-alpha.199" @@ -4422,12 +4422,12 @@ tasks.register("verifyQuestRequestContractsRelease") { || migration.quest_request_contracts?.chat_accept_revalidates_distance_owner_sign_and_claim != true || migration.compatibility?.sanctuary_target_network_protocol != 20 || sanctuaryManifest.custom?.sanctuary26?.network_protocol != 21 - || release.pack_version != "26.2.0-alpha.201" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.201.mrpack" - || prism.versionId != "26.2.0-alpha.201" - || !packwiz.contains('version = "26.2.0-alpha.201"') - || !packwizIndex.contains('file = "mods/itsalive-0.0.0-alpha.30.jar"') - || !packwizIndex.contains('file = "mods/sanctuary-0.0.0-alpha.116.jar"')) { + || release.pack_version != "26.2.0-alpha.202" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.202.mrpack" + || prism.versionId != "26.2.0-alpha.202" + || !packwiz.contains('version = "26.2.0-alpha.202"') + || !packwizIndex.contains('file = "mods/itsalive-0.0.0-alpha.31.jar"') + || !packwizIndex.contains('file = "mods/sanctuary-0.0.0-alpha.117.jar"')) { throw new GradleException("The alpha.199 quest-request contract release is incomplete") } } @@ -4463,7 +4463,7 @@ tasks.register("verifyWeatherTntAmbianceRelease") { def ambianceManifest = new JsonSlurper().parse(file("ambiance/src/main/resources/fabric.mod.json")) def ouchManifest = new JsonSlurper().parse(file("ouch/src/main/resources/fabric.mod.json")) def rootBuild = file("build.gradle").text - if (rootProject.pack_version != "26.2.0-alpha.201" + if (rootProject.pack_version != "26.2.0-alpha.202" || rootProject.ambiance_version != "0.0.0-alpha.12" || rootProject.ouch_version != "0.0.0-alpha.9" || migration.source?.pack_version != "26.2.0-alpha.199" @@ -4497,10 +4497,10 @@ tasks.register("verifyWeatherTntAmbianceRelease") { || !weatherTnt.contains("AmbianceDailyWeather.CLEAR") || !weatherTnt.contains("CLEAR_WEATHER_TICKS = 864_000") || weatherTnt.contains("setWeatherParameters") - || release.pack_version != "26.2.0-alpha.201" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.201.mrpack" - || prism.versionId != "26.2.0-alpha.201" - || !packwiz.contains('version = "26.2.0-alpha.201"') + || release.pack_version != "26.2.0-alpha.202" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.202.mrpack" + || prism.versionId != "26.2.0-alpha.202" + || !packwiz.contains('version = "26.2.0-alpha.202"') || !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.12.jar"') || !packwizIndex.contains('file = "mods/ouch-0.0.0-alpha.9.jar"')) { throw new GradleException("The alpha.200 Weather TNT and Ambiance release is incomplete") @@ -4529,8 +4529,8 @@ tasks.register("verifyQuestRequestEscrowRelease") { def packwiz = file("pack/packwiz/pack.toml").text def packwizIndex = file("pack/packwiz/index.toml").text def sanctuaryManifest = new JsonSlurper().parse(file("sanctuary/src/main/resources/fabric.mod.json")) - if (rootProject.pack_version != "26.2.0-alpha.201" - || rootProject.sanctuary_version != "0.0.0-alpha.116" + if (rootProject.pack_version != "26.2.0-alpha.202" + || rootProject.sanctuary_version != "0.0.0-alpha.117" || migration.source?.pack_version != "26.2.0-alpha.200" || migration.source?.modules?.sanctuary != "0.0.0-alpha.115" || migration.target?.pack_version != "26.2.0-alpha.201" @@ -4544,11 +4544,11 @@ tasks.register("verifyQuestRequestEscrowRelease") { || migration.compatibility?.sanctuary_target_network_protocol != 21 || sanctuaryManifest.custom?.sanctuary26?.data_version != 11 || sanctuaryManifest.custom?.sanctuary26?.network_protocol != 21 - || release.pack_version != "26.2.0-alpha.201" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.201.mrpack" - || prism.versionId != "26.2.0-alpha.201" - || !packwiz.contains('version = "26.2.0-alpha.201"') - || !packwizIndex.contains('file = "mods/sanctuary-0.0.0-alpha.116.jar"')) { + || release.pack_version != "26.2.0-alpha.202" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.202.mrpack" + || prism.versionId != "26.2.0-alpha.202" + || !packwiz.contains('version = "26.2.0-alpha.202"') + || !packwizIndex.contains('file = "mods/sanctuary-0.0.0-alpha.117.jar"')) { throw new GradleException("The alpha.201 quest-request escrow release is incomplete") } } @@ -4558,6 +4558,86 @@ tasks.named("verifyWorkspace") { dependsOn tasks.named("verifyQuestRequestEscrowRelease") } +tasks.register("verifyWaystoneShopCulinaryAlpha202Release") { + group = "verification" + description = "Checks the complete Sanctuary 26.2.0-alpha.202 Waystone, Shop and culinary lectern release." + inputs.file(file("pack/migrations/26.2.0-alpha.201-waystone-shop-culinary-to-alpha.202.json")) + inputs.file(file("pack/release.json")) + inputs.file(file("pack/prism/modrinth.index.json")) + inputs.file(file("pack/packwiz/pack.toml")) + inputs.file(file("pack/packwiz/index.toml")) + inputs.files(file( + "itsalive/src/main/resources/fabric.mod.json"), file( + "iliketomoveit/src/main/resources/fabric.mod.json"), file( + "sanctuary/src/main/resources/fabric.mod.json")) + doLast { + def migration = new JsonSlurper().parse(file( + "pack/migrations/26.2.0-alpha.201-waystone-shop-culinary-to-alpha.202.json")) + def release = new JsonSlurper().parse(file("pack/release.json")) + def prism = new JsonSlurper().parse(file("pack/prism/modrinth.index.json")) + def packwiz = file("pack/packwiz/pack.toml").text + def packwizIndex = file("pack/packwiz/index.toml").text + def itsAliveManifest = new JsonSlurper().parse(file( + "itsalive/src/main/resources/fabric.mod.json")) + def moveItManifest = new JsonSlurper().parse(file( + "iliketomoveit/src/main/resources/fabric.mod.json")) + def sanctuaryManifest = new JsonSlurper().parse(file( + "sanctuary/src/main/resources/fabric.mod.json")) + if (rootProject.pack_version != "26.2.0-alpha.202" + || rootProject.itsalive_version != "0.0.0-alpha.31" + || rootProject.iliketomoveit_version != "0.0.0-alpha.14" + || rootProject.sanctuary_version != "0.0.0-alpha.117" + || migration.source?.pack_version != "26.2.0-alpha.201" + || migration.source?.modules != [ + itsalive: "0.0.0-alpha.30", + iliketomoveit: "0.0.0-alpha.13", + sanctuary: "0.0.0-alpha.116"] + || migration.target?.pack_version != "26.2.0-alpha.202" + || migration.target?.modules != [ + itsalive: "0.0.0-alpha.31", + iliketomoveit: "0.0.0-alpha.14", + sanctuary: "0.0.0-alpha.117"] + || migration.waystone_elevator?.undiscovered_downward_destination_allowed != true + || migration.waystone_elevator?.destination_discovered_after_arrival != true + || migration.waystone_elevator?.undiscovered_upward_destination_allowed != false + || migration.waystone_elevator?.undiscovered_ordinary_destination_allowed != false + || migration.shop_currency_inventory?.all_unlocked_rows_counted != true + || migration.shop_currency_inventory?.overflow_rows_counted != true + || migration.shop_currency_inventory?.duplicate_stack_views_deduplicated != true + || migration.culinary_lectern?.book_tag != "minecraft:lectern_books" + || migration.culinary_lectern?.owner_catalog_shared_while_placed != true + || migration.culinary_lectern?.inscription_removed_when_taken != true + || migration.culinary_lectern?.inscription_removed_when_lectern_broken != true + || migration.compatibility?.itsalive_data_version != 1 + || migration.compatibility?.itsalive_network_protocol != 3 + || migration.compatibility?.iliketomoveit_data_version != 3 + || migration.compatibility?.iliketomoveit_network_protocol != 5 + || migration.compatibility?.sanctuary_data_version != 11 + || migration.compatibility?.sanctuary_network_protocol != 21 + || migration.compatibility?.save_migration_required != false + || migration.compatibility?.registry_ids_changed != false + || itsAliveManifest.custom?.sanctuary26?.data_version != 1 + || itsAliveManifest.custom?.sanctuary26?.network_protocol != 3 + || moveItManifest.custom?.sanctuary26?.data_version != 3 + || moveItManifest.custom?.sanctuary26?.network_protocol != 5 + || sanctuaryManifest.custom?.sanctuary26?.data_version != 11 + || sanctuaryManifest.custom?.sanctuary26?.network_protocol != 21 + || release.pack_version != "26.2.0-alpha.202" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.202.mrpack" + || prism.versionId != "26.2.0-alpha.202" + || !packwiz.contains('version = "26.2.0-alpha.202"') + || !packwizIndex.contains('file = "mods/itsalive-0.0.0-alpha.31.jar"') + || !packwizIndex.contains('file = "mods/iliketomoveit-0.0.0-alpha.14.jar"') + || !packwizIndex.contains('file = "mods/sanctuary-0.0.0-alpha.117.jar"')) { + throw new GradleException("The alpha.202 Waystone, Shop and culinary lectern release is incomplete") + } + } +} + +tasks.named("verifyWorkspace") { + dependsOn tasks.named("verifyWaystoneShopCulinaryAlpha202Release") +} + tasks.named("check") { dependsOn tasks.named("verifyWorkspace") dependsOn tasks.named("verifyTransport") diff --git a/gradle.properties b/gradle.properties index 589b2cb..498240a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,17 +18,17 @@ redstoner_version=0.0.0-alpha.10 redstoner_lifecycle=active anotherworld_version=0.0.0-alpha.49 anotherworld_lifecycle=active -itsalive_version=0.0.0-alpha.30 +itsalive_version=0.0.0-alpha.31 itsalive_lifecycle=active ouch_version=0.0.0-alpha.9 ouch_lifecycle=active masterkey_version=0.0.0-alpha.8 masterkey_lifecycle=active -iliketomoveit_version=0.0.0-alpha.13 +iliketomoveit_version=0.0.0-alpha.14 iliketomoveit_lifecycle=active onlyfun_version=0.0.0-alpha.19 onlyfun_lifecycle=active -sanctuary_version=0.0.0-alpha.116 +sanctuary_version=0.0.0-alpha.117 sanctuary_lifecycle=active -pack_version=26.2.0-alpha.201 +pack_version=26.2.0-alpha.202 maven_group=fr.koka99cab.sanctuary26 diff --git a/iliketomoveit/build.gradle b/iliketomoveit/build.gradle index ab804da..1bdebb1 100644 --- a/iliketomoveit/build.gradle +++ b/iliketomoveit/build.gradle @@ -295,7 +295,7 @@ tasks.register("verifyPortals") { } def atlasCavernsMigration = new JsonSlurper().parse(rootProject.file( "pack/migrations/26.2.0-alpha.149-atlas-caverns-to-alpha.150.json")) - if (project.version.toString() != "0.0.0-alpha.13" + if (project.version.toString() != "0.0.0-alpha.14" || atlasCavernsMigration.target?.pack_version != "26.2.0-alpha.150" || atlasCavernsMigration.target?.modules?.iliketomoveit != "0.0.0-alpha.9" || atlasCavernsMigration.portals?.active_routes != [ @@ -331,7 +331,7 @@ tasks.register("verifySilverAircraft") { def manifest = new JsonSlurper().parse(file("src/main/resources/fabric.mod.json")) def migration = new JsonSlurper().parse(rootProject.file( "pack/migrations/26.2.0-alpha.184-silver-engineering-to-alpha.185.json")) - if (project.version.toString() != "0.0.0-alpha.13" + if (project.version.toString() != "0.0.0-alpha.14" || recipe.pattern != ["PGP", "GCG", "PBP"] || recipe.key != [B: "anotherworld:silver_block", C: "anotherworld:aircraft_cockpit", G: "anotherworld:silver_gear", P: "anotherworld:silver_plate"] @@ -360,7 +360,7 @@ tasks.register("verifyGrapplePrediction") { def payload = file("src/main/java/fr/koka99cab/sanctuary26/iliketomoveit/network/GrappleStatePayload.java").text def controller = file("src/main/java/fr/koka99cab/sanctuary26/iliketomoveit/grapple/GrappleController.java").text def prediction = file("src/main/java/fr/koka99cab/sanctuary26/iliketomoveit/client/grapple/ClientGrapplePrediction.java").text - if (project.version.toString() != "0.0.0-alpha.13" + if (project.version.toString() != "0.0.0-alpha.14" || migration.target?.modules?.iliketomoveit != "0.0.0-alpha.13" || migration.grappling?.owner_prediction_payload != "iliketomoveit:s2c/grapple_state" || migration.compatibility?.iliketomoveit_source_network_protocol != 4 @@ -377,12 +377,44 @@ tasks.register("verifyGrapplePrediction") { } } +tasks.register("verifyWaystoneDescendingRelease") { + group = "verification" + description = "Checks alpha.14 downward discovery for direct Waystone elevators." + inputs.file(rootProject.file( + "pack/migrations/26.2.0-alpha.201-waystone-shop-culinary-to-alpha.202.json")) + inputs.file(file("src/main/java/fr/koka99cab/sanctuary26/iliketomoveit/waystone/WaystoneElevatorRules.java")) + inputs.file(file("src/main/java/fr/koka99cab/sanctuary26/iliketomoveit/network/WaystoneTeleportation.java")) + inputs.file(file("src/test/java/fr/koka99cab/sanctuary26/iliketomoveit/waystone/WaystoneElevatorRulesSmoke.java")) + doLast { + def migration = new JsonSlurper().parse(rootProject.file( + "pack/migrations/26.2.0-alpha.201-waystone-shop-culinary-to-alpha.202.json")) + def rules = file( + "src/main/java/fr/koka99cab/sanctuary26/iliketomoveit/waystone/WaystoneElevatorRules.java").text + def teleportation = file( + "src/main/java/fr/koka99cab/sanctuary26/iliketomoveit/network/WaystoneTeleportation.java").text + if (project.version.toString() != "0.0.0-alpha.14" + || migration.target?.modules?.iliketomoveit != "0.0.0-alpha.14" + || migration.waystone_elevator?.undiscovered_downward_destination_allowed != true + || migration.waystone_elevator?.destination_discovered_after_arrival != true + || migration.waystone_elevator?.undiscovered_upward_destination_allowed != false + || migration.waystone_elevator?.undiscovered_ordinary_destination_allowed != false + || migration.compatibility?.iliketomoveit_data_version != 3 + || migration.compatibility?.iliketomoveit_network_protocol != 5 + || !rules.contains("return !upward || targetDiscovered;") + || !rules.contains("elevatorRide && targetY < sourceY") + || !teleportation.contains("discoveries.discover(player.getUUID(), level, target)")) { + throw new GradleException("I Like To Move It alpha.14 downward Waystone discovery contract is incomplete") + } + } +} + tasks.named("check") { dependsOn tasks.named("grapplePhysicsSmoke") dependsOn tasks.named("waystoneElevatorRulesSmoke") dependsOn tasks.named("verifyWaystones") dependsOn tasks.named("verifyGrappling") dependsOn tasks.named("verifyGrapplePrediction") + dependsOn tasks.named("verifyWaystoneDescendingRelease") dependsOn tasks.named("verifyPortals") dependsOn tasks.named("verifySilverAircraft") } diff --git a/itsalive/build.gradle b/itsalive/build.gradle index ad73a08..618ae11 100644 --- a/itsalive/build.gradle +++ b/itsalive/build.gradle @@ -417,7 +417,7 @@ tasks.register("verifyItsAlive") { def climateSource = file("src/main/java/fr/koka99cab/sanctuary26/itsalive/agriculture/ClimateCropForaging.java").text def pineappleSource = file("src/main/java/fr/koka99cab/sanctuary26/itsalive/agriculture/PineappleItem.java").text def worldgenSource = file("src/main/java/fr/koka99cab/sanctuary26/itsalive/agriculture/ItsAliveAgricultureWorldGeneration.java").text - if (project.version.toString() != "0.0.0-alpha.30" + if (project.version.toString() != "0.0.0-alpha.31" || climateMigration.target?.pack_version != "26.2.0-alpha.157" || climateMigration.target?.modules?.itsalive != "0.0.0-alpha.24" || !climateSource.contains("PlayerBlockBreakEvents.AFTER.register") @@ -1174,7 +1174,7 @@ tasks.register("verifyCulinaryReliability") { } } } - if (project.version.toString() != "0.0.0-alpha.30" + if (project.version.toString() != "0.0.0-alpha.31" || migration.target?.modules?.itsalive != "0.0.0-alpha.28" || migration.culinary_fixes?.food_press_contents_destroyed_on_break != true || migration.culinary_fixes?.comparator_contract?.blocks?.size() != 6 @@ -1212,7 +1212,7 @@ tasks.register("verifyCauldronBatching") { def recipe = file("src/main/java/fr/koka99cab/sanctuary26/itsalive/culinary/recipe/CulinaryProcessRecipe.java").text def cauldron = file("src/main/java/fr/koka99cab/sanctuary26/itsalive/culinary/block/entity/CookingCauldronBlockEntity.java").text def timed = file("src/main/java/fr/koka99cab/sanctuary26/itsalive/culinary/block/entity/AbstractTimedCulinaryBlockEntity.java").text - if (project.version.toString() != "0.0.0-alpha.30" + if (project.version.toString() != "0.0.0-alpha.31" || migration.target?.modules?.itsalive != "0.0.0-alpha.29" || migration.cauldron_batches?.logical_stack_limit != 64 || migration.cauldron_batches?.identity != "same_item_same_components" @@ -1250,7 +1250,7 @@ tasks.register("verifyFermentationBarrelAutomation") { def partialMatching = file("src/main/java/fr/koka99cab/sanctuary26/itsalive/culinary/recipe/CulinaryPartialMatching.java").text def blockstate = new JsonSlurper().parse( file("src/main/resources/assets/itsalive/blockstates/fermentation_barrel.json")) - if (project.version.toString() != "0.0.0-alpha.30" + if (project.version.toString() != "0.0.0-alpha.31" || migration.source?.modules?.itsalive != "0.0.0-alpha.29" || migration.target?.modules?.itsalive != "0.0.0-alpha.30" || migration.fermentation_barrel?.maximum_units_per_input_slot != 1 @@ -1273,11 +1273,61 @@ tasks.register("verifyFermentationBarrelAutomation") { } } +tasks.register("verifyCulinaryLecternRelease") { + group = "verification" + description = "Checks alpha.31 shared culinary books on vanilla lecterns." + inputs.file(rootProject.file( + "pack/migrations/26.2.0-alpha.201-waystone-shop-culinary-to-alpha.202.json")) + inputs.file(file("src/main/java/fr/koka99cab/sanctuary26/itsalive/culinary/knowledge/CulinaryLectern.java")) + inputs.file(file("src/main/java/fr/koka99cab/sanctuary26/itsalive/culinary/knowledge/CulinaryRecipeKnowledge.java")) + inputs.file(file("src/main/java/fr/koka99cab/sanctuary26/itsalive/registry/ItsAliveDataComponents.java")) + inputs.file(file("src/main/resources/data/minecraft/tags/item/lectern_books.json")) + inputs.files(fileTree("src/main/resources/assets/itsalive/lang") { include "*.json" }) + doLast { + def migration = new JsonSlurper().parse(rootProject.file( + "pack/migrations/26.2.0-alpha.201-waystone-shop-culinary-to-alpha.202.json")) + def lectern = file( + "src/main/java/fr/koka99cab/sanctuary26/itsalive/culinary/knowledge/CulinaryLectern.java").text + def knowledge = file( + "src/main/java/fr/koka99cab/sanctuary26/itsalive/culinary/knowledge/CulinaryRecipeKnowledge.java").text + def components = file( + "src/main/java/fr/koka99cab/sanctuary26/itsalive/registry/ItsAliveDataComponents.java").text + def lecternBooks = new JsonSlurper().parse(file( + "src/main/resources/data/minecraft/tags/item/lectern_books.json")) + def locales = ["en_us", "fr_fr", "ru_ru"].collectEntries { locale -> + [(locale): new JsonSlurper().parse(file( + "src/main/resources/assets/itsalive/lang/${locale}.json"))] + } + if (project.version.toString() != "0.0.0-alpha.31" + || migration.target?.modules?.itsalive != "0.0.0-alpha.31" + || migration.culinary_lectern?.book_tag != "minecraft:lectern_books" + || migration.culinary_lectern?.owner_catalog_shared_while_placed != true + || migration.culinary_lectern?.inscription_removed_when_taken != true + || migration.culinary_lectern?.inscription_removed_when_lectern_broken != true + || migration.compatibility?.itsalive_data_version != 1 + || migration.compatibility?.itsalive_network_protocol != 3 + || !lectern.contains("UseBlockCallback.EVENT.register(CulinaryLectern::use)") + || !lectern.contains("PlayerBlockBreakEvents.BEFORE.register") + || !lectern.contains("CulinaryRecipeKnowledge.openBook(serverPlayer, book)") + || !lectern.contains("CulinaryRecipeKnowledge.forgetInscription(taken)") + || !knowledge.contains("stack.set(ItsAliveDataComponents.CULINARY_BOOK") + || !knowledge.contains("stack.remove(ItsAliveDataComponents.CULINARY_BOOK)") + || !components.contains('ItsAliveMod.id("culinary_book")') + || !lecternBooks["values"]?.contains("itsalive:culinary_recipe_book") + || locales.any { locale, values -> + !values.containsKey("tooltip.itsalive.culinary_recipe_book.blank") + }) { + throw new GradleException("It's Alive alpha.31 culinary lectern contract is incomplete") + } + } +} + tasks.named("check") { dependsOn tasks.named("verifyItsAlive") dependsOn tasks.named("verifyCulinaryReliability") dependsOn tasks.named("verifyCauldronBatching") dependsOn tasks.named("culinaryBatchingSmoke") dependsOn tasks.named("verifyFermentationBarrelAutomation") + dependsOn tasks.named("verifyCulinaryLecternRelease") dependsOn tasks.named("culinaryPartialMatchingSmoke") } diff --git a/pack/migrations/26.2.0-alpha.201-waystone-shop-culinary-to-alpha.202.json b/pack/migrations/26.2.0-alpha.201-waystone-shop-culinary-to-alpha.202.json new file mode 100644 index 0000000..4c6b0b3 --- /dev/null +++ b/pack/migrations/26.2.0-alpha.201-waystone-shop-culinary-to-alpha.202.json @@ -0,0 +1,56 @@ +{ + "schema_version": 1, + "source": { + "pack_version": "26.2.0-alpha.201", + "modules": { + "itsalive": "0.0.0-alpha.30", + "iliketomoveit": "0.0.0-alpha.13", + "sanctuary": "0.0.0-alpha.116" + } + }, + "target": { + "pack_version": "26.2.0-alpha.202", + "modules": { + "itsalive": "0.0.0-alpha.31", + "iliketomoveit": "0.0.0-alpha.14", + "sanctuary": "0.0.0-alpha.117" + } + }, + "waystone_elevator": { + "undiscovered_downward_destination_allowed": true, + "destination_discovered_after_arrival": true, + "undiscovered_upward_destination_allowed": false, + "undiscovered_ordinary_destination_allowed": false, + "source_discovery_required": true + }, + "shop_currency_inventory": { + "all_unlocked_rows_counted": true, + "overflow_rows_counted": true, + "offhand_counted": true, + "duplicate_stack_views_deduplicated": true, + "server_authoritative_removal": true + }, + "culinary_lectern": { + "vanilla_lectern_supported": true, + "book_tag": "minecraft:lectern_books", + "owner_catalog_shared_while_placed": true, + "inscription_removed_when_taken": true, + "inscription_removed_when_lectern_broken": true, + "inventory_book_remains_personal": true, + "owner_name_max_length": 32 + }, + "distribution": { + "prism_instance": "Sanctuary-26.2-dev", + "packwiz_index_refreshed": true + }, + "compatibility": { + "itsalive_data_version": 1, + "itsalive_network_protocol": 3, + "iliketomoveit_data_version": 3, + "iliketomoveit_network_protocol": 5, + "sanctuary_data_version": 11, + "sanctuary_network_protocol": 21, + "save_migration_required": false, + "registry_ids_changed": false + } +} diff --git a/pack/packwiz/index.toml b/pack/packwiz/index.toml index 8cd2cd5..9259c04 100644 --- a/pack/packwiz/index.toml +++ b/pack/packwiz/index.toml @@ -14,15 +14,15 @@ hash = "41f4f4c88c71d0a23446d5014f7407d55ad477441847099cad24492b032335a0" [[files]] file = "mods/ambiance-0.0.0-alpha.12.jar" -hash = "6d131ff56488ecc6352a86c87e29bef6a198ad672983838ad71941661d6567af" +hash = "73f740ddff6db5377b01bb03a211671fdc7a040cafae67c988f97803c7276c21" [[files]] file = "mods/anotherworld-0.0.0-alpha.49.jar" -hash = "b245c849985c208ca547da3dc41121ce6dd2bc1ffbbb1bfd8f6a7326356cfbdc" +hash = "1f190a3030c8a32af3218141ddbe21a4a61087d915df41ec4344dbe53be2f63b" [[files]] file = "mods/events-0.0.0-alpha.0.jar" -hash = "d8dac51f88f72bfb1f7cd92279447897ee349e4cbc78b070cb33e99d5acbb965" +hash = "612b88ee50fb6251692514983c5a59b57e62a57dd1a639fc8c292aabbf07e3bb" [[files]] file = "mods/fabric-api.pw.toml" @@ -30,8 +30,8 @@ hash = "df032a6b051d0262cf24945c43e0e6b915e8cc1d62af62fe933932e7f35960c4" metafile = true [[files]] -file = "mods/iliketomoveit-0.0.0-alpha.13.jar" -hash = "cf3e90860f475f6a7466eb29686d230c95d5629a36fac89c60077fbae4ede865" +file = "mods/iliketomoveit-0.0.0-alpha.14.jar" +hash = "d9cbfa5c4ced74b9d995c1565ead4acb9a890cc0682c2bccb35c9c31cbf27180" [[files]] file = "mods/iris.pw.toml" @@ -39,8 +39,8 @@ hash = "84a3cef87679c0d21dceb4641167dc0368b9a3593698f6a3632485e9b3a8d5da" metafile = true [[files]] -file = "mods/itsalive-0.0.0-alpha.30.jar" -hash = "c311281a771bb8fec63be8e8a0d792be919737e4dfcf3da25ef08c6878662d55" +file = "mods/itsalive-0.0.0-alpha.31.jar" +hash = "b6054062dc945cb9f6b8f9829d1bd0561de5e84a99a3f3f0737546c43684bffa" [[files]] file = "mods/jei.pw.toml" @@ -49,23 +49,23 @@ metafile = true [[files]] file = "mods/masterkey-0.0.0-alpha.8.jar" -hash = "4fac6589b42df15599915849cbf624d6cb8fbd41f47623357d5d6fa27e6f992f" +hash = "8664516f1503b46fb665f9a9ad9984e6c7efff3f5e4d771a56c70591deec64dc" [[files]] file = "mods/onlyfun-0.0.0-alpha.19.jar" -hash = "cf8f3afb8503ed9689fcce6153ad72c5621f4bb2441af867326d536d347756ed" +hash = "697516896246f615c36a8c0dfe5a87c8fa44a10f79adbaaa051be7e78b9176ab" [[files]] file = "mods/ouch-0.0.0-alpha.9.jar" -hash = "fc0f678eb72354c6594c90c59af78bcc7420190d91e922d1cd74a45f5eaa948e" +hash = "bf9bb0cf55c7d8757a9d48ec7f527556f8b9742680e4f7cf33d102eade386042" [[files]] file = "mods/redstoner-0.0.0-alpha.10.jar" -hash = "6325d6edf66b1b0f102f53152239982c4c0c7011a59848e8d6e569f360b7ff0f" +hash = "4bce3bbf4d457247ee249be9da36ceade987667cf8ccdf6101f08730bf422c61" [[files]] -file = "mods/sanctuary-0.0.0-alpha.116.jar" -hash = "c1f856995a259f6471cf0780e1b02f5f73e487f21d39b0519b5a02299c480516" +file = "mods/sanctuary-0.0.0-alpha.117.jar" +hash = "b7ab9a4cbcb43d56006bac8c67a0ca4235fc8c29888f6bd1fce1564b31633bee" [[files]] file = "mods/simple-voice-chat.pw.toml" diff --git a/pack/packwiz/pack.toml b/pack/packwiz/pack.toml index 9621236..a22eb68 100644 --- a/pack/packwiz/pack.toml +++ b/pack/packwiz/pack.toml @@ -1,12 +1,12 @@ name = "Sanctuary 26.2" author = "KOKA99CAB" -version = "26.2.0-alpha.201" +version = "26.2.0-alpha.202" pack-format = "packwiz:1.1.0" [index] file = "index.toml" hash-format = "sha256" -hash = "52d4011015ea5b087f0cd0c06fb2f762e83e2cd6d227441984d5d204fb6aedd1" +hash = "f9e94ec161cd7bdee1922ece42654b91187d7730d4bdabcb476ef85ce2f283fb" [versions] fabric = "0.19.3" diff --git a/pack/prism/modrinth.index.json b/pack/prism/modrinth.index.json index bc49193..b05bf25 100644 --- a/pack/prism/modrinth.index.json +++ b/pack/prism/modrinth.index.json @@ -3,7 +3,7 @@ "game": "minecraft", "name": "Sanctuary 26.2", "summary": "Sanctuary 26.2 — progression, exploration, worldgen and multiplayer systems by KOKA99CAB.", - "versionId": "26.2.0-alpha.201", + "versionId": "26.2.0-alpha.202", "files": [ { "path": "mods/fabric-api-0.158.0+26.2.jar", diff --git a/pack/release.json b/pack/release.json index a8c3d35..b48348f 100644 --- a/pack/release.json +++ b/pack/release.json @@ -1,6 +1,6 @@ { "schema_version": 1, - "pack_version": "26.2.0-alpha.201", + "pack_version": "26.2.0-alpha.202", "release_channel": "alpha", "minecraft_version": "26.2", "fabric_loader_version": "0.19.3", @@ -9,7 +9,7 @@ "project_id": "FgOqyAXd", "project_slug": "sanctuary-koka99", "project_url": "https://modrinth.com/modpack/sanctuary-koka99", - "primary_file": "sanctuary-26.2.0-alpha.201.mrpack", + "primary_file": "sanctuary-26.2.0-alpha.202.mrpack", "shared_client_server_pack": true, "update_owner": "packwiz-installer", "check_on_launch": true, diff --git a/sanctuary/build.gradle b/sanctuary/build.gradle index af53f03..dc29c49 100644 --- a/sanctuary/build.gradle +++ b/sanctuary/build.gradle @@ -2748,6 +2748,44 @@ tasks.register("verifyCompanionPowerTooltips") { } } +tasks.register("verifyShopCurrencyRowsRelease") { + group = "verification" + description = "Checks alpha.117 Shop currency across every unlocked inventory row." + inputs.file(rootProject.file( + "pack/migrations/26.2.0-alpha.201-waystone-shop-culinary-to-alpha.202.json")) + inputs.file(file("src/main/java/fr/koka99cab/sanctuary26/sanctuary/api/inventory/SanctuaryPlayerInventoryView.java")) + inputs.file(file("src/main/java/fr/koka99cab/sanctuary26/sanctuary/shop/BlackMarketService.java")) + inputs.file(file("src/main/java/fr/koka99cab/sanctuary26/sanctuary/shop/ShopService.java")) + doLast { + def migration = new JsonSlurper().parse(rootProject.file( + "pack/migrations/26.2.0-alpha.201-waystone-shop-culinary-to-alpha.202.json")) + def inventory = file( + "src/main/java/fr/koka99cab/sanctuary26/sanctuary/api/inventory/SanctuaryPlayerInventoryView.java").text + def market = file( + "src/main/java/fr/koka99cab/sanctuary26/sanctuary/shop/BlackMarketService.java").text + def shop = file( + "src/main/java/fr/koka99cab/sanctuary26/sanctuary/shop/ShopService.java").text + if (project.version.toString() != "0.0.0-alpha.117" + || migration.target?.modules?.sanctuary != "0.0.0-alpha.117" + || migration.shop_currency_inventory?.all_unlocked_rows_counted != true + || migration.shop_currency_inventory?.overflow_rows_counted != true + || migration.shop_currency_inventory?.duplicate_stack_views_deduplicated != true + || migration.shop_currency_inventory?.server_authoritative_removal != true + || migration.compatibility?.sanctuary_data_version != 11 + || migration.compatibility?.sanctuary_network_protocol != 21 + || !inventory.contains("public static List unlockedRows(Player player)") + || !inventory.contains("SanctuaryOverflowAccess.of(player)") + || !market.contains("IdentityHashMap seen") + || !market.contains("player.inventoryMenu.slots") + || !market.contains("SanctuaryPlayerInventoryView.unlockedRows(player)") + || !market.contains("SanctuaryPlayerInventoryView.offhand(player)") + || !shop.contains("BlackMarketService.countPlayerItem(player, item)") + || !shop.contains("BlackMarketService.removePlayerItem(player, item, count)")) { + throw new GradleException("Sanctuary alpha.117 unlocked-row Shop currency contract is incomplete") + } + } +} + tasks.named("verifySanctuary") { dependsOn tasks.named("verifyCompanionPowerTooltips") } @@ -2893,7 +2931,7 @@ tasks.register("verifyProgressivePauseMenu") { "pack/migrations/26.2.0-alpha.190-progressive-pause-menu-to-alpha.191.json")) def pauseMenu = file("src/main/java/fr/koka99cab/sanctuary26/sanctuary/mixin/client/PauseScreenMixin.java").text def costs = file("src/main/java/fr/koka99cab/sanctuary26/sanctuary/progression/SanctuaryProgressionCosts.java").text - if (project.version.toString() != "0.0.0-alpha.116" + if (project.version.toString() != "0.0.0-alpha.117" || migration.target?.pack_version != "26.2.0-alpha.191" || migration.target?.modules?.sanctuary != "0.0.0-alpha.109" || migration.pause_menu?.progression_full_width != true @@ -2931,7 +2969,7 @@ tasks.register("verifyShopPricingLayout") { "pack/migrations/26.2.0-alpha.192-shop-pricing-layout-to-alpha.193.json")) def screen = file("src/main/java/fr/koka99cab/sanctuary26/sanctuary/client/SanctuaryShopScreen.java").text def progression = file("src/main/java/fr/koka99cab/sanctuary26/sanctuary/shop/ShopProgression.java").text - if (project.version.toString() != "0.0.0-alpha.116" + if (project.version.toString() != "0.0.0-alpha.117" || migration.target?.modules?.sanctuary != "0.0.0-alpha.110" || migration.shop_layout?.locked_offer_buttons != 6 || migration.shop_layout?.button_slots != [4, 5, 6, 7, 8, 9] @@ -2962,7 +3000,7 @@ tasks.register("verifyShopCsvBossGates") { "pack/migrations/26.2.0-alpha.194-shop-csv-boss-gates-to-alpha.195.json")) def provider = file("src/main/java/fr/koka99cab/sanctuary26/sanctuary/shop/ShopCatalogProvider.java").text def catalog = file("src/main/java/fr/koka99cab/sanctuary26/sanctuary/shop/ShopOfferCatalog.java").text - if (project.version.toString() != "0.0.0-alpha.116" + if (project.version.toString() != "0.0.0-alpha.117" || migration.target?.pack_version != "26.2.0-alpha.195" || migration.target?.modules?.sanctuary != "0.0.0-alpha.111" || migration.compatibility?.sanctuary_data_version != 11 @@ -2993,7 +3031,7 @@ tasks.register("verifyDeliveryBoxOrientation") { def blockstate = new JsonSlurper().parse( file("src/main/resources/assets/sanctuary/blockstates/delivery_box.json")) def expectedVariants = ["facing=north", "facing=east", "facing=south", "facing=west"].toSet() - if (project.version.toString() != "0.0.0-alpha.116" + if (project.version.toString() != "0.0.0-alpha.117" || migration.target?.modules?.sanctuary != "0.0.0-alpha.112" || migration.mailbox?.id != "sanctuary:delivery_box" || migration.mailbox?.horizontal_facing != true @@ -3021,7 +3059,7 @@ tasks.register("verifyInventoryShiftClick") { def mixin = file("src/main/java/fr/koka99cab/sanctuary26/sanctuary/mixin/AbstractContainerMenuMixin.java").text def screen = file("src/main/java/fr/koka99cab/sanctuary26/sanctuary/mixin/client/AbstractContainerScreenMixin.java").text def gui = file("INVENTORY_GUI.md").text - if (project.version.toString() != "0.0.0-alpha.116" + if (project.version.toString() != "0.0.0-alpha.117" || !transfer.contains("shouldAppendOverflow") || !transfer.contains("isVanillaStorageRange") || !transfer.contains("hotbarStart") @@ -3067,7 +3105,7 @@ tasks.register("verifyQuestRequests") { new JsonSlurper().parse(file("src/main/resources/data/sanctuary/loot_table/blocks/${path}.json")) .pools[0].entries[0].name } - if (project.version.toString() != "0.0.0-alpha.116" + if (project.version.toString() != "0.0.0-alpha.117" || migration.target?.modules?.sanctuary != "0.0.0-alpha.113" || migration.quest_requests?.save_key != "quest_requests" || migration.quest_requests?.data_version != 1 @@ -3125,7 +3163,7 @@ tasks.register("verifyQuestRequestContracts") { def locales = ["fr_fr", "en_us", "ru_ru"].collectEntries { locale -> [(locale): new JsonSlurper().parse(file("src/main/resources/assets/sanctuary/lang/${locale}.json"))] } - if (project.version.toString() != "0.0.0-alpha.116" + if (project.version.toString() != "0.0.0-alpha.117" || migration.source?.pack_version != "26.2.0-alpha.198" || migration.source?.modules?.sanctuary != "0.0.0-alpha.114" || migration.target?.pack_version != "26.2.0-alpha.199" @@ -3194,7 +3232,7 @@ tasks.register("verifyQuestRequestEscrow") { def locales = ["fr_fr", "en_us", "ru_ru"].collectEntries { locale -> [(locale): new JsonSlurper().parse(file("src/main/resources/assets/sanctuary/lang/${locale}.json"))] } - if (project.version.toString() != "0.0.0-alpha.116" + if (project.version.toString() != "0.0.0-alpha.117" || migration.source?.pack_version != "26.2.0-alpha.200" || migration.source?.modules?.sanctuary != "0.0.0-alpha.115" || migration.target?.pack_version != "26.2.0-alpha.201" @@ -3245,6 +3283,7 @@ tasks.named("check") { dependsOn tasks.named("verifyQuestRequests") dependsOn tasks.named("verifyQuestRequestContracts") dependsOn tasks.named("verifyQuestRequestEscrow") + dependsOn tasks.named("verifyShopCurrencyRowsRelease") dependsOn tasks.named("celestialGraphSmoke") dependsOn tasks.named("questRequestModelSmoke") } -- 2.54.0