<aside>

你将会学习到:

什么是 SAPI

“脚本”只是“编写一系列让计算机遵循的指令,以使其执行您希望它执行的操作”的另一种说法。在 Minecraft 中,你可以将“命令方块”理解为极为基础的一种脚本。而 SAPI 能让你满足更高的需求。

与指令的对比

为了在教程前期更好的理解 SAPI,下面将 SAPI 和 Minecraft 中存在的命令做类比。

需求1:输出 Hello World 消息

例如,我现在有一个需求:

我需要以自己的身份发送一条“Hello World”的消息。

如果你对 Minecraft 指令熟悉的话,你可能会通过下面的指令实现上面的需求:

/say Hello World

执行命令后,会发现系统以你的身份发送了一条 “Hello World” 的消息。

一张展现了“[Fanconma] Hello World”的信息的图片

那么在 SAPI 中应该如何实现呢?首先你要理解,上面的指令由于是你自己直接执行的,因此系统知道执行这条命令的对象就是你自己,所以发送的消息包含了你的名字 “Fanconma”。

但由于 SAPI 不能由玩家直接执行,所以系统并不知道 SAPI 代码的执行者是谁。就像你使用命令方块一样,如果你还想让 “Fanconma” 发送 Hello World 消息,你可能得修改你的命令为:

execute as Fanconma run say Hello World

这样会实现与上图同样的效果。类似地,你要在 SAPI 中指定发送消息的对象,所以你编写的代码可能会长这样:

import { world } from "@minecraft/server"

let player = world.getAllPlayers().filter(p => p.name === "Fanconma")[0];
world.sendMessage(`[${player.name}] Hello World`)