From 0bd60d01ccd5a778cab9514f33af2b7f53019a2c Mon Sep 17 00:00:00 2001 From: koka Date: Tue, 1 Sep 2026 18:56:29 +0200 Subject: [PATCH] =?UTF-8?q?feat(sanctuary):=20attribuer=20les=20qu=C3=AAte?= =?UTF-8?q?s=20termin=C3=A9es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 3 +- build.gradle | 56 ++++++++++--------- gradle.properties | 2 +- sanctuary/build.gradle | 30 +++++----- .../sanctuary/shop/QuestRequestService.java | 23 ++++++-- .../assets/sanctuary/lang/en_us.json | 2 + .../assets/sanctuary/lang/fr_fr.json | 2 + .../assets/sanctuary/lang/ru_ru.json | 2 + .../shop/QuestRequestModelSmoke.java | 3 + 9 files changed, 78 insertions(+), 45 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d8e4038..0fb0a14 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,8 +8,9 @@ Ce journal suit les **versions du modpack**. Lorsqu'un seul module change, sa ve ## Non publié -Module modifié : **Red-Stoner `0.0.0-alpha.16`**. +Modules modifiés : **Sanctuary `0.0.0-alpha.133`** et **Red-Stoner `0.0.0-alpha.16`**. +- attribue les demandes de quêtes personnalisées terminées à leur preneur directement sur le panneau et dans les détails au clic, avec son pseudonyme et sa couleur conservés ; - ajoute au terminal les tris alphabétique, par quantité croissante et par quantité décroissante, appliqués explicitement sans déplacer les objets sous le curseur lors des rafraîchissements périodiques ; ## `26.2.0-alpha.228` diff --git a/build.gradle b/build.gradle index 90409e2..bf8d78d 100644 --- a/build.gradle +++ b/build.gradle @@ -2916,7 +2916,7 @@ tasks.register("verifyNotchEncounter") { def textureHash = MessageDigest.getInstance("SHA-256").digest(texture.bytes).encodeHex().toString() if (rootProject.itsalive_version != "0.0.0-alpha.38" || rootProject.ouch_version != "0.0.0-alpha.11" - || rootProject.sanctuary_version != "0.0.0-alpha.132" + || rootProject.sanctuary_version != "0.0.0-alpha.133" || rootProject.masterkey_version != "0.0.0-alpha.9" || rootProject.pack_version != "26.2.0-alpha.228" || manifests.itsalive.custom?.sanctuary26?.data_version != 4 @@ -3010,7 +3010,7 @@ tasks.register("verifyMagicCarpet") { if (rootProject.pack_version != "26.2.0-alpha.228" || rootProject.iliketomoveit_version != "0.0.0-alpha.18" || rootProject.onlyfun_version != "0.0.0-alpha.27" - || rootProject.sanctuary_version != "0.0.0-alpha.132" + || rootProject.sanctuary_version != "0.0.0-alpha.133" || manifests.iliketomoveit.custom?.sanctuary26?.data_version != 4 || manifests.iliketomoveit.custom?.sanctuary26?.network_protocol != 5 || manifests.iliketomoveit.depends?.sanctuary != ">=0.0.0-alpha.127" @@ -3641,7 +3641,7 @@ tasks.register("verifyProgressivePauseMenuRelease") { "sanctuary/src/main/resources/assets/sanctuary/lang/${locale}.json"))] } if (rootProject.pack_version != "26.2.0-alpha.228" - || rootProject.sanctuary_version != "0.0.0-alpha.132" + || rootProject.sanctuary_version != "0.0.0-alpha.133" || rootProject.onlyfun_version != "0.0.0-alpha.27" || release.pack_version != rootProject.pack_version || index.versionId != rootProject.pack_version || migration.source?.modules != [sanctuary: "0.0.0-alpha.108", onlyfun: "0.0.0-alpha.17"] @@ -4488,7 +4488,7 @@ tasks.register("verifyShopPricingLayoutRelease") { def index = new JsonSlurper().parse(file("pack/prism/modrinth.index.json")) if (rootProject.pack_version != "26.2.0-alpha.228" || rootProject.onlyfun_version != "0.0.0-alpha.27" - || rootProject.sanctuary_version != "0.0.0-alpha.132" + || rootProject.sanctuary_version != "0.0.0-alpha.133" || release.pack_version != rootProject.pack_version || index.versionId != rootProject.pack_version || migration.source?.pack_version != "26.2.0-alpha.192" || migration.target?.pack_version != "26.2.0-alpha.193" @@ -4582,7 +4582,7 @@ tasks.register("verifyShopCsvBossGatesRelease") { def offerCatalog = file("sanctuary/src/main/java/fr/koka99cab/sanctuary26/sanctuary/shop/ShopOfferCatalog.java").text if (rootProject.pack_version != "26.2.0-alpha.228" || rootProject.onlyfun_version != "0.0.0-alpha.27" - || rootProject.sanctuary_version != "0.0.0-alpha.132" + || rootProject.sanctuary_version != "0.0.0-alpha.133" || release.pack_version != rootProject.pack_version || index.versionId != rootProject.pack_version || migration.source?.pack_version != "26.2.0-alpha.194" || migration.source?.modules != [onlyfun: "0.0.0-alpha.18", sanctuary: "0.0.0-alpha.110"] @@ -4675,7 +4675,7 @@ tasks.register("verifyQuestRequestsCauldronBatchesRelease") { def sanctuaryManifest = new JsonSlurper().parse(file("sanctuary/src/main/resources/fabric.mod.json")) if (rootProject.pack_version != "26.2.0-alpha.228" || rootProject.itsalive_version != "0.0.0-alpha.38" - || rootProject.sanctuary_version != "0.0.0-alpha.132" + || rootProject.sanctuary_version != "0.0.0-alpha.133" || migration.source?.pack_version != "26.2.0-alpha.196" || migration.target?.pack_version != "26.2.0-alpha.197" || migration.target?.modules != [itsalive: "0.0.0-alpha.29", sanctuary: "0.0.0-alpha.113"] @@ -4775,7 +4775,7 @@ tasks.register("verifyQuestRequestContractsRelease") { def sanctuaryManifest = new JsonSlurper().parse(file("sanctuary/src/main/resources/fabric.mod.json")) if (rootProject.pack_version != "26.2.0-alpha.228" || rootProject.itsalive_version != "0.0.0-alpha.38" - || rootProject.sanctuary_version != "0.0.0-alpha.132" + || rootProject.sanctuary_version != "0.0.0-alpha.133" || migration.source?.pack_version != "26.2.0-alpha.198" || migration.source?.modules?.sanctuary != "0.0.0-alpha.114" || migration.target?.pack_version != "26.2.0-alpha.199" @@ -4895,7 +4895,7 @@ tasks.register("verifyQuestRequestEscrowRelease") { 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.228" - || rootProject.sanctuary_version != "0.0.0-alpha.132" + || rootProject.sanctuary_version != "0.0.0-alpha.133" || migration.source?.pack_version != "26.2.0-alpha.200" || migration.source?.modules?.sanctuary != "0.0.0-alpha.115" || migration.target?.pack_version != "26.2.0-alpha.201" @@ -4952,7 +4952,7 @@ tasks.register("verifyWaystoneShopCulinaryAlpha202Release") { || rootProject.anotherworld_version != "0.0.0-alpha.57" || rootProject.itsalive_version != "0.0.0-alpha.38" || rootProject.iliketomoveit_version != "0.0.0-alpha.18" - || rootProject.sanctuary_version != "0.0.0-alpha.132" + || rootProject.sanctuary_version != "0.0.0-alpha.133" || migration.source?.pack_version != "26.2.0-alpha.201" || migration.source?.modules != [ itsalive: "0.0.0-alpha.30", @@ -5110,7 +5110,7 @@ tasks.register("verifySafeVaultFeature") { }.keySet() if (rootProject.pack_version != "26.2.0-alpha.228" || rootProject.anotherworld_version != "0.0.0-alpha.57" - || rootProject.sanctuary_version != "0.0.0-alpha.132" + || rootProject.sanctuary_version != "0.0.0-alpha.133" || migration.schema_version != 1 || migration.source?.pack_version != "26.2.0-alpha.201" || migration.target?.pack_version != "26.2.0-alpha.202" @@ -5970,7 +5970,7 @@ tasks.register("verifyAlpha210Release") { it.path == "mods/jei-26.2-fabric-30.29.0.199.jar" } if (rootProject.pack_version != "26.2.0-alpha.228" - || rootProject.sanctuary_version != "0.0.0-alpha.132" + || rootProject.sanctuary_version != "0.0.0-alpha.133" || rootProject.onlyfun_version != "0.0.0-alpha.27" || rootProject.iliketomoveit_version != "0.0.0-alpha.18" || rootProject.itsalive_version != "0.0.0-alpha.38" @@ -6072,7 +6072,7 @@ tasks.register("verifyAlpha211Release") { itsalive: "0.0.0-alpha.38", ouch: "0.0.0-alpha.11", masterkey: "0.0.0-alpha.9"] - def workspaceModules = currentModules + [sanctuary: "0.0.0-alpha.132"] + def workspaceModules = currentModules + [sanctuary: "0.0.0-alpha.133"] def expectedDataVersions = [ambiance: 2, itsalive: 3, onlyfun: 2, ouch: 1, sanctuary: 11] def workspaceDataVersions = [ambiance: 2, itsalive: 4, onlyfun: 2, ouch: 1, sanctuary: 14] def expectedProtocols = [ambiance: 6, itsalive: 4, onlyfun: 3, ouch: 1, sanctuary: 22] @@ -6172,7 +6172,7 @@ tasks.register("verifyAlpha212Release") { it.path == "mods/jei-26.2-fabric-30.29.0.199.jar" } if (rootProject.pack_version != "26.2.0-alpha.228" - || rootProject.sanctuary_version != "0.0.0-alpha.132" + || rootProject.sanctuary_version != "0.0.0-alpha.133" || migration.source?.pack_version != "26.2.0-alpha.211" || migration.source?.modules != [sanctuary: "0.0.0-alpha.119"] || migration.target?.pack_version != "26.2.0-alpha.212" @@ -6671,7 +6671,7 @@ tasks.register("verifyAlpha218Release") { } || rootProject.onlyfun_version != "0.0.0-alpha.27" || rootProject.iliketomoveit_version != "0.0.0-alpha.18" - || rootProject.sanctuary_version != "0.0.0-alpha.132" + || rootProject.sanctuary_version != "0.0.0-alpha.133" || migration.source?.pack_version != "26.2.0-alpha.217" || migration.source?.modules != sourceModules || migration.target?.pack_version != "26.2.0-alpha.218" @@ -6757,7 +6757,7 @@ tasks.register("verifyAlpha219Release") { ambiance: "0.0.0-alpha.22", sanctuary: "0.0.0-alpha.132", iliketomoveit: "0.0.0-alpha.18", onlyfun: "0.0.0-alpha.27", itsalive: "0.0.0-alpha.38", ouch: "0.0.0-alpha.11", masterkey: "0.0.0-alpha.9"] - def workspaceModules = currentModules + [sanctuary: "0.0.0-alpha.132"] + def workspaceModules = currentModules + [sanctuary: "0.0.0-alpha.133"] def requiredJars = currentModules.collect { id, version -> "file = \"mods/${id}-${version}.jar\"" } @@ -7082,7 +7082,7 @@ tasks.register("verifyAlpha222Release") { } if (rootProject.pack_version != "26.2.0-alpha.228" || rootProject.redstoner_version != "0.0.0-alpha.16" - || rootProject.sanctuary_version != "0.0.0-alpha.132" + || rootProject.sanctuary_version != "0.0.0-alpha.133" || migration.source?.pack_version != "26.2.0-alpha.221" || migration.source?.modules != [ redstoner: "0.0.0-alpha.12", sanctuary: "0.0.0-alpha.122"] @@ -7294,7 +7294,7 @@ tasks.register("verifyAlpha223Release") { it.path == "mods/jei-26.2-fabric-30.29.0.199.jar" } if (rootProject.pack_version != "26.2.0-alpha.228" - || rootProject.sanctuary_version != "0.0.0-alpha.132" + || rootProject.sanctuary_version != "0.0.0-alpha.133" || migration.source?.pack_version != "26.2.0-alpha.222" || migration.source?.modules != [sanctuary: "0.0.0-alpha.124"] || migration.target?.pack_version != "26.2.0-alpha.223" @@ -7415,7 +7415,7 @@ tasks.register("verifyAlpha224Release") { def currentModules = targetModules + [ itsalive: "0.0.0-alpha.38", iliketomoveit: "0.0.0-alpha.18", onlyfun: "0.0.0-alpha.27", sanctuary: "0.0.0-alpha.132"] - def workspaceModules = currentModules + [sanctuary: "0.0.0-alpha.132"] + def workspaceModules = currentModules + [sanctuary: "0.0.0-alpha.133"] def inventorySort = file( "sanctuary/src/main/java/fr/koka99cab/sanctuary26/sanctuary/gameplay/SanctuaryInventorySort.java").text def clientProgress = file( @@ -7537,11 +7537,12 @@ tasks.register("verifyAlpha225Release") { sanctuary: "0.0.0-alpha.129"] def currentModules = targetModules + [sanctuary: "0.0.0-alpha.132"] def currentWorkspaceModules = currentModules + [ - anotherworld: "0.0.0-alpha.57", sanctuary: "0.0.0-alpha.132"] + anotherworld: "0.0.0-alpha.57", sanctuary: "0.0.0-alpha.133"] def workspaceModules = moduleIds.collectEntries { id -> [(id): project(":${id}").version.toString()] } - def releasedModules = workspaceModules + [redstoner: "0.0.0-alpha.15"] + def releasedModules = workspaceModules + [ + redstoner: "0.0.0-alpha.15", sanctuary: "0.0.0-alpha.132"] def requiredJars = releasedModules.collect { id, version -> "file = \"mods/${id}-${version}.jar\"" } @@ -7701,12 +7702,13 @@ tasks.register("verifyAlpha226Release") { def workspaceModules = moduleIds.collectEntries { id -> [(id): project(":${id}").version.toString()] } - def releasedModules = workspaceModules + [redstoner: "0.0.0-alpha.15"] + def releasedModules = workspaceModules + [ + redstoner: "0.0.0-alpha.15", sanctuary: "0.0.0-alpha.132"] def requiredJars = releasedModules.collect { id, version -> "file = \"mods/${id}-${version}.jar\"" } if (rootProject.pack_version != "26.2.0-alpha.228" - || rootProject.sanctuary_version != "0.0.0-alpha.132" + || rootProject.sanctuary_version != "0.0.0-alpha.133" || migration.status != "released" || migration.source?.pack_version != "26.2.0-alpha.225" || migration.source?.modules != [sanctuary: "0.0.0-alpha.129"] @@ -7792,13 +7794,14 @@ tasks.register("verifyAlpha227Release") { def workspaceModules = moduleIds.collectEntries { id -> [(id): project(":${id}").version.toString()] } - def releasedModules = workspaceModules + [redstoner: "0.0.0-alpha.15"] + def releasedModules = workspaceModules + [ + redstoner: "0.0.0-alpha.15", sanctuary: "0.0.0-alpha.132"] def requiredJars = releasedModules.collect { id, version -> "file = \"mods/${id}-${version}.jar\"" } if (rootProject.pack_version != "26.2.0-alpha.228" || rootProject.anotherworld_version != "0.0.0-alpha.57" - || rootProject.sanctuary_version != "0.0.0-alpha.132" + || rootProject.sanctuary_version != "0.0.0-alpha.133" || migration.status != "released" || migration.source?.pack_version != "26.2.0-alpha.226" || migration.source?.modules != [ @@ -7890,13 +7893,14 @@ tasks.register("verifyAlpha228Release") { def workspaceModules = moduleIds.collectEntries { id -> [(id): project(":${id}").version.toString()] } - def releasedModules = workspaceModules + [redstoner: "0.0.0-alpha.15"] + def releasedModules = workspaceModules + [ + redstoner: "0.0.0-alpha.15", sanctuary: "0.0.0-alpha.132"] def requiredJars = releasedModules.collect { id, version -> "file = \"mods/${id}-${version}.jar\"" } if (rootProject.pack_version != "26.2.0-alpha.228" || rootProject.redstoner_version != "0.0.0-alpha.16" - || rootProject.sanctuary_version != "0.0.0-alpha.132" + || rootProject.sanctuary_version != "0.0.0-alpha.133" || migration.status != "released" || migration.source?.pack_version != "26.2.0-alpha.227" || migration.source?.modules != [ diff --git a/gradle.properties b/gradle.properties index 93792b1..a9ae6fc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -28,7 +28,7 @@ iliketomoveit_version=0.0.0-alpha.18 iliketomoveit_lifecycle=active onlyfun_version=0.0.0-alpha.27 onlyfun_lifecycle=active -sanctuary_version=0.0.0-alpha.132 +sanctuary_version=0.0.0-alpha.133 sanctuary_lifecycle=active pack_version=26.2.0-alpha.228 maven_group=fr.koka99cab.sanctuary26 diff --git a/sanctuary/build.gradle b/sanctuary/build.gradle index 04c2a04..7e8e82e 100644 --- a/sanctuary/build.gradle +++ b/sanctuary/build.gradle @@ -199,7 +199,7 @@ tasks.register("verifyBlackMarket") { def questData = file("src/main/java/fr/koka99cab/sanctuary26/sanctuary/shop/QuestBoardData.java").text def quests = file("src/main/java/fr/koka99cab/sanctuary26/sanctuary/shop/QuestBoardService.java").text def inventoryView = file("src/main/java/fr/koka99cab/sanctuary26/sanctuary/api/inventory/SanctuaryPlayerInventoryView.java").text - if (project.version.toString() != "0.0.0-alpha.132" + if (project.version.toString() != "0.0.0-alpha.133" || !data.contains('SAVE_KEY = "black_market"') || !data.contains("DATA_VERSION = 2") || !data.contains("ItemStack.CODEC.fieldOf(\"item\")") || !data.contains("replaceListing") || !service.contains("LISTING_FEE_RUBIES = 1") || !service.contains("COMMISSION_PERCENT = 5") @@ -2915,7 +2915,7 @@ tasks.register("verifyShopCurrencyRowsRelease") { "src/main/java/fr/koka99cab/sanctuary26/sanctuary/shop/BlackMarketService.java").text def shop = file( "src/main/java/fr/koka99cab/sanctuary26/sanctuary/shop/ShopService.java").text - if (project.version.toString() != "0.0.0-alpha.132" + if (project.version.toString() != "0.0.0-alpha.133" || migration.target?.modules?.sanctuary != "0.0.0-alpha.117" || migration.shop_currency_inventory?.all_unlocked_rows_counted != true || migration.shop_currency_inventory?.overflow_rows_counted != true @@ -3081,7 +3081,7 @@ tasks.register("verifyProgressivePauseMenu") { "pack/migrations/26.2.0-alpha.190-progressive-pause-menu-to-alpha.191.json")) def pauseMenu = file("src/main/java/fr/koka99cab/sanctuary26/sanctuary/mixin/client/PauseScreenMixin.java").text def costs = file("src/main/java/fr/koka99cab/sanctuary26/sanctuary/progression/SanctuaryProgressionCosts.java").text - if (project.version.toString() != "0.0.0-alpha.132" + if (project.version.toString() != "0.0.0-alpha.133" || migration.target?.pack_version != "26.2.0-alpha.191" || migration.target?.modules?.sanctuary != "0.0.0-alpha.109" || migration.pause_menu?.progression_full_width != true @@ -3119,7 +3119,7 @@ tasks.register("verifyShopPricingLayout") { "pack/migrations/26.2.0-alpha.192-shop-pricing-layout-to-alpha.193.json")) def screen = file("src/main/java/fr/koka99cab/sanctuary26/sanctuary/client/SanctuaryShopScreen.java").text def progression = file("src/main/java/fr/koka99cab/sanctuary26/sanctuary/shop/ShopProgression.java").text - if (project.version.toString() != "0.0.0-alpha.132" + if (project.version.toString() != "0.0.0-alpha.133" || migration.target?.modules?.sanctuary != "0.0.0-alpha.110" || migration.shop_layout?.locked_offer_buttons != 6 || migration.shop_layout?.button_slots != [4, 5, 6, 7, 8, 9] @@ -3150,7 +3150,7 @@ tasks.register("verifyShopCsvBossGates") { "pack/migrations/26.2.0-alpha.194-shop-csv-boss-gates-to-alpha.195.json")) def provider = file("src/main/java/fr/koka99cab/sanctuary26/sanctuary/shop/ShopCatalogProvider.java").text def catalog = file("src/main/java/fr/koka99cab/sanctuary26/sanctuary/shop/ShopOfferCatalog.java").text - if (project.version.toString() != "0.0.0-alpha.132" + if (project.version.toString() != "0.0.0-alpha.133" || migration.target?.pack_version != "26.2.0-alpha.195" || migration.target?.modules?.sanctuary != "0.0.0-alpha.111" || migration.compatibility?.sanctuary_data_version != 11 @@ -3181,7 +3181,7 @@ tasks.register("verifyDeliveryBoxOrientation") { def blockstate = new JsonSlurper().parse( file("src/main/resources/assets/sanctuary/blockstates/delivery_box.json")) def expectedVariants = ["facing=north", "facing=east", "facing=south", "facing=west"].toSet() - if (project.version.toString() != "0.0.0-alpha.132" + if (project.version.toString() != "0.0.0-alpha.133" || migration.target?.modules?.sanctuary != "0.0.0-alpha.112" || migration.mailbox?.id != "sanctuary:delivery_box" || migration.mailbox?.horizontal_facing != true @@ -3209,7 +3209,7 @@ tasks.register("verifyInventoryShiftClick") { def mixin = file("src/main/java/fr/koka99cab/sanctuary26/sanctuary/mixin/AbstractContainerMenuMixin.java").text def screen = file("src/main/java/fr/koka99cab/sanctuary26/sanctuary/mixin/client/AbstractContainerScreenMixin.java").text def gui = file("INVENTORY_GUI.md").text - if (project.version.toString() != "0.0.0-alpha.132" + if (project.version.toString() != "0.0.0-alpha.133" || !transfer.contains("shouldAppendOverflow") || !transfer.contains("isVanillaStorageRange") || !transfer.contains("hotbarStart") @@ -3255,7 +3255,7 @@ tasks.register("verifyQuestRequests") { new JsonSlurper().parse(file("src/main/resources/data/sanctuary/loot_table/blocks/${path}.json")) .pools[0].entries[0].name } - if (project.version.toString() != "0.0.0-alpha.132" + if (project.version.toString() != "0.0.0-alpha.133" || migration.target?.modules?.sanctuary != "0.0.0-alpha.113" || migration.quest_requests?.save_key != "quest_requests" || migration.quest_requests?.data_version != 1 @@ -3267,6 +3267,8 @@ tasks.register("verifyQuestRequests") { || !data.contains('SAVE_KEY = "quest_requests"') || !data.contains("DATA_VERSION = 3") || !service.contains("PlayerBlockBreakEvents.BEFORE") || !service.contains("player.blockPosition().distSqr(payload.pos()) > 64.0D") + || !service.contains('"sign.sanctuary.quest_request.completed_by"') + || !service.contains('"message.sanctuary.quest_request.details.completed_by"') || !network.contains("PROTOCOL_VERSION = 24") || !network.contains("QuestRequestSubmitPayload.ID") || !network.contains("QuestRequestAcceptPayload.ID") @@ -3276,6 +3278,8 @@ tasks.register("verifyQuestRequests") { !values.containsKey("block.sanctuary.quest_request_sign") || !values.containsKey("screen.sanctuary.quest_request.title") || !values.containsKey("message.sanctuary.quest_request.claimed") + || !values.containsKey("message.sanctuary.quest_request.details.completed_by") + || !values.containsKey("sign.sanctuary.quest_request.completed_by") }) { throw new GradleException("Sanctuary alpha.113 quest-request contract is incomplete") } @@ -3313,7 +3317,7 @@ tasks.register("verifyQuestRequestContracts") { def locales = ["fr_fr", "en_us", "ru_ru"].collectEntries { locale -> [(locale): new JsonSlurper().parse(file("src/main/resources/assets/sanctuary/lang/${locale}.json"))] } - if (project.version.toString() != "0.0.0-alpha.132" + if (project.version.toString() != "0.0.0-alpha.133" || migration.source?.pack_version != "26.2.0-alpha.198" || migration.source?.modules?.sanctuary != "0.0.0-alpha.114" || migration.target?.pack_version != "26.2.0-alpha.199" @@ -3382,7 +3386,7 @@ tasks.register("verifyQuestRequestEscrow") { def locales = ["fr_fr", "en_us", "ru_ru"].collectEntries { locale -> [(locale): new JsonSlurper().parse(file("src/main/resources/assets/sanctuary/lang/${locale}.json"))] } - if (project.version.toString() != "0.0.0-alpha.132" + if (project.version.toString() != "0.0.0-alpha.133" || migration.source?.pack_version != "26.2.0-alpha.200" || migration.source?.modules?.sanctuary != "0.0.0-alpha.115" || migration.target?.pack_version != "26.2.0-alpha.201" @@ -3461,7 +3465,7 @@ tasks.register("verifyCraftableBannerCape") { def locales = ["fr_fr", "en_us", "ru_ru"].collect { new JsonSlurper().parse(file("src/main/resources/assets/sanctuary/lang/${it}.json")) } - if (project.version.toString() != "0.0.0-alpha.132" + if (project.version.toString() != "0.0.0-alpha.133" || migration.target?.modules?.sanctuary != "0.0.0-alpha.130" || migration.white_cape?.crafting_material_count != 6 || migration.white_cape?.maximum_pattern_layers != 6 @@ -3516,7 +3520,7 @@ tasks.register("verifyAlphaIndev") { def locales = ["fr_fr", "en_us", "ru_ru"].collect { new JsonSlurper().parse(file("src/main/resources/assets/sanctuary/lang/${it}.json")) } - if (project.version.toString() != "0.0.0-alpha.132" + if (project.version.toString() != "0.0.0-alpha.133" || migration.target?.modules?.sanctuary != "0.0.0-alpha.122" || migration.alpha_world?.dimension != "sanctuary:alpha" || migration.alpha_world?.legacy_dimension != "portals:alpha" @@ -3576,7 +3580,7 @@ tasks.register("verifyBackroom") { def locales = ["fr_fr", "en_us", "ru_ru"].collect { new JsonSlurper().parse(file("src/main/resources/assets/sanctuary/lang/${it}.json")) } - if (project.version.toString() != "0.0.0-alpha.132" + if (project.version.toString() != "0.0.0-alpha.133" || migration.source_data_version != 13 || migration.target_data_version != 14 || migration.integration_modules?.anotherworld?.source != "0.0.0-alpha.56" || migration.integration_modules?.anotherworld?.target != "0.0.0-alpha.57" diff --git a/sanctuary/src/main/java/fr/koka99cab/sanctuary26/sanctuary/shop/QuestRequestService.java b/sanctuary/src/main/java/fr/koka99cab/sanctuary26/sanctuary/shop/QuestRequestService.java index 7385642..32ec10f 100644 --- a/sanctuary/src/main/java/fr/koka99cab/sanctuary26/sanctuary/shop/QuestRequestService.java +++ b/sanctuary/src/main/java/fr/koka99cab/sanctuary26/sanctuary/shop/QuestRequestService.java @@ -425,8 +425,11 @@ public final class QuestRequestService { "message.sanctuary.quest_request.details.reward_legacy").withStyle(ChatFormatting.GRAY)); QuestRequestData.Claim claim = request.claim().orElse(null); if (request.completed()) { - player.sendSystemMessage(Component.translatable("message.sanctuary.quest_request.details.completed") - .withStyle(ChatFormatting.GREEN)); + Component completion = claim == null + ? Component.translatable("message.sanctuary.quest_request.details.completed") + : Component.translatable("message.sanctuary.quest_request.details.completed_by", + claimantName(claim)); + player.sendSystemMessage(completion.copy().withStyle(ChatFormatting.GREEN)); } else if (claim != null) { Component claimant = Component.literal(claim.playerName()) .withStyle(style -> style.withColor(claim.playerColor())); @@ -444,6 +447,11 @@ public final class QuestRequestService { return Component.translatable("message.sanctuary.quest_request.action." + action); } + private static Component claimantName(QuestRequestData.Claim claim) { + return Component.literal(claim.playerName()) + .withStyle(style -> style.withColor(claim.playerColor())); + } + private static Component describeTarget(QuestRequestData.Request request) { if (PAY.equals(request.action()) || PLAYER.equals(request.targetKind())) { return Component.literal(request.target()); @@ -485,13 +493,20 @@ public final class QuestRequestService { if (request.completed()) { text = text.setMessage(2, Component.translatable("sign.sanctuary.quest_request.completed") .withStyle(ChatFormatting.DARK_GRAY)); + QuestRequestData.Claim claim = request.claim().orElse(null); + text = text.setMessage(3, claim == null + ? Component.translatable("sign.sanctuary.quest_request.details") + .withStyle(ChatFormatting.GRAY) + : Component.translatable("sign.sanctuary.quest_request.completed_by", claimantName(claim)) + .withStyle(ChatFormatting.GRAY)); } else if (request.claim().isPresent()) { text = text.setMessage(2, Component.translatable("sign.sanctuary.quest_request.claimed") .withStyle(ChatFormatting.DARK_GRAY)); } else text = text.setMessage(2, Component.translatable("sign.sanctuary.quest_request.available") .withStyle(ChatFormatting.DARK_GRAY)); - text = text.setMessage(3, Component.translatable("sign.sanctuary.quest_request.details") - .withStyle(ChatFormatting.GRAY)); + if (!request.completed()) text = text.setMessage(3, + Component.translatable("sign.sanctuary.quest_request.details") + .withStyle(ChatFormatting.GRAY)); } sign.setText(text, request.front()); sign.setWaxed(true); diff --git a/sanctuary/src/main/resources/assets/sanctuary/lang/en_us.json b/sanctuary/src/main/resources/assets/sanctuary/lang/en_us.json index 1fcb59f..49a3bc3 100644 --- a/sanctuary/src/main/resources/assets/sanctuary/lang/en_us.json +++ b/sanctuary/src/main/resources/assets/sanctuary/lang/en_us.json @@ -96,6 +96,7 @@ "message.sanctuary.quest_request.details.reward_legacy": "Its author must edit this legacy request and deposit the reward.", "message.sanctuary.quest_request.details.progress": "Progress: %s/%s.", "message.sanctuary.quest_request.details.completed": "Request completed · reward dispatched.", + "message.sanctuary.quest_request.details.completed_by": "Request completed by %s · reward dispatched.", "message.sanctuary.quest_request.accept": "[ACCEPT QUEST]", "message.sanctuary.quest_request.accept_hover": "Click to confirm after reading every detail.", "message.sanctuary.quest_request.accept_prompt": "Read the details, then confirm in the acceptance screen.", @@ -462,6 +463,7 @@ "sign.sanctuary.quest_request.available": "AVAILABLE", "sign.sanctuary.quest_request.claimed": "TAKEN", "sign.sanctuary.quest_request.completed": "COMPLETED", + "sign.sanctuary.quest_request.completed_by": "Completed by: %s", "sign.sanctuary.quest_request.details": "Click: details", "message.sanctuary.companion.active_locked": "Unlock the active companion power in Progression for %s XP levels.", "message.sanctuary.shop.delivery_box_registered": "Mailbox registered at %s, %s, %s.", diff --git a/sanctuary/src/main/resources/assets/sanctuary/lang/fr_fr.json b/sanctuary/src/main/resources/assets/sanctuary/lang/fr_fr.json index 787c366..8e8d1a4 100644 --- a/sanctuary/src/main/resources/assets/sanctuary/lang/fr_fr.json +++ b/sanctuary/src/main/resources/assets/sanctuary/lang/fr_fr.json @@ -96,6 +96,7 @@ "message.sanctuary.quest_request.details.reward_legacy": "Cette ancienne demande doit être modifiée par son auteur pour déposer sa récompense.", "message.sanctuary.quest_request.details.progress": "Progression : %s/%s.", "message.sanctuary.quest_request.details.completed": "Demande terminée · récompense expédiée.", + "message.sanctuary.quest_request.details.completed_by": "Demande complétée par %s · récompense expédiée.", "message.sanctuary.quest_request.accept": "[ACCEPTER LA QUÊTE]", "message.sanctuary.quest_request.accept_hover": "Clique pour confirmer après avoir lu tous les détails.", "message.sanctuary.quest_request.accept_prompt": "Lis les détails puis confirme dans la fenêtre d'acceptation.", @@ -462,6 +463,7 @@ "sign.sanctuary.quest_request.available": "DISPONIBLE", "sign.sanctuary.quest_request.claimed": "PRISE", "sign.sanctuary.quest_request.completed": "TERMINÉE", + "sign.sanctuary.quest_request.completed_by": "Complétée par : %s", "sign.sanctuary.quest_request.details": "Clic : détails", "message.sanctuary.companion.active_locked": "Débloquez le pouvoir actif du familier dans Progression pour %s niveaux d'XP.", "message.sanctuary.shop.delivery_box_registered": "Boîte aux lettres enregistrée en %s, %s, %s.", diff --git a/sanctuary/src/main/resources/assets/sanctuary/lang/ru_ru.json b/sanctuary/src/main/resources/assets/sanctuary/lang/ru_ru.json index a089e80..b21058b 100644 --- a/sanctuary/src/main/resources/assets/sanctuary/lang/ru_ru.json +++ b/sanctuary/src/main/resources/assets/sanctuary/lang/ru_ru.json @@ -374,6 +374,7 @@ "sign.sanctuary.quest_request.available": "СВОБОДНО", "sign.sanctuary.quest_request.claimed": "ЗАНЯТО", "sign.sanctuary.quest_request.completed": "ВЫПОЛНЕНО", + "sign.sanctuary.quest_request.completed_by": "Выполнил: %s", "sign.sanctuary.quest_request.details": "ПКМ: детали", "message.sanctuary.quest_request.occupied": "На этой табличке уже есть запрос.", "message.sanctuary.quest_request.protected": "Только заказчик или оператор может забрать эту табличку.", @@ -390,6 +391,7 @@ "message.sanctuary.quest_request.details.reward_legacy": "Автор должен изменить этот старый запрос и внести награду.", "message.sanctuary.quest_request.details.progress": "Прогресс: %s/%s.", "message.sanctuary.quest_request.details.completed": "Запрос выполнен · награда отправлена.", + "message.sanctuary.quest_request.details.completed_by": "Запрос выполнил %s · награда отправлена.", "message.sanctuary.quest_request.accept": "[ПРИНЯТЬ ЗАДАНИЕ]", "message.sanctuary.quest_request.accept_hover": "Нажмите, чтобы подтвердить после чтения всех подробностей.", "message.sanctuary.quest_request.accept_prompt": "Прочитайте подробности и подтвердите принятие в открывшемся окне.", diff --git a/sanctuary/src/test/java/fr/koka99cab/sanctuary26/sanctuary/shop/QuestRequestModelSmoke.java b/sanctuary/src/test/java/fr/koka99cab/sanctuary26/sanctuary/shop/QuestRequestModelSmoke.java index 669ee9a..2c6edfc 100644 --- a/sanctuary/src/test/java/fr/koka99cab/sanctuary26/sanctuary/shop/QuestRequestModelSmoke.java +++ b/sanctuary/src/test/java/fr/koka99cab/sanctuary26/sanctuary/shop/QuestRequestModelSmoke.java @@ -38,6 +38,9 @@ public final class QuestRequestModelSmoke { QuestRequestData.Request completed = claimed.withProgress(1).withCompletion(); require(completed.completed() && completed.progress() == completed.quantity() && completed.rewardEscrow().isEmpty(), "Completion must consume escrow exactly once"); + require(completed.claim().orElseThrow().playerName().equals("Hunter") + && completed.claim().orElseThrow().playerColor() == 0x44AAFF, + "Completion must preserve the player name and color displayed on the sign"); require(data.replace(claimed.withClaim(Optional.empty())), "Request release failed"); require(data.remove(data.request("request").orElseThrow()), "Recovering the request sign failed"); } -- 2.54.0