1. विकी
  2. /एंटिटी
  3. /एंटिटी इवेंट्स

एंटिटी इवेंट्स

Bedrock ऐड-ऑन में एंटिटी इवेंट्स से component groups जोड़ें और हटाएँ, random नतीजे चुनें, steps क्रम से चलाएँ, इवेंट्स को जोड़ें और properties सेट करें।

इवेंट्स से ही मॉब बदलता है। एक बच्चा बड़ा होता है, पालतू भेड़िया बैठ जाता है, creeper फटने की तैयारी करता है: इनमें से हर एक कोई इवेंट है जो component groups को चालू या बंद करता है। यह पेज दिखाता है कि एक इवेंट क्या-क्या कर सकता है, एंटिटी फ़ाइल वाले Ruby Golem के साथ।

फ़ाइलें

इवेंट्स मॉब के बाकी बिहेवियर वाली फ़ाइल में ही, events block में रहते हैं।

बिहेवियर पैक
BP/
  entities/
    ruby_golem.json    <- "events" is inside minecraft:entity

इवेंट कैसा दिखता है

इवेंट एक नाम होता है जिसके साथ actions का एक object होता है। जब इवेंट fire होता है, गेम वे actions चलाता है।

BP/entities/ruby_golem.json (events)
"events": {
  "wiki:become_angry": {
    "add": { "component_groups": ["wiki:angry"] },
    "remove": { "component_groups": ["wiki:calm"] }
  }
}

अपने इवेंट्स को अपना namespace दें, जैसे wiki:become_angry। minecraft: वाले नाम उन इवेंट्स के लिए हैं जिन्हें गेम खुद fire करता है।

सभी actions एक नज़र में

Actionयह क्या करता है
addएक या ज़्यादा component groups चालू करता है
removeएक या ज़्यादा component groups बंद करता है
set_propertydescription.properties में बताई गई property बदलता है
triggerकोई दूसरा इवेंट fire करता है
randomizeWeight के हिसाब से list में से एक entry चुनता है
sequenceList की हर entry ऊपर से नीचे चलाता है
first_validपहली entry चलाता है जिसके filters पास हों, और बाकी छोड़ देता है
filtersActions तभी चलने देता है जब कोई filter पास हो
queue_commandअगले tick पर मॉब की तरफ़ से एक कमांड चलाता है
play_soundमॉब की कोई साउंड बजाता है, जैसे camel पर "saddle"

add और remove

ज़्यादातर काम यही दोनों करते हैं। दोनों एक list लेते हैं, इसलिए आप एक साथ कई groups बदल सकते हैं।

इवेंट के अंदर
"add": { "component_groups": ["wiki:angry", "wiki:glowing_eyes"] },
"remove": { "component_groups": ["wiki:calm"] }
  • Groups उसी फ़ाइल के component_groups में मौजूद होने चाहिए। अगर किसी नाम की spelling गलत है, तो वह group बस नहीं जुड़ता, इसलिए नाम ध्यान से जाँचें।
  • जो group पहले से चालू है उसे जोड़ने पर वह फिर से शुरू होता है। उसके अंदर का timer फिर से शून्य से गिनना शुरू करता है।
  • जो group चालू नहीं है उसे हटाने से कुछ नहीं होता, इसलिए "बस सावधानी के लिए" हटाना सुरक्षित है।

set_property

मॉब की कोई property बदलता है। Property description में declare होनी चाहिए।

इवेंट के अंदर
"set_property": {
  "wiki:mood": "angry",
  "wiki:rubies_eaten": "math.min(q.property('wiki:rubies_eaten') + 1, 5)"
}

Value एक सादी value हो सकती है, या string में लिखा Molang expression। ऊपर की दूसरी लाइन हर बार 1 जोड़ती है, लेकिन कभी 5 से आगे नहीं जाती। आप क्या पढ़ सकते हैं, इसके लिए Molang queries देखें।

trigger: इवेंट्स को जोड़ें

trigger कोई दूसरा इवेंट fire करता है। इससे आप logic का एक हिस्सा एक बार लिखकर बार-बार इस्तेमाल कर सकते हैं।

इवेंट के अंदर
"trigger": "wiki:calm_down"

आप यह भी बता सकते हैं कि इवेंट किसे मिले:

इवेंट के अंदर
"trigger": {
  "event": "wiki:calm_down",
  "target": "self"
}

randomize: एक चुनें

randomize में entries की एक list होती है। गेम उनमें से एक चुनकर उसे चलाता है। हर entry का एक weight हो सकता है: बड़ा weight ज़्यादा बार चुना जाता है। बिना weight वाली entry 1 मानी जाती है।

BP/entities/ruby_golem.json (events)
"minecraft:entity_spawned": {
  "randomize": [
    {
      "weight": 3,
      "trigger": "wiki:spawn_adult"
    },
    {
      "weight": 1,
      "trigger": "wiki:spawn_baby"
    }
  ]
}

हर entry का chance उसका weight भाग कुल weight होता है। यहाँ कुल 4 है, इसलिए वयस्क (adult) का chance 4 में से 3 (75%) है और बच्चे का 4 में से 1 (25%)।

कोई entry बिना actions के सिर्फ़ { "weight": 3 } भी हो सकती है। इसका मतलब है "कुछ न करने का 3 हिस्से chance"।

sequence: कई काम क्रम से करें

sequence हर entry को पहली से आखिरी तक चलाता है। यह तब ताकतवर बनता है जब entries के अपने filters हों: हर entry तभी चलती है जब उसकी जाँच पास हो।

