Add-On所有的東西都是資料驅動(data-driven),也就是說幾乎每個生物的行為、事件,Mojang都把它寫成json,並且當做一種可以任意使用的零件,可以改裝在其他生物身上。例如村民會有種田的行為,於是這個組件也可以移植到自己做的生物的身上。
影片解說
因此,在行為包裡面,「組件」就是實體檔案重要的部分。而Mojang另外加入了「組件群組」這個東西。聽起來很繞口?實際上用途是什麼呢?請看以下二個例子:
馬生成時是怎麼決定顏色的?
苦力怕為什麼打火機點了就會爆炸?
從 Minecraft原版行為包範本可知
實體檔案裡面有component
、component_groups
、events這
三類。
在components區塊裡寫的東西遊戲一進入就會載入,而在component_groups裡的通常要透過「事件」也就是events裡來處理,當符合條件時才把組件組裡的組件加到生物身上。
第1個例子,Mojang的寫法是:當馬生成時會在events裡觸發事件,系統會開始抽選。決定馬是什麼顏色的都各用一個組件組表示,例如make_white這個事件,如果抽到了這個,就把組件組裡"base_white"這個組件加到馬身上,白馬就這樣出來了。
(註:馬的顏色其實算是變種(variant),因此加入白色這個組件組時會順便把它的variant標記成0,然後再交由render_controller決定顯示的skin)
第2個例子,苦力怕在互動時用打火機會觸發事件,於是就會將minecraft:start_exploding_forced這個組件組裡的加進去,強迫苦力怕爆炸。