🖲️自定义事件

说明如何创建一个或多个事件

觉得内置事件太少,没有符合您需求的事件? 在本教程,将叫你创建属于您自己的事件。

package top.shadowpixel.shadowcore.api.function;

在该包中,ShadowCore提供了强大的扩展事件的功能,接下来就让我们来学习一下。

circle-info

准备部分:创建新项目,将ShadowCore作为依赖项导入。

类EventExpansion

这个抽象类是可执行事件的本体,继承这个类需要实现以下的抽象方法:

获取事件的版本

public abstract String getVersion();

获取事件的作者

public abstract String getAuthor();

获取参数列表

public abstract NamedParameterList[] getParametersList();

表示执行该事件需要的参数,可以无参数,一个参数或多个参数。

获取标识符

public abstract String[] getIdentifies();

标识符为事件行里事件的名称,可以有多个。

并且,需要添加一个构造函数

执行事件

有三个方法将会调用方法执行事件,调用哪一个方法将取决于调用时传入的参数,参数必须匹配事件的参数列表。

无参数

单参数

多参数

参数说明:

player - 发出事件的玩家,可为null

victim - 事件被执行的玩家,已包含发出事件的玩家

例如,有一个事件Title

可以看出,参数列表的组合有[], [title]和[title, subtitle, fadein, stay, fadeout]

那么,在调用事件时,就会有以下集中情况

当执行"[title] "时,会调用该方法:

当执行"[title] title=主标题"时,会调用该方法,并传入参数parameter=“主标题”:

当执行"[title] title=主标题 subtitle=副标题 fadein=10 stay=10 fadeout=10"时,会调用该方法,

传入一个map参数:

实例代码

类EventExpansionAddon

事件扩展的主类。创建一个主类,并继承该类,实现下列抽象方法:

然后, 创建一个集合, 将所有事件的类丢进这个集合, 实现方法getEvents() 然后返回。

之后,将项目打包,将得到的jar文件丢到plugins\ShadowCore\Expansions\Functions(可更改)中,使用重载指令,事件就被加载了。

使用监听器

主类中这么写。

标识符重复

可能会出现这么一个问题:事件扩展A和扩展B都有一个标识符为[bubble]的事件,为了分开调用,可以写成[A:Bubble]和[B:Bubble]来分别调用A和B的Bubble事件

Last updated