Luohuayu / CatServer

高性能和高兼容性的1.12.2/1.16.5/1.18.2版本Forge+Bukkit+Spigot服务端 (A high performance and high compatibility 1.12.2/1.16.5/1.18.2 version Forge+Bukkit+Spigot server)
https://catmc.org
GNU Lesser General Public License v3.0
1.98k stars 211 forks source link

[1.12.2] Bukkit.getOnlinePlayers()读不到任何在关服插件卸时的在线玩家 #682

Closed lidashuai-li closed 1 year ago

lidashuai-li commented 1 year ago

运行环境

Minecraft版本(1.12.2/1.16.5/1.18.2): 1.12.2 构建版本(从/version指令获取): 1.12.2-CatServerb050bcad 相关模组/插件: chemdah star系列插件

描述这个BUG 因为某些原因需要监听PluginDisableEvent事件,在这个事件内,Bukkit.getOnlinePlayers()读不到任何在关服插件卸时的在线玩家。而spigot和paper则没有这个问题

导致的问题r 玩家的某些数据没办法在关服时正确保存

复现方法 监听PluginDisableEvent事件,,在事件内Bukkit.getOnlinePlayers(),会获取不到关服前在线玩家的信息

截图/视频

Luohuayu commented 1 year ago

应在PlayerQuitEvent时保存玩家数据

lidashuai-li commented 1 year ago

PlayerQuitEvent确实有写但是不生效不知道为啥

lidashuai-li commented 1 year ago

目前有写三种保存方式 一是玩家下线 二是关服 三是每10s自动保存一次。但是似乎关服的时候一和二都不生效

Luohuayu commented 1 year ago

调试测试PlayerQuitEvent事件在关服时正常触发

lidashuai-li commented 1 year ago

我在tg上私聊你了 github不方便放图片

lidashuai-li commented 1 year ago

确实是很多插件都会出现这个问题,目前大部分插件的解决方式都是推荐关服前先kickall。包括怀黑的chemdah dawnstal的star系列和追光者的magicsync。保存的代码啥的发在你tg了

lidashuai-li commented 1 year ago

3AWLI%G~I `NS6O5LDXNNT6 代码确实没问题,而且很多插件都会无法保存不是个例

lidashuai-li commented 1 year ago

跪求雨giegie修复下

lidashuai-li commented 1 year ago

This server is running CatServer version git-CatServer-1.12.2-dae70adc (MC: 1.12.2) (Implementing API version 1.12.2-R0.1-SNAPSHOT, Forge version 14.23.5.2860) 我尝试了最新版结果是一样的

Kotori0629 commented 1 year ago

有兴趣的话 你回滚这个commit再测试看看吧 1.16.5同理

https://github.com/Luohuayu/CatServer/commit/ae86f3cb4e3a0fd99b848f676b3bfba75891282a

Kotori0629 commented 1 year ago

你用下面这个看看 https://cowtransfer.com/s/bc44834cac734c 输入传输口令b1k1r4 有效期一天

免责: 上方链接内的核心仅供测试使用,不推荐直接生产使用,因为这不是官方版核心。如问题已解决,请回复本条表示问题不再复现并已得到解决后耐心等待稳定版发布更新. @lidashuai-li

lidashuai-li commented 1 year ago

经过测试此版本正常 BS8944~5LF}D XG2WPC 7Q5

Kotori0629 commented 1 year ago

已提交PR,这个Issues将在PR被合并后关闭。