डायलॉग स्क्रीन: बिना किसी मॉड के असली मेनू बनाना
डेटापैक डायलॉग आपको इनपुट और बटन के साथ एक उचित विंडो देते हैं। यहाँ JSON संरचना, एक बटन कैसे कमांड चलाता है, और यह बुक-मेनू हैक की तुलना में कैसा है, इसके बारे में बताया गया है।
सर्वर मेनू पहले क्लिक करने योग्य पृष्ठों वाली लिखित किताबें या आइटम फ़्रेम के साथ नकली चेस्ट GUI हुआ करते थे। डायलॉग ने दोनों को एक वास्तविक स्क्रीन से बदल दिया है।
डायलॉग क्या है
डेटापैक में एक 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.
यह बुक हैक से बेहतर क्यों है
- यह एक स्क्रीन, इसलिए यह चैट इतिहास में बैठने के बजाय इनपुट को रोक देता है।
- इनपुट वास्तव में मौजूद हैं। एक किताब केवल लिंक प्रदान कर सकती थी।
- किसी आइटम की आवश्यकता नहीं है। खोने, गिराने या डुप्लिकेट करने के लिए कुछ भी नहीं।
- यह आसानी से बंद हो जाता है और इसे वापस स्क्रॉल नहीं किया जा सकता है।
किताबें अभी भी जिस एक चीज़ में बेहतर हैं वह है लंबा पाठ पढ़ना — डायलॉग बॉडी तीन पन्नों की कहानी के लिए अच्छी जगह नहीं है।
वेपॉइंट शैलियाँ
यही टूल लोकेटर-बार वेपॉइंट्स को भी कवर करता है, जो ट्रैक किए गए खिलाड़ी या स्थिति के लिए दिखाए जाने वाले मार्कर रंग और स्प्राइट को नियंत्रित करने वाली एक अलग डेटापैक रजिस्ट्री हैं। टीम मार्करों के लिए उपयोगी जहाँ बॉसबार बहुत अधिक दखल देने वाला होगा।
इनपुट और बटन के साथ डायलॉग स्क्रीन बनाएं, और वेपॉइंट शैलियों को कस्टमाइज़ करें, इसमें डायलॉग इनपुट और वेपॉइंट स्टाइल बिल्डर.