- 致编者:请牢记我们的域名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 行为。一旦生物与目标位置相交,它们就会停止导航。