इस गाइड में आप एक Ruby Block बनाएँगे: एक चमकीला लाल cube जो हल्का सा रोशनी देता है, तोड़ने में थोड़ा समय लेता है और टूटने पर खुद को ही गिराता है। यह ब्लॉक बनाने का "hello world" है, और हर फ़ैंसी ब्लॉक की शुरुआत इसी तरह होती है।
इसे करने के दो तरीके हैं। तेज़ तरीका आपके फ़ोन पर कुछ ही मिनट लेता है। हाथ से करने वाला तरीका आपको सिखाता है कि हर फ़ाइल क्या करती है।
तेज़ तरीका: GodCraft
GodCraft आपके लिए ब्लॉक, उसका texture, उसका नाम और उसका loot बना देता है। आपको किसी JSON फ़ाइल को छूना भी नहीं पड़ता।
- Workshop खोलें और अपने ऐड-ऑन में एक Block जोड़ें।
- pixel editor में faces पेंट करें, या किसी vanilla texture से शुरू करके उसका रंग बदलें।
- सेट करें कि उसे तोड़ने में कितना समय लगे, वह कितनी रोशनी दे और क्या गिराए।
- Export पर टैप करें। GodCraft manifests, UUIDs और language फ़ाइलें लिखकर आपको एक
.mcaddonदेता है।
जानना चाहते हैं कि अंदर क्या होता है? आगे पढ़ते रहें।
हाथ से
आपको एक बिहेवियर पैक (BP) और एक रिसोर्स पैक (RP) चाहिए जो पहले से सेट हों। अगर आपने अभी तक इन्हें नहीं बनाया है, तो पहले प्रोजेक्ट सेटअप फ़ॉलो करें। हम namespace myname इस्तेमाल करेंगे; इसे हर जगह अपने छोटे नाम से बदल दें।
ये सभी फ़ाइलें हैं जिन पर आप काम करेंगे:
| फ़ाइल | पैक | यह क्या करती है |
|---|---|---|
blocks/ruby_block.json | BP | ब्लॉक क्या है और कैसे बर्ताव करता है |
loot_tables/blocks/ruby_block.json | BP | यह क्या गिराता है |
textures/blocks/ruby_block.png | RP | तस्वीर |
textures/terrain_texture.json | RP | तस्वीर को एक छोटा नाम देती है |
blocks.json | RP | इसकी आवाज़ |
texts/en_US.lang | RP | वह नाम जो खिलाड़ी देखते हैं |
स्टेप 1: ब्लॉक फ़ाइल
अपने बिहेवियर पैक में यह फ़ाइल बनाएँ:
{
"format_version": "1.26.50",
"minecraft:block": {
"description": {
"identifier": "myname:ruby_block",
"menu_category": {
"category": "construction"
}
},
"components": {
"minecraft:destructible_by_mining": {
"seconds_to_destroy": 3
},
"minecraft:destructible_by_explosion": {
"explosion_resistance": 6
},
"minecraft:friction": 0.4,
"minecraft:light_emission": 4,
"minecraft:map_color": "#9b1c2b",
"minecraft:geometry": "minecraft:geometry.full_block",
"minecraft:material_instances": {
"*": {
"texture": "ruby_block",
"render_method": "opaque"
}
},
"minecraft:loot": "loot_tables/blocks/ruby_block.json"
}
}
}description वाला हिस्सा बताता है कि ब्लॉक कौन है:
identifierब्लॉक की ID है, जो आपके namespace और एक नाम से बनती है। आप इसे/give @s myname:ruby_blockजैसी कमांड में टाइप करेंगे।menu_categorycreative inventory का टैब चुनता है। विकल्प हैंconstruction,nature,equipment,itemsऔरnone(छिपा हुआ)।
components वाला हिस्सा बताता है कि यह कैसे बर्ताव करता है:
minecraft:destructible_by_mining:seconds_to_destroyबताता है कि खाली हाथ से तोड़ने में कितना समय लगता है। पत्थर जैसे ब्लॉक लगभग 1.5 से 3 के बीच होते हैं।minecraft:destructible_by_explosion: बड़ाexplosion_resistanceमतलब TNT और creepers के लिए इसे तोड़ना मुश्किल।minecraft:friction: 0 से 0.9 तक का नंबर। ज़्यादा मतलब ज़्यादा पकड़; बर्फ़ जैसे ब्लॉक कम value इस्तेमाल करते हैं।minecraft:light_emission: 0 (कोई रोशनी नहीं) से 15 (torch या glowstone जितना चमकीला) तक का पूरा नंबर।minecraft:map_color: वह रंग जो ब्लॉक map पर दिखाता है, hex रंग के रूप में।minecraft:geometry: आकार।minecraft:geometry.full_blockएक सादा cube है, इसलिए आपको मॉडल फ़ाइल की ज़रूरत नहीं।minecraft:material_instances: कौन सा texture किस face पर जाएगा। key*का मतलब है "हर face"।textureएक छोटा नाम है जिसे आप स्टेप 3 में तय करेंगे।minecraft:loot: ब्लॉक टूटने पर इस्तेमाल होने वाली loot table।
अलग-अलग faces
grass ब्लॉक की तरह ऊपर और साइड अलग चाहिए? material_instances में * के बगल में और keys जोड़ें, जैसे up, down, north, south, east और west। जो face आप नहीं लिखेंगे, वह * पर वापस चला जाएगा।
स्टेप 2: texture
16x16 pixel का एक PNG बनाएँ और उसे अपने रिसोर्स पैक में RP/textures/blocks/ruby_block.png के रूप में सेव करें।
pixel art में नए हैं? Pixel textures गाइड में साइज़, transparency और shading समझाई गई है।
स्टेप 3: texture को एक छोटा नाम दें
ब्लॉक सीधे PNG फ़ाइलों की तरफ़ point नहीं करते। वे terrain_texture.json से एक छोटा नाम इस्तेमाल करते हैं। अगर आपके पैक में यह फ़ाइल पहले से है, तो texture_data में ruby_block एंट्री जोड़ दें। नहीं है, तो इसे बनाएँ:
{
"resource_pack_name": "myname",
"texture_name": "atlas.terrain",
"texture_data": {
"ruby_block": {
"textures": "textures/blocks/ruby_block"
}
}
}ध्यान दें कि path के आख़िर में .png नहीं है। गेम फ़ाइल को खुद ढूँढ लेता है।
स्टेप 4: साउंड
रिसोर्स पैक की blocks.json गेम को बताती है कि ब्लॉक पर चलने, उसे रखने या तोड़ने पर कौन सा sound set बजाना है:
{
"format_version": "1.21.40",
"myname:ruby_block": {
"sound": "stone"
}
}vanilla ब्लॉक में इस्तेमाल होने वाले दूसरे आम sound sets हैं wood, glass, metal, grass, sand, cloth, copper और deepslate।
स्टेप 5: नाम
नाम के बिना, गेम कुछ ऐसा दिखाता है: tile.myname:ruby_block.name। अपनी language फ़ाइल में यह लाइन जोड़ें:
tile.myname:ruby_block.name=Ruby Blockस्टेप 6: loot
loot table तय करती है कि क्या गिरेगा। यह वाली ब्लॉक को ही एक बार गिराती है:
{
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "item",
"name": "myname:ruby_block"
}
]
}
]
}ब्लॉक से कुछ और गिरवाने के लिए name को किसी भी आइटम ID में बदलें, जैसे minecraft:diamond।
अपने ब्लॉक को टेस्ट करें
- Export और install में दिखाए तरीके से दोनों पैक export और install करें, फिर उन्हें किसी world में चालू करें।
- creative inventory खोलें और Construction टैब में देखें, या
/give @s myname:ruby_blockचलाएँ। देखें /give। - इसे रात में रखें: यह हल्का सा चमकना चाहिए।
- survival में जाएँ और इसे तोड़ें। इसमें कुछ सेकंड लगने चाहिए और यह खुद को गिराना चाहिए।
आम समस्याएँ
बैंगनी और काला checkerboard
गेम texture नहीं ढूँढ पा रहा। जाँचें कि material_instances में छोटा नाम terrain_texture.json की key से बिल्कुल मैच करता है, और terrain_texture.json में path असली फ़ाइल की जगह से .png के बिना मैच करता है।
- ब्लॉक inventory में नहीं है। जाँचें कि
menu_categorynoneनहीं है, और बिहेवियर पैक चालू है। - ब्लॉक का नाम अजीब है।
.langलाइन में namespace सहित पूरी ID होनी चाहिए। - ब्लॉक कुछ नहीं गिराता। जाँचें कि
minecraft:lootका pathloot_tables/से शुरू होता है और फ़ाइल के नाम से मैच करता है।
और समाधान Troubleshooting में हैं।
आगे क्या
- reference में हर ब्लॉक कंपोनेंट देखें, material instances से शुरू करके।
- देखें कि Mojang अपने ब्लॉक कैसे बनाता है: Vanilla ब्लॉक।
- कुछ ज़िंदा बनाने के लिए तैयार हैं? आपका पहला कस्टम मॉब आज़माएँ।