1. विकी
  2. /वर्ल्ड जनरेशन
  3. /Features और feature rules

Features और feature rules

features और feature rules से Minecraft Bedrock की world generation में ores, पौधे, पेड़ और structures जोड़ें, ruby ore के उदाहरण और हर feature type के साथ।

ज़मीन को सजाने वाली हर चीज़ एक feature है: ore की नसें, पेड़, फूल, घास, बड़े पत्थर, झरने, coral। अगर कोई चीज़ बुनियादी terrain नहीं है और मॉब भी नहीं है, तो शायद वह feature है।

किसी feature को दुनिया में लाने के लिए आपको दो फ़ाइलें चाहिए:

  • feature बताता है कि क्या रखना है: ore की एक नस, एक पेड़, एक अकेला ब्लॉक।
  • feature rule बताता है कि कहाँ और कितनी बार: कौन से biomes, हर chunk में कितनी बार, किस ऊँचाई पर।

इस गाइड में आप ruby ore को हर overworld biome में ज़मीन के नीचे दिखाएँगे।

फ़ाइलें

बिहेवियर पैक
BP/
  blocks/
    ruby_ore.json
  features/
    ruby_ore_feature.json
  feature_rules/
    ruby_ore_rule.json

स्टेप 1: ore ब्लॉक

पहले आपको रखने के लिए एक ब्लॉक चाहिए। wiki:ruby_ore नाम का एक सामान्य कस्टम ब्लॉक बनाएँ, texture और loot table के साथ। अगर आपने अभी तक ब्लॉक नहीं बनाया है, तो आपका पहला कस्टम ब्लॉक फ़ॉलो करें।

स्टेप 2: feature

BP/features/ruby_ore_feature.json
{
  "format_version": "1.13.0",
  "minecraft:ore_feature": {
    "description": {
      "identifier": "wiki:ruby_ore_feature"
    },
    "count": 6,
    "replace_rules": [
      {
        "places_block": "wiki:ruby_ore",
        "may_replace": [
          "minecraft:stone",
          "minecraft:granite",
          "minecraft:diorite",
          "minecraft:andesite"
        ]
      }
    ]
  }
}
  • root key, यहाँ minecraft:ore_feature, feature type है। हर फ़ाइल में ठीक एक होता है। इस पेज के नीचे वाली टेबल में सब दिए गए हैं।
  • count बताता है कि एक नस कितने ब्लॉक रखने की कोशिश करती है। Diamonds छोटी नसें इस्तेमाल करते हैं, coal बड़ी।
  • replace_rules बताता है कि कौन सा ब्लॉक कहाँ जाएगा। ore सिर्फ़ may_replace में लिखे ब्लॉक को बदलता है, इसलिए यह कभी गुफाओं में हवा में नहीं लटकता और न ही dirt को खाता है।

deepslate वाला version

replace_rules में "places_block": "wiki:deepslate_ruby_ore" और "may_replace": ["minecraft:deepslate"] के साथ दूसरी एंट्री जोड़ें। तब एक ही नस दोनों layers में सही लुक इस्तेमाल करती है, बिल्कुल vanilla ores की तरह।

नाम रखने के नियम

  • हर फ़ाइल में एक feature।
  • फ़ाइल का नाम identifier के नाम वाले हिस्से से मैच होना चाहिए। wiki:ruby_ore_feature ruby_ore_feature.json में जाता है। namespace मैच का हिस्सा नहीं है।
  • अगर दो पैक बिल्कुल एक ही identifier इस्तेमाल करते हैं, तो लिस्ट में ऊपर वाला पैक जीतता है। इसी तरह आप किसी vanilla feature को बदल सकते हैं।

स्टेप 3: feature rule

जब तक कोई feature rule उसे biomes से नहीं जोड़ता, feature कुछ नहीं करता:

BP/feature_rules/ruby_ore_rule.json
{
  "format_version": "1.13.0",
  "minecraft:feature_rules": {
    "description": {
      "identifier": "wiki:ruby_ore_rule",
      "places_feature": "wiki:ruby_ore_feature"
    },
    "conditions": {
      "placement_pass": "underground_pass",
      "minecraft:biome_filter": [
        {
          "test": "has_biome_tag",
          "operator": "==",
          "value": "overworld"
        }
      ]
    },
    "distribution": {
      "iterations": 4,
      "coordinate_eval_order": "zyx",
      "x": {
        "distribution": "uniform",
        "extent": [0, 16]
      },
      "y": {
        "distribution": "triangle",
        "extent": [-48, 16]
      },
      "z": {
        "distribution": "uniform",
        "extent": [0, 16]
      }
    }
  }
}

rule के तीन हिस्से हैं।

description

  • identifier rule का नाम है। features की तरह, नाम वाला हिस्सा फ़ाइल के नाम से मैच होना चाहिए।
  • places_feature वह feature है जिसे यह rule रखता है। एक rule एक feature को नियंत्रित करता है।

