创建一个 AzureFlow 物品
本节将以最主流的 RPG 物品为例,引导用户自己开发一个 RPG 武器
Last updated
本节将以最主流的 RPG 物品为例,引导用户自己开发一个 RPG 武器
Last updated
前提条件
已完整阅读前两节的内容
成功安装 AzureFlow 插件并顺利导出默认配置文件夹
熟悉 YAML
AzureFlow 物品库支持多种物品文件的格式及类型,如纯文本型(*.yml
,*.json
等),纯脚本型(*.js
,*.groovy
等)等。
在这里,为了方便初学者理解与使用,我们以yml
配置为例。
首先,在 items
文件夹下创建一个配置文件ElniaSword.yml
,随后输入指令af reload
,会发现配置文件中自动添加了一行配置项
此时,该物品就已经被 AzureFlow 加载到了服务器中,输入指令af get 48047a9d-34a4-e372-3f19-9f7f958d2699
就可以获取到该物品,物品如下图所示:
如图所示,这个物品的名字是 UNKNOWN
,材质是石头,这是 AzureFlow 插件的默认物品样式。
但是,这肯定不是我们想要制作的物品的最终样子,接下来,让我们正式开始配置这个物品。
我们可以通过 display
配置项 设置物品样式。
首先,指定该物品的名字name
为艾尔尼亚之剑,并且为其添加等级后缀,指定等级为 10。
由于这里要制作的物品是一把”剑“,所以设置其材质material
为钻石剑DIAMOND_SWORD
(该材质名基于 Bukkit Material
,可以通过查阅文档获得)。
基于该物品,大致编写相关描述lore
如下:
基于上述思路,编写相应配置如下:
随后,重载配置文件,重新获取该物品,就可以获取到物品如下图所示:
至此,物品的样式初步设置完成,我们已经完成了静态物品的编写。
但其中还有很多问题以及功能没有实现,例如等级需要随机数值,以及一些交互性操作,在稍后的内容中会介绍到。
因为我们在本节中制作的物品可能会存在随机或时间的功能,即要制作一个动态的物品,那么就需要引入一些外置的模块来实现这些功能,引入模块使用的是 import
配置项。
首先,引入随机和时间模块,引用代码如下:
至此,就成功引用了随机和时间模块。随后,便可以该物品的配置文件中,使用随机和时间模块,模块的使用方法遵循EL表达式语法,大致语法即${you expression here}
,当仅使用单变量时,我们可以使用简化的语法,即$variable
直接使用,完整内容请查看章节 高级物品配置#表达式
了解了如何使用模块后,我们便可以直接上手。此处,我们指定物品的等级为随机模块生成的范围在1~100的随机数,编写配置如下:
模块调用成功,此时我们可以多次获取到该物品,看看是否实现效果,获取三次物品如下图所示:
至此,完成了随机模块的调用,但还存在一些问题,在后面的内容中我们会提出并解决。
在上文中,我们通过引入随机模块,实现了数据的随机化,即随机等级,但是当我们如果要在其他地方,如lore
中引用这个等级的随机数值,就会发现需要编写多次${random.int(1, 100)}
,而且最为致命的是相当于会执行多次random.int(1, 100)
,即多个值不一样,例如如下配置文件:
输入指令af get 48047a9d-34a4-e372-3f19-9f7f958d2699
获取该物品,如下图所示:
不难发现,物品名中的等级与lore
的等级不一致,原因就如上文所说。
要解决这个问题,就需要使用到data
配置项,以下将介绍如何使用数据配置项来保存后面要使用到的一些数据。
首先,声明一个等级数据level
,其值与之前的方法一致,通过随机模块产生,配置如下:
定义完等级数据后,我们就可以直接在样式中使用该数据,由于只需要直接引用这个数据,那就可以使用EL表达式的简写形式,即$level
,方法如下:
修改完后保存文件,重载插件并重新获取该物品,得到物品如下:
至此,该物品的配置到此结束。
本章,我们通过尝试制作一个RPG物品,学习了import
、data
、display
配置项。