MinecraftAddon腳本引擎:從入門到入土【第一節(jié)】
本教程將會有MinecraftAddon附加包腳本引擎的基礎(chǔ)教程
在觀看本教程前,請確保滿足以下條件:
●已熟練掌握Addon(除腳本引擎以外內(nèi)容)
如果你已經(jīng)會熟練使用Molang表達(dá)式、動畫控制器、濾器、實(shí)體觸發(fā)器、實(shí)體事件等內(nèi)容的話,學(xué)習(xí)腳本引擎會更加簡單輕松
●了解JavaScript基礎(chǔ)語法
如若不會,不要指望在以后的教程中你能聽懂
●有足夠的時(shí)間來學(xué)習(xí)

由于各種各樣的因素,本教程更新時(shí)間會不怎么穩(wěn)定,還請諒解

什么是Add-on?
附加包(Add-on)是朝向Minecraft全版本自定義的堅(jiān)實(shí)一步,它受Mojang官方支持。目前,還只有基巖版的平臺支持附加包(包括Windows10、安卓、IOS等平臺)
附加包允許玩家更改或新增游戲玩法內(nèi)容,就比如自定義方塊、物品、實(shí)體、粒子、群系、生成規(guī)則等等。附加包包括行為包與資源包兩部分,只有其中一部分都不算是附加包。
腳本引擎
腳本引擎(Script Engine,以下簡稱為“SE”)使用的語言是JavaScript。
玩家可以編寫Javascript腳本,與行為包捆綁在一起來監(jiān)測游戲中的事件(event)、對游戲中的事件做出回應(yīng),獲取、修改實(shí)體的組件的數(shù)據(jù),以及影響Minecraft的其他方面。
對于帶腳本引擎的Addon附加包可稱為“SEMOD”,SEMOD相對于網(wǎng)易我的世界中國版的PYMOD,兩者都只是Addon的增量而不是Addon的替代品
(一個(gè)題外話:由于SEMODAPI接口目前非常非常非常非常...的少導(dǎo)致還不如網(wǎng)易的PYMOD,也導(dǎo)致沒有多少人制作)
需要注意的幾點(diǎn)
1.Minecraft腳本引擎為官方內(nèi)容
2019年4月17日 腳本引擎首次出現(xiàn)于MinecraftBE1.9.0.3beta
BE/PE開發(fā)者在受夠了MODPE以及ICMOD等第三方MODAPI,也終于迎來了官方的MODAPI!
2.Minecraft腳本引擎僅支持WIndows10平臺
官方目前只對Windows10平臺開放了腳本引擎,其余平臺均無法加載帶腳本引擎的Addon。
安卓可以使用方塊啟動器來加載,但遺憾的是,方塊啟動器目前僅支持1.14而不支持1.16(如果作者哪天更新了記得叫我)
這是腳本引擎在出現(xiàn)約一年半多的時(shí)間后依然不怎么受歡迎的重要原因之一
接口少,門檻高,適用人群少
開發(fā)測試
在?games/com.mojang/behavior_packs 目錄下存著所有行為包。但這并不是存放正在開發(fā)測試的行為包的地方,我們應(yīng)該存放在development_behavior_packs文件夾內(nèi)
與普通文件夾不同,development_behavior_packs內(nèi)的行為包被裝載到地圖內(nèi)時(shí)會直接使用development_behavior_packs文件夾內(nèi)的行為包,而不是將行為包復(fù)制到地圖的behavior_packs目錄下。遇到bug是很正常的事,每次修復(fù)好bug后都需要進(jìn)行手動更新地圖內(nèi)的行為包(自己重新復(fù)制一遍或者新建地圖)十分麻煩。而這個(gè)因?yàn)槭侵苯邮褂玫亩皇窍茸詣訌?fù)制一遍,所以每次進(jìn)入地圖時(shí)都會自動更新一次地圖內(nèi)裝載的行為包。
且無需重進(jìn)游戲,只要重進(jìn)一下地圖既會更新行為包。
開發(fā)工具
文本編輯器
推薦使用VSCode、N++等十分優(yōu)秀的文本編輯器
基本構(gòu)造

pack_icon.png為包的封面,推薦為正方形,分辨率最小16x 最大1024x
manifest.json為包的描述文件

需要注意一點(diǎn),與普通行為包不同,type的值應(yīng)該為"client_data"而不是"data"。表示這個(gè)包有腳本引擎內(nèi)容,加載時(shí)一并加載一下script文件夾內(nèi)的腳本文件。
scripts為存放腳本文件的文件夾
scripts-client為存放客戶端腳本文件的文件夾
scripts-server為存放服務(wù)端腳本文件的文件夾
新建文件
可在client/server文件夾內(nèi)或其子文件夾內(nèi)新建腳本文件
后綴名為.js,文件名字不建議使用中文與中文字符,建議使用純英文或英文+英文符號。
1.獲取系統(tǒng)對象
接下來正式開始教程

系統(tǒng)對象(System object),以上既為一個(gè)客戶端的示例
客戶端為client,服務(wù)端則是server:
server.registerSystey(0, 0);
只要不是特殊情況 后面寫0即可。
2.系統(tǒng)初始化
這是系統(tǒng)注冊后立即調(diào)用的第一個(gè)方法。一旦腳本在世界開始加載,它就會運(yùn)行。

你可以用來注冊自定義組件和事件,注冊事件檢測器等。
此函數(shù)應(yīng)用于初始化變量和設(shè)置事件檢測器。此時(shí),請不要嘗試生成任何實(shí)體或與之交互!
3.系統(tǒng)更新
此方法在每個(gè)游戲刻(1/20S)時(shí)調(diào)用一次。服務(wù)器和客戶端以每秒20次的速度運(yùn)行。這是獲取、檢查和響應(yīng)組件更改的好地方。

4.系統(tǒng)關(guān)閉
當(dāng)腳本引擎關(guān)閉時(shí),將調(diào)用此方法。

對客戶端來說,這是該玩家離開這個(gè)世界的時(shí)候;對于服務(wù)端來說,這是在最后一個(gè)玩家離開這個(gè)世界的時(shí)候。
開始測試
制作完后可將包壓縮后綴名改為.mcpack接著雙擊即可導(dǎo)入游戲測試

如果喜歡本系列教程請務(wù)必一鍵三連點(diǎn)個(gè)贊和收藏加關(guān)注