本帖最后由 666885489 于 2021-4-11 11:08 编辑 
复制代码
前言: 
这个前置最初的定位是为Crafting Dead(行尸走肉) MOD 服务的
但是考虑到不如直接搭建一个Forge事件桥,让插件监听到MOD的事件
这个严格来说不是插件,而是MOD,但是确实是为Bukkit插件服务的
优势:
完全开源,帮助你理解其中原理,帮助开发
傻瓜式包装,简单易学且实用
监听器由纯ASM实现,避免产生过多的性能损耗,尽量提高效率
监听目标包装使用Cglib实现,只需写几个抽象方法即可,不必手动反射获取字段/方法,增加代码可读性
常用的Minecraft PlayerEntity->Bukkit Player等转换方法已经包装,需要其他可以随时提出Issue
实例/使用方法:
- public final class Test implements EventHolder<Test.LivingEventObject> {
 
-     public Test() {
 
-         register(EventBridge.builder().source("net.minecraftforge.event.entity.living.LivingEvent").build());
 
-     }
 
-     
 
-     @Override
 
-     public void handle(EventWrapper<Test.LivingEventObject> eventWrapper) {
 
-         LivingEventObject eventObject = eventWrapper.as(LivingEventObject.class);
 
 
-         System.out.println(
 
-                 "监听到来自实体: " + eventObject.getEntityLiving().getName()
 
-                 + " 的事件."
 
-         );
 
-     }
 
-     
 
-     public static abstract class LivingEventObject extends EventWrapper.EventObject {
 
-         public abstract LivingEntity getEntityLiving();
 
-     }
 
- }
然后只需在任意地方new Test()即可,没错,就是这么简单
另一种注册方式: EventRegistry#register
他会完成一切工作,生成监听代理类,注册监听代理,执行handle方法,生成动态代理,完成方法映射...
你也可以使用自带的反射方法, 如ObjectWrapper#invoke
反射工具: Reflection
对象转换工具: WrapperTransfermer
开源/下载:
注意: 使用时需要将文件放入mods文件夹,而不是plugins文件夹
推荐[Github 实时推送]: https://github.com/Liangbai2333/forge-event-bridge/releases
站内: 
1.15.2-1.16.5: 
 forge-event-bridge-1.15.2-1.16.5-1.3.0.jar
(353.82 KB, 下载次数: 95)
forge-event-bridge-1.15.2-1.16.5-1.3.0.jar
(353.82 KB, 下载次数: 95)
 
1.12.2: 
 forge-event-bridge-1.12.2-1.0.jar
(349.43 KB, 下载次数: 26)
forge-event-bridge-1.12.2-1.0.jar
(349.43 KB, 下载次数: 26)
 
以GPLv3.0协议开源,若你使用或参考Forge-Event-Bridge的源代码,
你的项目必须以GPLv3.0协议开源,并标明原作者。
开源地址 (1.12.2): https://github.com/Liangbai2333/forge-event-bridge-1.12.2
更新记录
小白不会排版请见谅
注: 本人更新时间较少,所以缓慢更新请理解(中考
这模组有什么用吗