本帖最后由 1582952890 于 2017-9-17 11:28 编辑
辣鸡标题字数限制害死人了
听说发原创插件有绿宝石耶。。。
听说绿宝石可以卖钱耶。。。。。。
注意:此贴内会有一些技术细节(我的习惯),如果遇到看不懂的部分可直接跳过。
这个插件极其轻量级,没有配置文件、命令、权限,安装上去就可以用的。
灰色字体是给想知道细节的人看的。
最近发现个很棒的BC插件叫“Reconnect”,可以让玩家在服务器stop时不必退出服务器,而是可以留在游戏里等待重启完成,然后自动连接(详情请看上面那个链接,mcbbs的转载贴)。
这个插件判断“服务器是否重启完成”是通过连接服务器所在的IP看看是不是超时来完成的。
可AAC有一个特点就是,启动时必须联网进行更新检测+盗版检测才能正常启动(这个估计使用AAC的用户肯定发现了)(如果发现是盗版就会拒绝启动,我到现在也没搞懂它到底是怎么判断盗版的。。这不科学啊),而这个用于检测的网站。。。
居然是CloudFlare。。。
所以一般在服务器启动完毕后玩家不能立即进入,而要等AAC检查完毕才能进入。在这之前进入会被AAC以理由“Server still starting up”踢出。
而这样问题就产生了。刚刚我提到Reconnect是通过判断连接是否超时,只要不超时都算连接成功了,而AAC把玩家踢出是不算“超时”的,所以Reconnect认为重连成功了,而实际上没有,于是玩家最后还是会连接超时(因为并未真正进入服务器)然后掉线。
所以Reconnect插件在装有AAC的子服上几乎完全无法发挥作用。
此插件的原理?
通过反编译AAC的主类得知(我十分庆幸AAC作者把用于踢出玩家的监听器放在了主类,并且也十分庆幸这个方法能被jd-gui反编译,更十分庆幸AAC是通过Event来实现的并且优先级还不是HIGHEST)它是在 NORMAL 优先级拦截了 PlayerLoginEvent 事件。于是我这个插件里使用了 HIGHEST 优先级来检测如果玩家被disallow(不允许)进入的理由是“Server still starting up”那么就覆盖AAC的设置,允许玩家进入。
但这样又产生了一个新的问题——AAC的作者并不是吃饱了撑着禁止启动完成前玩家进入的,而是因为启动完成前AAC还没完全初始化,这个时候玩家进入会导致后台报错的。
于是又不能让玩家真的进去。
正在山穷水复疑无路时,我柳暗花明又一村的想到了一个新的办法(别喷哈233)。
为什么不让玩家进去一定得通过踢出玩家的方式进行?让玩家在AAC加载前一直等着(停在“登入中”界面),等到AAC加载完毕后才放进去不就ok了吗?这样Reconnect也不会认为玩家连接成功了。
但怎样才能让玩家延迟加入呢,暂停主线程肯定是不行的,那样会大幅掉tps。
反编译MC官服用于控制Login Phase的LoginListener类,在里面发现,要完成进入服务器的过程,必须先等待AsyncPlayerPreLoginEvent执行完毕,并且这个事件还恰好是异步的,是新开线程执行,在里面阻塞不会影响主线程。
嘿嘿嘿
这是最终的代码(仅供学习与交流之用,严禁未经允许二次创作)
(24行,破纪录了呢233)
当AAC还没启动完成时,Reconnect(或客户端正常进入服务器)的请求会被拖延,玩家会一直停在“登录中”界面,而不是粗暴的踢出。
等AAC加载完成,玩家就可以正常进入了。
在这个过程中玩家只需要执行连接服务器的操作一次就够,而不是被踢后“稍后再试”(这样玩家体验很差的),于是Reconnect插件可以正常发挥了。
不会对TPS有任何影响,性能与内存占用极低完全可以忽视。
扩展阅读
关于Reconnect的使用里的一个。。怎么说呢,小技巧吧。
跟此插件没有直接联系
下载
LajiAAC.jar
(1.86 KB, 下载次数: 253)
听说外国人在自己网站里挂个“Donate”按钮都可以得到不少真实货币的收入,而在国内你们拿了东西就走难道连个不用花钱也什么都不会消耗的人气都不肯给吗?
听说插件必须带图?那就用这个吧↓
啊居然还必须是效果图。
好吧好吧在这
听说发原创插件有绿宝石耶。。。
听说绿宝石可以卖钱耶。。。。。。
注意:此贴内会有一些技术细节(我的习惯),如果遇到看不懂的部分可直接跳过。
这个插件极其轻量级,没有配置文件、命令、权限,安装上去就可以用的。
灰色字体是给想知道细节的人看的。
最近发现个很棒的BC插件叫“Reconnect”,可以让玩家在服务器stop时不必退出服务器,而是可以留在游戏里等待重启完成,然后自动连接(详情请看上面那个链接,mcbbs的转载贴)。
这个插件判断“服务器是否重启完成”是通过连接服务器所在的IP看看是不是超时来完成的。
可AAC有一个特点就是,启动时必须联网进行更新检测+盗版检测才能正常启动(这个估计使用AAC的用户肯定发现了)(如果发现是盗版就会拒绝启动,我到现在也没搞懂它到底是怎么判断盗版的。。这不科学啊),而这个用于检测的网站。。。
Installation
Download both AAC and the correct version of ProtocolLib and put both in your plugins folder. AAC requires an active internet connection, and the ability to connect to cloudflare to start up correctly.

