3,417
个编辑
MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针。
如果在编辑的过程中遇到了什么问题,可以去讨论板提问。
为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证。
MCBBS Wiki GitHub群组已上线!
您可以在回声洞中发表吐槽!
服务器状态监控。点击进入
本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>
(// Edit via Wikiplus) |
(→Minecraft事件的注册、取消和优先级: // Edit via Wikiplus) |
||
| 第70行: | 第70行: | ||
那么,如果真的找不到能用的事件,怎么办?尽管Forge的事件非常多,有的甚至做到了仅仅针对某个单一的游戏元素(如RenderItemInFrameEvent,这个事件影响物品在展示框中的渲染情况),但任何API都做不到完全满足使用者的需求。Forge官方早在多年前就停止了对1.12 Forge的维护,所以指望着去Pull Request是不行了。这个时候,你就只能考虑使用一些黑魔法了。 | 那么,如果真的找不到能用的事件,怎么办?尽管Forge的事件非常多,有的甚至做到了仅仅针对某个单一的游戏元素(如RenderItemInFrameEvent,这个事件影响物品在展示框中的渲染情况),但任何API都做不到完全满足使用者的需求。Forge官方早在多年前就停止了对1.12 Forge的维护,所以指望着去Pull Request是不行了。这个时候,你就只能考虑使用一些黑魔法了。 | ||
=== 事件的优先级 === | |||
我们可以为事件监听方法指定被调用的优先级,因为@SubscribeEvent注解中有一个参数priority,类型为EventPriority,是个枚举类,有五个实例:HIGHEST、HIGH、NORMAL、LOW、LOWEST。各自的含义应该不需要笔者多说。priority这一参数默认为NORMAL。 | |||
=== @Cancelable === | |||
这个注解用于修饰一个事件类:该事件可被取消。被取消的事件对应的其他尚未被调用的事件监听方法,则不会被调用,所以这个最好搭配着EventPriority来操作。 | |||
另外,@SubscribeEvent还有一个参数:boolean receiveCanceled,默认为false,设定为true则又可以让被取消的事件继续发挥作用。 | |||
=== @HasResult === | |||
这个注解同样用于修饰一个事件类,表明:该事件有“结果”——没错,事件监听方法一定为void,但是事件本身可以有结果——Event.Result这个枚举类中的三个实例:ALLOW、DEFAULT和DENY。它们的含义随着具体事件的类型而变化。这个说实话,不太常用,可以直接忽略。 | |||