diff --git a/CANAPLIA.md b/CANAPLIA.md index e23ea4a..3d216f0 100644 --- a/CANAPLIA.md +++ b/CANAPLIA.md @@ -57,4 +57,4 @@ Les IDs historiques, les clés et le namespace sont inchangés. L'ancien format La source historique 2.0.0 demeure **All Rights Reserved**, copyright KOKA99CAB. À la demande explicite du détenteur des droits, ses 224 textures 16×16 ont été restaurées dans l'alpha.209 ; leur provenance est documentée avec les ressources. Aucun fichier Java, modèle, son ou JSON historique n'est copié. Le code d'intégration reste sous GPL-3.0-or-later. -Les inventaires machine sont dans `pack/migrations/canaplia-foundation-alpha32.json` et `pack/migrations/canaplia-gameplay-alpha33.json`. La release `26.2.0-alpha.209` décrit la correction de gameplay et l'import autorisé dans `pack/migrations/26.2.0-alpha.208-canaplia-fixes-to-alpha.209.json`. +Les inventaires machine sont dans `pack/migrations/canaplia-foundation-alpha32.json` et `pack/migrations/canaplia-gameplay-alpha33.json`. La release `26.2.0-alpha.209` décrit la correction de gameplay et l'import autorisé dans `pack/migrations/26.2.0-alpha.208-canaplia-fixes-to-alpha.209.json`; l’alpha.210 décrit le Livre interdit et les autres changements distribués dans `pack/migrations/26.2.0-alpha.209-forbidden-book-and-polish-to-alpha.210.json`. diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e7ab8d..ffe1238 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,15 +6,22 @@ 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. -## Non distribué +## `26.2.0-alpha.210` -Modules modifiés : **I Like To Move It `0.0.0-alpha.15`** et **It's Alive `0.0.0-alpha.35`**. Le pack distribué reste en `26.2.0-alpha.209` jusqu’à la prochaine release. +Modules modifiés : **Sanctuary `0.0.0-alpha.118`**, **Only Fun `0.0.0-alpha.21`**, **I Like To Move It `0.0.0-alpha.15`** et **It's Alive `0.0.0-alpha.35`**. Les six autres modules conservent leur version issue de l’alpha.209. +- sépare le compteur quotidien et le statut de déblocage du Shop pour empêcher leur chevauchement ; +- retire du Shop Only Fun les raccourcis qui contournaient la progression normale ; +- attribue à tous les Zombies vanilla des gamertags déterministes inspirés de la Xbox 360 ; +- resynchronise les capes après une reconnexion avec des tentatives retardées et bornées ; +- réserve les requêtes communautaires aux panneaux dédiés au lieu d’intercepter les panneaux ordinaires ; - double la vitesse de croisière du Happy Ghast lorsqu’un joueur le pilote, sans accélérer ses déplacements autonomes ; - conserve les données v3 et le protocole réseau 5, sans migration de sauvegarde ni nouvel ID. - transforme le Codex Canaplia en « Livre interdit » aux pages noires, sans page d'accueil, et fait découvrir une entrée aléatoire encore inconnue à chaque page consommée ; - garde les découvertes du Livre interdit personnelles en main et partage temporairement celles du propriétaire uniquement lorsque le livre est posé sur un pupitre ; - conserve les IDs et les anciennes données partagées, ainsi que les données v3 et le protocole réseau 4 d'It's Alive, sans migration de sauvegarde. +- actualise JEI de `30.28.0.191` à la bêta compatible `30.28.0.193` dans Packwiz et le manifeste Prism/Modrinth ; +- distribue les quatre JAR mis à jour dans Packwiz, Prism et le `.mrpack` partagé client/serveur, sans exiger de nouveau monde. ## `26.2.0-alpha.209` diff --git a/README.md b/README.md index 09efab8..b905fa3 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Sanctuary 26.2 -Workspace Fabric multi-projet de Sanctuary 2.0. Il construit dix JAR indépendants sur Minecraft 26.2, Fabric Loader 0.19.3, Fabric API 0.155.0+26.2, Loom 1.17, Gradle 9.5.1 et Java 25. +Workspace Fabric multi-projet de Sanctuary 2.0. Il construit dix JAR indépendants sur Minecraft 26.2, Fabric Loader 0.19.3, Fabric API 0.158.0+26.2, Loom 1.17, Gradle 9.5.1 et Java 25. Auteur : **KOKA99CAB** Licence : **GNU GPL 3.0 or Later** (`GPL-3.0-or-later`) @@ -22,11 +22,11 @@ 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 distribué : **`26.2.0-alpha.208`**. Cette release distribue Canaplia complet avec It's Alive **`0.0.0-alpha.33`**, Ambiance **`0.0.0-alpha.14`** et Only Fun **`0.0.0-alpha.20`**. +Version courante du pack distribué : **`26.2.0-alpha.210`**. Cette release distribue le Livre interdit Canaplia avec It's Alive **`0.0.0-alpha.35`**, ainsi que Sanctuary **`0.0.0-alpha.118`**, Only Fun **`0.0.0-alpha.21`** et I Like To Move It **`0.0.0-alpha.15`**. -La migration [CANA-01 à CANA-09](CANAPLIA.md) porte Canaplia vers Minecraft 26.2. It's Alive **`0.0.0-alpha.33`** enregistre les seize familles, les découvertes, hybridations, résines, effets serveur et le Codex. Ambiance **`0.0.0-alpha.14`** compose les profils visuels bornés avec ses réglages d'accessibilité, et Only Fun **`0.0.0-alpha.20`** exclut explicitement Canaplia du Shop et des récompenses ordinaires. Ces trois modules sont inclus dans l'alpha.208 pour les clients et les serveurs. +La migration [CANA-01 à CANA-09](CANAPLIA.md) porte Canaplia vers Minecraft 26.2. It's Alive **`0.0.0-alpha.35`** enregistre les seize familles, les découvertes, hybridations, résines, effets serveur et le Livre interdit personnel, partageable temporairement sur un pupitre. Ambiance **`0.0.0-alpha.14`** compose les profils visuels bornés avec ses réglages d'accessibilité, et Only Fun **`0.0.0-alpha.21`** exclut explicitement Canaplia et les raccourcis de progression du Shop. -L’alpha.208 ajoute Canaplia aux packs Modrinth, Prism et Packwiz sans exiger de nouveau monde. Les sources sauvages fonctionnent dans les chunks existants, tandis que les nouvelles données de compostage et de Codex sont créées ou migrées automatiquement à leur première utilisation. +L’alpha.210 ajoute le Livre interdit, accélère le Happy Ghast piloté, regroupe les corrections du Shop, des requêtes, des capes et des noms de Zombies, puis actualise JEI en **`30.28.0.193`**. Elle met à jour les packs Modrinth, Prism et Packwiz sans exiger de nouveau monde ni réinitialiser les sauvegardes. L’alpha.207 rend le stockage du coffre-fort pratiquement illimité : rubis, saphirs et émeraudes utilisent chacun un solde 64 bits. Les 27 anciennes piles sont additionnées automatiquement lors du chargement, le Shop continue de consommer directement ces soldes et les 20 % pillés sont crédités dans le coffre-fort de l’attaquant sans créer des millions d’entités ou de piles d’objets. diff --git a/build.gradle b/build.gradle index f1b0be3..a0f1877 100644 --- a/build.gradle +++ b/build.gradle @@ -330,7 +330,7 @@ tasks.register("verifyWorkspace") { } def progressionJeiMigration = new JsonSlurper().parse(file( "pack/migrations/26.2.0-alpha.87-progression-jei-audio-to-alpha.88.json")) - def jeiFiles = prismIndex.files.findAll { it.path == "mods/jei-26.2-fabric-30.28.0.191.jar" } + def jeiFiles = prismIndex.files.findAll { it.path == "mods/jei-26.2-fabric-30.28.0.193.jar" } if (progressionJeiMigration.source?.pack_version != "26.2.0-alpha.87" || progressionJeiMigration.target?.pack_version != "26.2.0-alpha.88" || progressionJeiMigration.target?.modules?.sanctuary != "0.0.0-alpha.38" @@ -345,8 +345,8 @@ tasks.register("verifyWorkspace") { || progressionJeiMigration.compatibility?.network_protocol != 10 || progressionJeiMigration.compatibility?.network_protocol_changed != true || jeiFiles.size() != 1 - || jeiFiles[0].hashes?.sha1 != "35353e18b1cf2a61339463447fce1f3e2f716b80" - || jeiFiles[0].hashes?.sha512 != "aa7dca89026fea2293a2e25fa4a84faf0eeaa6407b7e84991e69626ff1ee0f9df9ba3a5e096cbf631d08842693b115653c5c8373e5ef3953318a892dbdc0a33d" + || jeiFiles[0].hashes?.sha1 != "494f9dc787d6c9cd9d32793da2784ab16834faf3" + || jeiFiles[0].hashes?.sha512 != "0869f4d5840a732a04bedc7684b40140f087f3d759066c206d9d1ec710007f7c9585e4f5ebb04f10e56bef1cf2eddc6978bb2b2c93541cff5fcf7e1609859468" || jeiFiles[0].env?.client != "required" || jeiFiles[0].env?.server != "required") { throw new GradleException("The alpha.88 progression, JEI and Minecrafter audio contract is incomplete") } @@ -3428,9 +3428,9 @@ 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.209" - || rootProject.sanctuary_version != "0.0.0-alpha.117" - || rootProject.onlyfun_version != "0.0.0-alpha.20" + if (rootProject.pack_version != "26.2.0-alpha.210" + || rootProject.sanctuary_version != "0.0.0-alpha.118" + || rootProject.onlyfun_version != "0.0.0-alpha.21" || 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"] || migration.target?.modules != [sanctuary: "0.0.0-alpha.109", onlyfun: "0.0.0-alpha.17"] @@ -3478,7 +3478,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.209" + if (rootProject.pack_version != "26.2.0-alpha.210" || rootProject.anotherworld_version != "0.0.0-alpha.55" || rootProject.redstoner_version != "0.0.0-alpha.10" || release.pack_version != rootProject.pack_version || index.versionId != rootProject.pack_version @@ -3713,7 +3713,7 @@ project(":onlyfun") { def shopCsvText = shopCsv.getText("UTF-8") def shopCsvLines = shopCsv.readLines("UTF-8") if (manifest.custom.sanctuary26.data_version != 2 - || project.version.toString() != "0.0.0-alpha.20" + || project.version.toString() != "0.0.0-alpha.21" || manifest.depends?.sanctuary != "*" || !javaText.contains("ANOMALY_DENOMINATOR = 256") || !javaText.contains("PITY_START = 24") @@ -4126,9 +4126,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.209" - || rootProject.onlyfun_version != "0.0.0-alpha.20" - || rootProject.sanctuary_version != "0.0.0-alpha.117" + if (rootProject.pack_version != "26.2.0-alpha.210" + || rootProject.onlyfun_version != "0.0.0-alpha.21" + || rootProject.sanctuary_version != "0.0.0-alpha.118" || 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" @@ -4171,7 +4171,7 @@ 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.209" + if (rootProject.pack_version != "26.2.0-alpha.210" || rootProject.itsalive_version != "0.0.0-alpha.35" || release.pack_version != rootProject.pack_version || index.versionId != rootProject.pack_version || migration.source?.pack_version != "26.2.0-alpha.193" @@ -4220,9 +4220,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.209" - || rootProject.onlyfun_version != "0.0.0-alpha.20" - || rootProject.sanctuary_version != "0.0.0-alpha.117" + if (rootProject.pack_version != "26.2.0-alpha.210" + || rootProject.onlyfun_version != "0.0.0-alpha.21" + || rootProject.sanctuary_version != "0.0.0-alpha.118" || 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"] @@ -4266,7 +4266,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.209" + if (rootProject.pack_version != "26.2.0-alpha.210" || migration.source?.pack_version != "26.2.0-alpha.195" || migration.target?.pack_version != "26.2.0-alpha.196" || migration.target?.modules != [ @@ -4284,10 +4284,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.209" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.209.mrpack" - || prism.versionId != "26.2.0-alpha.209" - || !packwiz.contains('version = "26.2.0-alpha.209"')) { + || release.pack_version != "26.2.0-alpha.210" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.210.mrpack" + || prism.versionId != "26.2.0-alpha.210" + || !packwiz.contains('version = "26.2.0-alpha.210"')) { throw new GradleException("The alpha.196 culinary, mailbox and grapple release contract is incomplete") } } @@ -4312,9 +4312,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.209" + if (rootProject.pack_version != "26.2.0-alpha.210" || rootProject.itsalive_version != "0.0.0-alpha.35" - || rootProject.sanctuary_version != "0.0.0-alpha.117" + || rootProject.sanctuary_version != "0.0.0-alpha.118" || 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"] @@ -4332,10 +4332,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.209" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.209.mrpack" - || prism.versionId != "26.2.0-alpha.209" - || !packwiz.contains('version = "26.2.0-alpha.209"')) { + || release.pack_version != "26.2.0-alpha.210" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.210.mrpack" + || prism.versionId != "26.2.0-alpha.210" + || !packwiz.contains('version = "26.2.0-alpha.210"')) { throw new GradleException("The alpha.197 quest-request and cauldron-batch release contract is incomplete") } } @@ -4362,7 +4362,7 @@ 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.209" + if (rootProject.pack_version != "26.2.0-alpha.210" || rootProject.itsalive_version != "0.0.0-alpha.35" || migration.source?.pack_version != "26.2.0-alpha.197" || migration.target?.pack_version != "26.2.0-alpha.198" @@ -4381,11 +4381,11 @@ tasks.register("verifyFermentationBarrelAutomationRelease") { || migration.distribution?.packwiz_index_refreshed != true || itsAliveManifest.custom?.sanctuary26?.data_version != 3 || itsAliveManifest.custom?.sanctuary26?.network_protocol != 4 - || release.pack_version != "26.2.0-alpha.209" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.209.mrpack" - || prism.versionId != "26.2.0-alpha.209" - || !packwiz.contains('version = "26.2.0-alpha.209"') - || !packwizIndex.contains('file = "mods/itsalive-0.0.0-alpha.34.jar"')) { + || release.pack_version != "26.2.0-alpha.210" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.210.mrpack" + || prism.versionId != "26.2.0-alpha.210" + || !packwiz.contains('version = "26.2.0-alpha.210"') + || !packwizIndex.contains('file = "mods/itsalive-0.0.0-alpha.35.jar"')) { throw new GradleException("The alpha.198 fermentation barrel release contract is incomplete") } } @@ -4412,9 +4412,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.209" + if (rootProject.pack_version != "26.2.0-alpha.210" || rootProject.itsalive_version != "0.0.0-alpha.35" - || rootProject.sanctuary_version != "0.0.0-alpha.117" + || rootProject.sanctuary_version != "0.0.0-alpha.118" || 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" @@ -4426,12 +4426,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.209" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.209.mrpack" - || prism.versionId != "26.2.0-alpha.209" - || !packwiz.contains('version = "26.2.0-alpha.209"') - || !packwizIndex.contains('file = "mods/itsalive-0.0.0-alpha.34.jar"') - || !packwizIndex.contains('file = "mods/sanctuary-0.0.0-alpha.117.jar"')) { + || release.pack_version != "26.2.0-alpha.210" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.210.mrpack" + || prism.versionId != "26.2.0-alpha.210" + || !packwiz.contains('version = "26.2.0-alpha.210"') + || !packwizIndex.contains('file = "mods/itsalive-0.0.0-alpha.35.jar"') + || !packwizIndex.contains('file = "mods/sanctuary-0.0.0-alpha.118.jar"')) { throw new GradleException("The alpha.199 quest-request contract release is incomplete") } } @@ -4467,7 +4467,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.209" + if (rootProject.pack_version != "26.2.0-alpha.210" || rootProject.ambiance_version != "0.0.0-alpha.14" || rootProject.ouch_version != "0.0.0-alpha.9" || migration.source?.pack_version != "26.2.0-alpha.199" @@ -4501,10 +4501,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.209" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.209.mrpack" - || prism.versionId != "26.2.0-alpha.209" - || !packwiz.contains('version = "26.2.0-alpha.209"') + || release.pack_version != "26.2.0-alpha.210" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.210.mrpack" + || prism.versionId != "26.2.0-alpha.210" + || !packwiz.contains('version = "26.2.0-alpha.210"') || !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.14.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") @@ -4533,8 +4533,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.209" - || rootProject.sanctuary_version != "0.0.0-alpha.117" + if (rootProject.pack_version != "26.2.0-alpha.210" + || rootProject.sanctuary_version != "0.0.0-alpha.118" || 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" @@ -4548,11 +4548,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.209" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.209.mrpack" - || prism.versionId != "26.2.0-alpha.209" - || !packwiz.contains('version = "26.2.0-alpha.209"') - || !packwizIndex.contains('file = "mods/sanctuary-0.0.0-alpha.117.jar"')) { + || release.pack_version != "26.2.0-alpha.210" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.210.mrpack" + || prism.versionId != "26.2.0-alpha.210" + || !packwiz.contains('version = "26.2.0-alpha.210"') + || !packwizIndex.contains('file = "mods/sanctuary-0.0.0-alpha.118.jar"')) { throw new GradleException("The alpha.201 quest-request escrow release is incomplete") } } @@ -4587,11 +4587,11 @@ tasks.register("verifyWaystoneShopCulinaryAlpha202Release") { "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.209" + if (rootProject.pack_version != "26.2.0-alpha.210" || rootProject.anotherworld_version != "0.0.0-alpha.55" || rootProject.itsalive_version != "0.0.0-alpha.35" || rootProject.iliketomoveit_version != "0.0.0-alpha.15" - || rootProject.sanctuary_version != "0.0.0-alpha.117" + || rootProject.sanctuary_version != "0.0.0-alpha.118" || migration.source?.pack_version != "26.2.0-alpha.201" || migration.source?.modules != [ itsalive: "0.0.0-alpha.30", @@ -4627,14 +4627,14 @@ tasks.register("verifyWaystoneShopCulinaryAlpha202Release") { || 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.209" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.209.mrpack" - || prism.versionId != "26.2.0-alpha.209" - || !packwiz.contains('version = "26.2.0-alpha.209"') + || release.pack_version != "26.2.0-alpha.210" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.210.mrpack" + || prism.versionId != "26.2.0-alpha.210" + || !packwiz.contains('version = "26.2.0-alpha.210"') || !packwizIndex.contains('file = "mods/anotherworld-0.0.0-alpha.55.jar"') - || !packwizIndex.contains('file = "mods/itsalive-0.0.0-alpha.34.jar"') - || !packwizIndex.contains('file = "mods/iliketomoveit-0.0.0-alpha.14.jar"') - || !packwizIndex.contains('file = "mods/sanctuary-0.0.0-alpha.117.jar"')) { + || !packwizIndex.contains('file = "mods/itsalive-0.0.0-alpha.35.jar"') + || !packwizIndex.contains('file = "mods/iliketomoveit-0.0.0-alpha.15.jar"') + || !packwizIndex.contains('file = "mods/sanctuary-0.0.0-alpha.118.jar"')) { throw new GradleException("The alpha.202 Waystone, Shop and culinary lectern release is incomplete") } } @@ -4747,9 +4747,9 @@ tasks.register("verifySafeVaultFeature") { def image = javax.imageio.ImageIO.read(file("anotherworld/src/main/resources/assets/anotherworld/textures/${path}")) image == null || image.width != size[0] || image.height != size[1] }.keySet() - if (rootProject.pack_version != "26.2.0-alpha.209" + if (rootProject.pack_version != "26.2.0-alpha.210" || rootProject.anotherworld_version != "0.0.0-alpha.55" - || rootProject.sanctuary_version != "0.0.0-alpha.117" + || rootProject.sanctuary_version != "0.0.0-alpha.118" || migration.schema_version != 1 || migration.source?.pack_version != "26.2.0-alpha.201" || migration.target?.pack_version != "26.2.0-alpha.202" @@ -4938,8 +4938,8 @@ tasks.register("verifySafeVaultInterfaceAlpha203Release") { 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 jeiFiles = prism.files.findAll { it.path == "mods/jei-26.2-fabric-30.28.0.191.jar" } - if (rootProject.pack_version != "26.2.0-alpha.209" + def jeiFiles = prism.files.findAll { it.path == "mods/jei-26.2-fabric-30.28.0.193.jar" } + if (rootProject.pack_version != "26.2.0-alpha.210" || rootProject.anotherworld_version != "0.0.0-alpha.55" || migration.source?.pack_version != "26.2.0-alpha.202" || migration.source?.modules != [anotherworld: "0.0.0-alpha.50"] @@ -4957,14 +4957,14 @@ tasks.register("verifySafeVaultInterfaceAlpha203Release") { || migration.distribution?.jei?.modrinth_version_id != "XXTFqqwG" || migration.distribution?.jei?.prism_manifest_updated != true || release.pack_version != rootProject.pack_version - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.209.mrpack" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.210.mrpack" || prism.versionId != rootProject.pack_version - || !packwiz.contains('version = "26.2.0-alpha.209"') + || !packwiz.contains('version = "26.2.0-alpha.210"') || !packwizIndex.contains('file = "mods/anotherworld-0.0.0-alpha.55.jar"') || packwizIndex.contains('file = "mods/anotherworld-0.0.0-alpha.50.jar"') || jeiFiles.size() != 1 - || jeiFiles[0].hashes?.sha1 != "35353e18b1cf2a61339463447fce1f3e2f716b80" - || jeiFiles[0].hashes?.sha512 != "aa7dca89026fea2293a2e25fa4a84faf0eeaa6407b7e84991e69626ff1ee0f9df9ba3a5e096cbf631d08842693b115653c5c8373e5ef3953318a892dbdc0a33d") { + || jeiFiles[0].hashes?.sha1 != "494f9dc787d6c9cd9d32793da2784ab16834faf3" + || jeiFiles[0].hashes?.sha512 != "0869f4d5840a732a04bedc7684b40140f087f3d759066c206d9d1ec710007f7c9585e4f5ebb04f10e56bef1cf2eddc6978bb2b2c93541cff5fcf7e1609859468") { throw new GradleException("The alpha.203 upright safe-vault interface release is incomplete") } } @@ -4984,8 +4984,8 @@ tasks.register("verifySafeVaultFixAlpha204Release") { 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 jeiFiles = prism.files.findAll { it.path == "mods/jei-26.2-fabric-30.28.0.191.jar" } - if (rootProject.pack_version != "26.2.0-alpha.209" + def jeiFiles = prism.files.findAll { it.path == "mods/jei-26.2-fabric-30.28.0.193.jar" } + if (rootProject.pack_version != "26.2.0-alpha.210" || rootProject.anotherworld_version != "0.0.0-alpha.55" || migration.source?.pack_version != "26.2.0-alpha.203" || migration.source?.modules != [anotherworld: "0.0.0-alpha.51"] @@ -5011,14 +5011,14 @@ tasks.register("verifySafeVaultFixAlpha204Release") { || migration.distribution?.jei?.modrinth_version_id != "OcMayhUH" || migration.distribution?.jei?.prism_manifest_updated != true || release.pack_version != rootProject.pack_version - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.209.mrpack" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.210.mrpack" || prism.versionId != rootProject.pack_version - || !packwiz.contains('version = "26.2.0-alpha.209"') + || !packwiz.contains('version = "26.2.0-alpha.210"') || !packwizIndex.contains('file = "mods/anotherworld-0.0.0-alpha.55.jar"') || packwizIndex.contains('file = "mods/anotherworld-0.0.0-alpha.51.jar"') || jeiFiles.size() != 1 - || jeiFiles[0].hashes?.sha1 != "35353e18b1cf2a61339463447fce1f3e2f716b80" - || jeiFiles[0].hashes?.sha512 != "aa7dca89026fea2293a2e25fa4a84faf0eeaa6407b7e84991e69626ff1ee0f9df9ba3a5e096cbf631d08842693b115653c5c8373e5ef3953318a892dbdc0a33d") { + || jeiFiles[0].hashes?.sha1 != "494f9dc787d6c9cd9d32793da2784ab16834faf3" + || jeiFiles[0].hashes?.sha512 != "0869f4d5840a732a04bedc7684b40140f087f3d759066c206d9d1ec710007f7c9585e4f5ebb04f10e56bef1cf2eddc6978bb2b2c93541cff5fcf7e1609859468") { throw new GradleException("The alpha.204 Safe Block finalization release is incomplete") } } @@ -5038,8 +5038,8 @@ tasks.register("verifySafeVaultCubeAlpha205Release") { 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 jeiFiles = prism.files.findAll { it.path == "mods/jei-26.2-fabric-30.28.0.191.jar" } - if (rootProject.pack_version != "26.2.0-alpha.209" + def jeiFiles = prism.files.findAll { it.path == "mods/jei-26.2-fabric-30.28.0.193.jar" } + if (rootProject.pack_version != "26.2.0-alpha.210" || rootProject.anotherworld_version != "0.0.0-alpha.55" || migration.source?.pack_version != "26.2.0-alpha.204" || migration.source?.modules != [anotherworld: "0.0.0-alpha.52"] @@ -5068,14 +5068,14 @@ tasks.register("verifySafeVaultCubeAlpha205Release") { || migration.distribution?.jei?.modrinth_version_id != "NtfJDMhk" || migration.distribution?.jei?.prism_manifest_updated != true || release.pack_version != rootProject.pack_version - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.209.mrpack" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.210.mrpack" || prism.versionId != rootProject.pack_version - || !packwiz.contains('version = "26.2.0-alpha.209"') + || !packwiz.contains('version = "26.2.0-alpha.210"') || !packwizIndex.contains('file = "mods/anotherworld-0.0.0-alpha.55.jar"') || packwizIndex.contains('file = "mods/anotherworld-0.0.0-alpha.52.jar"') || jeiFiles.size() != 1 - || jeiFiles[0].hashes?.sha1 != "35353e18b1cf2a61339463447fce1f3e2f716b80" - || jeiFiles[0].hashes?.sha512 != "aa7dca89026fea2293a2e25fa4a84faf0eeaa6407b7e84991e69626ff1ee0f9df9ba3a5e096cbf631d08842693b115653c5c8373e5ef3953318a892dbdc0a33d") { + || jeiFiles[0].hashes?.sha1 != "494f9dc787d6c9cd9d32793da2784ab16834faf3" + || jeiFiles[0].hashes?.sha512 != "0869f4d5840a732a04bedc7684b40140f087f3d759066c206d9d1ec710007f7c9585e4f5ebb04f10e56bef1cf2eddc6978bb2b2c93541cff5fcf7e1609859468") { throw new GradleException("The alpha.205 hollow safe-vault cube release is incomplete") } } @@ -5096,8 +5096,8 @@ tasks.register("verifySafeVaultCtmAlpha206Release") { 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 jeiFiles = prism.files.findAll { it.path == "mods/jei-26.2-fabric-30.28.0.191.jar" } - if (rootProject.pack_version != "26.2.0-alpha.209" + def jeiFiles = prism.files.findAll { it.path == "mods/jei-26.2-fabric-30.28.0.193.jar" } + if (rootProject.pack_version != "26.2.0-alpha.210" || rootProject.anotherworld_version != "0.0.0-alpha.55" || migration.source?.pack_version != "26.2.0-alpha.205" || migration.source?.modules != [anotherworld: "0.0.0-alpha.53"] @@ -5120,14 +5120,14 @@ tasks.register("verifySafeVaultCtmAlpha206Release") { || migration.compatibility?.pack_release_updated != true || migration.distribution?.packwiz_index_refreshed != true || release.pack_version != rootProject.pack_version - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.209.mrpack" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.210.mrpack" || prism.versionId != rootProject.pack_version - || !packwiz.contains('version = "26.2.0-alpha.209"') + || !packwiz.contains('version = "26.2.0-alpha.210"') || !packwizIndex.contains('file = "mods/anotherworld-0.0.0-alpha.55.jar"') || packwizIndex.contains('file = "mods/anotherworld-0.0.0-alpha.53.jar"') || jeiFiles.size() != 1 - || jeiFiles[0].hashes?.sha1 != "35353e18b1cf2a61339463447fce1f3e2f716b80" - || jeiFiles[0].hashes?.sha512 != "aa7dca89026fea2293a2e25fa4a84faf0eeaa6407b7e84991e69626ff1ee0f9df9ba3a5e096cbf631d08842693b115653c5c8373e5ef3953318a892dbdc0a33d") { + || jeiFiles[0].hashes?.sha1 != "494f9dc787d6c9cd9d32793da2784ab16834faf3" + || jeiFiles[0].hashes?.sha512 != "0869f4d5840a732a04bedc7684b40140f087f3d759066c206d9d1ec710007f7c9585e4f5ebb04f10e56bef1cf2eddc6978bb2b2c93541cff5fcf7e1609859468") { throw new GradleException("The alpha.206 Safe Block CTM column release is incomplete") } } @@ -5148,8 +5148,8 @@ tasks.register("verifySafeVaultUnlimitedAlpha207Release") { 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 jeiFiles = prism.files.findAll { it.path == "mods/jei-26.2-fabric-30.28.0.191.jar" } - if (rootProject.pack_version != "26.2.0-alpha.209" + def jeiFiles = prism.files.findAll { it.path == "mods/jei-26.2-fabric-30.28.0.193.jar" } + if (rootProject.pack_version != "26.2.0-alpha.210" || rootProject.anotherworld_version != "0.0.0-alpha.55" || migration.source?.pack_version != "26.2.0-alpha.206" || migration.source?.modules != [anotherworld: "0.0.0-alpha.54"] @@ -5179,14 +5179,14 @@ tasks.register("verifySafeVaultUnlimitedAlpha207Release") { || migration.compatibility?.pack_release_updated != true || migration.distribution?.packwiz_index_refreshed != true || release.pack_version != rootProject.pack_version - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.209.mrpack" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.210.mrpack" || prism.versionId != rootProject.pack_version - || !packwiz.contains('version = "26.2.0-alpha.209"') + || !packwiz.contains('version = "26.2.0-alpha.210"') || !packwizIndex.contains('file = "mods/anotherworld-0.0.0-alpha.55.jar"') || packwizIndex.contains('file = "mods/anotherworld-0.0.0-alpha.54.jar"') || jeiFiles.size() != 1 - || jeiFiles[0].hashes?.sha1 != "35353e18b1cf2a61339463447fce1f3e2f716b80" - || jeiFiles[0].hashes?.sha512 != "aa7dca89026fea2293a2e25fa4a84faf0eeaa6407b7e84991e69626ff1ee0f9df9ba3a5e096cbf631d08842693b115653c5c8373e5ef3953318a892dbdc0a33d") { + || jeiFiles[0].hashes?.sha1 != "494f9dc787d6c9cd9d32793da2784ab16834faf3" + || jeiFiles[0].hashes?.sha512 != "0869f4d5840a732a04bedc7684b40140f087f3d759066c206d9d1ec710007f7c9585e4f5ebb04f10e56bef1cf2eddc6978bb2b2c93541cff5fcf7e1609859468") { throw new GradleException("The alpha.207 unlimited safe-vault balance release is incomplete") } } @@ -5237,7 +5237,7 @@ tasks.register("verifyCanapliaFoundation") { "itsalive/src/main/java/fr/koka99cab/sanctuary26/itsalive/ItsAliveMod.java").text def visualApiSource = file( "ambiance/src/main/java/fr/koka99cab/sanctuary26/ambiance/api/visual/AmbianceVisualEffectApi.java").text - if (rootProject.pack_version != "26.2.0-alpha.209" + if (rootProject.pack_version != "26.2.0-alpha.210" || rootProject.itsalive_version != "0.0.0-alpha.35" || rootProject.ambiance_version != "0.0.0-alpha.14" || migration.issue != 35 @@ -5303,6 +5303,7 @@ tasks.register("verifyCanapliaFoundation") { tasks.named("verifyWorkspace") { dependsOn "verifyCanapliaGameplay" dependsOn "verifyCanapliaAlpha209Release" + dependsOn "verifyAlpha210Release" dependsOn tasks.named("verifyWaystoneShopCulinaryAlpha202Release") dependsOn tasks.named("verifySafeVaultFeature") dependsOn tasks.named("verifySafeVaultInterfaceAlpha203Release") @@ -5476,7 +5477,7 @@ tasks.register("verifyCanapliaAlpha209Release") { def packwiz = file("pack/packwiz/pack.toml").text def packwizIndex = file("pack/packwiz/index.toml").text def jeiFiles = prism.files.findAll { - it.path == "mods/jei-26.2-fabric-30.28.0.191.jar" + it.path == "mods/jei-26.2-fabric-30.28.0.193.jar" } def expectedSource = [ ambiance: "0.0.0-alpha.12", @@ -5486,10 +5487,10 @@ tasks.register("verifyCanapliaAlpha209Release") { ambiance: "0.0.0-alpha.14", itsalive: "0.0.0-alpha.33", onlyfun: "0.0.0-alpha.20"] - if (rootProject.pack_version != "26.2.0-alpha.209" + if (rootProject.pack_version != "26.2.0-alpha.210" || rootProject.ambiance_version != expectedTarget.ambiance || rootProject.itsalive_version != "0.0.0-alpha.35" - || rootProject.onlyfun_version != expectedTarget.onlyfun + || rootProject.onlyfun_version != "0.0.0-alpha.21" || migration.source?.pack_version != "26.2.0-alpha.207" || migration.source?.modules != expectedSource || migration.target?.pack_version != "26.2.0-alpha.208" @@ -5534,23 +5535,128 @@ tasks.register("verifyCanapliaAlpha209Release") { || fixMigration.compatibility?.network_protocol_changed != false || fixMigration.distribution?.pack_release_updated != true || release.pack_version != rootProject.pack_version - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.209.mrpack" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.210.mrpack" || prism.versionId != rootProject.pack_version - || !packwiz.contains('version = "26.2.0-alpha.209"') + || !packwiz.contains('version = "26.2.0-alpha.210"') || !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.14.jar"') - || !packwizIndex.contains('file = "mods/itsalive-0.0.0-alpha.34.jar"') - || !packwizIndex.contains('file = "mods/onlyfun-0.0.0-alpha.20.jar"') + || !packwizIndex.contains('file = "mods/itsalive-0.0.0-alpha.35.jar"') + || !packwizIndex.contains('file = "mods/onlyfun-0.0.0-alpha.21.jar"') || packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.12.jar"') || packwizIndex.contains('file = "mods/itsalive-0.0.0-alpha.33.jar"') || packwizIndex.contains('file = "mods/onlyfun-0.0.0-alpha.19.jar"') || jeiFiles.size() != 1 - || jeiFiles[0].hashes?.sha1 != "35353e18b1cf2a61339463447fce1f3e2f716b80" - || jeiFiles[0].hashes?.sha512 != "aa7dca89026fea2293a2e25fa4a84faf0eeaa6407b7e84991e69626ff1ee0f9df9ba3a5e096cbf631d08842693b115653c5c8373e5ef3953318a892dbdc0a33d") { + || jeiFiles[0].hashes?.sha1 != "494f9dc787d6c9cd9d32793da2784ab16834faf3" + || jeiFiles[0].hashes?.sha512 != "0869f4d5840a732a04bedc7684b40140f087f3d759066c206d9d1ec710007f7c9585e4f5ebb04f10e56bef1cf2eddc6978bb2b2c93541cff5fcf7e1609859468") { throw new GradleException("The alpha.209 Canaplia correction release is incomplete") } } } +tasks.register("verifyAlpha210Release") { + group = "verification" + description = "Checks the Sanctuary 26.2.0-alpha.210 Forbidden Book and gameplay-polish release." + inputs.file(file("pack/migrations/26.2.0-alpha.209-forbidden-book-and-polish-to-alpha.210.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.file(file("CHANGELOG.md")) + inputs.files([ + file("sanctuary/src/main/resources/fabric.mod.json"), + file("onlyfun/src/main/resources/fabric.mod.json"), + file("iliketomoveit/src/main/resources/fabric.mod.json"), + file("itsalive/src/main/resources/fabric.mod.json")]) + doLast { + def migration = new JsonSlurper().parse(file( + "pack/migrations/26.2.0-alpha.209-forbidden-book-and-polish-to-alpha.210.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 changelog = file("CHANGELOG.md").text + def manifests = ["sanctuary", "onlyfun", "iliketomoveit", "itsalive"].collectEntries { id -> + [(id): new JsonSlurper().parse(file("${id}/src/main/resources/fabric.mod.json"))] + } + def expectedSource = [ + sanctuary: "0.0.0-alpha.117", + onlyfun: "0.0.0-alpha.20", + iliketomoveit: "0.0.0-alpha.14", + itsalive: "0.0.0-alpha.34"] + def expectedTarget = [ + sanctuary: "0.0.0-alpha.118", + onlyfun: "0.0.0-alpha.21", + iliketomoveit: "0.0.0-alpha.15", + itsalive: "0.0.0-alpha.35"] + def requiredJars = expectedTarget.collect { id, version -> + "file = \"mods/${id}-${version}.jar\"" + } + def obsoleteJars = expectedSource.collect { id, version -> + "file = \"mods/${id}-${version}.jar\"" + } + def jeiFiles = prism.files.findAll { + it.path == "mods/jei-26.2-fabric-30.28.0.193.jar" + } + if (rootProject.pack_version != "26.2.0-alpha.210" + || rootProject.sanctuary_version != expectedTarget.sanctuary + || rootProject.onlyfun_version != expectedTarget.onlyfun + || rootProject.iliketomoveit_version != expectedTarget.iliketomoveit + || rootProject.itsalive_version != expectedTarget.itsalive + || migration.source?.pack_version != "26.2.0-alpha.209" + || migration.source?.modules != expectedSource + || migration.target?.pack_version != "26.2.0-alpha.210" + || migration.target?.modules != expectedTarget + || migration.features?.shop_status_layout_separated != true + || migration.features?.shop_progression_bypasses_removed != true + || migration.features?.zombie_xbox_360_names != true + || migration.features?.cape_reconnect_resynchronization != true + || migration.features?.quest_requests_require_dedicated_signs != true + || migration.features?.ridden_happy_ghast_cruise_speed_multiplier != 2.0 + || migration.features?.canaplia_codex_name != "Forbidden Book" + || migration.features?.canaplia_page_learns_random_unknown_entry != true + || migration.features?.canaplia_handheld_knowledge_personal != true + || migration.features?.canaplia_lectern_shares_owner_knowledge != true + || migration.compatibility?.new_world_required != false + || migration.compatibility?.save_reset_required != false + || migration.compatibility?.registry_ids_changed != false + || migration.compatibility?.sanctuary_data_version != 11 + || migration.compatibility?.sanctuary_network_protocol != 21 + || migration.compatibility?.onlyfun_data_version != 2 + || migration.compatibility?.onlyfun_network_protocol != 2 + || migration.compatibility?.iliketomoveit_data_version != 3 + || migration.compatibility?.iliketomoveit_network_protocol != 5 + || migration.compatibility?.itsalive_data_version != 3 + || migration.compatibility?.itsalive_network_protocol != 4 + || migration.distribution?.pack_release_updated != true + || migration.distribution?.packwiz_index_refreshed != true + || migration.distribution?.prism_modrinth_index_updated != true + || migration.distribution?.shared_client_server_mrpack != true + || migration.distribution?.jei?.source != "30.28.0.191" + || migration.distribution?.jei?.target != "30.28.0.193" + || migration.distribution?.jei?.modrinth_version_id != "qaCQ7LGO" + || migration.distribution?.jei?.packwiz_and_prism_synchronized != true + || manifests.sanctuary.custom?.sanctuary26?.data_version != 11 + || manifests.sanctuary.custom?.sanctuary26?.network_protocol != 21 + || manifests.onlyfun.custom?.sanctuary26?.data_version != 2 + || manifests.onlyfun.custom?.sanctuary26?.network_protocol != 2 + || manifests.iliketomoveit.custom?.sanctuary26?.data_version != 3 + || manifests.iliketomoveit.custom?.sanctuary26?.network_protocol != 5 + || manifests.itsalive.custom?.sanctuary26?.data_version != 3 + || manifests.itsalive.custom?.sanctuary26?.network_protocol != 4 + || release.pack_version != "26.2.0-alpha.210" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.210.mrpack" + || prism.versionId != "26.2.0-alpha.210" + || !packwiz.contains('version = "26.2.0-alpha.210"') + || requiredJars.any { !packwizIndex.contains(it) } + || obsoleteJars.any { packwizIndex.contains(it) } + || jeiFiles.size() != 1 + || jeiFiles[0].hashes?.sha1 != "494f9dc787d6c9cd9d32793da2784ab16834faf3" + || jeiFiles[0].hashes?.sha512 != "0869f4d5840a732a04bedc7684b40140f087f3d759066c206d9d1ec710007f7c9585e4f5ebb04f10e56bef1cf2eddc6978bb2b2c93541cff5fcf7e1609859468" + || !changelog.contains("## `26.2.0-alpha.210`")) { + throw new GradleException("The alpha.210 Forbidden Book and gameplay-polish release is incomplete") + } + } +} + tasks.named("check") { dependsOn tasks.named("verifyWorkspace") dependsOn tasks.named("verifyTransport") diff --git a/gradle.properties b/gradle.properties index a6f07d9..ed42ca0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -26,9 +26,9 @@ masterkey_version=0.0.0-alpha.8 masterkey_lifecycle=active iliketomoveit_version=0.0.0-alpha.15 iliketomoveit_lifecycle=active -onlyfun_version=0.0.0-alpha.20 +onlyfun_version=0.0.0-alpha.21 onlyfun_lifecycle=active -sanctuary_version=0.0.0-alpha.117 +sanctuary_version=0.0.0-alpha.118 sanctuary_lifecycle=active -pack_version=26.2.0-alpha.209 +pack_version=26.2.0-alpha.210 maven_group=fr.koka99cab.sanctuary26 diff --git a/itsalive/README.md b/itsalive/README.md index a7604e3..0aded72 100644 --- a/itsalive/README.md +++ b/itsalive/README.md @@ -2,7 +2,7 @@ It's Alive possède le vivant de Sanctuary. Il enrichit directement le Creeper vanilla et accueille désormais les papillons de Pipallon, les Mooblooms fleuries et les créatures de Real Ghost — baleine volante comprise — sous un référencement unifié `itsalive:*`. -## Version courante — `0.0.0-alpha.20` +## Version courante — `0.0.0-alpha.35` ## Creepers diff --git a/pack/migrations/26.2.0-alpha.209-forbidden-book-and-polish-to-alpha.210.json b/pack/migrations/26.2.0-alpha.209-forbidden-book-and-polish-to-alpha.210.json new file mode 100644 index 0000000..bb46832 --- /dev/null +++ b/pack/migrations/26.2.0-alpha.209-forbidden-book-and-polish-to-alpha.210.json @@ -0,0 +1,58 @@ +{ + "schema_version": 1, + "source": { + "pack_version": "26.2.0-alpha.209", + "modules": { + "sanctuary": "0.0.0-alpha.117", + "onlyfun": "0.0.0-alpha.20", + "iliketomoveit": "0.0.0-alpha.14", + "itsalive": "0.0.0-alpha.34" + } + }, + "target": { + "pack_version": "26.2.0-alpha.210", + "modules": { + "sanctuary": "0.0.0-alpha.118", + "onlyfun": "0.0.0-alpha.21", + "iliketomoveit": "0.0.0-alpha.15", + "itsalive": "0.0.0-alpha.35" + } + }, + "features": { + "shop_status_layout_separated": true, + "shop_progression_bypasses_removed": true, + "zombie_xbox_360_names": true, + "cape_reconnect_resynchronization": true, + "quest_requests_require_dedicated_signs": true, + "ridden_happy_ghast_cruise_speed_multiplier": 2.0, + "canaplia_codex_name": "Forbidden Book", + "canaplia_page_learns_random_unknown_entry": true, + "canaplia_handheld_knowledge_personal": true, + "canaplia_lectern_shares_owner_knowledge": true + }, + "compatibility": { + "new_world_required": false, + "save_reset_required": false, + "registry_ids_changed": false, + "sanctuary_data_version": 11, + "sanctuary_network_protocol": 21, + "onlyfun_data_version": 2, + "onlyfun_network_protocol": 2, + "iliketomoveit_data_version": 3, + "iliketomoveit_network_protocol": 5, + "itsalive_data_version": 3, + "itsalive_network_protocol": 4 + }, + "distribution": { + "pack_release_updated": true, + "packwiz_index_refreshed": true, + "prism_modrinth_index_updated": true, + "shared_client_server_mrpack": true, + "jei": { + "source": "30.28.0.191", + "target": "30.28.0.193", + "modrinth_version_id": "qaCQ7LGO", + "packwiz_and_prism_synchronized": true + } + } +} diff --git a/pack/packwiz/index.toml b/pack/packwiz/index.toml index 5c531b9..fa8b3a9 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.14.jar" -hash = "733c1b328fffcfc4f692439391b9e54be5c5485fd1c5894f2a94a887b3df2abb" +hash = "a4b2a36e046a3095ada58e3dbf5fd30ab7c8ba42eaf2abcf513b38b8cc2f3e4a" [[files]] file = "mods/anotherworld-0.0.0-alpha.55.jar" -hash = "3e8966d914ca20519181aee22b3af701e64f7c57716bd395b32c134e116dba78" +hash = "da7163a34ca71e1c2385a84221cddccc09f0f83d9a00bce0ed6263b19ec519cb" [[files]] file = "mods/events-0.0.0-alpha.0.jar" -hash = "cb1334425cd7f4972d30148ff80917ddafc3109d58300b73e711d15d7c23869e" +hash = "7400d63c905d1c87a5290adaa2fe91305fa1f067827ca8f0610a6ae4e17624da" [[files]] file = "mods/fabric-api.pw.toml" @@ -30,8 +30,8 @@ hash = "df032a6b051d0262cf24945c43e0e6b915e8cc1d62af62fe933932e7f35960c4" metafile = true [[files]] -file = "mods/iliketomoveit-0.0.0-alpha.14.jar" -hash = "8ad908d29ab282f4e2efffb6ee8960c06d6f0f9f6e253baf90ebd8cb62934d11" +file = "mods/iliketomoveit-0.0.0-alpha.15.jar" +hash = "a084cf25a4afa50086ce220f40b6b3946a06389de105f23c0246df1577deb3c8" [[files]] file = "mods/iris.pw.toml" @@ -39,33 +39,33 @@ hash = "84a3cef87679c0d21dceb4641167dc0368b9a3593698f6a3632485e9b3a8d5da" metafile = true [[files]] -file = "mods/itsalive-0.0.0-alpha.34.jar" -hash = "febf235da00540ff365aeb11990b71a790411606b7d24563cb1e333defff01de" +file = "mods/itsalive-0.0.0-alpha.35.jar" +hash = "4a6433abdfc03a0872f7c810fb17016a0f20acda5e223e0fef479dd786cc73ac" [[files]] file = "mods/jei.pw.toml" -hash = "a6f7f6eaec2aa5842c54f8c9c4a228b028e99b680eb4e9112291763692027fd4" +hash = "a213ae237f9b3934bdcd0d282119d4166d0ccbb7c7223daa8d7ed956c69a0e3f" metafile = true [[files]] file = "mods/masterkey-0.0.0-alpha.8.jar" -hash = "9fd559ab559fb2ba6d0ae78fa7e48db15462e6f957fb23f1895469435745fe00" +hash = "eaf70f6c5a78ee7ab2d3be498d4f7d67fcba433ed61b65b305e958f03b387d94" [[files]] -file = "mods/onlyfun-0.0.0-alpha.20.jar" -hash = "043d5c7d864c980329f707f0e16e39d646ea9d346aad1c8853faf42fefefaaa8" +file = "mods/onlyfun-0.0.0-alpha.21.jar" +hash = "7e319a0cc6149d5819ef2359fe3ad4035066a9cddd5ae0a16c12c9db64bc3f6a" [[files]] file = "mods/ouch-0.0.0-alpha.9.jar" -hash = "75d64d7260ea351576ad678d1eedde9a65b70e0b208b98abe48f6df345a205d8" +hash = "f3cf2d8c83afa32b1c70e8239dd514be3c74834397f9d09efe177bc8c5ef9ac4" [[files]] file = "mods/redstoner-0.0.0-alpha.10.jar" -hash = "fed903b6faad120f5018997bb017b759c0be29013e130db9b9c68492b1440616" +hash = "a9049b9d3a323015545194c92ce9da7a5dca4ff9a28ea26b02bead96748328ab" [[files]] -file = "mods/sanctuary-0.0.0-alpha.117.jar" -hash = "293032d52220f77f13c4795f6c5293c73e7e7b74c5186d2c56284e5cfe5b228b" +file = "mods/sanctuary-0.0.0-alpha.118.jar" +hash = "1a1319e5f09de941ad8a7561aff9d2fb8c7460a8cd8d2374817d8f39c5682030" [[files]] file = "mods/simple-voice-chat.pw.toml" diff --git a/pack/packwiz/mods/jei.pw.toml b/pack/packwiz/mods/jei.pw.toml index 15778e9..e50923d 100644 --- a/pack/packwiz/mods/jei.pw.toml +++ b/pack/packwiz/mods/jei.pw.toml @@ -1,14 +1,14 @@ name = "Just Enough Items (JEI)" -filename = "jei-26.2-fabric-30.28.0.191.jar" +filename = "jei-26.2-fabric-30.28.0.193.jar" side = "both" pin = true [download] -url = "https://cdn.modrinth.com/data/u6dRKJwZ/versions/FQUVLzeD/jei-26.2-fabric-30.28.0.191.jar" +url = "https://cdn.modrinth.com/data/u6dRKJwZ/versions/qaCQ7LGO/jei-26.2-fabric-30.28.0.193.jar" hash-format = "sha512" -hash = "aa7dca89026fea2293a2e25fa4a84faf0eeaa6407b7e84991e69626ff1ee0f9df9ba3a5e096cbf631d08842693b115653c5c8373e5ef3953318a892dbdc0a33d" +hash = "0869f4d5840a732a04bedc7684b40140f087f3d759066c206d9d1ec710007f7c9585e4f5ebb04f10e56bef1cf2eddc6978bb2b2c93541cff5fcf7e1609859468" [update] [update.modrinth] mod-id = "u6dRKJwZ" -version = "FQUVLzeD" +version = "qaCQ7LGO" diff --git a/pack/packwiz/pack.toml b/pack/packwiz/pack.toml index 3c23df3..ad220c7 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.209" +version = "26.2.0-alpha.210" pack-format = "packwiz:1.1.0" [index] file = "index.toml" hash-format = "sha256" -hash = "546e7fd1111ca64d1c7c7d158dc8607c1bcc269ca87d546414282fdf511b5886" +hash = "e20c051f8895ce3164ec72b7764b8904f411e36f63bf1e046b1bcc9108d00a31" [versions] fabric = "0.19.3" diff --git a/pack/prism/modrinth.index.json b/pack/prism/modrinth.index.json index 524ad37..f977d7f 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.209", + "versionId": "26.2.0-alpha.210", "files": [ { "path": "mods/fabric-api-0.158.0+26.2.jar", @@ -21,19 +21,19 @@ "fileSize": 2535765 }, { - "path": "mods/jei-26.2-fabric-30.28.0.191.jar", + "path": "mods/jei-26.2-fabric-30.28.0.193.jar", "hashes": { - "sha1": "35353e18b1cf2a61339463447fce1f3e2f716b80", - "sha512": "aa7dca89026fea2293a2e25fa4a84faf0eeaa6407b7e84991e69626ff1ee0f9df9ba3a5e096cbf631d08842693b115653c5c8373e5ef3953318a892dbdc0a33d" + "sha1": "494f9dc787d6c9cd9d32793da2784ab16834faf3", + "sha512": "0869f4d5840a732a04bedc7684b40140f087f3d759066c206d9d1ec710007f7c9585e4f5ebb04f10e56bef1cf2eddc6978bb2b2c93541cff5fcf7e1609859468" }, "env": { "client": "required", "server": "required" }, "downloads": [ - "https://cdn.modrinth.com/data/u6dRKJwZ/versions/FQUVLzeD/jei-26.2-fabric-30.28.0.191.jar" + "https://cdn.modrinth.com/data/u6dRKJwZ/versions/qaCQ7LGO/jei-26.2-fabric-30.28.0.193.jar" ], - "fileSize": 1822520 + "fileSize": 1822836 }, { "path": "mods/voicechat-fabric-2.6.22+26.2.jar", diff --git a/pack/release.json b/pack/release.json index f1c9103..5c87163 100644 --- a/pack/release.json +++ b/pack/release.json @@ -1,6 +1,6 @@ { "schema_version": 1, - "pack_version": "26.2.0-alpha.209", + "pack_version": "26.2.0-alpha.210", "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.209.mrpack", + "primary_file": "sanctuary-26.2.0-alpha.210.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 703f71e..25b0fec 100644 --- a/sanctuary/build.gradle +++ b/sanctuary/build.gradle @@ -2792,7 +2792,7 @@ tasks.register("verifyShopCurrencyRowsRelease") { "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" + if (project.version.toString() != "0.0.0-alpha.118" || 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 @@ -2958,7 +2958,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.117" + if (project.version.toString() != "0.0.0-alpha.118" || 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 @@ -2996,7 +2996,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.117" + if (project.version.toString() != "0.0.0-alpha.118" || 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] @@ -3027,7 +3027,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.117" + if (project.version.toString() != "0.0.0-alpha.118" || migration.target?.pack_version != "26.2.0-alpha.195" || migration.target?.modules?.sanctuary != "0.0.0-alpha.111" || migration.compatibility?.sanctuary_data_version != 11 @@ -3058,7 +3058,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.117" + if (project.version.toString() != "0.0.0-alpha.118" || migration.target?.modules?.sanctuary != "0.0.0-alpha.112" || migration.mailbox?.id != "sanctuary:delivery_box" || migration.mailbox?.horizontal_facing != true @@ -3086,7 +3086,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.117" + if (project.version.toString() != "0.0.0-alpha.118" || !transfer.contains("shouldAppendOverflow") || !transfer.contains("isVanillaStorageRange") || !transfer.contains("hotbarStart") @@ -3132,7 +3132,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.117" + if (project.version.toString() != "0.0.0-alpha.118" || migration.target?.modules?.sanctuary != "0.0.0-alpha.113" || migration.quest_requests?.save_key != "quest_requests" || migration.quest_requests?.data_version != 1 @@ -3190,7 +3190,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.117" + if (project.version.toString() != "0.0.0-alpha.118" || 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" @@ -3259,7 +3259,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.117" + if (project.version.toString() != "0.0.0-alpha.118" || 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"