صفحههای گفتگو: ساخت منوهای واقعی بدون ماد
گفتگوهای دیتاپک یک پنجره واقعی همراه با ورودیها و دکمهها در اختیارتان میگذارند. در اینجا ساختار JSON، نحوه اجرای دستور توسط دکمه و مقایسه آن با ترفند منوی کتابی آورده شده است.
منوهای سرور قبلاً کتابهای نوشتهشده با صفحات کلیکپذیر یا رابط کاربری صندوق شبیهسازیشده با قاب آیتم بودند. گفتگوها با یک صفحه واقعی جایگزین هر دو شدند.
گفتگو (Dialog) چیست
یک فایل JSON در دیتاپک که یک پنجره را توصیف میکند:
data/<namespace>/dialog/welcome.json
{
"type": "minecraft:notice",
"title": { "text": "Welcome" },
"body": [{ "type": "minecraft:plain_message",
"contents": { "text": "Pick a class to begin." } }],
"action": { "label": { "text": "Continue" } }
}
سپس /dialog show @p my_pack:welcome.
انواع
| نوع | شکل |
|---|---|
notice | متن به همراه یک دکمه بستن |
confirmation | بله / خیر، هر کدام با عملکرد خود |
multi_action | شبکهای از دکمهها |
server_links | فهرست پیوندهای داخلی |
dialog_list | منویی که گفتگوهای دیگری را باز میکند |
multi_action is the workhorse — it is the class-picker, the shop, the warp list.
دکمهها دستورات را اجرا میکنند
{ "label": { "text": "Warp to spawn" },
"action": { "type": "minecraft:run_command", "command": "/spawn" } }
مانند clickEvent in chat, this runs از طرف بازیکنی که کلیک میکند، در سطح دسترسی او. دکمهای که یک دستور مخصوص op را فراخوانی میکند، برای یک بازیکن معمولی کاری انجام نمیدهد. راهکار استاندارد یک trigger objective: the button runs /trigger warp set 1 and a ticking function does the privileged part.
ورودیها
"inputs": [
{ "type": "minecraft:text", "key": "name", "label": { "text": "Your name" }, "max_length": 16 },
{ "type": "minecraft:boolean", "key": "pvp", "label": { "text": "Enable PvP" } },
{ "type": "minecraft:single_option", "key": "class", "options": [
{ "id": "mage", "display": { "text": "Mage" } },
{ "id": "rogue", "display": { "text": "Rogue" } } ] }
]
مقادیر به عنوان آرگومانهای ماکرو به تابعی که دکمه فراخوانی میکند ارسال میشوند، بنابراین تابع دریافتکننده یک ماکرو است:
$say Welcome $(name), you chose $(class)
مورد $ prefix on the line and $(key) for substitution. That is the whole binding mechanism, and it is what makes dialogs genuinely useful rather than decorative.
چرا این روش از ترفند کتاب بهتر است
- این یک صفحهاست، بنابراین به جای قرار گرفتن در تاریخچه چت، ورودی را متوقف میکند.
- ورودیها واقعاً وجود دارند. یک کتاب فقط میتوانست پیوندها را ارائه دهد.
- نیازی به آیتم نیست. چیزی برای از دست دادن، انداختن یا تکثیر وجود ندارد.
- به صورت تمیز بسته میشود و نمیتوان به عقب اسکرول کرد.
تنها چیزی که کتابها هنوز در آن بهتر عمل میکنند، خواندن متون طولانی است — بدنه یک گفتگو مکان مناسبی برای سه صفحه داستان و پسزمینه نیست.
سبکهای نشانک مسیر
همین ابزار نشانکهای نوار موقعیتیاب را پوشش میدهد، که یک رجیستری جداگانه در دیتاپک برای کنترل رنگ نشانگر و اسپریت نمایش داده شده برای بازیکن یا موقعیت ردیابیشده است. برای نشانگرهای تیمی که نوار باس در آن بیش از حد مزاحم است، مفید است.
ساخت صفحههای گفتگو با ورودیها و دکمهها، و شخصیسازی سبکهای نشانک مسیر، در سازنده ورودی گفتگو و سبک نشانک مسیر.