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