《Minecraft脚本引擎指南:从入门到抬棺送走》:【第一章】Hello System!

大家好,我是你们的兔头老鸽乾山瑶,我又来啦(`・ω・´)
本指南基础更新频率为周更(时间有空余的时候可能会一周多更)。
鄙人水平有限,撰写过程中难免出错,还望各位不吝斧正,多多包涵。
本章节所使用的示例源码评论区置顶自取。(即便如此,还是希望各位能对照源码自己手打一遍加深印象=A=)

本章我们将学习如何在行为包中使用脚本引擎并在游戏中输出Hello World字样,同时初步了解系统这一对象的使用。

Hello World!
在本小节中,我们将实现编程学习中最经典的一个例子,在游戏中输出“Hello World”字样。
首先构建一个行为包并配置好,接着在行为包根目录下新建一个名为scripts的文件夹,并在该文件夹下新建client与server文件夹。

client文件夹,顾名思义,储存了在每个独立玩家客户端运行的代码文件。其代码可用于控制和用户的交互(UI),监听处理一些客户端可用事件以及处理一些对特定玩家的操作。
server文件夹则储存了服务端的代码文件。其代码用以控制数据的操作与存储,也就是方块数据的获取与处理、组件的获取与应用、实体的生成及处理、以及服务端可用事件的监听处理等等。
client及server文件夹下皆可储存任意数量的js文件或文件夹,在进入加载了该行为包的存档时会将这两个文件夹中的所有js文件应用至游戏中,这些脚本将同时且独立在游戏中发挥效用。

接着我们在行为包的manifest.json文件中新增以下红框中的模块(module)代码

注意该模块的类型:client_data,该模块用于告诉游戏:“这个包使用了脚本,进存档的时候记得把server和client中的所有脚本文件都加载一下”
接着我们在client文件夹下新建一个js文件,名字无关紧要,能表达该js文件功能即可,这里我们命名为GuideClientScript,并在其中键入以下代码:

这里我们在获取到系统对象后重写了它的initialize回调函数,这是系统被注册后立即执行的第一个回调函数,该函数将在脚本被加载后立即回调,此时世界和玩家都未加载。
类似的,系统对象还提供了其他几种回调函数:

接着我们向initialize函数中键入以下代码:

对于sendMessage("Hello World!!!")方法,其实是我们这里自行封装的一个方法,它大概长这个样子:

完整的代码如下:

上面的代码实现了在玩家进入世界后在消息栏中输出“Hello World!!!”字样
接着我们在游戏中加载该行为包,并添加至某个存档,注意需开启实验玩法脚本才能起作用。

进入游戏后即可看到如下消息

进入游戏后的界面是没有消息提示的,您需打开消息面板才能看到,应该是个特性(老bugjump了),将会在【生命周期】中详述,To Stay Tuned。
至此,您经历了一个完整的脚本开发流程并成功使用脚本在游戏中输出了一行内容为:“Hello World!!!”的文本!

结束了?其实我们还可以接着搞点新花样,server文件夹还没用呢。
同样的,我们在server文件夹下新建一个js文件,名称无特别要求,这里我们命名为GuideServerScript,并在其中键入以下代码:

大致写法和client中的代码类似,这里简单做了注释,在游戏中运行效果如下:

如果你尝试将这两个文件中initialize方法中的内容互换,你会发现他们不起作用了,为什么呢?
下一章【事件系统】里或许有你要的答案。

你知道吗
获取到的system对象是可编辑的,您可以将您的自定义函数或是变量添加至system对象中,并在别处调用(当然只能在同一js文件中使用):
system.pick = function(){}
system.pick();