conditions

minecraft:biome_filter biomes चुनता है। यह filter tests की लिस्ट है, और जो आप लगभग हर बार इस्तेमाल करेंगे वह है has_biome_tag। हर biome filter जाँचता है: जो पास होते हैं उन्हें feature मिलता है।

आप all_of और any_of से tests को जोड़ सकते हैं। यह वाला गर्म overworld biomes चुनता है जो समुद्र नहीं हैं:

conditions के अंदर
"minecraft:biome_filter": [
  { "test": "has_biome_tag", "operator": "==", "value": "overworld" },
  {
    "any_of": [
      { "test": "has_biome_tag", "operator": "==", "value": "desert" },
      { "test": "has_biome_tag", "operator": "==", "value": "mesa" }
    ]
  },
  { "test": "has_biome_tag", "operator": "!=", "value": "ocean" }
]

ruby ore को सिर्फ़ Ruby Grove में रखने के लिए, उसके अपने tag से जाँचें: "value": "ruby_grove"।

placement_pass बताता है कि दूसरों की तुलना में feature कब रखा जाता है। Passes इस क्रम में चलते हैं:

Passकिसके लिए अच्छा
first_passवे चीज़ें जिन पर बाकी सब बनना चाहिए।
before_underground_pass, underground_pass, after_underground_passOres, dirt या gravel के ढेले, गुफा की सजावट।
before_surface_pass, surface_pass, after_surface_passपेड़, फूल, घास, बड़े पत्थर।
before_sky_pass, sky_pass, after_sky_passहवा में ऊपर की चीज़ें।
final_passआख़िरी टच, बाकी सब के बाद।
pregeneration_passसिर्फ़ cave carvers।

एक ही pass के features के बीच कोई तय क्रम नहीं होता।

distribution

यह तय करता है कि हर chunk में कितनी कॉपियाँ बनने की कोशिश करें और कहाँ।

फ़ील्डयह क्या करता है
iterationsहर chunk में कितनी बार कोशिश करनी है। यहाँ, 4 नसें।
x, y, zहर कोशिश कहाँ पड़ती है। एक तय नंबर, एक range, या एक Molang expression।
scatter_chanceपूरे chunk के लिए optional संभावना, जैसे 4 में से 1 chunk के लिए { "numerator": 1, "denominator": 4 }। अगर यह फ़ेल हो, तो कोई कोशिश नहीं चलती।
coordinate_eval_ordercoordinates किस क्रम में निकाले जाते हैं, जैसे "xzy" (default) या "zyx"। तब मायने रखता है जब एक coordinate दूसरे को इस्तेमाल करता है।

feature rule में, x और z chunk के कोने से गिने जाते हैं, इसलिए [0, 16] पूरे chunk को कवर करता है। y दुनिया की ऊँचाई है।

हर range का एक distribution type होता है जो तय करता है कि values कहाँ पड़ें:

Typeनतीजा
uniformहर value की बराबर संभावना।
triangleज़्यादातर values range के बीच के पास, किनारों पर कम। ores के लिए बढ़िया।
gaussianघंटी की तरह, बीच के आसपास इकट्ठा।
inverse_gaussianदोनों किनारों पर इकट्ठा, बीच में कम।
fixed_gridबराबर दूरी वाले कदम, step_size और grid_offset से सेट होते हैं।
jittered_gridएक grid जिसमें हर point को थोड़ा random खिसकाया जाता है।

ज़मीन पर रहने वाली चीज़ों के लिए, जैसे पौधे, y को Molang से सेट करें ताकि वह सतह पर पड़े:

distribution के अंदर
"y": "query.heightmap(variable.worldx, variable.worldz)"

Ore सिर्फ़ नए chunks में

Features एक बार बनते हैं, जब कोई chunk पहली बार बनता है। अपना ore देखने के लिए दूर तक घूमें या नई world बनाएँ। पहले से घूमी हुई ज़मीन में यह कभी नहीं आता।

टेस्टिंग

  1. नई world में पैक चालू करें।
  2. /gamemode spectator से spectator mode में जाएँ और Y 0 के पास ज़मीन के नीचे उड़ें।
  3. पत्थर में ruby texture ढूँढें। बहुत कम है? iterations या count बढ़ाएँ।

अगर कुछ नहीं दिखता, तो Content Log खोलें। आम कारण हैं: फ़ाइल का नाम identifier से मैच नहीं करता, places_feature का नाम गलत है, या places_block में ब्लॉक के नाम में typo है।

हर feature type

हर feature फ़ाइल इनमें से ठीक एक को अपनी root key के रूप में इस्तेमाल करती है। कुछ ब्लॉक रखते हैं, बाकी सिर्फ़ दूसरे features के बीच चुनते हैं, उन्हें खिसकाते हैं या दोहराते हैं। ज़्यादातर vanilla सजावटें कई को एक साथ जोड़ती हैं: उदाहरण के लिए एक scatter feature जो एक search feature चलाता है जो एक पेड़ चलाता है।

