Molang語言是微軟自己發明的運行時解釋語言,不知道是不是刻意取名很像Mo"j"ang? 允許在Add-on運作時進行計算,例如設立暫時的變數、用math函數進行計算等等,這些資訊都儲存在實體上。
資源包和行為包都可以用,例如 原版行為包中,殭屍行為檔案,經驗值的組件就是用query加上二元判斷式偵測是否被玩家所打倒來決定經驗值給多少:
"minecraft:experience_reward": {
"on_death": "query.last_hit_by_player ? 12 + (query.equipment_count * Math.Random(1,3)) : 0"
}
除了計算外,還有查詢用函數系列「query」可以用來偵測實體狀態,如是否在地上、正在睡覺等等,配合animation_controller進行動畫控制。
例子,原版資源包中,控制實體要套用哪一個動畫的寫法:
"animations": [ { "move": "query.modified_move_speed" } ]
如果要設立變數,需在資源包entity/
資料夾或者行為包entities/
裡註冊實體的檔案加入"pre_animaion":{}
,如:
"pre_animation": [
"variable.tcos0 = (Math.cos(query.modified_distance_moved * 38.17) * query.modified_move_speed / variable.gliding_speed_value) * 57.3;"
]
殭屍預先設立好了「tcos0」這個變數,在後面做動畫時可以直接調用。宣告變數方式一律為variable. xxx
,須注意有些變數是系統預先設立好的,如variable.attack
。