教程:编写脚本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 行为。一旦生物与目标位置相交,它们就会停止导航。

测试序列[编辑]

模拟玩家[编辑]

引用[编辑]