<aside>
“脚本”只是“编写一系列让计算机遵循的指令,以使其执行您希望它执行的操作”的另一种说法。在 Minecraft 中,你可以将“命令方块”理解为极为基础的一种脚本。而 SAPI 能让你满足更高的需求。
为了在教程前期更好的理解 SAPI,下面将 SAPI 和 Minecraft 中存在的命令做类比。
例如,我现在有一个需求:
我需要以自己的身份发送一条“Hello World”的消息。
如果你对 Minecraft 指令熟悉的话,你可能会通过下面的指令实现上面的需求:
/say Hello World
执行命令后,会发现系统以你的身份发送了一条 “Hello World” 的消息。
![一张展现了“[Fanconma] Hello World”的信息的图片](attachment:a9b3d9e9-cbbd-4ac4-9448-97671def2530:image.png)
那么在 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`)