release: alpha.217 audio et alpha.218 terminal de stockage #94

Merged
koka merged 2 commits from release/26.2.0-alpha.218 into main 2026-08-30 02:08:32 +00:00
15 changed files with 362 additions and 179 deletions
+12 -2
View File
@@ -6,9 +6,9 @@ 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.217`
## `26.2.0-alpha.218`
Modules modifiés : **Red-Stoner `0.0.0-alpha.11`**, **Only Fun `0.0.0-alpha.25`** et **Sanctuary `0.0.0-alpha.121`**. Les sept autres modules conservent leur version issue de l'alpha.216.
Modules modifiés : **Red-Stoner `0.0.0-alpha.11`**, **Only Fun `0.0.0-alpha.25`** et **Sanctuary `0.0.0-alpha.121`**. Les sept autres modules conservent leur version issue de l'alpha.217.
- ajoute `redstoner:storage_terminal`, une demi-dalle verticale de huit pixels qui se pose uniquement sur la face horizontale dun coffre, coffre piégé ou baril ;
- découvre sans charger de chunk les conteneurs adjacents par face, verticalement compris, et refuse clairement tout réseau qui dépasse 128 blocs physiques ;
@@ -18,6 +18,16 @@ Modules modifiés : **Red-Stoner `0.0.0-alpha.11`**, **Only Fun `0.0.0-alpha.25`
- ajoute les traductions FR/EN/RU, les ressources bloc/item/loot/recette et des tests déterministes de topologie, pagination, agrégation et transferts ;
- conserve les données Red-Stoner v3, Only Fun v2 et Sanctuary v11 ; seul le protocole réseau Red-Stoner passe de 5 à 6, sans nouveau monde ni réinitialisation des sauvegardes.
## `26.2.0-alpha.217`
Module modifié : **Ambiance `0.0.0-alpha.20`**. Les neuf autres modules conservent leur version issue de l'alpha.216.
- corrige la hauteur trop grave et la vitesse trop lente du disque blanc en compensant la cadence du flux AAC YouTube par un facteur OpenAL exact de `4/3` ;
- réapplique cette hauteur pendant toute la lecture afin quaucune mise à jour du canal audio ne la ramène à la valeur ralentie ;
- valide la correction sur le lien signalé en comparant vingt secondes décodées par Lavaplayer au flux AAC direct, puis conserve les tests PCM 48 kHz et de niveau sonore ;
- conserve les données Ambiance v2, le protocole réseau 6, les IDs et les sauvegardes existantes ;
- distribue Ambiance `0.0.0-alpha.20` dans Packwiz et le `.mrpack` partagé client/serveur, sans exiger de nouveau monde ni réinitialiser les sauvegardes.
## `26.2.0-alpha.216`
Module modifié : **Ambiance `0.0.0-alpha.19`**. Les neuf autres modules conservent leur version issue de l'alpha.215.
+4 -2
View File
@@ -22,11 +22,13 @@ 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.217`**. Cette release distribue Red-Stoner **`0.0.0-alpha.11`**, Only Fun **`0.0.0-alpha.25`** et Sanctuary **`0.0.0-alpha.121`** ; les sept autres modules conservent leur version issue de l'alpha.216.
Version courante du pack distribué : **`26.2.0-alpha.218`**. Cette release distribue Red-Stoner **`0.0.0-alpha.11`**, Only Fun **`0.0.0-alpha.25`** et Sanctuary **`0.0.0-alpha.121`** ; les sept autres modules conservent leur version issue de l'alpha.217.
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.
Lalpha.217 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 ditems restent strictement séparés et le terminal endgame est exclu du Shop, du Black Market et des récompenses Only Fun.
Lalpha.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 ditems restent strictement séparés et le terminal endgame est exclu du Shop, du Black Market et des récompenses Only Fun.
Lalpha.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.
Lalpha.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.
+7 -4
View File
@@ -88,7 +88,7 @@ tasks.named("test") {
tasks.register("verifyAmbiance") {
group = "verification"
description = "Checks Ambiance alpha.19, including continuous white-disc PCM playback."
description = "Checks Ambiance alpha.20, including corrected white-disc pitch."
inputs.files(fileTree("src/main/java"))
inputs.files(fileTree("src/main/resources"))
inputs.file(file("src/test/java/fr/koka99cab/sanctuary26/ambiance/client/audio/WhiteDiscPlaybackSmoke.java"))
@@ -147,7 +147,7 @@ tasks.register("verifyAmbiance") {
def whiteDiscPlaybackSmoke = file(
"src/test/java/fr/koka99cab/sanctuary26/ambiance/client/audio/WhiteDiscPlaybackSmoke.java").text
if (project.version.toString() != "0.0.0-alpha.19"
if (project.version.toString() != "0.0.0-alpha.20"
|| migration.source?.pack_version != "26.2.0-alpha.125"
|| migration.target?.pack_version != "26.2.0-alpha.126"
|| migration.target?.modules?.ambiance != "0.0.0-alpha.1"
@@ -357,11 +357,14 @@ tasks.register("verifyAmbiance") {
|| !javaText.contains('initialWaitAttempted')
|| !javaText.contains('CONTINUATION_FRAME_WAIT_MILLIS = 250L')
|| !javaText.contains('player.provide(waitMillis, TimeUnit.MILLISECONDS)')
|| !whiteDiscAudioPlayer.contains('channel.setPitch(1.0F)')
|| !whiteDiscAudioPlayer.contains('PLAYBACK_PITCH = 4.0F / 3.0F')
|| whiteDiscAudioPlayer.count('channel.setPitch(PLAYBACK_PITCH)') != 2
|| !whiteDiscAudioPlayer.contains('handle.execute(channel -> channel.stop())')
|| whiteDiscAudioPlayer.contains('.release()')
|| !whiteDiscPlaybackSmoke.contains('https://www.youtube.com/watch?v=Ue5ZBe-GzSM')
|| !whiteDiscPlaybackSmoke.contains('Decoded audible PCM data')
|| !whiteDiscPlaybackSmoke.contains('PCM cadence: 100%% speed')
|| !whiteDiscPlaybackSmoke.contains('stream.decodedTimelineMillis() != 4_000L')
|| !whiteDiscPlaybackSmoke.contains('stream.paddedSilenceBytes() != 0L')
|| !javaText.contains('SoundSource.RECORDS')
|| !javaText.contains('channel.linearAttenuation(ATTENUATION_DISTANCE)')
|| !javaText.contains('LONG_HOSTS = Set.of(')
@@ -19,6 +19,11 @@ final class LavaplayerAudioStream implements AudioStream {
private final AudioPlayer player;
private byte[] pending = new byte[0];
private int pendingOffset;
private long decodedBytes;
private long paddedSilenceBytes;
private long firstFrameTimecode = -1L;
private long lastFrameTimecode = -1L;
private int decodedFrames;
private boolean initialWaitAttempted;
private volatile boolean closed;
private volatile boolean ended;
@@ -41,18 +46,25 @@ final class LavaplayerAudioStream implements AudioStream {
int length = Math.min(output.remaining(), pending.length - pendingOffset);
output.put(pending, pendingOffset, length);
pendingOffset += length;
decodedBytes += length;
continue;
}
AudioFrame frame = nextFrame();
if (frame == null) {
if (ended) break;
while (output.hasRemaining()) output.put((byte) 0);
while (output.hasRemaining()) {
output.put((byte) 0);
paddedSilenceBytes++;
}
break;
}
if (frame.isTerminator()) {
ended = true;
break;
}
if (firstFrameTimecode < 0L) firstFrameTimecode = frame.getTimecode();
lastFrameTimecode = frame.getTimecode();
decodedFrames++;
pending = frame.getData();
pendingOffset = 0;
}
@@ -86,6 +98,19 @@ final class LavaplayerAudioStream implements AudioStream {
return player == expectedPlayer;
}
long decodedBytes() {
return decodedBytes;
}
long paddedSilenceBytes() {
return paddedSilenceBytes;
}
long decodedTimelineMillis() {
if (decodedFrames == 0) return 0L;
return lastFrameTimecode - firstFrameTimecode + 20L;
}
@Override
public void close() {
if (closed) return;
@@ -36,6 +36,8 @@ public final class WhiteDiscAudioPlayer {
private static final long MAXIMUM_TRACK_MILLIS = 30L * 60L * 1_000L;
private static final long FINISHED_GRACE_NANOS = 5_000_000_000L;
private static final float ATTENUATION_DISTANCE = 64.0F;
/** Compensates Lavaplayer's low AAC cadence before PCM reaches OpenAL. */
static final float PLAYBACK_PITCH = 4.0F / 3.0F;
private static final DefaultAudioPlayerManager MANAGER = createManager();
private static final Map<Long, PendingStart> PENDING_STARTS = new HashMap<>();
private static final Map<Long, Long> REQUESTS = new HashMap<>();
@@ -150,7 +152,7 @@ public final class WhiteDiscAudioPlayer {
try {
channel.setSelfPosition(Vec3.atCenterOf(pos));
channel.setRelative(false);
channel.setPitch(1.0F);
channel.setPitch(PLAYBACK_PITCH);
channel.linearAttenuation(ATTENUATION_DISTANCE);
channel.setVolume(volume);
channel.attachBufferStream(stream);
@@ -212,7 +214,10 @@ public final class WhiteDiscAudioPlayer {
continue;
}
float volume = client.options.getFinalSoundSourceVolume(SoundSource.RECORDS);
playback.handle().execute(channel -> channel.setVolume(volume));
playback.handle().execute(channel -> {
channel.setPitch(PLAYBACK_PITCH);
channel.setVolume(volume);
});
}
}
@@ -22,6 +22,9 @@ public final class LavaplayerAudioStreamSmoke {
}
public static void main(String[] args) throws Exception {
if (Math.abs(WhiteDiscAudioPlayer.PLAYBACK_PITCH - 4.0F / 3.0F) > 0.0001F) {
throw new IllegalStateException("The white-disc AAC pitch compensation changed");
}
Queue<AudioFrame> frames = new ArrayDeque<>();
Pcm16AudioDataFormat format = new Pcm16AudioDataFormat(
1, LavaplayerAudioStream.SAMPLE_RATE, FRAME_SAMPLES, false);
@@ -30,29 +30,45 @@ public final class WhiteDiscPlaybackSmoke {
AudioPlayer player = manager.createPlayer();
player.playTrack(track);
LavaplayerAudioStream stream = new LavaplayerAudioStream(player);
int decodedBytes = 0;
int totalBytes = 0;
long squaredSampleSum = 0L;
int sampleCount = 0;
int peakSample = 0;
for (int index = 0; index < 4; index++) {
ByteBuffer pcm = stream.read(LavaplayerAudioStream.SAMPLE_RATE * 2);
if (pcm == null) break;
while (pcm.hasRemaining()) {
totalBytes++;
if (pcm.get() != 0) decodedBytes++;
totalBytes += pcm.remaining();
while (pcm.remaining() >= 2) {
int low = Byte.toUnsignedInt(pcm.get());
int high = pcm.get();
short sample = (short) ((high << 8) | low);
int magnitude = Math.abs((int) sample);
peakSample = Math.max(peakSample, magnitude);
squaredSampleSum += (long) sample * sample;
sampleCount++;
}
}
if (decodedBytes == 0) {
throw new IllegalStateException("YouTube playback produced no audible PCM data");
}
double audibleRatio = (double) decodedBytes / totalBytes;
if (totalBytes != LavaplayerAudioStream.SAMPLE_RATE * 2 * 4) {
int expectedBytes = LavaplayerAudioStream.SAMPLE_RATE * 2 * 4;
if (totalBytes != expectedBytes) {
throw new IllegalStateException("YouTube playback did not fill four PCM seconds");
}
if (audibleRatio < 0.75) {
throw new IllegalStateException("YouTube PCM stream was mostly silence: "
+ Math.round(audibleRatio * 100.0) + "% audible bytes");
if (stream.decodedBytes() != expectedBytes || stream.paddedSilenceBytes() != 0L) {
throw new IllegalStateException("YouTube playback was not 100% decoded PCM: "
+ stream.decodedBytes() + " decoded bytes and "
+ stream.paddedSilenceBytes() + " padded bytes");
}
System.out.printf("Decoded audible PCM data: %.1f%% at %.0f Hz from %s%n",
audibleRatio * 100.0, stream.getFormat().getSampleRate(), track.getInfo().title);
if (stream.decodedTimelineMillis() != 4_000L) {
throw new IllegalStateException("PCM cadence mismatch: four seconds of samples cover "
+ stream.decodedTimelineMillis() + " ms of the YouTube timeline");
}
double rmsSample = Math.sqrt((double) squaredSampleSum / sampleCount);
if (rmsSample < 256.0 || peakSample < 2_048) {
throw new IllegalStateException("YouTube PCM signal is too quiet: RMS "
+ Math.round(rmsSample) + ", peak " + peakSample);
}
System.out.printf(
"PCM cadence: 100%% speed, 4000 ms decoded into 4000 ms at %.0f Hz; RMS %.0f, peak %d from %s%n",
stream.getFormat().getSampleRate(), rmsSample, peakSample, track.getInfo().title);
stream.close();
} finally {
manager.shutdown();
+212 -134
View File
@@ -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.217"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| rootProject.sanctuary_version != "0.0.0-alpha.121"
|| 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.217"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| rootProject.anotherworld_version != "0.0.0-alpha.55"
|| rootProject.redstoner_version != "0.0.0-alpha.11"
|| release.pack_version != rootProject.pack_version || index.versionId != rootProject.pack_version
@@ -3993,7 +3993,7 @@ project(":redstoner") {
inputs.file(rootProject.file("pack/migrations/26.2.0-alpha.167-cobble-dungeon-ownership-to-alpha.168.json"))
inputs.file(rootProject.file("pack/migrations/26.2.0-alpha.185-computer-recipes-to-alpha.186.json"))
inputs.file(rootProject.file("pack/migrations/26.2.0-alpha.191-mirror-lavender-drawer-to-alpha.192.json"))
inputs.file(rootProject.file("pack/migrations/26.2.0-alpha.216-storage-terminal-to-alpha.217.json"))
inputs.file(rootProject.file("pack/migrations/26.2.0-alpha.217-storage-terminal-to-alpha.218.json"))
doLast {
def registry = file("src/main/java/fr/koka99cab/sanctuary26/redstoner/registry/RedStonerRegistries.java").text
def javaText = fileTree("src/main/java").matching { include "**/*.java" }.files*.text.join("\n")
@@ -4013,7 +4013,7 @@ project(":redstoner") {
def drawerMigration = new JsonSlurper().parse(rootProject.file(
"pack/migrations/26.2.0-alpha.191-mirror-lavender-drawer-to-alpha.192.json"))
def terminalMigration = new JsonSlurper().parse(rootProject.file(
"pack/migrations/26.2.0-alpha.216-storage-terminal-to-alpha.217.json"))
"pack/migrations/26.2.0-alpha.217-storage-terminal-to-alpha.218.json"))
def requiredIds = [
"eight_bit_computer", "controller", "personal_computer", "drawer", "particuleur", "storage_terminal"]
def missingIds = requiredIds.findAll { !registry.contains("id(\"${it}\")") }
@@ -4101,10 +4101,10 @@ project(":redstoner") {
if (project.version.toString() != "0.0.0-alpha.11"
|| manifest.custom?.sanctuary26?.data_version != 3
|| manifest.custom?.sanctuary26?.network_protocol != 6
|| terminalMigration.source?.pack_version != "26.2.0-alpha.216"
|| terminalMigration.source?.pack_version != "26.2.0-alpha.217"
|| terminalMigration.source?.modules != [
redstoner: "0.0.0-alpha.10", onlyfun: "0.0.0-alpha.24", sanctuary: "0.0.0-alpha.120"]
|| terminalMigration.target?.pack_version != "26.2.0-alpha.217"
|| terminalMigration.target?.pack_version != "26.2.0-alpha.218"
|| terminalMigration.target?.modules != [
redstoner: "0.0.0-alpha.11", onlyfun: "0.0.0-alpha.25", sanctuary: "0.0.0-alpha.121"]
|| terminalMigration.storage_terminal?.owner != "redstoner"
@@ -4259,7 +4259,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.217"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| rootProject.onlyfun_version != "0.0.0-alpha.25"
|| rootProject.sanctuary_version != "0.0.0-alpha.121"
|| release.pack_version != rootProject.pack_version || index.versionId != rootProject.pack_version
@@ -4304,7 +4304,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.217"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| 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"
@@ -4353,7 +4353,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.217"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| rootProject.onlyfun_version != "0.0.0-alpha.25"
|| rootProject.sanctuary_version != "0.0.0-alpha.121"
|| release.pack_version != rootProject.pack_version || index.versionId != rootProject.pack_version
@@ -4399,7 +4399,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.217"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| migration.source?.pack_version != "26.2.0-alpha.195"
|| migration.target?.pack_version != "26.2.0-alpha.196"
|| migration.target?.modules != [
@@ -4417,10 +4417,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.217"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.217.mrpack"
|| prism.versionId != "26.2.0-alpha.217"
|| !packwiz.contains('version = "26.2.0-alpha.217"')) {
|| release.pack_version != "26.2.0-alpha.218"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.218.mrpack"
|| prism.versionId != "26.2.0-alpha.218"
|| !packwiz.contains('version = "26.2.0-alpha.218"')) {
throw new GradleException("The alpha.196 culinary, mailbox and grapple release contract is incomplete")
}
}
@@ -4445,7 +4445,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.217"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| rootProject.itsalive_version != "0.0.0-alpha.36"
|| rootProject.sanctuary_version != "0.0.0-alpha.121"
|| migration.source?.pack_version != "26.2.0-alpha.196"
@@ -4465,10 +4465,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.217"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.217.mrpack"
|| prism.versionId != "26.2.0-alpha.217"
|| !packwiz.contains('version = "26.2.0-alpha.217"')) {
|| release.pack_version != "26.2.0-alpha.218"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.218.mrpack"
|| prism.versionId != "26.2.0-alpha.218"
|| !packwiz.contains('version = "26.2.0-alpha.218"')) {
throw new GradleException("The alpha.197 quest-request and cauldron-batch release contract is incomplete")
}
}
@@ -4495,7 +4495,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.217"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| 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"
@@ -4514,10 +4514,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.217"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.217.mrpack"
|| prism.versionId != "26.2.0-alpha.217"
|| !packwiz.contains('version = "26.2.0-alpha.217"')
|| release.pack_version != "26.2.0-alpha.218"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.218.mrpack"
|| prism.versionId != "26.2.0-alpha.218"
|| !packwiz.contains('version = "26.2.0-alpha.218"')
|| !packwizIndex.contains('file = "mods/itsalive-0.0.0-alpha.36.jar"')) {
throw new GradleException("The alpha.198 fermentation barrel release contract is incomplete")
}
@@ -4545,7 +4545,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.217"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| rootProject.itsalive_version != "0.0.0-alpha.36"
|| rootProject.sanctuary_version != "0.0.0-alpha.121"
|| migration.source?.pack_version != "26.2.0-alpha.198"
@@ -4559,10 +4559,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.217"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.217.mrpack"
|| prism.versionId != "26.2.0-alpha.217"
|| !packwiz.contains('version = "26.2.0-alpha.217"')
|| release.pack_version != "26.2.0-alpha.218"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.218.mrpack"
|| prism.versionId != "26.2.0-alpha.218"
|| !packwiz.contains('version = "26.2.0-alpha.218"')
|| !packwizIndex.contains('file = "mods/itsalive-0.0.0-alpha.36.jar"')
|| !packwizIndex.contains('file = "mods/sanctuary-0.0.0-alpha.121.jar"')) {
throw new GradleException("The alpha.199 quest-request contract release is incomplete")
@@ -4600,8 +4600,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.217"
|| rootProject.ambiance_version != "0.0.0-alpha.19"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| rootProject.ambiance_version != "0.0.0-alpha.20"
|| 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"]
@@ -4634,11 +4634,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.217"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.217.mrpack"
|| prism.versionId != "26.2.0-alpha.217"
|| !packwiz.contains('version = "26.2.0-alpha.217"')
|| !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.19.jar"')
|| release.pack_version != "26.2.0-alpha.218"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.218.mrpack"
|| prism.versionId != "26.2.0-alpha.218"
|| !packwiz.contains('version = "26.2.0-alpha.218"')
|| !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.20.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")
}
@@ -4666,7 +4666,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.217"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| rootProject.sanctuary_version != "0.0.0-alpha.121"
|| migration.source?.pack_version != "26.2.0-alpha.200"
|| migration.source?.modules?.sanctuary != "0.0.0-alpha.115"
@@ -4681,10 +4681,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.217"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.217.mrpack"
|| prism.versionId != "26.2.0-alpha.217"
|| !packwiz.contains('version = "26.2.0-alpha.217"')
|| release.pack_version != "26.2.0-alpha.218"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.218.mrpack"
|| prism.versionId != "26.2.0-alpha.218"
|| !packwiz.contains('version = "26.2.0-alpha.218"')
|| !packwizIndex.contains('file = "mods/sanctuary-0.0.0-alpha.121.jar"')) {
throw new GradleException("The alpha.201 quest-request escrow release is incomplete")
}
@@ -4720,7 +4720,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.217"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| rootProject.anotherworld_version != "0.0.0-alpha.55"
|| rootProject.itsalive_version != "0.0.0-alpha.36"
|| rootProject.iliketomoveit_version != "0.0.0-alpha.15"
@@ -4760,10 +4760,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.217"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.217.mrpack"
|| prism.versionId != "26.2.0-alpha.217"
|| !packwiz.contains('version = "26.2.0-alpha.217"')
|| release.pack_version != "26.2.0-alpha.218"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.218.mrpack"
|| prism.versionId != "26.2.0-alpha.218"
|| !packwiz.contains('version = "26.2.0-alpha.218"')
|| !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.15.jar"')
@@ -4880,7 +4880,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.217"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| rootProject.anotherworld_version != "0.0.0-alpha.55"
|| rootProject.sanctuary_version != "0.0.0-alpha.121"
|| migration.schema_version != 1
@@ -5072,7 +5072,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.217"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| 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"]
@@ -5090,9 +5090,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.217.mrpack"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.218.mrpack"
|| prism.versionId != rootProject.pack_version
|| !packwiz.contains('version = "26.2.0-alpha.217"')
|| !packwiz.contains('version = "26.2.0-alpha.218"')
|| !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
@@ -5118,7 +5118,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.217"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| 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"]
@@ -5144,9 +5144,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.217.mrpack"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.218.mrpack"
|| prism.versionId != rootProject.pack_version
|| !packwiz.contains('version = "26.2.0-alpha.217"')
|| !packwiz.contains('version = "26.2.0-alpha.218"')
|| !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
@@ -5172,7 +5172,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.217"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| 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"]
@@ -5201,9 +5201,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.217.mrpack"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.218.mrpack"
|| prism.versionId != rootProject.pack_version
|| !packwiz.contains('version = "26.2.0-alpha.217"')
|| !packwiz.contains('version = "26.2.0-alpha.218"')
|| !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
@@ -5230,7 +5230,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.217"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| 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"]
@@ -5253,9 +5253,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.217.mrpack"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.218.mrpack"
|| prism.versionId != rootProject.pack_version
|| !packwiz.contains('version = "26.2.0-alpha.217"')
|| !packwiz.contains('version = "26.2.0-alpha.218"')
|| !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
@@ -5282,7 +5282,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.217"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| 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"]
@@ -5312,9 +5312,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.217.mrpack"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.218.mrpack"
|| prism.versionId != rootProject.pack_version
|| !packwiz.contains('version = "26.2.0-alpha.217"')
|| !packwiz.contains('version = "26.2.0-alpha.218"')
|| !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
@@ -5370,9 +5370,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.217"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| rootProject.itsalive_version != "0.0.0-alpha.36"
|| rootProject.ambiance_version != "0.0.0-alpha.19"
|| rootProject.ambiance_version != "0.0.0-alpha.20"
|| migration.issue != 35
|| migration.source?.fabric_id != "canaplia"
|| migration.source?.version != "2.0.0"
@@ -5622,8 +5622,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.217"
|| rootProject.ambiance_version != "0.0.0-alpha.19"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| rootProject.ambiance_version != "0.0.0-alpha.20"
|| 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"
@@ -5670,10 +5670,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.217.mrpack"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.218.mrpack"
|| prism.versionId != rootProject.pack_version
|| !packwiz.contains('version = "26.2.0-alpha.217"')
|| !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.19.jar"')
|| !packwiz.contains('version = "26.2.0-alpha.218"')
|| !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.20.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"')
@@ -5723,7 +5723,7 @@ tasks.register("verifyAlpha210Release") {
iliketomoveit: "0.0.0-alpha.15",
itsalive: "0.0.0-alpha.35"]
def currentModules = [
ambiance: "0.0.0-alpha.19",
ambiance: "0.0.0-alpha.20",
sanctuary: "0.0.0-alpha.121",
onlyfun: "0.0.0-alpha.25",
ouch: "0.0.0-alpha.10",
@@ -5740,7 +5740,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.217"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| rootProject.sanctuary_version != "0.0.0-alpha.121"
|| rootProject.onlyfun_version != "0.0.0-alpha.25"
|| rootProject.iliketomoveit_version != expectedTarget.iliketomoveit
@@ -5786,10 +5786,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.217"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.217.mrpack"
|| prism.versionId != "26.2.0-alpha.217"
|| !packwiz.contains('version = "26.2.0-alpha.217"')
|| release.pack_version != "26.2.0-alpha.218"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.218.mrpack"
|| prism.versionId != "26.2.0-alpha.218"
|| !packwiz.contains('version = "26.2.0-alpha.218"')
|| requiredJars.any { !packwizIndex.contains(it) }
|| obsoleteJars.any { packwizIndex.contains(it) }
|| jeiFiles.size() != 1
@@ -5838,8 +5838,8 @@ tasks.register("verifyAlpha211Release") {
def currentModules = expectedTarget + [
sanctuary: "0.0.0-alpha.121",
onlyfun: "0.0.0-alpha.25",
ambiance: "0.0.0-alpha.19"]
def workspaceModules = currentModules + [ambiance: "0.0.0-alpha.19"]
ambiance: "0.0.0-alpha.20"]
def workspaceModules = currentModules + [ambiance: "0.0.0-alpha.20"]
def expectedDataVersions = [ambiance: 2, itsalive: 3, onlyfun: 2, ouch: 1, sanctuary: 11]
def expectedProtocols = [ambiance: 6, itsalive: 4, onlyfun: 3, ouch: 1, sanctuary: 22]
def manifests = expectedTarget.collectEntries { id, version ->
@@ -5864,7 +5864,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.217"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| workspaceModules.any { id, version -> rootProject.property("${id}_version") != version }
|| migration.source?.pack_version != "26.2.0-alpha.210"
|| migration.source?.modules != expectedSource
@@ -5892,9 +5892,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.217.mrpack"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.218.mrpack"
|| prism.versionId != rootProject.pack_version
|| !packwiz.contains('version = "26.2.0-alpha.217"')
|| !packwiz.contains('version = "26.2.0-alpha.218"')
|| requiredJars.any { !packwizIndex.contains(it) }
|| obsoleteJars.any { packwizIndex.contains(it) }
|| prism.files?.size() != 5
@@ -5902,7 +5902,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.217`**")) {
|| !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.218`**")) {
throw new GradleException("The alpha.211 Abjection and gameplay-polish release is incomplete")
}
}
@@ -5936,7 +5936,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.217"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| rootProject.sanctuary_version != "0.0.0-alpha.121"
|| migration.source?.pack_version != "26.2.0-alpha.211"
|| migration.source?.modules != [sanctuary: "0.0.0-alpha.119"]
@@ -5958,16 +5958,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.217"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.217.mrpack"
|| prism.versionId != "26.2.0-alpha.217"
|| release.pack_version != "26.2.0-alpha.218"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.218.mrpack"
|| prism.versionId != "26.2.0-alpha.218"
|| prism.files?.size() != 5
|| jeiFiles.size() != 1
|| !packwiz.contains('version = "26.2.0-alpha.217"')
|| !packwiz.contains('version = "26.2.0-alpha.218"')
|| !packwizIndex.contains('file = "mods/sanctuary-0.0.0-alpha.121.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.217`**")) {
|| !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.218`**")) {
throw new GradleException("The alpha.212 Black Market startup-fix release is incomplete")
}
}
@@ -6001,8 +6001,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.217"
|| rootProject.ambiance_version != "0.0.0-alpha.19"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| rootProject.ambiance_version != "0.0.0-alpha.20"
|| 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"
@@ -6025,16 +6025,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.217"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.217.mrpack"
|| prism.versionId != "26.2.0-alpha.217"
|| release.pack_version != "26.2.0-alpha.218"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.218.mrpack"
|| prism.versionId != "26.2.0-alpha.218"
|| prism.files?.size() != 5
|| jeiFiles.size() != 1
|| !packwiz.contains('version = "26.2.0-alpha.217"')
|| !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.19.jar"')
|| !packwiz.contains('version = "26.2.0-alpha.218"')
|| !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.20.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.217`**")) {
|| !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.218`**")) {
throw new GradleException("The alpha.213 Ambiance startup-fix release is incomplete")
}
}
@@ -6069,8 +6069,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.217"
|| rootProject.ambiance_version != "0.0.0-alpha.19"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| rootProject.ambiance_version != "0.0.0-alpha.20"
|| 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"
@@ -6098,16 +6098,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.217"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.217.mrpack"
|| prism.versionId != "26.2.0-alpha.217"
|| release.pack_version != "26.2.0-alpha.218"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.218.mrpack"
|| prism.versionId != "26.2.0-alpha.218"
|| prism.files?.size() != 5
|| !packwiz.contains('version = "26.2.0-alpha.217"')
|| !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.19.jar"')
|| !packwiz.contains('version = "26.2.0-alpha.218"')
|| !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.20.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.217`**")) {
|| !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.218`**")) {
throw new GradleException("The alpha.214 white-disc solo synchronization release is incomplete")
}
}
@@ -6148,8 +6148,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.217"
|| rootProject.ambiance_version != "0.0.0-alpha.19"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| rootProject.ambiance_version != "0.0.0-alpha.20"
|| 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"
@@ -6184,19 +6184,20 @@ tasks.register("verifyAlpha215Release") {
|| !audioStream.contains("INITIAL_FRAME_WAIT_MILLIS = 2_000L")
|| !audioStream.contains("CONTINUATION_FRAME_WAIT_MILLIS = 250L")
|| !audioStream.contains("player.provide(waitMillis, TimeUnit.MILLISECONDS)")
|| !audioStream.contains("while (output.hasRemaining()) output.put((byte) 0)")
|| !audioStream.contains("paddedSilenceBytes++")
|| !playbackSmoke.contains("https://www.youtube.com/watch?v=Ue5ZBe-GzSM")
|| !playbackSmoke.contains("Decoded audible PCM data")
|| release.pack_version != "26.2.0-alpha.217"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.217.mrpack"
|| prism.versionId != "26.2.0-alpha.217"
|| !playbackSmoke.contains("stream.paddedSilenceBytes() != 0L")
|| !playbackSmoke.contains("stream.decodedTimelineMillis() != 4_000L")
|| release.pack_version != "26.2.0-alpha.218"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.218.mrpack"
|| prism.versionId != "26.2.0-alpha.218"
|| prism.files?.size() != 5
|| !packwiz.contains('version = "26.2.0-alpha.217"')
|| !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.19.jar"')
|| !packwiz.contains('version = "26.2.0-alpha.218"')
|| !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.20.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.217`**")) {
|| !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.218`**")) {
throw new GradleException("The alpha.215 resilient white-disc playback release is incomplete")
}
}
@@ -6241,8 +6242,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.217"
|| rootProject.ambiance_version != "0.0.0-alpha.19"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| rootProject.ambiance_version != "0.0.0-alpha.20"
|| 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"
@@ -6272,7 +6273,7 @@ tasks.register("verifyAlpha216Release") {
|| manifest.custom?.sanctuary26?.data_version != 2
|| manifest.custom?.sanctuary26?.network_protocol != 6
|| !ambianceBuild.contains('tasks.register("whiteDiscStreamSmoke"')
|| !audioPlayer.contains("channel.setPitch(1.0F)")
|| !audioPlayer.contains("PLAYBACK_PITCH = 4.0F / 3.0F")
|| !audioStream.contains("SAMPLE_RATE = 48_000")
|| !audioStream.contains("INITIAL_FRAME_WAIT_MILLIS = 2_000L")
|| !audioStream.contains("CONTINUATION_FRAME_WAIT_MILLIS = 250L")
@@ -6280,18 +6281,19 @@ tasks.register("verifyAlpha216Release") {
|| !audioStream.contains("new AudioFormat(SAMPLE_RATE, 16, 1, true, false)")
|| !streamSmoke.contains("FRAMES_PER_SECOND")
|| !streamSmoke.contains("PCM frames were not read with bounded waits")
|| !playbackSmoke.contains("audibleRatio < 0.75")
|| !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.217"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.217.mrpack"
|| prism.versionId != "26.2.0-alpha.217"
|| release.pack_version != "26.2.0-alpha.218"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.218.mrpack"
|| prism.versionId != "26.2.0-alpha.218"
|| prism.files?.size() != 5
|| !packwiz.contains('version = "26.2.0-alpha.217"')
|| !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.19.jar"')
|| !packwiz.contains('version = "26.2.0-alpha.218"')
|| !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.20.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.217`**")) {
|| !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.218`**")) {
throw new GradleException("The alpha.216 white-disc audio-quality release is incomplete")
}
}
@@ -6299,8 +6301,83 @@ tasks.register("verifyAlpha216Release") {
tasks.register("verifyAlpha217Release") {
group = "verification"
description = "Checks the Sanctuary 26.2.0-alpha.217 Storage Terminal release."
inputs.file(file("pack/migrations/26.2.0-alpha.216-storage-terminal-to-alpha.217.json"))
description = "Checks the Sanctuary 26.2.0-alpha.217 white-disc pitch release."
inputs.file(file("pack/migrations/26.2.0-alpha.216-white-disc-pitch-to-alpha.217.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/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/test/java/fr/koka99cab/sanctuary26/ambiance/client/audio/LavaplayerAudioStreamSmoke.java"))
doLast {
def migration = new JsonSlurper().parse(file(
"pack/migrations/26.2.0-alpha.216-white-disc-pitch-to-alpha.217.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 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 streamSmoke = file(
"ambiance/src/test/java/fr/koka99cab/sanctuary26/ambiance/client/audio/LavaplayerAudioStreamSmoke.java").text
if (rootProject.pack_version != "26.2.0-alpha.218"
|| rootProject.ambiance_version != "0.0.0-alpha.20"
|| 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"
|| migration.target?.modules != [ambiance: "0.0.0-alpha.20"]
|| migration.features?.white_disc_pitch_corrected != true
|| migration.features?.youtube_source_format != "MP4_AAC_LC"
|| migration.features?.openal_pitch_numerator != 4
|| migration.features?.openal_pitch_denominator != 3
|| migration.features?.openal_pitch_reapplied_during_playback != true
|| migration.features?.reference_video_id != "Ue5ZBe-GzSM"
|| migration.features?.direct_source_comparison != true
|| migration.features?.decoded_sample_rate_hz != 48_000
|| migration.features?.decoded_channel_count != 1
|| migration.features?.decoded_sample_size_bits != 16
|| 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
|| !audioPlayer.contains("PLAYBACK_PITCH = 4.0F / 3.0F")
|| audioPlayer.count("channel.setPitch(PLAYBACK_PITCH)") != 2
|| !streamSmoke.contains("WhiteDiscAudioPlayer.PLAYBACK_PITCH - 4.0F / 3.0F")
|| release.pack_version != "26.2.0-alpha.218"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.218.mrpack"
|| prism.versionId != "26.2.0-alpha.218"
|| prism.files?.size() != 5
|| !packwiz.contains('version = "26.2.0-alpha.218"')
|| !packwizIndex.contains('file = "mods/ambiance-0.0.0-alpha.20.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.218`**")) {
throw new GradleException("The alpha.217 white-disc pitch release is incomplete")
}
}
}
tasks.register("verifyAlpha218Release") {
group = "verification"
description = "Checks the Sanctuary 26.2.0-alpha.218 Storage Terminal release."
inputs.file(file("pack/migrations/26.2.0-alpha.217-storage-terminal-to-alpha.218.json"))
inputs.file(file("pack/release.json"))
inputs.file(file("pack/prism/modrinth.index.json"))
inputs.file(file("pack/packwiz/pack.toml"))
@@ -6316,7 +6393,7 @@ tasks.register("verifyAlpha217Release") {
inputs.file(file("sanctuary/src/main/java/fr/koka99cab/sanctuary26/sanctuary/shop/BlackMarketItemPolicy.java"))
doLast {
def migration = new JsonSlurper().parse(file(
"pack/migrations/26.2.0-alpha.216-storage-terminal-to-alpha.217.json"))
"pack/migrations/26.2.0-alpha.217-storage-terminal-to-alpha.218.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
@@ -6344,11 +6421,11 @@ tasks.register("verifyAlpha217Release") {
def obsoleteJars = sourceModules.collect { id, version ->
"file = \"mods/${id}-${version}.jar\""
}
if (rootProject.pack_version != "26.2.0-alpha.217"
if (rootProject.pack_version != "26.2.0-alpha.218"
|| targetModules.any { id, version -> rootProject.property("${id}_version") != version }
|| migration.source?.pack_version != "26.2.0-alpha.216"
|| migration.source?.pack_version != "26.2.0-alpha.217"
|| migration.source?.modules != sourceModules
|| migration.target?.pack_version != "26.2.0-alpha.217"
|| migration.target?.pack_version != "26.2.0-alpha.218"
|| migration.target?.modules != targetModules
|| migration.storage_terminal?.id != "redstoner:storage_terminal"
|| migration.storage_terminal?.shape_depth_pixels != 8
@@ -6377,14 +6454,14 @@ tasks.register("verifyAlpha217Release") {
|| !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.217.mrpack"
|| release.modrinth?.primary_file != "sanctuary-26.2.0-alpha.218.mrpack"
|| prism.versionId != rootProject.pack_version
|| !packwiz.contains('version = "26.2.0-alpha.217"')
|| !packwiz.contains('version = "26.2.0-alpha.218"')
|| requiredJars.any { !packwizIndex.contains(it) }
|| obsoleteJars.any { packwizIndex.contains(it) }
|| !changelog.contains("## `26.2.0-alpha.217`")
|| !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.217`**")) {
throw new GradleException("The alpha.217 Storage Terminal release is incomplete")
|| !changelog.contains("## `26.2.0-alpha.218`")
|| !readme.contains("Version courante du pack distribué : **`26.2.0-alpha.218`**")) {
throw new GradleException("The alpha.218 Storage Terminal release is incomplete")
}
}
}
@@ -6395,6 +6472,7 @@ tasks.named("verifyWorkspace") {
dependsOn tasks.named("verifyAlpha215Release")
dependsOn tasks.named("verifyAlpha216Release")
dependsOn tasks.named("verifyAlpha217Release")
dependsOn tasks.named("verifyAlpha218Release")
}
tasks.named("check") {
+2 -2
View File
@@ -12,7 +12,7 @@ fabric_api_version=0.158.0+26.2
# Standby modules stay at zero until their migration really begins.
mod_version=0.0.0-alpha.0
module_lifecycle=standby
ambiance_version=0.0.0-alpha.19
ambiance_version=0.0.0-alpha.20
ambiance_lifecycle=active
redstoner_version=0.0.0-alpha.11
redstoner_lifecycle=active
@@ -30,5 +30,5 @@ onlyfun_version=0.0.0-alpha.25
onlyfun_lifecycle=active
sanctuary_version=0.0.0-alpha.121
sanctuary_lifecycle=active
pack_version=26.2.0-alpha.217
pack_version=26.2.0-alpha.218
maven_group=fr.koka99cab.sanctuary26
@@ -0,0 +1,41 @@
{
"schema_version": 1,
"source": {
"pack_version": "26.2.0-alpha.216",
"modules": {
"ambiance": "0.0.0-alpha.19"
}
},
"target": {
"pack_version": "26.2.0-alpha.217",
"modules": {
"ambiance": "0.0.0-alpha.20"
}
},
"features": {
"white_disc_pitch_corrected": true,
"youtube_source_format": "MP4_AAC_LC",
"openal_pitch_numerator": 4,
"openal_pitch_denominator": 3,
"openal_pitch_reapplied_during_playback": true,
"reference_video_id": "Ue5ZBe-GzSM",
"direct_source_comparison": true,
"decoded_sample_rate_hz": 48000,
"decoded_channel_count": 1,
"decoded_sample_size_bits": 16
},
"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
}
}
@@ -1,7 +1,7 @@
{
"schema_version": 1,
"source": {
"pack_version": "26.2.0-alpha.216",
"pack_version": "26.2.0-alpha.217",
"modules": {
"redstoner": "0.0.0-alpha.10",
"onlyfun": "0.0.0-alpha.24",
@@ -9,7 +9,7 @@
}
},
"target": {
"pack_version": "26.2.0-alpha.217",
"pack_version": "26.2.0-alpha.218",
"modules": {
"redstoner": "0.0.0-alpha.11",
"onlyfun": "0.0.0-alpha.25",
+11 -11
View File
@@ -13,16 +13,16 @@ file = "instance-icon.png"
hash = "41f4f4c88c71d0a23446d5014f7407d55ad477441847099cad24492b032335a0"
[[files]]
file = "mods/ambiance-0.0.0-alpha.19.jar"
hash = "9138adaaa0fb063100906e44453442d9e2596199769067207a2f7bd44f372756"
file = "mods/ambiance-0.0.0-alpha.20.jar"
hash = "09e37498ff4d38c7ff51305f92cfade9ac805d79ab8d005b9223569fad01aab5"
[[files]]
file = "mods/anotherworld-0.0.0-alpha.55.jar"
hash = "2d6250686739fd0bddcbff2d382e22fb9e403472926931f2879f6870af96ed64"
hash = "6e44c5242beb280be440360bcff0e56d202d838e45d7b228bb2ce43e93f63869"
[[files]]
file = "mods/events-0.0.0-alpha.0.jar"
hash = "4ac4ec54bf702a164443eb184796cca603cbad84607e794c2b24dbd5c7c221b9"
hash = "be156780aa383391204726cce4b9d582df5d851ffdbb0d9f16bd0523d798e7b9"
[[files]]
file = "mods/fabric-api.pw.toml"
@@ -31,7 +31,7 @@ metafile = true
[[files]]
file = "mods/iliketomoveit-0.0.0-alpha.15.jar"
hash = "fe73255673eda5cbe16fe0bfd4a13951d9f103f58461ca84020e27cde408e569"
hash = "2c6a01a57836bec8df490114b77bda6ae9837ff972854ee75e5d8e4a56798c2b"
[[files]]
file = "mods/iris.pw.toml"
@@ -40,7 +40,7 @@ metafile = true
[[files]]
file = "mods/itsalive-0.0.0-alpha.36.jar"
hash = "49aab5f4b3c9145d3cc4e64ce46bff138e4c6147c83c985d402024920d929d0d"
hash = "9a1d55f40932ddf4fb94a7fecf55bfc250c1f2c8a748e98541394f3c1efe2a3f"
[[files]]
file = "mods/jei.pw.toml"
@@ -49,23 +49,23 @@ metafile = true
[[files]]
file = "mods/masterkey-0.0.0-alpha.8.jar"
hash = "9429a818c517b3943fdcbdd442800b9d854bf73c605df0f1ec761366574c129a"
hash = "17045102e074b9ebae06a9f4a897e6a40e7da12e6f86c9e41d4171ec1209d9a2"
[[files]]
file = "mods/onlyfun-0.0.0-alpha.25.jar"
hash = "005202d009ba00c5a3019aec6813cbdc2006d191299b2d1829051f73c2fb604a"
hash = "0d07cdcc1f4711a85675da02b0ecd4b4e521bd62dec410842a5f58556bddc91e"
[[files]]
file = "mods/ouch-0.0.0-alpha.10.jar"
hash = "b4b5c5cf8164f6a0ce6131031fcbd0840c048a249d1b7c6e08f5b7aeed0e7656"
hash = "e4ecfcb0f1f5795b99acf2417fe61a99855d501a5f7c59098bd15bd11a095499"
[[files]]
file = "mods/redstoner-0.0.0-alpha.11.jar"
hash = "457b4502ce2946963b4c2f21514a29c941f81df9bd1457f5db43fecdfa859a7e"
hash = "ea3d830b6b7fd71cb06e87209ada985a24ff2e4c56eb25f3ab754f1601f63026"
[[files]]
file = "mods/sanctuary-0.0.0-alpha.121.jar"
hash = "ef2c827774c768289e034c9715d4f27c347b533f7476a6d355c7b45123fedcec"
hash = "adb26ac28908b701a88e4bc648761f1999087aceb7a2c84e17a439d3d1c9b255"
[[files]]
file = "mods/simple-voice-chat.pw.toml"
+2 -2
View File
@@ -1,12 +1,12 @@
name = "Sanctuary 26.2"
author = "KOKA99CAB"
version = "26.2.0-alpha.217"
version = "26.2.0-alpha.218"
pack-format = "packwiz:1.1.0"
[index]
file = "index.toml"
hash-format = "sha256"
hash = "176382d1bdb3797ba19d8d7acb093b9b49156f3b5b3270db803e59d24c6de7e1"
hash = "6394d7e62de15e0fb09f5a1bc7e3a802ca6b140072674ff7111d11de15ed444e"
[versions]
fabric = "0.19.3"
+1 -1
View File
@@ -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.217",
"versionId": "26.2.0-alpha.218",
"files": [
{
"path": "mods/fabric-api-0.158.0+26.2.jar",
+2 -2
View File
@@ -1,6 +1,6 @@
{
"schema_version": 1,
"pack_version": "26.2.0-alpha.217",
"pack_version": "26.2.0-alpha.218",
"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.217.mrpack",
"primary_file": "sanctuary-26.2.0-alpha.218.mrpack",
"shared_client_server_pack": true,
"update_owner": "packwiz-installer",
"check_on_launch": true,