लगभग हर ऐड-ऑन फ़ाइल JSON में लिखी होती है। यह डेटा को टेक्स्ट के रूप में लिखने का एक आसान तरीका है, और इसके नियम बस गिने-चुने हैं। इन्हें एक बार सीख लें और आप कोई भी ऐड-ऑन फ़ाइल पढ़ सकते हैं।
पहली नज़र
यह एक छोटी JSON फ़ाइल है जो एक पालतू जानवर के बारे में बताती है:
{
"name": "Biscuit",
"age": 3,
"is_friendly": true,
"favorite_foods": ["bone", "cookie"],
"owner": {
"name": "Alex",
"level": 12
}
}इसे ज़ोर से पढ़ें: "Biscuit 3 साल का है, दोस्ताना है, उसे हड्डियाँ और कुकीज़ पसंद हैं, और उसका मालिक Alex है जो level 12 पर है।" JSON बस इतना ही है: नाम और values।
बुनियादी हिस्से
Objects
Object curly braces { } में लिपटा होता है। इसमें key और value के जोड़े होते हैं:
- Key हमेशा double quotes में टेक्स्ट होती है, जैसे
"name"। - Colon
:key को उसकी value से अलग करता है। - Comma
,एक जोड़े को अगले से अलग करता है।
हर ऐड-ऑन फ़ाइल एक object से शुरू होती है, इसलिए पहला अक्षर हमेशा { होता है और आखिरी हमेशा }।
Arrays
Array square brackets [ ] में लिपटी एक list है। चीज़ें commas से अलग की जाती हैं। क्रम मायने रखता है।
{
"version": [1, 0, 0],
"tags": ["sword", "weapon"],
"rows": [
{ "item": "minecraft:stick" },
{ "item": "minecraft:diamond" }
]
}Array में संख्याएँ, टेक्स्ट, objects, या दूसरे arrays भी हो सकते हैं।
Values
Values के बस कुछ ही प्रकार हैं:
| प्रकार | उदाहरण | ध्यान दें |
|---|---|---|
| String (टेक्स्ट) | "Ruby Sword" | हमेशा double quotes, single quotes कभी नहीं |
| Number | 64, 0.3, -2 | Quotes नहीं। दशमलव के लिए dot, comma कभी नहीं |
| Boolean | true, false | Lowercase, quotes नहीं |
| Object | { "a": 1 } | जुड़ी हुई settings को एक साथ रखता है |
| Array | [1, 2, 3] | एक list |
| Null | null | मतलब "कुछ नहीं"। ऐड-ऑन में कम ही दिखता है |
प्रकारों पर ध्यान दें। 64 और "64" एक जैसे दिखते हैं, लेकिन पहला number है और दूसरा टेक्स्ट। अगर Minecraft को number चाहिए और आप टेक्स्ट देते हैं, तो setting अनदेखी हो जाती है या फ़ाइल लोड नहीं होती।
Nesting: ऐड-ऑन फ़ाइलों का आकार
Objects दूसरे objects के अंदर हो सकते हैं। ऐड-ऑन फ़ाइलें चीज़ों को group करने के लिए इसका खूब इस्तेमाल करती हैं। यह एक असली आइटम फ़ाइल है:
{
"format_version": "1.26.30",
"minecraft:item": {
"description": {
"identifier": "demo:ruby",
"menu_category": {
"category": "items"
}
},
"components": {
"minecraft:max_stack_size": 16,
"minecraft:icon": {
"textures": {
"default": "ruby"
}
}
}
}
}बाहर से अंदर की ओर रास्ता देखें: फ़ाइल में एक "minecraft:item" object है, जिसमें "description" और "components" हैं। Components के अंदर "minecraft:max_stack_size" को number 16 पर सेट किया गया है। जब यह wiki कहती है "components में minecraft:max_stack_size सेट करें", तो उसका मतलब यही जगह है।
टिप: हर स्तर को दो spaces से indent करें। गेम को इसकी ज़रूरत नहीं, लेकिन इससे आकार आसानी से दिखता है।
Identifiers और namespaces
आप जो कुछ भी जोड़ते हैं उसे एक identifier चाहिए: colon से अलग किए गए दो हिस्सों से बना एक अनोखा नाम।
demo:ruby- Colon से पहले वाला हिस्सा namespace है। यह आपके signature जैसा है।
- उसके बाद वाला हिस्सा चीज़ का नाम है।
Minecraft का अपना content minecraft namespace इस्तेमाल करता है, जैसे minecraft:diamond। अपने content के लिए कभी minecraft इस्तेमाल न करें। कुछ छोटा और अनोखा चुनें, जैसे अपने initials या project का नाम: sam:ruby, dragons:fire_egg।
नियम जो आपको सुरक्षित रखते हैं:
- सिर्फ़ lowercase अक्षर, अंक और underscores इस्तेमाल करें।
- कोई space नहीं।
ruby swordनहीं,ruby_swordलिखें। - पूरे ऐड-ऑन में एक ही namespace इस्तेमाल करें।
- एक बार प्लेयर्स के worlds में आपका आइटम आ जाए, तो उसका नाम न बदलें, नहीं तो वे आइटम गायब हो जाएँगे।
minecraft:icon जैसे कंपोनेंट नाम भी minecraft namespace इस्तेमाल करते हैं, क्योंकि वे गेम में पहले से बने हैं। आप हर एक को आइटम कंपोनेंट reference में देख सकते हैं।
format_version
ज़्यादातर फ़ाइलें "format_version" से शुरू होती हैं। यह Minecraft को बताता है कि आपने फ़ाइल layout का कौन-सा version लिखा है, ताकि गेम जाने कि उसे कैसे पढ़ना है। ध्यान दें कि आइटम, ब्लॉक और एंटिटी फ़ाइलों में यह quotes वाला टेक्स्ट है, जैसे "1.26.30", लेकिन manifest.json में सादा number 2 है।
शक हो तो इस wiki के किसी चलते हुए उदाहरण से format version कॉपी करें, और एक ही प्रकार की फ़ाइलों में इसे एक जैसा रखें।
आम गलतियाँ
ज़्यादातर टूटे पैक इन पाँच गलतियों से होते हैं।
1. आखिर में comma
आखिरी चीज़ के बाद comma की इजाज़त नहीं है।
{
"nutrition": 4,
"saturation_modifier": 0.6,
}0.6 के बाद वाला comma हटाएँ और यह काम करेगा।
2. छूटे हुए commas
उल्टी समस्या: दो जोड़ों के बीच comma भूल जाना।
{
"nutrition": 4
"saturation_modifier": 0.6
}4 के बाद comma जोड़ें।
3. छूटे या गलत quotes
Keys और टेक्स्ट को शुरुआत और आखिर दोनों में double quotes चाहिए।
{
name: 'Ruby'
}सही version है { "name": "Ruby" }।
4. बेमेल brackets
हर { को एक } चाहिए और हर [ को एक ], सही क्रम में। VS Code में किसी bracket के पास क्लिक करने पर उसका जोड़ीदार bracket highlight हो जाता है, जिससे इसे जाँचना आसान होता है।
5. Comments
सामान्य JSON में कोई comments नहीं होते। Mojang की कुछ sample फ़ाइलों में आपको // वाली comment lines दिख सकती हैं, और गेम कई जगह उन्हें छोड़ भी देता है, लेकिन दूसरे tools और validators उन्हें reject कर देंगे। सबसे सुरक्षित आदत है अपने JSON में comments न लिखना।
अपना JSON जाँचें
किसी भी online "JSON validator" में फ़ाइल paste करें और वह error की सटीक लाइन बता देगा। VS Code वही errors लाल underline से दिखाता है।
दूसरी तरह की फ़ाइलें
सब कुछ JSON नहीं है। आपको ये भी मिलेंगी:
.langफ़ाइलें: नामों के लिए सादीkey=valuelines, जैसेitem.demo:ruby.name=Ruby।.mcfunctionफ़ाइलें: हर लाइन में एक कमांड। देखें Functions।.jsफ़ाइलें: scripts के लिए JavaScript।.pngफ़ाइलें: textures।
JSON से छुटकारा
अगर इतने सारे brackets भारी लगते हैं, तो आप अकेले नहीं हैं। GodCraft में आप कभी JSON टाइप नहीं करते: आप sliders, toggles और pickers वाले forms भरते हैं, और app हर बार valid फ़ाइलें लिखता है। कुछ चलने वाला बनाने का यह तेज़ तरीका है, और आप कभी भी यहाँ वापस आकर सीख सकते हैं कि app ने आपके लिए क्या लिखा।
अब जब आप JSON पढ़ सकते हैं, तो आपका पहला कस्टम आइटम आज़माएँ, या एक्सपोर्ट करें और खेलें में जानें कि अपना पैक गेम में कैसे लाएँ।