From b5dab3b5f6d7507d84d7639fc063d56558d009ef Mon Sep 17 00:00:00 2001 From: koka Date: Sun, 30 Aug 2026 07:07:36 +0200 Subject: [PATCH] chore(release): prepare alpha.221 native audio --- CHANGELOG.md | 10 + README.md | 6 +- ambiance/WHITE_DISC.md | 2 +- .../client/audio/LavaplayerAudioStream.java | 2 +- build.gradle | 391 +++++++++++------- gradle.properties | 2 +- ...0-white-disc-native-rate-to-alpha.221.json | 46 +++ pack/packwiz/index.toml | 22 +- pack/packwiz/pack.toml | 4 +- pack/prism/modrinth.index.json | 2 +- pack/release.json | 4 +- 11 files changed, 330 insertions(+), 161 deletions(-) create mode 100644 pack/migrations/26.2.0-alpha.220-white-disc-native-rate-to-alpha.221.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 3620a5b..92de6f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,16 @@ 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.221` + +Module modifié : **Ambiance `0.0.0-alpha.22`**. Les neuf autres modules conservent leur version issue de l'alpha.220. + +- corrige la cause réelle du disque blanc ralenti et trop grave : la piste AAC YouTube reste décodée en stéréo native à 48 kHz, puis chaque paire gauche/droite est explicitement moyennée en un échantillon mono positionnel ; +- supprime la compensation OpenAL approximative à `4/3` et restitue la musique à sa hauteur et sa vitesse originales avec une hauteur `1.0` ; +- conserve un flux PCM mono signé 16 bits little-endian pour l'audio positionnel du jukebox, sans silence ajouté ni changement de durée ; +- ajoute un test déterministe du downmix stéréo et valide le lien signalé sur quatre secondes : 4 000 ms de source donnent 4 000 ms de PCM à 48 kHz ; +- conserve les données Ambiance v2, le protocole réseau 6, les IDs et les sauvegardes existantes ; aucun nouveau monde ni réinitialisation n'est nécessaire. + ## `26.2.0-alpha.220` Module modifié : **Red-Stoner `0.0.0-alpha.12`**. Les neuf autres modules conservent leur version issue de l'alpha.219. diff --git a/README.md b/README.md index 3def907..7ca97dd 100644 --- a/README.md +++ b/README.md @@ -22,17 +22,19 @@ 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.220`**. Cette release distribue Red-Stoner **`0.0.0-alpha.12`** ; les neuf autres modules conservent leur version issue de l'alpha.219. +Version courante du pack distribué : **`26.2.0-alpha.221`**. Cette release distribue Ambiance **`0.0.0-alpha.22`** ; les neuf autres modules conservent leur version issue de l'alpha.220. 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.221 corrige la cause réelle du disque blanc ralenti et trop grave : Ambiance décode désormais la source AAC en stéréo native à 48 kHz, puis moyenne explicitement chaque paire gauche/droite vers le flux mono positionnel de Minecraft. OpenAL reste à sa hauteur normale `1.0`, sans compensation artificielle ni changement de durée. + L’alpha.220 transforme le terminal de stockage en véritable menu de conteneur, sans bouton de fermeture propriétaire. Les clics gauche/droit et shift-clic permettent maintenant de retirer ou déposer des piles depuis toutes les rangées d’inventaire débloquées par Sanctuary, jusqu’à six ; la grille agrégée reste non réorganisable et remplit chaque coffre ou baril dans l’ordre de découverte avant de passer au suivant. L’alpha.219 porte l'île finie Minecraft Indev dans `sanctuary:alpha` : 128 × 128 × 64 blocs déterministes, plages, cavernes, minerais, fluides, végétation et maison historique, le tout borné sans chunks parasites. Le cadre 4 × 5 en cobblestone moussue est maintenant actif et crée une paire persistante à une arrivée sûre hors de la maison. Ambiance peut enfin composer localement Golden Days Base puis Alpha uniquement dans cette dimension, sans redistribuer leurs textures et en restaurant exactement la pile précédente. Voir le [contrat Alpha](sanctuary/ALPHA.md), le [contrat des portails](iliketomoveit/PORTALS.md) et le [guide Golden Days](ambiance/GOLDEN_DAYS.md). L’alpha.218 ajoute le terminal de stockage Red-Stoner : cette demi-dalle verticale se fixe sur un coffre, un coffre piégé ou un baril et donne accès, par pages défilantes de 54 types, à un réseau contigu borné à 128 conteneurs chargés. Les retraits et dépôts sont validés par le serveur, les composants d’items restent strictement séparés et le terminal endgame est exclu du Shop, du Black Market et des récompenses Only Fun. -L’alpha.217 corrige définitivement la hauteur trop grave du disque blanc : la cadence AAC mesurée sur la vidéo signalée est compensée par un facteur OpenAL exact de 4/3, maintenu pendant toute la lecture. +L’alpha.217 tentait de compenser la hauteur trop grave du disque blanc par un facteur OpenAL de `4/3`. Cette compensation est retirée par l’alpha.221, qui corrige directement la conversion stéréo vers mono. L’alpha.216 corrige la lecture lente et dégradée du disque blanc : les quatre tampons PCM initiaux de Minecraft sont maintenant remplis continûment à 48 kHz, avec une vitesse OpenAL normale, au lieu d’être majoritairement complétés par du silence. Les packs Modrinth, Prism et Packwiz sont mis à jour sans exiger de nouveau monde ni réinitialiser les sauvegardes. diff --git a/ambiance/WHITE_DISC.md b/ambiance/WHITE_DISC.md index a1e7a44..810be9c 100644 --- a/ambiance/WHITE_DISC.md +++ b/ambiance/WHITE_DISC.md @@ -16,7 +16,7 @@ jukebox vanilla. libre ; il est envoyé uniquement aux clients qui suivent le chunk et annoncent le canal ; - chaque client ouvre lui-même la source YouTube, refuse les directs et les vidéos de plus de trente minutes, et limite les lectures simultanées à quatre ; -- la source AAC stéréo est décodée à 48 kHz puis convertie explicitement en PCM mono 16 bits +- la source AAC stéréo est décodée à 48 kHz (48 000 Hz) puis convertie explicitement en PCM mono 16 bits little-endian, échantillon gauche/droite par échantillon gauche/droite, afin de conserver la vitesse et la hauteur originales tout en restant positionnelle ; - OpenAL lit ce PCM à sa hauteur native `1.0` sur le canal `RECORDS`, avec une atténuation à diff --git a/ambiance/src/main/java/fr/koka99cab/sanctuary26/ambiance/client/audio/LavaplayerAudioStream.java b/ambiance/src/main/java/fr/koka99cab/sanctuary26/ambiance/client/audio/LavaplayerAudioStream.java index 488d48a..4b8ea8b 100644 --- a/ambiance/src/main/java/fr/koka99cab/sanctuary26/ambiance/client/audio/LavaplayerAudioStream.java +++ b/ambiance/src/main/java/fr/koka99cab/sanctuary26/ambiance/client/audio/LavaplayerAudioStream.java @@ -9,7 +9,7 @@ import java.util.concurrent.TimeoutException; import javax.sound.sampled.AudioFormat; import net.minecraft.client.sounds.AudioStream; -/** Adapts bounded mono PCM frames from Lavaplayer to Minecraft's streaming OpenAL channel. */ +/** Downmixes bounded stereo PCM frames from Lavaplayer for Minecraft's mono OpenAL stream. */ final class LavaplayerAudioStream implements AudioStream { static final int SAMPLE_RATE = 48_000; static final int SOURCE_CHANNELS = 2; diff --git a/build.gradle b/build.gradle index f29b5e9..daa0b40 100644 --- a/build.gradle +++ b/build.gradle @@ -3437,7 +3437,7 @@ 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.220" + if (rootProject.pack_version != "26.2.0-alpha.221" || rootProject.sanctuary_version != "0.0.0-alpha.122" || rootProject.onlyfun_version != "0.0.0-alpha.25" || release.pack_version != rootProject.pack_version || index.versionId != rootProject.pack_version @@ -3487,7 +3487,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.220" + if (rootProject.pack_version != "26.2.0-alpha.221" || rootProject.anotherworld_version != "0.0.0-alpha.55" || rootProject.redstoner_version != "0.0.0-alpha.12" || release.pack_version != rootProject.pack_version || index.versionId != rootProject.pack_version @@ -4275,7 +4275,7 @@ 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.220" + if (rootProject.pack_version != "26.2.0-alpha.221" || rootProject.onlyfun_version != "0.0.0-alpha.25" || rootProject.sanctuary_version != "0.0.0-alpha.122" || release.pack_version != rootProject.pack_version || index.versionId != rootProject.pack_version @@ -4320,7 +4320,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.220" + if (rootProject.pack_version != "26.2.0-alpha.221" || rootProject.itsalive_version != "0.0.0-alpha.36" || release.pack_version != rootProject.pack_version || index.versionId != rootProject.pack_version || migration.source?.pack_version != "26.2.0-alpha.193" @@ -4369,7 +4369,7 @@ 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.220" + if (rootProject.pack_version != "26.2.0-alpha.221" || rootProject.onlyfun_version != "0.0.0-alpha.25" || rootProject.sanctuary_version != "0.0.0-alpha.122" || release.pack_version != rootProject.pack_version || index.versionId != rootProject.pack_version @@ -4415,7 +4415,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.220" + if (rootProject.pack_version != "26.2.0-alpha.221" || migration.source?.pack_version != "26.2.0-alpha.195" || migration.target?.pack_version != "26.2.0-alpha.196" || migration.target?.modules != [ @@ -4433,10 +4433,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.220" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.220.mrpack" - || prism.versionId != "26.2.0-alpha.220" - || !packwiz.contains('version = "26.2.0-alpha.220"')) { + || release.pack_version != "26.2.0-alpha.221" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.221.mrpack" + || prism.versionId != "26.2.0-alpha.221" + || !packwiz.contains('version = "26.2.0-alpha.221"')) { throw new GradleException("The alpha.196 culinary, mailbox and grapple release contract is incomplete") } } @@ -4461,7 +4461,7 @@ 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.220" + if (rootProject.pack_version != "26.2.0-alpha.221" || rootProject.itsalive_version != "0.0.0-alpha.36" || rootProject.sanctuary_version != "0.0.0-alpha.122" || migration.source?.pack_version != "26.2.0-alpha.196" @@ -4481,10 +4481,10 @@ tasks.register("verifyQuestRequestsCauldronBatchesRelease") { || migration.distribution?.jei?.target != "30.26.0.186" || migration.compatibility?.sanctuary_target_network_protocol != 19 || sanctuaryManifest.custom?.sanctuary26?.network_protocol != 22 - || release.pack_version != "26.2.0-alpha.220" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.220.mrpack" - || prism.versionId != "26.2.0-alpha.220" - || !packwiz.contains('version = "26.2.0-alpha.220"')) { + || release.pack_version != "26.2.0-alpha.221" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.221.mrpack" + || prism.versionId != "26.2.0-alpha.221" + || !packwiz.contains('version = "26.2.0-alpha.221"')) { throw new GradleException("The alpha.197 quest-request and cauldron-batch release contract is incomplete") } } @@ -4511,7 +4511,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.220" + if (rootProject.pack_version != "26.2.0-alpha.221" || rootProject.itsalive_version != "0.0.0-alpha.36" || migration.source?.pack_version != "26.2.0-alpha.197" || migration.target?.pack_version != "26.2.0-alpha.198" @@ -4530,10 +4530,10 @@ 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.220" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.220.mrpack" - || prism.versionId != "26.2.0-alpha.220" - || !packwiz.contains('version = "26.2.0-alpha.220"') + || release.pack_version != "26.2.0-alpha.221" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.221.mrpack" + || prism.versionId != "26.2.0-alpha.221" + || !packwiz.contains('version = "26.2.0-alpha.221"') || !packwizIndex.contains('file = "mods/itsalive-0.0.0-alpha.36.jar"')) { throw new GradleException("The alpha.198 fermentation barrel release contract is incomplete") } @@ -4561,7 +4561,7 @@ 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.220" + if (rootProject.pack_version != "26.2.0-alpha.221" || rootProject.itsalive_version != "0.0.0-alpha.36" || rootProject.sanctuary_version != "0.0.0-alpha.122" || migration.source?.pack_version != "26.2.0-alpha.198" @@ -4575,10 +4575,10 @@ 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 != 22 - || release.pack_version != "26.2.0-alpha.220" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.220.mrpack" - || prism.versionId != "26.2.0-alpha.220" - || !packwiz.contains('version = "26.2.0-alpha.220"') + || release.pack_version != "26.2.0-alpha.221" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.221.mrpack" + || prism.versionId != "26.2.0-alpha.221" + || !packwiz.contains('version = "26.2.0-alpha.221"') || !packwizIndex.contains('file = "mods/itsalive-0.0.0-alpha.36.jar"') || !packwizIndex.contains('file = "mods/sanctuary-0.0.0-alpha.122.jar"')) { throw new GradleException("The alpha.199 quest-request contract release is incomplete") @@ -4616,8 +4616,8 @@ 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.220" - || rootProject.ambiance_version != "0.0.0-alpha.21" + if (rootProject.pack_version != "26.2.0-alpha.221" + || rootProject.ambiance_version != "0.0.0-alpha.22" || rootProject.ouch_version != "0.0.0-alpha.10" || migration.source?.pack_version != "26.2.0-alpha.199" || migration.source?.modules != [ambiance: "0.0.0-alpha.11", ouch: "0.0.0-alpha.8"] @@ -4650,11 +4650,11 @@ tasks.register("verifyWeatherTntAmbianceRelease") { || !weatherTnt.contains("AmbianceDailyWeather.CLEAR") || !weatherTnt.contains("CLEAR_WEATHER_TICKS = 864_000") || weatherTnt.contains("setWeatherParameters") - || release.pack_version != "26.2.0-alpha.220" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.220.mrpack" - || prism.versionId != "26.2.0-alpha.220" - || !packwiz.contains('version = "26.2.0-alpha.220"') - || !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.21.jar"') + || release.pack_version != "26.2.0-alpha.221" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.221.mrpack" + || prism.versionId != "26.2.0-alpha.221" + || !packwiz.contains('version = "26.2.0-alpha.221"') + || !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.22.jar"') || !packwizIndex.contains('file = "mods/ouch-0.0.0-alpha.10.jar"')) { throw new GradleException("The alpha.200 Weather TNT and Ambiance release is incomplete") } @@ -4682,7 +4682,7 @@ 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.220" + if (rootProject.pack_version != "26.2.0-alpha.221" || rootProject.sanctuary_version != "0.0.0-alpha.122" || migration.source?.pack_version != "26.2.0-alpha.200" || migration.source?.modules?.sanctuary != "0.0.0-alpha.115" @@ -4697,10 +4697,10 @@ tasks.register("verifyQuestRequestEscrowRelease") { || migration.compatibility?.sanctuary_target_network_protocol != 21 || sanctuaryManifest.custom?.sanctuary26?.data_version != 11 || sanctuaryManifest.custom?.sanctuary26?.network_protocol != 22 - || release.pack_version != "26.2.0-alpha.220" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.220.mrpack" - || prism.versionId != "26.2.0-alpha.220" - || !packwiz.contains('version = "26.2.0-alpha.220"') + || release.pack_version != "26.2.0-alpha.221" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.221.mrpack" + || prism.versionId != "26.2.0-alpha.221" + || !packwiz.contains('version = "26.2.0-alpha.221"') || !packwizIndex.contains('file = "mods/sanctuary-0.0.0-alpha.122.jar"')) { throw new GradleException("The alpha.201 quest-request escrow release is incomplete") } @@ -4736,7 +4736,7 @@ 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.220" + if (rootProject.pack_version != "26.2.0-alpha.221" || rootProject.anotherworld_version != "0.0.0-alpha.55" || rootProject.itsalive_version != "0.0.0-alpha.36" || rootProject.iliketomoveit_version != "0.0.0-alpha.16" @@ -4776,10 +4776,10 @@ tasks.register("verifyWaystoneShopCulinaryAlpha202Release") { || moveItManifest.custom?.sanctuary26?.network_protocol != 5 || sanctuaryManifest.custom?.sanctuary26?.data_version != 11 || sanctuaryManifest.custom?.sanctuary26?.network_protocol != 22 - || release.pack_version != "26.2.0-alpha.220" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.220.mrpack" - || prism.versionId != "26.2.0-alpha.220" - || !packwiz.contains('version = "26.2.0-alpha.220"') + || release.pack_version != "26.2.0-alpha.221" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.221.mrpack" + || prism.versionId != "26.2.0-alpha.221" + || !packwiz.contains('version = "26.2.0-alpha.221"') || !packwizIndex.contains('file = "mods/anotherworld-0.0.0-alpha.55.jar"') || !packwizIndex.contains('file = "mods/itsalive-0.0.0-alpha.36.jar"') || !packwizIndex.contains('file = "mods/iliketomoveit-0.0.0-alpha.16.jar"') @@ -4896,7 +4896,7 @@ 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.220" + if (rootProject.pack_version != "26.2.0-alpha.221" || rootProject.anotherworld_version != "0.0.0-alpha.55" || rootProject.sanctuary_version != "0.0.0-alpha.122" || migration.schema_version != 1 @@ -5088,7 +5088,7 @@ tasks.register("verifySafeVaultInterfaceAlpha203Release") { 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.193.jar" } - if (rootProject.pack_version != "26.2.0-alpha.220" + if (rootProject.pack_version != "26.2.0-alpha.221" || 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"] @@ -5106,9 +5106,9 @@ 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.220.mrpack" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.221.mrpack" || prism.versionId != rootProject.pack_version - || !packwiz.contains('version = "26.2.0-alpha.220"') + || !packwiz.contains('version = "26.2.0-alpha.221"') || !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 @@ -5134,7 +5134,7 @@ tasks.register("verifySafeVaultFixAlpha204Release") { 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.193.jar" } - if (rootProject.pack_version != "26.2.0-alpha.220" + if (rootProject.pack_version != "26.2.0-alpha.221" || 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"] @@ -5160,9 +5160,9 @@ 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.220.mrpack" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.221.mrpack" || prism.versionId != rootProject.pack_version - || !packwiz.contains('version = "26.2.0-alpha.220"') + || !packwiz.contains('version = "26.2.0-alpha.221"') || !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 @@ -5188,7 +5188,7 @@ tasks.register("verifySafeVaultCubeAlpha205Release") { 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.193.jar" } - if (rootProject.pack_version != "26.2.0-alpha.220" + if (rootProject.pack_version != "26.2.0-alpha.221" || 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"] @@ -5217,9 +5217,9 @@ 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.220.mrpack" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.221.mrpack" || prism.versionId != rootProject.pack_version - || !packwiz.contains('version = "26.2.0-alpha.220"') + || !packwiz.contains('version = "26.2.0-alpha.221"') || !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 @@ -5246,7 +5246,7 @@ tasks.register("verifySafeVaultCtmAlpha206Release") { 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.193.jar" } - if (rootProject.pack_version != "26.2.0-alpha.220" + if (rootProject.pack_version != "26.2.0-alpha.221" || 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"] @@ -5269,9 +5269,9 @@ 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.220.mrpack" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.221.mrpack" || prism.versionId != rootProject.pack_version - || !packwiz.contains('version = "26.2.0-alpha.220"') + || !packwiz.contains('version = "26.2.0-alpha.221"') || !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 @@ -5298,7 +5298,7 @@ tasks.register("verifySafeVaultUnlimitedAlpha207Release") { 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.193.jar" } - if (rootProject.pack_version != "26.2.0-alpha.220" + if (rootProject.pack_version != "26.2.0-alpha.221" || 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"] @@ -5328,9 +5328,9 @@ 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.220.mrpack" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.221.mrpack" || prism.versionId != rootProject.pack_version - || !packwiz.contains('version = "26.2.0-alpha.220"') + || !packwiz.contains('version = "26.2.0-alpha.221"') || !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 @@ -5386,9 +5386,9 @@ 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.220" + if (rootProject.pack_version != "26.2.0-alpha.221" || rootProject.itsalive_version != "0.0.0-alpha.36" - || rootProject.ambiance_version != "0.0.0-alpha.21" + || rootProject.ambiance_version != "0.0.0-alpha.22" || migration.issue != 35 || migration.source?.fabric_id != "canaplia" || migration.source?.version != "2.0.0" @@ -5638,8 +5638,8 @@ 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.220" - || rootProject.ambiance_version != "0.0.0-alpha.21" + if (rootProject.pack_version != "26.2.0-alpha.221" + || rootProject.ambiance_version != "0.0.0-alpha.22" || rootProject.itsalive_version != "0.0.0-alpha.36" || rootProject.onlyfun_version != "0.0.0-alpha.25" || migration.source?.pack_version != "26.2.0-alpha.207" @@ -5686,10 +5686,10 @@ 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.220.mrpack" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.221.mrpack" || prism.versionId != rootProject.pack_version - || !packwiz.contains('version = "26.2.0-alpha.220"') - || !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.21.jar"') + || !packwiz.contains('version = "26.2.0-alpha.221"') + || !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.22.jar"') || !packwizIndex.contains('file = "mods/itsalive-0.0.0-alpha.36.jar"') || !packwizIndex.contains('file = "mods/onlyfun-0.0.0-alpha.25.jar"') || packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.12.jar"') @@ -5739,7 +5739,7 @@ tasks.register("verifyAlpha210Release") { iliketomoveit: "0.0.0-alpha.15", itsalive: "0.0.0-alpha.35"] def currentModules = [ - ambiance: "0.0.0-alpha.21", + ambiance: "0.0.0-alpha.22", sanctuary: "0.0.0-alpha.122", onlyfun: "0.0.0-alpha.25", ouch: "0.0.0-alpha.10", @@ -5756,7 +5756,7 @@ tasks.register("verifyAlpha210Release") { 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.220" + if (rootProject.pack_version != "26.2.0-alpha.221" || rootProject.sanctuary_version != "0.0.0-alpha.122" || rootProject.onlyfun_version != "0.0.0-alpha.25" || rootProject.iliketomoveit_version != currentModules.iliketomoveit @@ -5802,10 +5802,10 @@ tasks.register("verifyAlpha210Release") { || 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.220" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.220.mrpack" - || prism.versionId != "26.2.0-alpha.220" - || !packwiz.contains('version = "26.2.0-alpha.220"') + || release.pack_version != "26.2.0-alpha.221" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.221.mrpack" + || prism.versionId != "26.2.0-alpha.221" + || !packwiz.contains('version = "26.2.0-alpha.221"') || requiredJars.any { !packwizIndex.contains(it) } || obsoleteJars.any { packwizIndex.contains(it) } || jeiFiles.size() != 1 @@ -5854,7 +5854,7 @@ tasks.register("verifyAlpha211Release") { def currentModules = expectedTarget + [ sanctuary: "0.0.0-alpha.122", onlyfun: "0.0.0-alpha.25", - ambiance: "0.0.0-alpha.21", + ambiance: "0.0.0-alpha.22", iliketomoveit: "0.0.0-alpha.16"] def workspaceModules = currentModules def expectedDataVersions = [ambiance: 2, itsalive: 3, onlyfun: 2, ouch: 1, sanctuary: 11] @@ -5881,7 +5881,7 @@ tasks.register("verifyAlpha211Release") { 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.220" + if (rootProject.pack_version != "26.2.0-alpha.221" || workspaceModules.any { id, version -> rootProject.property("${id}_version") != version } || migration.source?.pack_version != "26.2.0-alpha.210" || migration.source?.modules != expectedSource @@ -5909,9 +5909,9 @@ tasks.register("verifyAlpha211Release") { || migration.distribution?.prism_modrinth_index_updated != true || migration.distribution?.shared_client_server_mrpack != true || release.pack_version != rootProject.pack_version - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.220.mrpack" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.221.mrpack" || prism.versionId != rootProject.pack_version - || !packwiz.contains('version = "26.2.0-alpha.220"') + || !packwiz.contains('version = "26.2.0-alpha.221"') || requiredJars.any { !packwizIndex.contains(it) } || obsoleteJars.any { packwizIndex.contains(it) } || prism.files?.size() != 5 @@ -5919,7 +5919,7 @@ tasks.register("verifyAlpha211Release") { || jeiFiles[0].hashes?.sha1 != "494f9dc787d6c9cd9d32793da2784ab16834faf3" || jeiFiles[0].hashes?.sha512 != "0869f4d5840a732a04bedc7684b40140f087f3d759066c206d9d1ec710007f7c9585e4f5ebb04f10e56bef1cf2eddc6978bb2b2c93541cff5fcf7e1609859468" || !changelog.contains("## `26.2.0-alpha.211`") - || !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.220`**")) { + || !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.221`**")) { throw new GradleException("The alpha.211 Abjection and gameplay-polish release is incomplete") } } @@ -5953,7 +5953,7 @@ tasks.register("verifyAlpha212Release") { 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.220" + if (rootProject.pack_version != "26.2.0-alpha.221" || rootProject.sanctuary_version != "0.0.0-alpha.122" || migration.source?.pack_version != "26.2.0-alpha.211" || migration.source?.modules != [sanctuary: "0.0.0-alpha.119"] @@ -5975,16 +5975,16 @@ tasks.register("verifyAlpha212Release") { || manifest.custom?.sanctuary26?.data_version != 11 || manifest.custom?.sanctuary26?.network_protocol != 22 || !minecraftMixin.contains('method = "pickBlockOrEntity"') - || release.pack_version != "26.2.0-alpha.220" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.220.mrpack" - || prism.versionId != "26.2.0-alpha.220" + || release.pack_version != "26.2.0-alpha.221" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.221.mrpack" + || prism.versionId != "26.2.0-alpha.221" || prism.files?.size() != 5 || jeiFiles.size() != 1 - || !packwiz.contains('version = "26.2.0-alpha.220"') + || !packwiz.contains('version = "26.2.0-alpha.221"') || !packwizIndex.contains('file = "mods/sanctuary-0.0.0-alpha.122.jar"') || packwizIndex.contains('file = "mods/sanctuary-0.0.0-alpha.119.jar"') || !changelog.contains("## `26.2.0-alpha.212`") - || !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.220`**")) { + || !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.221`**")) { throw new GradleException("The alpha.212 Black Market startup-fix release is incomplete") } } @@ -6018,8 +6018,8 @@ tasks.register("verifyAlpha213Release") { 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.220" - || rootProject.ambiance_version != "0.0.0-alpha.21" + if (rootProject.pack_version != "26.2.0-alpha.221" + || rootProject.ambiance_version != "0.0.0-alpha.22" || migration.source?.pack_version != "26.2.0-alpha.212" || migration.source?.modules != [ambiance: "0.0.0-alpha.15"] || migration.target?.pack_version != "26.2.0-alpha.213" @@ -6042,16 +6042,16 @@ tasks.register("verifyAlpha213Release") { || manifest.custom?.sanctuary26?.network_protocol != 6 || !levelEventMixin.contains('@Mixin(LevelEventHandler.class)') || !levelEventMixin.contains('@Inject(method = "levelEvent"') - || release.pack_version != "26.2.0-alpha.220" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.220.mrpack" - || prism.versionId != "26.2.0-alpha.220" + || release.pack_version != "26.2.0-alpha.221" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.221.mrpack" + || prism.versionId != "26.2.0-alpha.221" || prism.files?.size() != 5 || jeiFiles.size() != 1 - || !packwiz.contains('version = "26.2.0-alpha.220"') - || !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.21.jar"') + || !packwiz.contains('version = "26.2.0-alpha.221"') + || !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.22.jar"') || packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.15.jar"') || !changelog.contains("## `26.2.0-alpha.213`") - || !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.220`**")) { + || !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.221`**")) { throw new GradleException("The alpha.213 Ambiance startup-fix release is incomplete") } } @@ -6086,8 +6086,8 @@ tasks.register("verifyAlpha214Release") { "ambiance/src/main/java/fr/koka99cab/sanctuary26/ambiance/client/audio/WhiteDiscAudioPlayer.java").text def urlSmoke = file( "ambiance/src/test/java/fr/koka99cab/sanctuary26/ambiance/white_disc/WhiteDiscUrlSmoke.java").text - if (rootProject.pack_version != "26.2.0-alpha.220" - || rootProject.ambiance_version != "0.0.0-alpha.21" + if (rootProject.pack_version != "26.2.0-alpha.221" + || rootProject.ambiance_version != "0.0.0-alpha.22" || migration.source?.pack_version != "26.2.0-alpha.213" || migration.source?.modules != [ambiance: "0.0.0-alpha.16"] || migration.target?.pack_version != "26.2.0-alpha.214" @@ -6115,16 +6115,16 @@ tasks.register("verifyAlpha214Release") { || !audioPlayer.contains('message.ambiance.white_disc.loading') || !audioPlayer.contains('message.ambiance.white_disc.failed') || !urlSmoke.contains("https://youtu.be/Ue5ZBe-GzSM?si=78LSbtBQzUYzhA2Y") - || release.pack_version != "26.2.0-alpha.220" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.220.mrpack" - || prism.versionId != "26.2.0-alpha.220" + || release.pack_version != "26.2.0-alpha.221" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.221.mrpack" + || prism.versionId != "26.2.0-alpha.221" || prism.files?.size() != 5 - || !packwiz.contains('version = "26.2.0-alpha.220"') - || !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.21.jar"') + || !packwiz.contains('version = "26.2.0-alpha.221"') + || !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.22.jar"') || packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.16.jar"') || !changelog.contains("## `26.2.0-alpha.214`") || changelog.contains("## Modifications non distribuées") - || !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.220`**")) { + || !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.221`**")) { throw new GradleException("The alpha.214 white-disc solo synchronization release is incomplete") } } @@ -6165,8 +6165,8 @@ tasks.register("verifyAlpha215Release") { "ambiance/src/main/java/fr/koka99cab/sanctuary26/ambiance/client/audio/LavaplayerAudioStream.java").text def playbackSmoke = file( "ambiance/src/test/java/fr/koka99cab/sanctuary26/ambiance/client/audio/WhiteDiscPlaybackSmoke.java").text - if (rootProject.pack_version != "26.2.0-alpha.220" - || rootProject.ambiance_version != "0.0.0-alpha.21" + if (rootProject.pack_version != "26.2.0-alpha.221" + || rootProject.ambiance_version != "0.0.0-alpha.22" || migration.source?.pack_version != "26.2.0-alpha.214" || migration.source?.modules != [ambiance: "0.0.0-alpha.17"] || migration.target?.pack_version != "26.2.0-alpha.215" @@ -6205,16 +6205,16 @@ tasks.register("verifyAlpha215Release") { || !playbackSmoke.contains("https://www.youtube.com/watch?v=Ue5ZBe-GzSM") || !playbackSmoke.contains("stream.paddedSilenceBytes() != 0L") || !playbackSmoke.contains("stream.decodedTimelineMillis() != 4_000L") - || release.pack_version != "26.2.0-alpha.220" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.220.mrpack" - || prism.versionId != "26.2.0-alpha.220" + || release.pack_version != "26.2.0-alpha.221" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.221.mrpack" + || prism.versionId != "26.2.0-alpha.221" || prism.files?.size() != 5 - || !packwiz.contains('version = "26.2.0-alpha.220"') - || !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.21.jar"') + || !packwiz.contains('version = "26.2.0-alpha.221"') + || !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.22.jar"') || packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.17.jar"') || !changelog.contains("## `26.2.0-alpha.215`") || changelog.contains("## Modifications non distribuées") - || !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.220`**")) { + || !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.221`**")) { throw new GradleException("The alpha.215 resilient white-disc playback release is incomplete") } } @@ -6259,8 +6259,8 @@ tasks.register("verifyAlpha216Release") { "ambiance/src/test/java/fr/koka99cab/sanctuary26/ambiance/client/audio/LavaplayerAudioStreamSmoke.java").text def playbackSmoke = file( "ambiance/src/test/java/fr/koka99cab/sanctuary26/ambiance/client/audio/WhiteDiscPlaybackSmoke.java").text - if (rootProject.pack_version != "26.2.0-alpha.220" - || rootProject.ambiance_version != "0.0.0-alpha.21" + if (rootProject.pack_version != "26.2.0-alpha.221" + || rootProject.ambiance_version != "0.0.0-alpha.22" || migration.source?.pack_version != "26.2.0-alpha.215" || migration.source?.modules != [ambiance: "0.0.0-alpha.18"] || migration.target?.pack_version != "26.2.0-alpha.216" @@ -6290,27 +6290,29 @@ tasks.register("verifyAlpha216Release") { || manifest.custom?.sanctuary26?.data_version != 2 || manifest.custom?.sanctuary26?.network_protocol != 6 || !ambianceBuild.contains('tasks.register("whiteDiscStreamSmoke"') - || !audioPlayer.contains("PLAYBACK_PITCH = 4.0F / 3.0F") + || !audioPlayer.contains("PLAYBACK_PITCH = 1.0F") || !audioStream.contains("SAMPLE_RATE = 48_000") || !audioStream.contains("INITIAL_FRAME_WAIT_MILLIS = 2_000L") || !audioStream.contains("CONTINUATION_FRAME_WAIT_MILLIS = 250L") || !audioStream.contains("player.provide(waitMillis, TimeUnit.MILLISECONDS)") || !audioStream.contains("new AudioFormat(SAMPLE_RATE, 16, 1, true, false)") + || !audioStream.contains("SOURCE_CHANNELS = 2") + || !audioStream.contains("downmixStereoFrame(frame.getData())") || !streamSmoke.contains("FRAMES_PER_SECOND") || !streamSmoke.contains("PCM frames were not read with bounded waits") || !playbackSmoke.contains("stream.paddedSilenceBytes() != 0L") || !playbackSmoke.contains("stream.decodedTimelineMillis() != 4_000L") || !playbackSmoke.contains("LavaplayerAudioStream.SAMPLE_RATE * 2 * 4") - || release.pack_version != "26.2.0-alpha.220" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.220.mrpack" - || prism.versionId != "26.2.0-alpha.220" + || release.pack_version != "26.2.0-alpha.221" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.221.mrpack" + || prism.versionId != "26.2.0-alpha.221" || prism.files?.size() != 5 - || !packwiz.contains('version = "26.2.0-alpha.220"') - || !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.21.jar"') + || !packwiz.contains('version = "26.2.0-alpha.221"') + || !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.22.jar"') || packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.18.jar"') || !changelog.contains("## `26.2.0-alpha.216`") || changelog.contains("## Modifications non distribuées") - || !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.220`**")) { + || !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.221`**")) { throw new GradleException("The alpha.216 white-disc audio-quality release is incomplete") } } @@ -6345,8 +6347,8 @@ tasks.register("verifyAlpha217Release") { "ambiance/src/main/java/fr/koka99cab/sanctuary26/ambiance/client/audio/WhiteDiscAudioPlayer.java").text def streamSmoke = file( "ambiance/src/test/java/fr/koka99cab/sanctuary26/ambiance/client/audio/LavaplayerAudioStreamSmoke.java").text - if (rootProject.pack_version != "26.2.0-alpha.220" - || rootProject.ambiance_version != "0.0.0-alpha.21" + if (rootProject.pack_version != "26.2.0-alpha.221" + || rootProject.ambiance_version != "0.0.0-alpha.22" || migration.source?.pack_version != "26.2.0-alpha.216" || migration.source?.modules != [ambiance: "0.0.0-alpha.19"] || migration.target?.pack_version != "26.2.0-alpha.217" @@ -6373,19 +6375,19 @@ tasks.register("verifyAlpha217Release") { || migration.distribution?.shared_client_server_mrpack != true || manifest.custom?.sanctuary26?.data_version != 2 || manifest.custom?.sanctuary26?.network_protocol != 6 - || !audioPlayer.contains("PLAYBACK_PITCH = 4.0F / 3.0F") + || !audioPlayer.contains("PLAYBACK_PITCH = 1.0F") || audioPlayer.count("channel.setPitch(PLAYBACK_PITCH)") != 2 - || !streamSmoke.contains("WhiteDiscAudioPlayer.PLAYBACK_PITCH - 4.0F / 3.0F") - || release.pack_version != "26.2.0-alpha.220" - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.220.mrpack" - || prism.versionId != "26.2.0-alpha.220" + || !streamSmoke.contains("WhiteDiscAudioPlayer.PLAYBACK_PITCH - 1.0F") + || release.pack_version != "26.2.0-alpha.221" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.221.mrpack" + || prism.versionId != "26.2.0-alpha.221" || prism.files?.size() != 5 - || !packwiz.contains('version = "26.2.0-alpha.220"') - || !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.21.jar"') + || !packwiz.contains('version = "26.2.0-alpha.221"') + || !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.22.jar"') || packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.19.jar"') || !changelog.contains("## `26.2.0-alpha.217`") || changelog.contains("## Modifications non distribuées") - || !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.220`**")) { + || !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.221`**")) { throw new GradleException("The alpha.217 white-disc pitch release is incomplete") } } @@ -6433,14 +6435,14 @@ tasks.register("verifyAlpha218Release") { def targetModules = [ redstoner: "0.0.0-alpha.11", onlyfun: "0.0.0-alpha.25", sanctuary: "0.0.0-alpha.121"] def currentModules = targetModules + [redstoner: "0.0.0-alpha.12", - sanctuary: "0.0.0-alpha.122", iliketomoveit: "0.0.0-alpha.16", ambiance: "0.0.0-alpha.21"] + sanctuary: "0.0.0-alpha.122", iliketomoveit: "0.0.0-alpha.16", ambiance: "0.0.0-alpha.22"] def requiredJars = currentModules.collect { id, version -> "file = \"mods/${id}-${version}.jar\"" } def obsoleteJars = sourceModules.collect { id, version -> "file = \"mods/${id}-${version}.jar\"" } - if (rootProject.pack_version != "26.2.0-alpha.220" + if (rootProject.pack_version != "26.2.0-alpha.221" || currentModules.any { id, version -> rootProject.property("${id}_version") != version } || migration.source?.pack_version != "26.2.0-alpha.217" || migration.source?.modules != sourceModules @@ -6473,13 +6475,13 @@ tasks.register("verifyAlpha218Release") { || !onlyFunPolicy.contains('namespace.equals("redstoner") && path.equals("storage_terminal")') || !blackMarketPolicy.contains('namespace.equals("redstoner") && path.equals("storage_terminal")') || release.pack_version != rootProject.pack_version - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.220.mrpack" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.221.mrpack" || prism.versionId != rootProject.pack_version - || !packwiz.contains('version = "26.2.0-alpha.220"') + || !packwiz.contains('version = "26.2.0-alpha.221"') || requiredJars.any { !packwizIndex.contains(it) } || obsoleteJars.any { packwizIndex.contains(it) } || !changelog.contains("## `26.2.0-alpha.218`") - || !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.220`**")) { + || !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.221`**")) { throw new GradleException("The alpha.218 Storage Terminal release is incomplete") } } @@ -6523,18 +6525,23 @@ tasks.register("verifyAlpha219Release") { sanctuary: "0.0.0-alpha.121", iliketomoveit: "0.0.0-alpha.15", ambiance: "0.0.0-alpha.20"] def targetModules = [ sanctuary: "0.0.0-alpha.122", iliketomoveit: "0.0.0-alpha.16", ambiance: "0.0.0-alpha.21"] - def requiredJars = targetModules.collect { id, version -> + def currentModules = targetModules + [ambiance: "0.0.0-alpha.22"] + def requiredJars = currentModules.collect { id, version -> "file = \"mods/${id}-${version}.jar\"" } def obsoleteJars = sourceModules.collect { id, version -> "file = \"mods/${id}-${version}.jar\"" + } + targetModules.findAll { id, version -> + currentModules[id] != version + }.collect { id, version -> + "file = \"mods/${id}-${version}.jar\"" } def forbiddenGoldenArchives = fileTree(projectDir) { include "**/*golden*days*.zip", "**/*golden*days*.jar" exclude "**/build/**", "**/.gradle/**", "**/.git/**" }.files - if (rootProject.pack_version != "26.2.0-alpha.220" - || targetModules.any { id, version -> rootProject.property("${id}_version") != version } + if (rootProject.pack_version != "26.2.0-alpha.221" + || currentModules.any { id, version -> rootProject.property("${id}_version") != version } || migration.source?.pack_version != "26.2.0-alpha.218" || migration.source?.modules != sourceModules || migration.target?.pack_version != "26.2.0-alpha.219" @@ -6565,15 +6572,15 @@ tasks.register("verifyAlpha219Release") { || manifests.ambiance.custom?.sanctuary26?.data_version != 2 || manifests.ambiance.custom?.sanctuary26?.network_protocol != 6 || release.pack_version != rootProject.pack_version - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.220.mrpack" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.221.mrpack" || prism.versionId != rootProject.pack_version || prism.files.any { it.path.toLowerCase().contains("golden-days") } - || !packwiz.contains('version = "26.2.0-alpha.220"') + || !packwiz.contains('version = "26.2.0-alpha.221"') || requiredJars.any { !packwizIndex.contains(it) } || obsoleteJars.any { packwizIndex.contains(it) } || !forbiddenGoldenArchives.isEmpty() || !changelog.contains("## `26.2.0-alpha.219`") - || !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.220`**")) { + || !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.221`**")) { throw new GradleException("The alpha.219 finite Alpha/Indev release is incomplete") } } @@ -6612,7 +6619,7 @@ tasks.register("verifyAlpha220Release") { "redstoner/src/main/java/fr/koka99cab/sanctuary26/redstoner/client/gui/StorageTerminalScreen.java").text def networking = file( "redstoner/src/main/java/fr/koka99cab/sanctuary26/redstoner/network/RedStonerNetworking.java").text - if (rootProject.pack_version != "26.2.0-alpha.220" + if (rootProject.pack_version != "26.2.0-alpha.221" || rootProject.redstoner_version != "0.0.0-alpha.12" || migration.source?.pack_version != "26.2.0-alpha.219" || migration.source?.modules != [redstoner: "0.0.0-alpha.11"] @@ -6653,18 +6660,121 @@ tasks.register("verifyAlpha220Release") { || networking.contains("storage_terminal_snapshot") || networking.contains("storage_terminal_action") || release.pack_version != rootProject.pack_version - || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.220.mrpack" + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.221.mrpack" || prism.versionId != rootProject.pack_version - || !packwiz.contains('version = "26.2.0-alpha.220"') + || !packwiz.contains('version = "26.2.0-alpha.221"') || !packwizIndex.contains('file = "mods/redstoner-0.0.0-alpha.12.jar"') || packwizIndex.contains('file = "mods/redstoner-0.0.0-alpha.11.jar"') || !changelog.contains("## `26.2.0-alpha.220`") - || !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.220`**")) { + || !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.221`**")) { throw new GradleException("The alpha.220 Storage Terminal menu release is incomplete") } } } +tasks.register("verifyAlpha221Release") { + group = "verification" + description = "Checks the Sanctuary 26.2.0-alpha.221 native-rate white-disc release." + inputs.file(file("pack/migrations/26.2.0-alpha.220-white-disc-native-rate-to-alpha.221.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.file(file("README.md")) + inputs.file(file("ambiance/WHITE_DISC.md")) + inputs.file(file("ambiance/build.gradle")) + inputs.file(file("ambiance/src/main/resources/fabric.mod.json")) + inputs.file(file( + "ambiance/src/main/java/fr/koka99cab/sanctuary26/ambiance/client/audio/WhiteDiscAudioPlayer.java")) + inputs.file(file( + "ambiance/src/main/java/fr/koka99cab/sanctuary26/ambiance/client/audio/LavaplayerAudioStream.java")) + inputs.file(file( + "ambiance/src/test/java/fr/koka99cab/sanctuary26/ambiance/client/audio/LavaplayerAudioStreamSmoke.java")) + inputs.file(file( + "ambiance/src/test/java/fr/koka99cab/sanctuary26/ambiance/client/audio/WhiteDiscPlaybackSmoke.java")) + doLast { + def migration = new JsonSlurper().parse(file( + "pack/migrations/26.2.0-alpha.220-white-disc-native-rate-to-alpha.221.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 readme = file("README.md").text + def whiteDiscDocumentation = file("ambiance/WHITE_DISC.md").text + def ambianceBuild = file("ambiance/build.gradle").text + def manifest = new JsonSlurper().parse(file("ambiance/src/main/resources/fabric.mod.json")) + def audioPlayer = file( + "ambiance/src/main/java/fr/koka99cab/sanctuary26/ambiance/client/audio/WhiteDiscAudioPlayer.java").text + def audioStream = file( + "ambiance/src/main/java/fr/koka99cab/sanctuary26/ambiance/client/audio/LavaplayerAudioStream.java").text + def streamSmoke = file( + "ambiance/src/test/java/fr/koka99cab/sanctuary26/ambiance/client/audio/LavaplayerAudioStreamSmoke.java").text + def playbackSmoke = file( + "ambiance/src/test/java/fr/koka99cab/sanctuary26/ambiance/client/audio/WhiteDiscPlaybackSmoke.java").text + def contract = migration.white_disc_native_rate + if (rootProject.pack_version != "26.2.0-alpha.221" + || rootProject.ambiance_version != "0.0.0-alpha.22" + || migration.source?.pack_version != "26.2.0-alpha.220" + || migration.source?.modules != [ambiance: "0.0.0-alpha.21"] + || migration.target?.pack_version != "26.2.0-alpha.221" + || migration.target?.modules != [ambiance: "0.0.0-alpha.22"] + || contract?.owner != "ambiance" + || contract?.reference_video_id != "Ue5ZBe-GzSM" + || contract?.source_format != "MP4_AAC_LC" + || contract?.decoded_sample_rate_hz != 48_000 + || contract?.decoded_source_channels != 2 + || contract?.openal_output_channels != 1 + || contract?.sample_size_bits != 16 + || contract?.byte_order != "little_endian" + || contract?.stereo_to_mono != "average_left_right_per_sample" + || contract?.openal_pitch != 1.0 + || contract?.decoded_timeline_millis != 4_000 + || contract?.openal_timeline_millis != 4_000 + || contract?.padded_silence_bytes != 0 + || contract?.positional_audio_preserved != true + || contract?.previous_pitch_compensation_removed != true + || migration.compatibility?.new_world_required != false + || migration.compatibility?.save_reset_required != false + || migration.compatibility?.existing_saves_supported != true + || migration.compatibility?.registry_ids_changed != false + || migration.compatibility?.ambiance_data_version != 2 + || migration.compatibility?.ambiance_network_protocol != 6 + || 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 + || manifest.custom?.sanctuary26?.data_version != 2 + || manifest.custom?.sanctuary26?.network_protocol != 6 + || !ambianceBuild.contains('tasks.register("whiteDiscStreamSmoke"') + || !ambianceBuild.contains('tasks.register("whiteDiscPlaybackSmoke"') + || !audioPlayer.contains("PLAYBACK_PITCH = 1.0F") + || audioPlayer.count("channel.setPitch(PLAYBACK_PITCH)") != 2 + || !audioPlayer.contains("new Pcm16AudioDataFormat(LavaplayerAudioStream.SOURCE_CHANNELS,") + || !audioStream.contains("SOURCE_CHANNELS = 2") + || !audioStream.contains("FRAME_SAMPLES = 960") + || !audioStream.contains("new AudioFormat(SAMPLE_RATE, 16, 1, true, false)") + || !audioStream.contains("downmixStereoFrame(frame.getData())") + || !audioStream.contains("short mixed = (short) (((int) left + right) / SOURCE_CHANNELS)") + || !streamSmoke.contains("WhiteDiscAudioPlayer.PLAYBACK_PITCH - 1.0F") + || !streamSmoke.contains("Stereo PCM was not downmixed in sample order") + || !playbackSmoke.contains("stream.decodedTimelineMillis() != 4_000L") + || !playbackSmoke.contains("PCM cadence: 100%% speed") + || !whiteDiscDocumentation.contains("48 000 Hz") + || release.pack_version != rootProject.pack_version + || release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.221.mrpack" + || prism.versionId != rootProject.pack_version + || !packwiz.contains('version = "26.2.0-alpha.221"') + || !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.22.jar"') + || packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.21.jar"') + || !changelog.contains("## `26.2.0-alpha.221`") + || !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.221`**")) { + throw new GradleException("The alpha.221 native-rate white-disc release is incomplete") + } + } +} + tasks.named("verifyWorkspace") { dependsOn tasks.named("verifyAlpha213Release") dependsOn tasks.named("verifyAlpha214Release") @@ -6674,6 +6784,7 @@ tasks.named("verifyWorkspace") { dependsOn tasks.named("verifyAlpha218Release") dependsOn tasks.named("verifyAlpha219Release") dependsOn tasks.named("verifyAlpha220Release") + dependsOn tasks.named("verifyAlpha221Release") } tasks.named("check") { diff --git a/gradle.properties b/gradle.properties index c6a2dc1..4347b3c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -30,5 +30,5 @@ onlyfun_version=0.0.0-alpha.25 onlyfun_lifecycle=active sanctuary_version=0.0.0-alpha.122 sanctuary_lifecycle=active -pack_version=26.2.0-alpha.220 +pack_version=26.2.0-alpha.221 maven_group=fr.koka99cab.sanctuary26 diff --git a/pack/migrations/26.2.0-alpha.220-white-disc-native-rate-to-alpha.221.json b/pack/migrations/26.2.0-alpha.220-white-disc-native-rate-to-alpha.221.json new file mode 100644 index 0000000..1ceb633 --- /dev/null +++ b/pack/migrations/26.2.0-alpha.220-white-disc-native-rate-to-alpha.221.json @@ -0,0 +1,46 @@ +{ + "schema_version": 1, + "source": { + "pack_version": "26.2.0-alpha.220", + "modules": { + "ambiance": "0.0.0-alpha.21" + } + }, + "target": { + "pack_version": "26.2.0-alpha.221", + "modules": { + "ambiance": "0.0.0-alpha.22" + } + }, + "white_disc_native_rate": { + "owner": "ambiance", + "reference_video_id": "Ue5ZBe-GzSM", + "source_format": "MP4_AAC_LC", + "decoded_sample_rate_hz": 48000, + "decoded_source_channels": 2, + "openal_output_channels": 1, + "sample_size_bits": 16, + "byte_order": "little_endian", + "stereo_to_mono": "average_left_right_per_sample", + "openal_pitch": 1.0, + "decoded_timeline_millis": 4000, + "openal_timeline_millis": 4000, + "padded_silence_bytes": 0, + "positional_audio_preserved": true, + "previous_pitch_compensation_removed": true + }, + "compatibility": { + "new_world_required": false, + "save_reset_required": false, + "existing_saves_supported": true, + "registry_ids_changed": false, + "ambiance_data_version": 2, + "ambiance_network_protocol": 6 + }, + "distribution": { + "pack_release_updated": true, + "packwiz_index_refreshed": true, + "prism_modrinth_index_updated": true, + "shared_client_server_mrpack": true + } +} diff --git a/pack/packwiz/index.toml b/pack/packwiz/index.toml index 8f7175e..4ffb219 100644 --- a/pack/packwiz/index.toml +++ b/pack/packwiz/index.toml @@ -13,16 +13,16 @@ file = "instance-icon.png" hash = "41f4f4c88c71d0a23446d5014f7407d55ad477441847099cad24492b032335a0" [[files]] -file = "mods/ambiance-0.0.0-alpha.21.jar" -hash = "c9dfd6ed13d1fdd2277e62d9bd2faa18c008d621bbcf8ef605736eefc3378663" +file = "mods/ambiance-0.0.0-alpha.22.jar" +hash = "4d5c31315c436c716a48e7d563fd179be2f39951c24bf4641f83a05a24323a3e" [[files]] file = "mods/anotherworld-0.0.0-alpha.55.jar" -hash = "0137f9a8109438c659c7a126ecde2e28982e063ee95f1991603a9ea81bbe7501" +hash = "7fbe2ac0d2ece62285aa8277ff92284760f2ccfd6d08159015661978bd0cde9a" [[files]] file = "mods/events-0.0.0-alpha.0.jar" -hash = "3a666f7b7bdb9cbf7181eff3e49455768ac76905a482577990fdc1eb018e78d7" +hash = "cbf8d47fb82ca06c438b75fd72f805acc9813dffc6168d6786d54644ef8bb387" [[files]] file = "mods/fabric-api.pw.toml" @@ -31,7 +31,7 @@ metafile = true [[files]] file = "mods/iliketomoveit-0.0.0-alpha.16.jar" -hash = "f42ed4fe37cbf3422e3b2493db562e82da3f2ba04568cea6ae304862e64e54df" +hash = "26156014813bfa4384194ac0f20395b6df590a5bc29cd91a32114ced988bbaf3" [[files]] file = "mods/iris.pw.toml" @@ -40,7 +40,7 @@ metafile = true [[files]] file = "mods/itsalive-0.0.0-alpha.36.jar" -hash = "71c9d893fd0862610f203b854d1af19e0e6e4b2bc9e06f6da38d057e23a54ebd" +hash = "5673ab7d605f2f1d18d807f0939f90ecedc13c892d03991fd60f7d02d74f9404" [[files]] file = "mods/jei.pw.toml" @@ -49,23 +49,23 @@ metafile = true [[files]] file = "mods/masterkey-0.0.0-alpha.8.jar" -hash = "75ae764c2b86d2f4479f576d9a1cd8272c1979d754069277052ef11064fabbda" +hash = "202b159fd04b7447cda7fa9f7360693106927904819e834956ab46f6e07f658e" [[files]] file = "mods/onlyfun-0.0.0-alpha.25.jar" -hash = "69cca044dd3cd3fbbd6d9d45706a502ec17689c040521524eac3aa20ab93bf5f" +hash = "6551d75cb3cb7be220b2aa6033d4eb533fa28a39ee88d66bbb0c40244c08c259" [[files]] file = "mods/ouch-0.0.0-alpha.10.jar" -hash = "c414a5b308796a797c6dce9b0337edfd06c536a18d1c746307f58e99e3a6be2c" +hash = "0c2e0e2ef7f6c944d0b6d5609c42431a0a31f1d92087c3b5c28b67f76795d8cf" [[files]] file = "mods/redstoner-0.0.0-alpha.12.jar" -hash = "2535d57df6bfdac3444204ee57a351f6f5174d5f2a6067d3bb3a5f096ecae52b" +hash = "fee65e8d865f918ec8174b7a808762658ed91b566af590d99a3448f9d237175a" [[files]] file = "mods/sanctuary-0.0.0-alpha.122.jar" -hash = "b4ab04b167c50d412af791ccadf838ebcb0443303e05864c9940e02ec3cc0d40" +hash = "9183652d13fd3c15663ca645f96f2a70026cb4d3a82f62e92fc3c72aea72d589" [[files]] file = "mods/simple-voice-chat.pw.toml" diff --git a/pack/packwiz/pack.toml b/pack/packwiz/pack.toml index 40d9d73..f03f11d 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.220" +version = "26.2.0-alpha.221" pack-format = "packwiz:1.1.0" [index] file = "index.toml" hash-format = "sha256" -hash = "52cb256574fb9e4df7cd05d8029feff7bb737e35253e85c3048a8d50997f3f62" +hash = "60e8342eef216dd225488fe4225a28c9b9940858642cbfc8025541affd150ab0" [versions] fabric = "0.19.3" diff --git a/pack/prism/modrinth.index.json b/pack/prism/modrinth.index.json index 1d0d8c0..59f830d 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.220", + "versionId": "26.2.0-alpha.221", "files": [ { "path": "mods/fabric-api-0.158.0+26.2.jar", diff --git a/pack/release.json b/pack/release.json index 66eb07a..c848346 100644 --- a/pack/release.json +++ b/pack/release.json @@ -1,6 +1,6 @@ { "schema_version": 1, - "pack_version": "26.2.0-alpha.220", + "pack_version": "26.2.0-alpha.221", "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.220.mrpack", + "primary_file": "sanctuary-26.2.0-alpha.221.mrpack", "shared_client_server_pack": true, "update_owner": "packwiz-installer", "check_on_launch": true,