- 致编者:请牢记我们的域名wiki.mcbe-dev.net!
- 致编者:欢迎加入本Wiki的官方交流QQ群或Discord服务器!
- 基岩版1.19.31现已发布!(了解更多)
- Inner Core现已支持Xbox模组联机!(了解更多)
- 如果您是第一次来到本Wiki,欢迎注册一个账户
- 点击顶部的“编辑”或“编辑源代码”按钮即可编辑当前页面
- 请知悉:在不登录时也可以编辑和新建页面,但是您当前的IP地址会记录在编辑历史中
教學:編寫腳本API/server-gametest模組基礎
該頁面的編輯正在進行中。 請幫助我們擴充或改進這篇文章。 |
引言[編輯]
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需要您的行為包包含一個結構,讓我們來加入一個這並不會很難。
- 在行為包中新建
structures
資料夾 - 在Minecraft中用結構方塊儲存一個足夠使用的結構
- 匯出結構並放入
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。否則,將引發帶有指定訊息的錯誤。與它類似的方法還有assertBlockPresent
,assertCanReachLocation
,assertBlockState
等。
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 行為。一旦生物與目標位置相交,它們就會停止導覽。