BP/entities/ruby_golem.json (events)
"wiki:fed_ruby": {
  "sequence": [
    {
      "set_property": {
        "wiki:rubies_eaten": "q.property('wiki:rubies_eaten') + 1"
      }
    },
    {
      "filters": { "test": "is_baby", "value": true },
      "trigger": "wiki:grow_up"
    },
    {
      "filters": { "test": "int_property", "domain": "wiki:rubies_eaten", "operator": ">=", "value": 4 },
      "add": { "component_groups": ["wiki:shiny"] }
    }
  ]
}

बदलाव आखिर में लागू होते हैं

जब कोई इवेंट चलता है, तो गेम पहले उसके सारे actions का हिसाब लगाता है और उन्हें मॉब के अगले update पर लागू करता है। इसलिए sequence की बाद वाली entry का filter भी पुरानी values ही देखता है। ऊपर के उदाहरण में, तीसरी entry वह गिनती जाँचती है जो पहली entry के 1 जोड़ने से पहले थी। इसका ध्यान रखें, या logic को दो इवेंट्स में बाँट दें।

first_valid: पहला मेल जीतता है

first_valid दिखने में sequence जैसा है, लेकिन यह पहली ऐसी entry के बाद रुक जाता है जिसके filters पास हों। यह "अगर यह, नहीं तो अगर वह, नहीं तो..." के लिए एकदम सही है। Vanilla गायें इसका इस्तेमाल अपने spawn वाले biome के हिसाब से गर्म या ठंडा लुक चुनने के लिए करती हैं।

BP/entities/ruby_golem.json (events)
"wiki:pick_color": {
  "first_valid": [
    {
      "filters": { "test": "has_biome_tag", "value": "desert" },
      "add": { "component_groups": ["wiki:sandy"] }
    },
    {
      "filters": { "test": "has_biome_tag", "value": "frozen" },
      "add": { "component_groups": ["wiki:icy"] }
    },
    {
      "add": { "component_groups": ["wiki:plain"] }
    }
  ]
}

आखिरी entry में कोई filter नहीं है, इसलिए वह हमेशा पास होती है। यह "नहीं तो" वाले case का काम करती है।

पूरे इवेंट पर filters

आप filters को सीधे इवेंट पर रख सकते हैं। अगर filter fail होता है, तो इवेंट में कुछ भी नहीं चलता।

BP/entities/ruby_golem.json (events)
"wiki:become_angry": {
  "filters": { "test": "is_baby", "value": false },
  "add": { "component_groups": ["wiki:angry"] }
}

अब बच्चे golem कभी गुस्सा नहीं होते। इसके लिए 1.19.20 या उससे नया format_version चाहिए। पुराने version में गेम filter को छोड़ देता है और इवेंट हमेशा चलाता है।

queue_command

एक कमांड ऐसे चलाता है जैसे मॉब ने खुद टाइप की हो। यह अगले tick के अंदर चलती है, जब तक कि मॉब तब तक गायब न हो जाए।

इवेंट के अंदर
"queue_command": {
  "command": "say I am made of rubies!"
}

पार्टिकल, साउंड या tags ("tag @s add wiki:tamed") जैसी छोटी चीज़ों के लिए यह काम का है। किसी बड़ी चीज़ के लिए function या script संभालना आसान होता है।

इवेंट्स जो गेम आपके लिए fire करता है

कुछ इवेंट्स के तय minecraft: नाम होते हैं। अगर आपके मॉब में इनमें से किसी नाम का इवेंट है, तो गेम उसे सही समय पर fire करता है।

इवेंटयह कब fire होता है
minecraft:entity_spawnedजब मॉब पहली बार आता है: अपने आप spawn होना, spawn egg या /summon
minecraft:entity_bornजब मॉब दो माता-पिता के breeding से पैदा होता है
minecraft:entity_transformedजब कोई दूसरा मॉब minecraft:transformation से इसमें बदलता है

ज़्यादातर मॉब minecraft:entity_spawned में ही अपनी शुरुआती हालत सेट करते हैं, जैसे वयस्क और बच्चे में से चुनना।

इवेंट fire करने के दूसरे तरीके

  • कंपोनेंट। कई कंपोनेंट एक इवेंट लेते हैं, जैसे timer, damage_sensor, environment_sensor, interact और ageable।
  • कमांड। /event entity @e[type=wiki:ruby_golem] wiki:become_angry इसे हर Ruby Golem पर fire करता है।
  • Summon करना। /summon wiki:ruby_golem ~ ~ ~ 0 0 wiki:spawn_baby golem को spawn करता है और तुरंत एक इवेंट fire करता है। देखें /summon।
  • Spawn rules। herd condition किसी group के एक हिस्से पर इवेंट fire कर सकती है। देखें Spawn rules।

जब कुछ गड़बड़ हो

आपको क्या दिखता हैसबसे संभावित कारण
कुछ नहीं होताजहाँ इवेंट fire होता है वहाँ उसके नाम की spelling अलग है, या उसे कुछ भी fire नहीं करता
Group नहीं जुड़ताadd में दिया group नाम component_groups में नहीं है
sequence का filter गलत लगता हैयह इवेंट शुरू होने से पहले की values देखता है: ऊपर की चेतावनी देखें
Root filter को अनदेखा किया जाता हैफ़ाइल का format_version 1.19.20 से पुराना है
randomize हमेशा एक ही चुनता हैएक weight बाकियों से बहुत बड़ा है

किसी एक मॉब पर /event से fire करके इवेंट्स जल्दी टेस्ट करें। और मदद समस्या निवारण में है। अगला: Spawn rules।

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