本帖最后由 小默米 于 2022-5-14 18:31 编辑


● 前言


为什么要写本篇教程: 很多服主对EcoEnchants这款插件的理解仅仅停留在了那些200+预制附魔上,而EcoEnchants真正的魅力在于他提供了一套比较完善的效果库和触发器,这使得更多自定义成为可能
本教程适用人群: 不会编程但是想尝试使用EcoEnchants插件进行自定义的服主,并且已经熟悉EcoEnchants插件的基本使用方法
学习本教程所需的条件: 手,脑子(会查Wiki,懂点英语或者使用翻译软件,有新奇的想法)
自定义附魔customenchants.yml与Extension附属的区别: ①前者不需要会编程,后者需要编程知识②前者只能使用eco库的预制效果,而后者有更大的自由度


敲黑板

查询效果请上Wiki
https://plugins.auxilor.io/effects/configuring-an-effect
请学会使用“Ctrl+F”查找你所需的内容



█  案例一:
服主A: 我正在开发一个RPG服务器,服务器里的武器伤害数值都很高(一刀999),而原版附魔的锋利加成实在太少,我需要一个能根据百分比加成伤害的附魔!
小默米: So easy!

服主A: 这么快!是怎么做到的? 小默米:配置前半部分相信你已经很熟悉啦,我们重点来看效果系统部分!先放出配置文件~
第一讲:初识效果系统
这是一个效果的基本格式:

id: xxx
args:
xxx: xxx
triggers:
- xxx
filters:
xxx:
- xxx
conditions: []
mutators:
- id: xxx
args:
xxx: xxx

▶ id: 效果id,你可以在 这里 找到效果id及其相应参数
▶ args: 效果参数,必须与id相对应,而且必须将Wiki中效果ID对应的每个参数都填在args:下,否则会报错!除此以外还有一些额**数,不过这个对目前的你来说还是太早啦,我们慢慢来学习吧!
▶ triggers: 激活此效果的触发器。如果效果是永久性的(比如穿上一个靴子提供永久的速度提升),则删除triggers

范例一:提升近战攻击伤害(需要触发器)
- id: damage_multiplier
args:
multiplier: 1.05
triggers:
- melee_attack
范例二:增加玩家生命再生速度(无需触发器)
- id: regen_multiplier
args:
multiplier: 1.08

▶ filters: 针对触发器的筛选列表,你可以在 这里 查找筛选器,例如挖掘方块需要筛特定方块,近战攻击需要筛选实体,当然筛选器也并不是必须的。

范例一:筛选方块钻石矿和远古残骸
filters:
blocks:
- diamond_ore
- ancient_debris

范例二:筛选造成伤害的原因中毒和凋零(更多的伤害原因请参考SpigotAPI)
filters:
damageCause:
- poison
- wither

范例三:筛选造成伤害的实体目标为史莱姆、岩浆史莱姆与苦力怕
filters:
entities:
- slime
- magma_cube
- creeper

▶ conditions: 一些其他使用此效果的条件,你可以在 这里 查看所有的条件
范例一:此附魔生效需要玩家血量高于50%
conditions:
- id: above_health_percent
args:
percent: 50

范例二:此附魔生效需要玩家在Y轴64格以下
conditions:
- id: below_y
args:
y: 64

▶ mutators: 其他变量,可以转移效果生效的目标等
范例一:效果生效的对象为玩家自身
mutators:
- id: player_as_victim



到此为止,你已经掌握了效果的基本格式,现在来完成一道简单的课后习题吧!
本节习题
服主A: 没错,我又来了!!!服务器现在需要一个新附魔!我觉得他的名字应该霸气一点,叫末影杀手!顾名思义
对末影螨,末影人,末影龙都要造成更高的伤害!对了,别忘了我需要按照百分百加成伤害!最高5级,每级增加15%伤害。
不只是剑,弓也需要这个强力的附魔!我在这等着你的好消息~

习题参考答案:

完成作业后一定要自我检查一遍哦!
也可以自己尝试一些其他的效果类型
我们下一节再见~




█  案例二:
服主B: 我最近看到一个不错的负魔书插件,但是貌似和EcoEnchants不太兼容,我该怎么办,我能不能自己写一些诅咒类型的附魔书!
小默米: 那还不简单,先给你来个写个 锋利,不保护,不力量 吧!不过我相信这个交给你屏幕前的你都可以做到!那咱们先放着这些附魔,来尝试写个 不火矢 吧!射出的弓箭是在烧自己!什么鬼???

第二讲:对象转移与连锁效果
通常来说,一个效果作用的对象是被攻击的生物,被挖掘的方块,而有时候我们需要效果生效的目标是玩家,那我们该怎么做呢?

效果配置中的 mutators: 就为这一切提供了可能
让我们来看看 不火矢 是怎么写出来的吧!

本节习题
服主B:小伙子我看你有两下子啊,不妨再帮我写亿点点附魔呗,要求是这样的:
Eco自带的粒子附魔都是在被攻击的对象,被挖掘的方块附近产生的,能不能在玩家身上产生粒子特效呢?
特殊要求:粒子效果必须围绕玩家一圈,粒子类型不限
(提示:尝试一下使用 连锁效果与对象转移相结合 吧,如果实在不会就偷偷看一眼答案啦!)

什么是连锁效果啊???没教过啊!不要着急,先试着自己摸索一下吧

习题参考答案:


相信你现在对连锁效果和目标转移已经有了初步的概念!
我们下一节再见!



█  案例三:
服主C: 我想给我的附魔增加一下趣味性!比如有个附魔叫做“魔力 锋利 ”,它比锋利更加强大,但是我并不希望玩家获得这个附魔后就能一直强大!是的,这个附魔会限制玩家在一定时间内的使用次数,玩家每次造成伤害都会减少此附魔的魔力值,而魔力值的恢复需要时间。 小默米: Eco系列插件自带的点数系统能够满足你的要求!
第三讲:点数系统
这是Eco最难的一部分了!相信你学会点数系统的使用后一定能够驾驭Eco全系列插件

{/}
首先我们需要有明确的思路,就像编程一样,设计一个点数运作的流程!

①行为:攻击时候扣除1魔力值   条件:魔力值大于0
②行为:攻击伤害提升至9.9倍   条件:魔力值大于0
③行为:每隔10秒回复1魔力值   条件:魔力值小于10


接下来就是实现这个过程的环节,我们直接来看配置文件部分



我相信屏幕前的你很容易就读懂了这个配置文件的运作方式!那么来试试课后习题吧!





本节正在施工中。。。
未完待续