【第1章】添加物品【ModPE脚本】

最初的时候

上次我介绍了【第0回】Hello, world【ModPE Script】的相关内容。
这次我想尝试在Minecraft PE的世界中添加物品。
老实说,我有些纠结。
是要做成方块还是物品呢。
根据ID来说,方块的ID范围更年轻一些(0~255),所以我倾向于选择方块,但是从撰写文章的角度考虑,选择物品会更容易一些。
看来内心软弱的哥哥没能克服麻烦带来的烦恼。
稍微离题了一下,现在来马上添加吧。

创建一个作业文件夹

只要使用香草的纹理,就无需担心,但如果使用自定义纹理,则需要创建指定的文件夹。请按照以下方式创建一个合适的文件夹。

+-assets
| `-images
|   +-items-opaque
|   `-terrain-atlas
`-script.js

请将创建的物品纹理移动到assets/images/items-opaque的直接下层。
现在暂时完成了准备工作。
接下来进入下一步。

在实际添加之前

实际上是要添加物品,但在那之前需要准备一些东西。
如果你是曾经玩过Minecraft PE的用户,你应该知道吧?
是指材质。
是用来让用户能够看到物品的图像文件。
不一定非要自己创建,可以加载原版中已有的图像,但感觉有点儿低劣,对不对?
毕竟还是想自己制作对吧?
嗯,就是这样,懂了吗?

那么,我们要制作这个纹理,如果您曾经玩过游戏,应该知道了吧?
关于纹理的分辨率问题。
Minecraft PE的默认纹理是16×16。
最近,它似乎也支持高分辨率,但在ModPE Script中,16×16是基本设置。
那么我们赶快开始制作吧。
找一个合适的绘图应用,我喜欢使用像素艺术编辑器。
它的操作界面简单易用,很方便的。
嗯,关于选择应用的问题就随您自己的判断去安装并启动它吧。
这次我不会介绍应用的使用方法,您只需要创建一个16×16像素的画布,然后绘图并保存到设备上即可。
这次我们先随便取个名字,命名为sample_0.png,并放在assets/images/items-opaque的根目录下。
如果有时间的话,您也可以额外保存另外一张图片,命名为sample_1.png,后面的说明会更容易理解一些。

编辑 script.js

在给 Minecraft PE 添加物品时,使用的函数有两个。

    1. 在游戏中添加物品的函数

 

    在库存中添加物品的函数

我会逐一解释每个函数。

在游戏中添加物品的函数

在此使用的函数是 ModPE.setItem。
在开始之前,让我稍微做个背景说明。

BlockLauncher是由Java构建的,并且ModPE脚本的函数也是用Java实现的。
例如,就像这次的ModPE.setItem一样,在ScriptManager.java中实现了。
ModPE类主要用于干预游戏系统,例如添加物品或更改相机等处理都被实现在其中。
其中的setItem方法就是用来添加物品的。

这个ModPE.setItem函数需要以下的5个参数来执行。

    1. 物品ID

 

    1. 纹理名称

 

    1. 组别号码

 

    1. 物品名称

 

    堆叠数量

商品ID

这个很简单。
这是要添加的项目的ID。
在我的环境中,可以使用256~4095。
最近听说上限已经放宽了,但我不知道那些事情。
如果传递的值超出范围或不是整数,当然会出现错误。
让我们遵守规格。
如果你关心参数的类型,可以查看ScriptManager.java。

纹理名称

这是一个给添加项目分配纹理名称的代理。它将成为存放在assets/images/items-opaque中的图像文件的名称,但不需要包含文件扩展名。此示例的文件名是sample_0.png,但传递的参数只需是sample。原因是与第3个参数的组编号相关。

团队编号

这个大概是最难理解的参数了。
如果要进行最简单的解释的话,如果没有特别的原因,就设为0吧。
如果需要使用这个参数的情况,比如在添加具有相同ID但多个颜色的物品(如染料等)时会用到。
但是在这种情况下,图片文件的名称会按照”名称_组号.png”的形式命名,比如”sample_1.png”。

商品名称

这已经是文字的本源了。
因此不需要解释。
如果要提出注意事项,要记住对Minecraft PE的指令进行适应。
指令使用半角空格来区分语法。
如果项目名称中有半角空格,将导致指令出现问题。

堆栈数量

这也是字面上的意思对吧。
这个选项指定了该物品最多可以堆叠多少个。

添加项目到库存的函数

接下来,我们需要在创造模式的库存中添加物品。
如果不这样做,在创造模式下玩游戏时,库存将变为空。

这里使用的函数是Player.addItemCreativeInv。
虽然很长,但只要注册到IME中,应该就没有问题。
这个函数被实现在Player类中。
Player类正如其名,实现了与玩家相关的处理,如更改体力、更改物品等。

这个Player.addItemCreativeInv函数需要以下3个参数才能执行。

    1. 项目ID

 

    1. 数量

 

    组号

商品编号

由于前述原因,将省略不提。

数目

当将物品添加到库存时,应该选择多少个?
通常根据使用ModPE.setItem指定的堆叠数来确定。

团队编号

由于前面已经提及,这里将进行省略。

根据上述两点,我们来编写script.js文件。

(function(){
    "use strict";
    const sample=1000;
    ModPE.setItem(sample,"sample",0,"Sample",64);
    Player.addItemCreativeInv(sample,64,0);
})();

相当简单吧。
如果您有编程经验,您也可以理解将ID存储在变量中的原因,对吧?

那么,只需这几个步骤就可以成功添加物品。

最终处理

到目前为止,ModPE脚本已经完成了。
但是,还有最后一步要处理。

我确实制作了用于物品的图像,但只是制作了而已。
仅有这个是无法加载的。
如果能自动加载就方便了。
嘛,抱怨也无济于事,赶快结束吧。
话虽如此,只需要压缩文件夹。

请把assets文件夹压缩成.zip格式。
可以使用文件浏览器进行压缩。
我使用的是ES文件浏览器。
以前有一些可疑的传言,但最近已经平息了。
嗯,如果你不相信它,可以使用任何其他应用。
无论是在电脑上压缩还是使用其他应用程序。
关键是将所需的文件/文件夹压缩成.zip格式即可。

是的,压缩后,工作完成了。
将其加载到BlockLauncher中后,请先应用纹理,然后加载ModPE脚本。
进入世界并打开库存,应该会添加物品。

最后

我以前从来没有想过只是添加一个项目,竟然要写这么多。
通常我都是流水线地完成这些任务。
但如果让我口头解释,就会变得困难。
关于我们未来的说明,我只会有一个变更。
以前我们一直用长表达ModPE Script,现在我们会改为简称ModPE。
只有这一个变化,是的。
好了,如果还有机会再见吧。