feat(sanctuary): afficher le joueur ayant complété une quête #142

Merged
koka merged 2 commits from feature/quest-board-completed-by into main 2026-09-01 18:57:19 +00:00
9 changed files with 85 additions and 45 deletions
+6
View File
@@ -6,6 +6,12 @@ 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 publié
Module modifié : **Sanctuary `0.0.0-alpha.133`**.
- 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 ;
## `26.2.0-alpha.229`
Module modifié : **Red-Stoner `0.0.0-alpha.16`**.
+33 -27
View File
@@ -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.229"
|| manifests.itsalive.custom?.sanctuary26?.data_version != 4
@@ -3010,7 +3010,7 @@ tasks.register("verifyMagicCarpet") {
if (rootProject.pack_version != "26.2.0-alpha.229"
|| 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.229"
|| 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.229"
|| 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.229"
|| 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.229"
|| 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.229"
|| 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.229"
|| 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.229"
|| 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.229"
|| 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.229"
|| 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.229"
|| 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.229"
|| 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
def releasedModules = workspaceModules + [
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
def releasedModules = workspaceModules + [
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.229"
|| 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
def releasedModules = workspaceModules + [
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.229"
|| 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
def releasedModules = workspaceModules + [
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.229"
|| 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 != [
@@ -7995,7 +7999,8 @@ tasks.register("verifyAlpha229Release") {
def workspaceModules = moduleIds.collectEntries { id ->
[(id): project(":${id}").version.toString()]
}
def requiredJars = workspaceModules.collect { id, version ->
def releasedModules = workspaceModules + [sanctuary: "0.0.0-alpha.132"]
def requiredJars = releasedModules.collect { id, version ->
"file = \"mods/${id}-${version}.jar\""
}
def requiredTranslationKeys = [
@@ -8005,6 +8010,7 @@ tasks.register("verifyAlpha229Release") {
"screen.redstoner.storage_terminal.sort.count_descending"]
if (rootProject.pack_version != "26.2.0-alpha.229"
|| rootProject.redstoner_version != "0.0.0-alpha.16"
|| rootProject.sanctuary_version != "0.0.0-alpha.133"
|| migration.status != "released"
|| migration.source?.pack_version != "26.2.0-alpha.228"
|| migration.source?.modules != [redstoner: "0.0.0-alpha.15"]
+1 -1
View File
@@ -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.229
maven_group=fr.koka99cab.sanctuary26
+17 -13
View File
@@ -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"
@@ -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);
@@ -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.",
@@ -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.",
@@ -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": "Прочитайте подробности и подтвердите принятие в открывшемся окне.",
@@ -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");
}