所以一般在服务器启动完毕后玩家不能立即进入,而要等AAC检查完毕才能进入。在这之前进入会被AAC以理由“Server still starting up”踢出。
而这样问题就产生了。刚刚我提到Reconnect是通过判断连接是否超时,只要不超时都算连接成功了,而AAC把玩家踢出是不算“超时”的,所以Reconnect认为重连成功了,而实际上没有,于是玩家最后还是会连接超时(因为并未真正进入服务器)然后掉线。
所以Reconnect插件在装有AAC的子服上几乎完全无法发挥作用。
此插件的原理?
通过反编译AAC的主类得知(我十分庆幸AAC作者把用于踢出玩家的监听器放在了主类,并且也十分庆幸这个方法能被jd-gui反编译,更十分庆幸AAC是通过Event来实现的并且优先级还不是HIGHEST)它是在 NORMAL 优先级拦截了 PlayerLoginEvent 事件。于是我这个插件里使用了 HIGHEST 优先级来检测如果玩家被disallow(不允许)进入的理由是“Server still starting up”那么就覆盖AAC的设置,允许玩家进入。
但这样又产生了一个新的问题——AAC的作者并不是吃饱了撑着禁止启动完成前玩家进入的,而是因为启动完成前AAC还没完全初始化,这个时候玩家进入会导致后台报错的。
于是又不能让玩家真的进去。
正在山穷水复疑无路时,我柳暗花明又一村的想到了一个新的办法(别喷哈233)。
为什么不让玩家进去一定得通过踢出玩家的方式进行?让玩家在AAC加载前一直等着(停在“登入中”界面),等到AAC加载完毕后才放进去不就ok了吗?这样Reconnect也不会认为玩家连接成功了。
但怎样才能让玩家延迟加入呢,暂停主线程肯定是不行的,那样会大幅掉tps。
反编译MC官服用于控制Login Phase的LoginListener类,在里面发现,要完成进入服务器的过程,必须先等待AsyncPlayerPreLoginEvent执行完毕,并且这个事件还恰好是异步的,是新开线程执行,在里面阻塞不会影响主线程。
嘿嘿嘿
这是最终的代码(仅供学习与交流之用,严禁未经允许二次创作)
(24行,破纪录了呢233)
看不懂代码?没关系,那我告诉你效果吧:
当AAC还没启动完成时,Reconnect(或客户端正常进入服务器)的请求会被拖延,玩家会一直停在“登录中”界面,而不是粗暴的踢出。
等AAC加载完成,玩家就可以正常进入了。
在这个过程中玩家只需要执行连接服务器的操作一次就够,而不是被踢后“稍后再试”(这样玩家体验很差的),于是Reconnect插件可以正常发挥了。
不会对TPS有任何影响,性能与内存占用极低完全可以忽视。
扩展阅读
关于Reconnect的使用里的一个。。怎么说呢,小技巧吧。
跟此插件没有直接联系
下载

听说外国人在自己网站里挂个“Donate”按钮都可以得到不少真实货币的收入,而在国内你们拿了东西就走难道连个不用花钱也什么都不会消耗的人气都不肯给吗?
听说插件必须带图?那就用这个吧↓

啊居然还必须是效果图。
好吧好吧在这
辣鸡AAC,毁青春

表示AAC不是付费插件吗..
啊我怎么瞎了
强行省略import
姿势+1
滋瓷
姿势+1
滋瓷
不不不,我是说这个是付费插件很多人都没有
(比如我)我不是想要插件...
(比如我)我不是想要插件...
表示只是1.98烂大街了
然而1.8的没把...
表示楼主你去超越他算了(我就说说qaq)
然而1.8的没把...
表示楼主你去超越他算了(我就说说qaq)
QQ1357288463 发表于 2016-9-2 21:07
表示只是1.98烂大街了
然而1.8的没把...
表示楼主你去超越他算了(我就说说qaq) ...
表示不明白,还有楼主你别老是用加分的形式..
搞的我跟水帖子的似的
辣鸡AAC,毁我战绩
你应该弄一个断(被)线(踢)重连插件 我在某mc家园战争围城里玩的时候别人一直对我丢雪球,辣鸡AAC就给我T了,你应该弄断(被)线(踢)重连插件!!
你应该弄一个断(被)线(踢)重连插件 我在某mc家园战争围城里玩的时候别人一直对我丢雪球,辣鸡AAC就给我T了,你应该弄断(被)线(踢)重连插件!!
AAC在哪里购买
能丢个链接么
我想买
能丢个链接么
我想买
xiaodobi2333 发表于 2016-9-3 12:12
AAC在哪里购买
能丢个链接么
我想买
https://www.spigotmc.org/resourc ... -aura-blocker.6442/
这个插件是安装到BC端还是每个子服?
我很好奇
aac原名是啥
aac原名是啥
qq1812538626 发表于 2016-9-3 20:31
我很好奇
aac原名是啥
Advanced Anti Cheat = AAC
建议楼主插件改个名字,这个名字感觉对aac作者很不尊重
插件标题有点233 - -辣鸡AAC 233
表示AAC我都不用。玩家一用,手速快的就被T了…… = =
表示AAC我都不用。玩家一用,手速快的就被T了…… = =
没有AAC这个付费插件好像就没用QAQ
嘿嘿。。先收藏。。。等开的起BC再来吧
插件不错我抱走了楼主
下载了~~~~~

AAC更新到3.0.0以上玩家一上线就会报错,求修复更新lajiaac插件
然后梨子在这个“细节”的方面装了一个B
感谢分享 不过还是没看懂