教學:編寫腳本API/server-gametest模組基礎

出自Minecraft基岩版开发Wiki
server-gametest模組基礎
系列教學
所屬系列
難易度
初級
實踐裝置
WindowsAndroid
所需軟件

引言[編輯]

server-gametest模組是 server 模組的一個支撐模組,它擁有強大的功能,我們將幫助您了解和使用此類。

開始[編輯]

匯入[編輯]

在確保你已經匯入了server模組的前提下,在清單檔案中先匯入server-gametest模組(參見 Tutorial:編寫腳本API/開始之前),像下面這個樣子:

{
    "module_name": "@minecraft/server-gametest",
    "version": "1.0.0-beta"
}

接下來你同樣只需要一行就可以匯入server-gametest:

import * as gameTest from '@minecraft/server-gametest';

使用[編輯]

要使用gametest需要您的行為包包含一個結構,讓我們來加入一個這並不會很難。

  1. 在行為包中新建 structures 資料夾
  2. 在Minecraft中用結構方塊儲存一個足夠使用的結構
  3. 匯出結構並放入 structures 資料夾中
   更具体的参见 制作附加包/结构结构

註冊生成[編輯]

接下來我們來註冊GameTest。

gameTest.register(
    "wiki",    // 这个GameTest所属的Class
    "name",    // 这个GameTest的名称
    (test) => {     // 所需执行的操作
        // ...
    }
);

上面便是基本的註冊方法,這個函式最後會傳回一個RegistrationBuilder。

RegistrationBuilder 類[編輯]

這裡接下來介紹一些基礎方法,可能會在接下來的過程中用到。 batch(batchName: string): RegistrationBuilder


maxTicks(tickCount: number): RegistrationBuilder

這是必須的。設定測試在超時和失敗之前將執行的最大刻度數。 structureName(structureName: string): RegistrationBuilder

設定要使用的測試的結構的名稱。例如,「xyz:bar」 對應BP/structures/xyz/bar.mcstructure。

tag(tag: string): RegistrationBuilder

向測試加入標記。

gameTest.register(
    "wiki",
    "name",
    (test) => {
        // ...
    }
)
    .maxTicks(410)
    .structureName("wiki:test");

測試工具[編輯]

這是 GameTest 的主類。簡單點介紹,這就是 gameTest.register() 第3個參數傳過去的第1個參數 test。

這裡先說明一下gameTest.register()的測試函式在第1次執行完成後就不與外部連接了,因此傳遞的test是唯一一個可以讓我們執行操作的工具。

接下來我們來介紹一些test類提供的方法。

assert

測試 condition 中指定的條件是否為 true。否則,將引發帶有指定訊息的錯誤。與它類似的方法還有assertBlockPresentassertCanReachLocationassertBlockState等。

fail(errorMessage: string): void

將目前測試標記為失敗情況。

getDimension(): minecraftserver.Dimension

用於取得維度,它可以接觸到一部分外部的內容,從而實現更多效果。

print(text: string): void

向所有玩家傳送指定文字。

spawnSimulatedPlayer(blockLocation: minecraftserver.Vector3, name?: string, gameMode?: minecraftserver.GameMode): SimulatedPlayer

生成模擬玩家。

spawnWithoutBehaviors(entityTypeIdentifier: string, blockLocation: minecraftserver.Vector3): minecraftserver.Entity

生成沒有任何AI的實體。

startSequence(): GameTestSequence

開始一個測試序列。

succeed(): void

將目前測試設定為成功。

walkTo(mob: minecraftserver.Entity, blockLocation: minecraftserver.Vector3, speedModifier?: number): void

強迫 mob 走到特定位置。通常與 .spawnWithoutBehaviors 等方法結合使用,以獲得更可預測的 mob 行為。一旦生物與目標位置相交,它們就會停止導覽。

測試序列[編輯]

模擬玩家[編輯]

引用[編輯]