【第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 添加物品时,使用的函数有两个。
-
- 在游戏中添加物品的函数
- 在库存中添加物品的函数
我会逐一解释每个函数。
在游戏中添加物品的函数
在此使用的函数是 ModPE.setItem。
在开始之前,让我稍微做个背景说明。
BlockLauncher是由Java构建的,并且ModPE脚本的函数也是用Java实现的。
例如,就像这次的ModPE.setItem一样,在ScriptManager.java中实现了。
ModPE类主要用于干预游戏系统,例如添加物品或更改相机等处理都被实现在其中。
其中的setItem方法就是用来添加物品的。
这个ModPE.setItem函数需要以下的5个参数来执行。
-
- 物品ID
-
- 纹理名称
-
- 组别号码
-
- 物品名称
- 堆叠数量
商品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个参数才能执行。
-
- 项目ID
-
- 数量
- 组号
商品编号
由于前述原因,将省略不提。
数目
当将物品添加到库存时,应该选择多少个?
通常根据使用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。
只有这一个变化,是的。
好了,如果还有机会再见吧。