InnerCore的作者有在Github上釋出Inner Core Tool Chain工具,方便開發者在Windows上「高效率」地開發Inner Core Minecraft模組。
本文介紹如何透過這個工具撰寫和打包JavaScript的InnerCore模組,需要打大量指令。
1. 前置作業#
需要的工具:
- Inner Core Tool Chain ( Github)
- Git for Windows
- Python 3
- Node JS
- ADB (Platform Tools)
- VS Code
- Horizon啟動器
- Windows 10以上電腦
- Android手機,開啟ADB除錯模式
如果要開發C++原生模組,還要用到JDK、NDK,暫且不提。
這個工具只能在Windows執行,不過將bat檔自行改寫成shell也是能在Linux上執行,因為大部分操作還是依賴python完成。
VS Code能在編輯程式時顯示每個函數的定義,或者按Ctrl+Shift+B來執行專案資料夾裡的bat檔。
Windows 10如何用指令執行bat檔:開啟Powershell,cd切換到bat檔所在的資料夾,輸入.bat檔名,例如:./build-scripts-and-resources.bat
2. 設定專案#
- 複製儲存庫
git clone https://github.com/zheka2304/innercore-mod-toolchain
- 切換至該目錄
cd innercore-mod-toolchain
- 建立一個InnerCore專案
python ./toolchain-setup.py mymod
之後終端機會詢問一些問題,可照填:
Enter your pack directory name [Inner_Core]: mymod (資料夾名稱)
Enter project name: My Mod (專案名稱)
Enter Author Name: Ivon (作者)
Enter Project Version: 1.0 (版本)
Enter Project Description: A test mod. (說明)
Do you want to initialize a new native directory? [y/N]: N
Do you want to initialize a new java directory? [y/N]: N
Do you want to clean up the project? [Y/n]: y
接著就會建立一個叫做
mymod
的資料夾,這就是專案的根目錄。切換至專案目錄
mymod
cd mymod
- 初始化專案
npm init -y
- 安裝Typescript
npm install tsc
npm install typescript
- 執行toolchains目錄下的bat檔,下載InnerCore的TypeScript定義,這樣輸入函數時就會顯示相關用法:
./download-declartions.bat
- 這樣"mymod"根目錄下應該有這些東西了:
mymod
├── make.json
├── package.json
├── src/
└── toolchain/
4. 開始撰寫主程式#
開啟VS Code,檔案 → 開啟資料夾 → 開啟專案mymod
根目錄。
- 打包時,腳本會按照根目錄的
make.json
所設定的來建構檔案。剛剛在創建專案時,已經輸入好開發所需的資訊了,因此make.json
裡global的info欄位已填入模組的基本資訊:
{
"global":{
"info":{
"name":"My Mod",
"author":"Ivon",
"version":"1.0",
"description":"A test mod."
},
"api":"CoreEngine"
},
"make":{
"debugAbi":"armeabi-v7a",
"abis":[
"armeabi-v7a",
"x86"
],
"linkNative":[
"minecraftpe",
"innercore",
"nativejs"
],
"excludeFromRelease":[
],
"pushTo":"storage/emulated/0/games/horizon/packs/mymod/innercore/mods/mymod",
"ndkPath":null
},
"resources":[
{
"path":"src/assets/res",
"type":"resource_directory"
},
{
"path":"src/assets/gui",
"type":"gui"
},
{
"path":"src/assets/resource_packs/*",
"type":"minecraft_resource_pack"
},
{
"path":"src/assets/behavior_packs/*",
"type":"minecraft_behavior_pack"
}
],
"sources":[
{
"source":"src/dev",
"target":"main.js",
"type":"main",
"language":"typescript"
},
{
"source":"src/launcher.js",
"type":"launcher",
"language":"javascript"
},
{
"source":"src/lib/*",
"type":"library",
"language":"javascript"
},
{
"source":"src/preloader/*",
"type":"preloader",
"language":"javascript"
}
],
"compile":[
{
"source":"src/native/*",
"type":"native"
},
{
"source":"src/java/*",
"type":"java"
}
],
"additional":[
{
"source":"src/assets/root/*",
"targetDir":"."
}
]
}
resources:[]
代表這個專案,相關紋理的儲存位置。
sources:[]
代表這個專案包含的JS,維持預設。
pushTo
屬性代表的是輸出到手機的目錄。手機Horizon儲存模組的位置通常位於內部儲存空間/games/horizon/packs/Inner_Core/innercore/mods
。
excludeDirectories
,打包輸出時要排除的目錄。
- 在目錄
src/dev/
下新增一個main.ts
,這是模組主程式。
建議使用TypeScript (ESNext標準)撰寫,再編譯成JS,因為InnerCore的JS是ES5標準。
main.ts
輸入以下內容,這樣會在玩家進入Minecraft世界後顯示"Hello World!“的訊息:
Callback.addCallback("LevelDisplayed", function () {
Game.message("Hello World!");
});
把
src/icon.png
移動到src/assets/root/
,改名mod_icon.png
,這是模組的縮圖。在
src/assets/root/
新增config.json
裡面輸入:
{
"enabled":true
}
這樣可讓玩家在Horizon中任意啟用或停用模組。
如果要新增物品/方塊,紋理貼圖應放在src/assets/res
資料夾。
- 到此為止,根目錄
/src下
應該有這些檔案:
mymod/src
├── assets
│ ├── behavior_packs
│ ├── gui
│ ├── res
│ │ ├── items-opaque
│ │ └── terran-atlas
│ ├── resource_packs
│ └── root
│ ├── config.json
│ └── mod_icon.png
├── dev
│ ├── header.js
│ ├── main.ts
│ └── tsconfig.json
├── launcher.js
├── lib
├── native
└── preloader
5. 打包輸出#
所有的.bat檔案都位於根目錄/toolchains
。VScode按Ctrl+Shift+B可執行專案資料夾裡的bat檔。
編譯並複製到手機上測試#
手機插到電腦上,開啟除錯模式。
執行:
./build-scripts-and-resources.bat
此操作會將檔案全部輸出到根目錄/output
,接著把檔案複製到手機上Horizon的目錄,然後Horizon會自行啟動。
在Horizon的本機模組列表就能看到自製模組,以及config的畫面。
打包成.icmod#
執行:
./assemble-release.dat
此操作會將模組的檔案打包成.icmod,檔案位於根目錄,會產生一個"mod.icomod"的檔案。
.icmod是用於發布到官網的格式,其實就是zip。
編譯成.dex檔案#
此動作非必須,但編譯成Android系統的.dex檔案可增加模組執行效率。
之後模組資料夾會多出”.dex"資料夾,代表編譯完成。
6. 發表到InnerCore官網#
投稿到官網,其他玩家就能從模組管理器的「下載模組」處搜尋到你的模組。
官方有權利刪除你的投稿,所以務必寫完整說明。
準備好.icmod檔案,到官網註冊帳號,點右上角自己帳號的名字,按「添加模組集」進行投稿。
Inner Core參考資源#
- 官方文檔
- InnerCore官網
- InnerCore中文論壇
- 聊勝於無的ModPE函數表翻譯:BlockLauncher時代寫的,雖然有些還可以用,但函數名稱大多已經變了。
- (影片) Inner Core Horizon Mods Development