fix(canaplia): restaurer les pages vanilla
Verification 26.2 / check (pull_request) Canceled after 0s
Verification 26.2 / check (pull_request) Canceled after 0s
This commit is contained in:
+1
-1
@@ -34,7 +34,7 @@ Ambiance possède les trois payloads historiques canaplia:hemp_visual_sync, cana
|
||||
|
||||
Les monstres tués par un joueur peuvent laisser une `canaplia:codex_page` et, très rarement, le `canaplia:codex` complet. Quatre pages récupérées permettent aussi d'assembler le Livre interdit autour d'un livre vanilla. Un clic droit sur une page découvre au hasard une entrée encore inconnue et ne consomme la page qu'en cas de nouvelle découverte.
|
||||
|
||||
L'ID historique `canaplia:codex` est conservé, mais l'objet s'affiche désormais comme le « Livre interdit » : il utilise la couleur du livre enchanté, ouvre directement les seize entrées et les présente sur des pages noires. En main, son contenu est strictement personnel. Posé sur un pupitre, il est temporairement inscrit au nom du joueur qui le pose et partage ses découvertes avec tous les lecteurs ; le récupérer en s'accroupissant ou casser le pupitre efface cette inscription.
|
||||
L'ID historique `canaplia:codex` est conservé, mais l'objet s'affiche désormais comme le « Livre interdit » : il utilise la couleur du livre enchanté, ouvre directement les seize entrées et les présente sur les pages claires du livre vanilla. En main, son contenu est strictement personnel. Posé sur un pupitre, il est temporairement inscrit au nom du joueur qui le pose et partage ses découvertes avec tous les lecteurs ; le récupérer en s'accroupissant ou casser le pupitre efface cette inscription.
|
||||
|
||||
Les données `canaplia:codex` restent en version 1. Les clés futures syntaxiquement valides et l'ancien champ partagé restent conservés lors d'un aller-retour afin qu'une migration ne perde aucune découverte, mais les nouvelles découvertes ne sont plus publiées globalement. Aucun payload de découverte n'est accepté du client vers le serveur et le protocole It's Alive reste en version 4.
|
||||
|
||||
|
||||
@@ -6,6 +6,13 @@ Ce journal suit les **versions du modpack**. Lorsqu'un seul module change, sa ve
|
||||
- Depuis `26.2.0-alpha.6`, le pack et les modules ont des versions indépendantes. I Like To Move It et Only Fun deviennent les cinquième et sixième modules actifs dans l'alpha 46.
|
||||
- Les versions ci-dessous ont été reconstituées à partir des JAR archivés, des packs locaux et du code source actuel. Les dates n'étant pas enregistrées de manière fiable, elles ne sont pas inventées.
|
||||
|
||||
## Non distribué
|
||||
|
||||
Module modifié : **It's Alive `0.0.0-alpha.36`**. Le pack distribué reste en `26.2.0-alpha.210` jusqu’à la prochaine release.
|
||||
|
||||
- remplace les pages noires du Livre interdit par l’affichage clair du livre vanilla ;
|
||||
- conserve les seize entrées, les découvertes personnelles, le partage sur pupitre, les IDs, les données v3 et le protocole réseau 4.
|
||||
|
||||
## `26.2.0-alpha.210`
|
||||
|
||||
Modules modifiés : **Sanctuary `0.0.0-alpha.118`**, **Only Fun `0.0.0-alpha.21`**, **I Like To Move It `0.0.0-alpha.15`** et **It's Alive `0.0.0-alpha.35`**. Les six autres modules conservent leur version issue de l’alpha.209.
|
||||
|
||||
+8
-8
@@ -4172,7 +4172,7 @@ tasks.register("verifyCuisineCropsRelease") {
|
||||
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.210"
|
||||
|| rootProject.itsalive_version != "0.0.0-alpha.35"
|
||||
|| 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"
|
||||
|| migration.source?.modules != [itsalive: "0.0.0-alpha.26"]
|
||||
@@ -4313,7 +4313,7 @@ tasks.register("verifyQuestRequestsCauldronBatchesRelease") {
|
||||
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.210"
|
||||
|| rootProject.itsalive_version != "0.0.0-alpha.35"
|
||||
|| rootProject.itsalive_version != "0.0.0-alpha.36"
|
||||
|| rootProject.sanctuary_version != "0.0.0-alpha.118"
|
||||
|| migration.source?.pack_version != "26.2.0-alpha.196"
|
||||
|| migration.target?.pack_version != "26.2.0-alpha.197"
|
||||
@@ -4363,7 +4363,7 @@ tasks.register("verifyFermentationBarrelAutomationRelease") {
|
||||
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.210"
|
||||
|| rootProject.itsalive_version != "0.0.0-alpha.35"
|
||||
|| 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"
|
||||
|| migration.target?.modules != [itsalive: "0.0.0-alpha.30", sanctuary: "0.0.0-alpha.114"]
|
||||
@@ -4413,7 +4413,7 @@ tasks.register("verifyQuestRequestContractsRelease") {
|
||||
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.210"
|
||||
|| rootProject.itsalive_version != "0.0.0-alpha.35"
|
||||
|| rootProject.itsalive_version != "0.0.0-alpha.36"
|
||||
|| rootProject.sanctuary_version != "0.0.0-alpha.118"
|
||||
|| migration.source?.pack_version != "26.2.0-alpha.198"
|
||||
|| migration.source?.modules?.sanctuary != "0.0.0-alpha.114"
|
||||
@@ -4589,7 +4589,7 @@ tasks.register("verifyWaystoneShopCulinaryAlpha202Release") {
|
||||
"sanctuary/src/main/resources/fabric.mod.json"))
|
||||
if (rootProject.pack_version != "26.2.0-alpha.210"
|
||||
|| rootProject.anotherworld_version != "0.0.0-alpha.55"
|
||||
|| rootProject.itsalive_version != "0.0.0-alpha.35"
|
||||
|| rootProject.itsalive_version != "0.0.0-alpha.36"
|
||||
|| rootProject.iliketomoveit_version != "0.0.0-alpha.15"
|
||||
|| rootProject.sanctuary_version != "0.0.0-alpha.118"
|
||||
|| migration.source?.pack_version != "26.2.0-alpha.201"
|
||||
@@ -5238,7 +5238,7 @@ tasks.register("verifyCanapliaFoundation") {
|
||||
def visualApiSource = file(
|
||||
"ambiance/src/main/java/fr/koka99cab/sanctuary26/ambiance/api/visual/AmbianceVisualEffectApi.java").text
|
||||
if (rootProject.pack_version != "26.2.0-alpha.210"
|
||||
|| rootProject.itsalive_version != "0.0.0-alpha.35"
|
||||
|| rootProject.itsalive_version != "0.0.0-alpha.36"
|
||||
|| rootProject.ambiance_version != "0.0.0-alpha.14"
|
||||
|| migration.issue != 35
|
||||
|| migration.source?.fabric_id != "canaplia"
|
||||
@@ -5489,7 +5489,7 @@ tasks.register("verifyCanapliaAlpha209Release") {
|
||||
onlyfun: "0.0.0-alpha.20"]
|
||||
if (rootProject.pack_version != "26.2.0-alpha.210"
|
||||
|| rootProject.ambiance_version != expectedTarget.ambiance
|
||||
|| rootProject.itsalive_version != "0.0.0-alpha.35"
|
||||
|| rootProject.itsalive_version != "0.0.0-alpha.36"
|
||||
|| rootProject.onlyfun_version != "0.0.0-alpha.21"
|
||||
|| migration.source?.pack_version != "26.2.0-alpha.207"
|
||||
|| migration.source?.modules != expectedSource
|
||||
@@ -5600,7 +5600,7 @@ tasks.register("verifyAlpha210Release") {
|
||||
|| rootProject.sanctuary_version != expectedTarget.sanctuary
|
||||
|| rootProject.onlyfun_version != expectedTarget.onlyfun
|
||||
|| rootProject.iliketomoveit_version != expectedTarget.iliketomoveit
|
||||
|| rootProject.itsalive_version != expectedTarget.itsalive
|
||||
|| rootProject.itsalive_version != "0.0.0-alpha.36"
|
||||
|| migration.source?.pack_version != "26.2.0-alpha.209"
|
||||
|| migration.source?.modules != expectedSource
|
||||
|| migration.target?.pack_version != "26.2.0-alpha.210"
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ redstoner_version=0.0.0-alpha.10
|
||||
redstoner_lifecycle=active
|
||||
anotherworld_version=0.0.0-alpha.55
|
||||
anotherworld_lifecycle=active
|
||||
itsalive_version=0.0.0-alpha.35
|
||||
itsalive_version=0.0.0-alpha.36
|
||||
itsalive_lifecycle=active
|
||||
ouch_version=0.0.0-alpha.9
|
||||
ouch_lifecycle=active
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
|
||||
It's Alive possède le vivant de Sanctuary. Il enrichit directement le Creeper vanilla et accueille désormais les papillons de Pipallon, les Mooblooms fleuries et les créatures de Real Ghost — baleine volante comprise — sous un référencement unifié `itsalive:*`.
|
||||
|
||||
## Version courante — `0.0.0-alpha.35`
|
||||
## Version courante — `0.0.0-alpha.36`
|
||||
|
||||
## Creepers
|
||||
|
||||
|
||||
+11
-7
@@ -556,7 +556,7 @@ tasks.register("verifyItsAlive") {
|
||||
def climateSource = file("src/main/java/fr/koka99cab/sanctuary26/itsalive/agriculture/ClimateCropForaging.java").text
|
||||
def pineappleSource = file("src/main/java/fr/koka99cab/sanctuary26/itsalive/agriculture/PineappleItem.java").text
|
||||
def worldgenSource = file("src/main/java/fr/koka99cab/sanctuary26/itsalive/agriculture/ItsAliveAgricultureWorldGeneration.java").text
|
||||
if (project.version.toString() != "0.0.0-alpha.35"
|
||||
if (project.version.toString() != "0.0.0-alpha.36"
|
||||
|| climateMigration.target?.pack_version != "26.2.0-alpha.157"
|
||||
|| climateMigration.target?.modules?.itsalive != "0.0.0-alpha.24"
|
||||
|| !climateSource.contains("PlayerBlockBreakEvents.AFTER.register")
|
||||
@@ -1313,7 +1313,7 @@ tasks.register("verifyCulinaryReliability") {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (project.version.toString() != "0.0.0-alpha.35"
|
||||
if (project.version.toString() != "0.0.0-alpha.36"
|
||||
|| migration.target?.modules?.itsalive != "0.0.0-alpha.28"
|
||||
|| migration.culinary_fixes?.food_press_contents_destroyed_on_break != true
|
||||
|| migration.culinary_fixes?.comparator_contract?.blocks?.size() != 6
|
||||
@@ -1351,7 +1351,7 @@ tasks.register("verifyCauldronBatching") {
|
||||
def recipe = file("src/main/java/fr/koka99cab/sanctuary26/itsalive/culinary/recipe/CulinaryProcessRecipe.java").text
|
||||
def cauldron = file("src/main/java/fr/koka99cab/sanctuary26/itsalive/culinary/block/entity/CookingCauldronBlockEntity.java").text
|
||||
def timed = file("src/main/java/fr/koka99cab/sanctuary26/itsalive/culinary/block/entity/AbstractTimedCulinaryBlockEntity.java").text
|
||||
if (project.version.toString() != "0.0.0-alpha.35"
|
||||
if (project.version.toString() != "0.0.0-alpha.36"
|
||||
|| migration.target?.modules?.itsalive != "0.0.0-alpha.29"
|
||||
|| migration.cauldron_batches?.logical_stack_limit != 64
|
||||
|| migration.cauldron_batches?.identity != "same_item_same_components"
|
||||
@@ -1389,7 +1389,7 @@ tasks.register("verifyFermentationBarrelAutomation") {
|
||||
def partialMatching = file("src/main/java/fr/koka99cab/sanctuary26/itsalive/culinary/recipe/CulinaryPartialMatching.java").text
|
||||
def blockstate = new JsonSlurper().parse(
|
||||
file("src/main/resources/assets/itsalive/blockstates/fermentation_barrel.json"))
|
||||
if (project.version.toString() != "0.0.0-alpha.35"
|
||||
if (project.version.toString() != "0.0.0-alpha.36"
|
||||
|| migration.source?.modules?.itsalive != "0.0.0-alpha.29"
|
||||
|| migration.target?.modules?.itsalive != "0.0.0-alpha.30"
|
||||
|| migration.fermentation_barrel?.maximum_units_per_input_slot != 1
|
||||
@@ -1437,7 +1437,7 @@ tasks.register("verifyCulinaryLecternRelease") {
|
||||
[(locale): new JsonSlurper().parse(file(
|
||||
"src/main/resources/assets/itsalive/lang/${locale}.json"))]
|
||||
}
|
||||
if (project.version.toString() != "0.0.0-alpha.35"
|
||||
if (project.version.toString() != "0.0.0-alpha.36"
|
||||
|| migration.target?.modules?.itsalive != "0.0.0-alpha.31"
|
||||
|| migration.culinary_lectern?.book_tag != "minecraft:lectern_books"
|
||||
|| migration.culinary_lectern?.owner_catalog_shared_while_placed != true
|
||||
@@ -1500,7 +1500,7 @@ tasks.register("verifyCanapliaForbiddenBook") {
|
||||
fr_fr: "Livre interdit",
|
||||
en_us: "Forbidden Book",
|
||||
ru_ru: "Запретная книга"]
|
||||
if (project.version.toString() != "0.0.0-alpha.35"
|
||||
if (project.version.toString() != "0.0.0-alpha.36"
|
||||
|| !pageItem.contains("CanapliaKnowledge.learnRandomUnknown(serverPlayer)")
|
||||
|| !knowledge.contains("unknownVariants(data.personal(player.getUUID()))")
|
||||
|| !knowledge.contains("data.personal(inscription.ownerId())")
|
||||
@@ -1510,7 +1510,11 @@ tasks.register("verifyCanapliaForbiddenBook") {
|
||||
|| !lectern.contains("PlayerBlockBreakEvents.BEFORE.register")
|
||||
|| !lectern.contains("CanapliaKnowledge.open(serverPlayer, book)")
|
||||
|| !lectern.contains("CanapliaKnowledge.forgetInscription(taken)")
|
||||
|| !screen.contains("PAGE_BACKGROUND = 0xFF09070E")
|
||||
|| screen.contains("PAGE_BACKGROUND")
|
||||
|| screen.contains("extractBackground(GuiGraphicsExtractor")
|
||||
|| screen.contains("extractRenderState(GuiGraphicsExtractor")
|
||||
|| !screen.contains("ChatFormatting.DARK_GRAY")
|
||||
|| !screen.contains("ChatFormatting.DARK_GREEN")
|
||||
|| screen.contains("screen.canaplia.codex.introduction")
|
||||
|| !components.contains('ItsAliveMod.id("canaplia_codex")')
|
||||
|| lecternBooks["values"] != ["itsalive:culinary_recipe_book", "canaplia:codex"]
|
||||
|
||||
+4
-43
@@ -5,17 +5,12 @@ import fr.koka99cab.sanctuary26.itsalive.network.CanapliaCodexPayload;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.client.gui.GuiGraphicsExtractor;
|
||||
import net.minecraft.client.gui.screens.inventory.BookViewScreen;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.chat.MutableComponent;
|
||||
|
||||
/** Vanilla book presentation of the server-authored Canaplia catalogue. */
|
||||
public final class CanapliaCodexScreen extends BookViewScreen {
|
||||
private static final int PAGE_BACKGROUND = 0xFF09070E;
|
||||
private static final int PAGE_BORDER = 0xFF5B3268;
|
||||
private int displayedPage;
|
||||
|
||||
public CanapliaCodexScreen(CanapliaCodexPayload snapshot) {
|
||||
super(new BookAccess(pages(snapshot)));
|
||||
}
|
||||
@@ -29,40 +24,6 @@ public final class CanapliaCodexScreen extends BookViewScreen {
|
||||
return List.copyOf(pages);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void extractBackground(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTick) {
|
||||
super.extractBackground(graphics, mouseX, mouseY, partialTick);
|
||||
int left = (this.width - IMAGE_WIDTH) / 2;
|
||||
graphics.fill(left + 18, 14, left + 174, 177, PAGE_BACKGROUND);
|
||||
graphics.outline(left + 18, 14, 156, 163, PAGE_BORDER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void extractRenderState(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTick) {
|
||||
super.extractRenderState(graphics, mouseX, mouseY, partialTick);
|
||||
graphics.nextStratum();
|
||||
int left = (this.width - IMAGE_WIDTH) / 2;
|
||||
graphics.fill(left + 94, 14, left + 174, 27, PAGE_BACKGROUND);
|
||||
graphics.text(this.font, Component.translatable("screen.canaplia.codex.page",
|
||||
displayedPage + 1, CanapliaVariantKey.values().length), left + 99, 18, 0xFFE3C7ED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setPage(int page) {
|
||||
displayedPage = Math.clamp(page, 0, CanapliaVariantKey.values().length - 1);
|
||||
return super.setPage(page);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void pageBack() {
|
||||
setPage(displayedPage - 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void pageForward() {
|
||||
setPage(displayedPage + 1);
|
||||
}
|
||||
|
||||
private static Component variantPage(CanapliaCodexPayload snapshot,
|
||||
CanapliaVariantKey variant, int index) {
|
||||
boolean personal = bit(snapshot.personalMask(), index);
|
||||
@@ -71,22 +32,22 @@ public final class CanapliaCodexScreen extends BookViewScreen {
|
||||
boolean conditionHint = bit(snapshot.conditionHintMask(), index);
|
||||
|
||||
MutableComponent page = Component.translatable("screen.canaplia.codex.entry_number", index + 1)
|
||||
.withStyle(ChatFormatting.LIGHT_PURPLE).append("\n\n");
|
||||
.withStyle(ChatFormatting.DARK_GRAY).append("\n\n");
|
||||
if (!personal && !shared) {
|
||||
return page.append(Component.translatable("screen.canaplia.codex.hidden")
|
||||
.withStyle(ChatFormatting.GRAY));
|
||||
}
|
||||
|
||||
page.append(Component.translatable("variant.canaplia." + variant.key())
|
||||
.withStyle(personal ? ChatFormatting.GREEN : ChatFormatting.LIGHT_PURPLE));
|
||||
.withStyle(personal ? ChatFormatting.DARK_GREEN : ChatFormatting.DARK_PURPLE));
|
||||
if (personal || shared || originHint) {
|
||||
page.append("\n\n").append(Component.translatable("screen.canaplia.codex.origin",
|
||||
Component.translatable("origin.canaplia." + variant.key()))
|
||||
.withStyle(ChatFormatting.GRAY));
|
||||
.withStyle(ChatFormatting.DARK_GRAY));
|
||||
}
|
||||
if (personal || shared || conditionHint) {
|
||||
page.append("\n\n").append(Component.translatable("hint.canaplia." + variant.key())
|
||||
.withStyle(ChatFormatting.GRAY));
|
||||
.withStyle(ChatFormatting.DARK_GRAY));
|
||||
}
|
||||
return page;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user