快轉到主要內容

Inner Core Tool Chain開發環境設定教學

分類   遊戲攻略 Minecraft
標籤   InnerCore Mod
🗓️ 民國110年 辛丑年
✍ 切換正體/簡體字
目錄

InnerCore的作者有在Github上釋出Inner Core Tool Chain工具,方便開發者在Windows上「高效率」地開發Inner Core Minecraft模組。

本文介紹如何透過這個工具撰寫和打包JavaScript的InnerCore模組,需要打大量指令。 

1. 前置作業
#

需要的工具:

如果要開發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. 設定專案
#

  1. 複製儲存庫
git clone https://github.com/zheka2304/innercore-mod-toolchain
  1. 切換至該目錄
cd innercore-mod-toolchain
  1. 建立一個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
  1. 接著就會建立一個叫做mymod的資料夾,這就是專案的根目錄。

  2. 切換至專案目錄mymod

cd mymod
  1. 初始化專案
npm init -y
  1. 安裝Typescript
npm install tsc

npm install typescript
  1. 執行toolchains目錄下的bat檔,下載InnerCore的TypeScript定義,這樣輸入函數時就會顯示相關用法:
./download-declartions.bat
  1. 這樣"mymod"根目錄下應該有這些東西了:
mymod
├── make.json
├── package.json
├── src/
└── toolchain/

4. 開始撰寫主程式
#

開啟VS Code,檔案 → 開啟資料夾 → 開啟專案mymod根目錄。

  1. 打包時,腳本會按照根目錄的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,打包輸出時要排除的目錄。

  1. 在目錄src/dev/下新增一個main.ts,這是模組主程式。

建議使用TypeScript (ESNext標準)撰寫,再編譯成JS,因為InnerCore的JS是ES5標準。

main.ts輸入以下內容,這樣會在玩家進入Minecraft世界後顯示"Hello World!“的訊息:

Callback.addCallback("LevelDisplayed", function () {
        Game.message("Hello World!");
});
  1. src/icon.png移動到src/assets/root/,改名mod_icon.png,這是模組的縮圖。

  2. src/assets/root/新增config.json

裡面輸入:

{
  "enabled":true
}

這樣可讓玩家在Horizon中任意啟用或停用模組。

如果要新增物品/方塊,紋理貼圖應放在src/assets/res資料夾。

  1. 到此為止,根目錄/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的畫面。

進入世界,顯示Hello World!訊息。

打包成.icmod
#

執行:

./assemble-release.dat

此操作會將模組的檔案打包成.icmod,檔案位於根目錄,會產生一個"mod.icomod"的檔案。

.icmod是用於發布到官網的格式,其實就是zip。

編譯成.dex檔案
#

此動作非必須,但編譯成Android系統的.dex檔案可增加模組執行效率。

點進去模組頁面,按右上角「編譯」

之後模組資料夾會多出”.dex"資料夾,代表編譯完成。

6. 發表到InnerCore官網
#

投稿到官網,其他玩家就能從模組管理器的「下載模組」處搜尋到你的模組。

官方有權利刪除你的投稿,所以務必寫完整說明。

準備好.icmod檔案,到官網註冊帳號,點右上角自己帳號的名字,按「添加模組集」進行投稿。

可同時提供英文及中文的說明。

Inner Core參考資源
#

相關文章

Horizon Modding Kernel啟動器安裝教學
分類   遊戲攻略 Minecraft
標籤   InnerCore Mod
Minecraft基岩版「Inner Core」模組簡介
分類   遊戲攻略 Minecraft
標籤   InnerCore Mod BlockLauncher
【自製模組】怪物大亂鬥,強制怪物互相攻擊 Mob Battle
分類   遊戲攻略 Minecraft
標籤   InnerCore Mod

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請貼Imgur或Postimages。