[前置]Forge-Event-Bridge —— 在插件中优雅且高效的监听Forge事件[1.12.2-1.16.5] - 服务端插件 - Minecraft(我的世界)中文论坛 -.html

[前置]Forge-Event-Bridge —— 在插件中优雅且高效的监听Forge事件[1.12.2-1.16.5] - 服务端插件 - Minecraft(我的世界)中文论坛 -

Minecraft(我的世界)中文论坛

 找回密码
 注册(register)

!header_login!

只需一步,立刻登录

查看: 3030|回复: 1
打印 上一主题 下一主题

[原创插件] [前置]Forge-Event-Bridge —— 在插件中优雅且高效的监听Forge事件[1.12.2-1.16.5]

[复制链接]
666885489 当前离线
积分
2770
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2015-5-21
查看详细资料
头像被屏蔽

来自:江苏

跳转到指定楼层
楼主
发表于 2021-3-20 20:55:22 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
服务端插件
英文名称:Forge-Event-Bridge
中文名称:Forge事件桥
插件来源:原创
适用服务端:Cauldron |其它| 
插件类型:前置API 
语言支持:简体中文 
适用版本:1.16.X 1.15.X 1.12 
前置Mod|插件:无前置插件
下载地址:https://github.com/Liangbai2333/forge-event-bridge/releases
原帖地址:-
插件Logo:-
插件简介:-

您尚未登录,立即登录享受更好的浏览体验!

您需要 登录 才可以下载或查看,没有帐号?注册(register)

x
本帖最后由 666885489 于 2021-4-11 11:08 编辑


前言:

这个前置最初的定位是为Crafting Dead(行尸走肉) MOD 服务的

但是考虑到不如直接搭建一个Forge事件桥,让插件监听到MOD的事件

这个严格来说不是插件,而是MOD,但是确实是为Bukkit插件服务的



优势:

完全开源,帮助你理解其中原理,帮助开发

傻瓜式包装,简单易学且实用

监听器由纯ASM实现,避免产生过多的性能损耗,尽量提高效率

监听目标包装使用Cglib实现,只需写几个抽象方法即可,不必手动反射获取字段/方法,增加代码可读性

常用的Minecraft PlayerEntity->Bukkit Player等转换方法已经包装,需要其他可以随时提出Issue



实例/使用方法:
  1. public final class Test implements EventHolder<Test.LivingEventObject> {
  2.     public Test() {
  3.         register(EventBridge.builder().source("net.minecraftforge.event.entity.living.LivingEvent").build());
  4.     }
  5.    
  6.     @Override
  7.     public void handle(EventWrapper<Test.LivingEventObject> eventWrapper) {
  8.         LivingEventObject eventObject = eventWrapper.as(LivingEventObject.class);

  9.         System.out.println(
  10.                 "监听到来自实体: " + eventObject.getEntityLiving().getName()
  11.                 + " 的事件."
  12.         );
  13.     }
  14.    
  15.     public static abstract class LivingEventObject extends EventWrapper.EventObject {
  16.         public abstract LivingEntity getEntityLiving();
  17.     }
  18. }
复制代码
然后只需在任意地方new Test()即可,没错,就是这么简单
另一种注册方式: EventRegistry#register
他会完成一切工作,生成监听代理类,注册监听代理,执行handle方法,生成动态代理,完成方法映射...
你也可以使用自带的反射方法, 如ObjectWrapper#invoke
反射工具: Reflection
对象转换工具: WrapperTransfermer



开源/下载:
注意: 使用时需要将文件放入mods文件夹,而不是plugins文件夹
站内:
1.15.2-1.16.5: 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, 下载次数: 27)

以GPLv3.0协议开源,若你使用或参考Forge-Event-Bridge的源代码,

你的项目必须以GPLv3.0协议开源,并标明原作者。



更新记录




小白不会排版请见谅


注: 本人更新时间较少,所以缓慢更新请理解(中考

评分

参与人数 2人气 +3金粒 +40收起 理由
silveryingchen+ 2+ 40高呼666!
夏之花+ 1MCBBS有你更精彩~

查看全部评分

帖子永久链接: 

Minecraft中文论坛 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖若有内容转载自其它媒体,不代表本站赞同其观点和对其真实性负责
6、若本帖涉及任何版权问题,请立即告知本站,本站将及时予以删除并致以最深的歉意
7、Minecraft(我的世界)中文论坛管理员和版主有权不事先通知发贴者而删除本文

dhl1570634463 当前离线
积分
19
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2020-12-12
查看详细资料

来自:湖南

沙发
发表于 2021-5-4 20:14:38 | 只看该作者
这模组有什么用吗

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册(register)

本版积分规则

Archiver|小黑屋|Mcbbs.net ( 京ICP备15023768号-1 ) | 京公网安备 11010502037624号 | 手机版

GMT+8, 2023-5-29 18:53 , Processed in 0.037633 second(s), Total 18, Slave 17 queries, Release: Build.2023.03.15 0137, Gzip On, Redis On.

"Minecraft"以及"我的世界"为美国微软公司的商标 本站与微软公司没有从属关系

© 2010-2022 我的世界中文论坛 版权所有 本站内原创内容版权属于其原创作者,除作者或版规特别声明外未经许可不得转载