Typeयह क्या करता है
minecraft:aggregate_featurefeatures की लिस्ट को एक ही जगह रखता है, बिना तय क्रम के।
minecraft:beards_and_shaversकिसी दूसरे feature, आमतौर पर structure, के लिए समतल और साफ़ जगह बनाने के लिए terrain को भरता या काटता है।
minecraft:cave_carver_featureइस chunk और उसके पड़ोसियों में overworld गुफाएँ खोदता है। pregeneration_pass चाहिए।
minecraft:conditional_listfeatures की लिस्ट को क्रम से जाँचता है और पहला वह रखता है जिसकी condition पास हो।
minecraft:fossil_featurebone blocks और आपके चुने एक ore ब्लॉक से दबा हुआ कंकाल बनाता है।
minecraft:geode_featureपरतदार खोल और बदली जा सकने वाली अंदरूनी भराई के साथ एक गोल geode बनाता है।
minecraft:growing_plant_featureज़मीन से ऊपर या छत से नीचे एक पौधे का कॉलम उगाता है, body और tip के साथ, जैसे cave vines।
minecraft:height_difference_filter_featureकिसी दूसरे feature को तभी रखने देता है जब जगह के आसपास की ज़मीन ऊँचाई की जाँच पास करे।
minecraft:horizontal_tree_decoration_featureकिसी चीज़ की साइड पर random दिशा में एक ब्लॉक चिपकाता है, जैसे log पर shelf mushrooms।
minecraft:multi_block_featureकई हिस्सों से बना एक ब्लॉक रखता है, चाहें तो random दिशा में घुमाकर।
minecraft:multiface_featureपतले ब्लॉक रखता है जो फ़र्श, दीवारों या छत से चिपकते हैं, जैसे glow lichen।
minecraft:multipart_block_column_featureज़्यादा से ज़्यादा चार तरह के ब्लॉक (base, बीच वाला, पतला होता हिस्सा और tip) का कॉलम किसी भी दिशा में लगाता है।
minecraft:nether_cave_carver_featureNether में गुफाएँ खोदता है। pregeneration_pass चाहिए।
minecraft:ore_featureब्लॉक की एक नस रखता है जो सिर्फ़ आपके इजाज़त दिए ब्लॉक को बदलती है। हर ore के लिए इस्तेमाल होता है।
minecraft:partially_exposed_blob_featureकिसी ब्लॉक का एक ढेला रखता है जो ज़्यादातर ज़मीन में दबा होता है, सिर्फ़ एक तरफ़ दिखती है।
minecraft:rect_layoutchunk की सतह को क्षेत्रों के grid से भरता है, हर एक में एक feature, कुछ जगह खाली छोड़कर।
minecraft:scan_surfacechunk की सतह के हर कॉलम पर चलता है और हर एक पर एक feature आज़माता है।
minecraft:scatter_featureकिसी जगह के आसपास दूसरे feature को कई बार रखता है, feature rule जैसी x, y, z ranges के साथ।
minecraft:sculk_patch_featuresculk का एक टुकड़ा फैलाता है। गेम ने अभी तक इसे document नहीं किया है।
minecraft:search_featureजगह के एक बॉक्स में, layer दर layer, ऐसी जगह खोजता है जहाँ दूसरा feature फ़िट हो।
minecraft:sequence_featurefeatures को एक के बाद एक रखता है, हर एक वहाँ से शुरू होता है जहाँ पिछला खत्म हुआ।
minecraft:single_block_featureएक ब्लॉक रखता है, या weighted लिस्ट से random चुना एक, इस नियम के साथ कि वह किस पर टिक सकता है।
minecraft:snap_to_surface_featureदूसरा feature रखने से पहले जगह को सबसे पास वाले फ़र्श, छत या दीवार पर ले जाता है।
minecraft:structure_template_featureबिहेवियर पैक के structures फ़ोल्डर से एक सेव किया हुआ .mcstructure रखता है।
minecraft:surface_relative_threshold_featureदूसरा feature तभी रखता है जब जगह सतह से काफ़ी नीचे हो।
minecraft:tree_featureतने, पत्तों के छत्र और optional जड़ों से पेड़ बनाता है, आकार के ढेरों विकल्पों के साथ।
minecraft:underwater_cave_carver_featureसमुद्र तल से नीचे गुफाएँ खोदता है। pregeneration_pass चाहिए।
minecraft:vegetation_patch_featureज़मीन के एक हिस्से को एक ब्लॉक से ढकता है, फिर उस पर पौधे उगाता है, जैसे moss के टुकड़े।
minecraft:weighted_random_featureलिस्ट से random एक feature चुनता है। बड़े weights ज़्यादा बार चुने जाते हैं।

आगे के कदम

We use cookies to improve your experience and analyse site traffic. Learn more