[原创]SAPI 基础教程 —— 第二期 认识 World 与 System 类
本篇教程是之前在论坛维修时写的,可能有点生疏。
前言
上期教程,我们了解了 world 类的 beforeEvent、afterEvent 。实际上,world 同时还有很多方法,那么这些方法有什么用呢?那么就需要认识一下 world 类的功能:
在一个世界中,包括着世界的各种状态、环境,比如世界天数、以及之前的 beforeEvent 等。
本篇教程还会讲述 System类与一些接口,它们的作用、方法将在下面讲述。
注:部分实例来源于官方SAPI实例代码。
World 类
clearDynamicProperties
清除行为包在世界中为世界声明的动态属性。[需要更多解释]
getAbsoluteTime
返回整数,此计数单位是刻,20刻为一秒。
获得自游戏开始的绝对时间。
getAimAssist
返回 AimAssistRegistry 类。[需要更多解释]
getAllPlayers
返回一个内为 Player 类的列表,游戏内所有玩家。
返回一个列表。
getDay
返回整数。
游戏内的天数,新世界从第 0 天开始。
getDefaultSpawnLocation
返回 Vector3 。Vector3 是这个在空间中的坐标,这个返回 Vector3 的方法的变量可获取其各坐标。(xxx.x x坐标,xxx.y y坐标,xxx.z z坐标。)
Minrcraft 的Y坐标是高度。
返回玩家的默认出生点。
getDifficulty
返回一个 Difficulty 枚举。Difficulty有Easy Hard Normal Peaceful四个枚举成员,分别对应着值是 Easy Hard Normal Peaceful
返回此世界游戏难度。
getDimension
参数:dimensionId,字符串,有overworld nether the_end参数。
返回 Dimension 类。
getDynamicProperty
参数:identifier,字符串。
返回字符串、数字、布尔值、Vector3。
获取动态属性。[需要更多解释]
getEntity
参数:id,字符串,实体 ID。
返回 Entity 类。
getMoonPhase
返回枚举:MoonPhase。枚举成员:FirstQuarter, FullMoon, LastQuarter, NewMoon, WaningCrescent, WaningGibbous, WaxingCrescent,WaxingGibbous
返回月亮月相。
getPlayers
返回 Player 类数组。
返回世界的所有玩家。
getTimeOfDay
返回整数。
以刻为时间单位,二十刻为一秒。
返回一天当前的时间。
playMusic
参数:trackId,字符串,音乐/音效ID。
播放音乐。
sendMessage
参数:message。字符串。 或 RawMessage接口
向所有玩家发送消息。
setAbsoluteTime
设置绝对时间(不是一天时间),以刻为单位,一天有 24000 刻。
setDefaultSpawnLocation
参数:Vector3 。
设置玩家默认出生点。
setDifficulty
参数:Difficulty 枚举,见 getDifficulty 方法。
设置游戏难度。
setTimeOfDay
设置一天时间。以刻为单位,一天有24000刻。
切记:不与 setAbsoluteTime 搞混。
System 类
System 类是一个提供系统级事件和功能的类,在上期的 world.beforeEvents 就见过 System 的 run 方法,实际上,System 类也有其他的方法。
system.run
system.run(函数); 亦
system.run(() => {一些语句});
在下一个可用的时间执行指定的函数,通常在 world.beforeEvents 使用。
system.runInterval
system.runInterval(() => {语句}, 整数);
运行间隔,每[整数]刻运行[语句]。实例:
const intervalRunIdentifier = Math.floor(Math.random() * 10000);
system.runInterval(() => {
world.sendMessage("This is an interval run " + intervalRunIdentifier + " sending a message every 30 seconds.");
}, 600); //每三十秒运行语句。
system.runTimeout
system.runTimeout(() => {语句}, 整数)
超时运行,在[整数]刻后运行[语句]。
clearRun
system.clearRun();
清除 system.run 的预先安排的函数运行的执行。
本期出现的接口
本期中,出现的 Vector3 和 RawMessage都属于接口。这些接口实现着更多功能。
Vector3
Vector3 {
x: number;
y: number;
z: number;
}
如果一个方法返回是 Vector3,比如说
let PlayerSpawnLocation = world.getDefaultSpawnLocation;
如果要知道x,就是 PlayerSpawnLocation.x,Y Z亦同。Minecraft 中Y是竖坐标。
RawMessage
{
rawtext?: RawMessage[],
score?: RawMessageScore,
text?: string,
translate?: string,
with?: string[]
}
?为可选,不必写上。
rawtext:一个 RawMessage列表。
text:一个直接显示的字符串。
translate:一个需要在.lang文件中定义的文本。
结语
本期我们知道了 World、System类以及一些接口,为了进一步实现更多内容,我们需要学会更多丰富的类。
请根据官方文档为最新参考源,并善于寻求他人帮助。
本篇教程若有建议,欢迎提出,下期再见!
页: [1]