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.94k stars 204 forks source link

[1.18.2] 玩家死亡/重生时 数值继承异常 #853

Closed Rail1bc closed 2 months ago

Rail1bc commented 6 months ago

运行环境

Windows10

Minecraft版本(1.18.2): 构建版本(从/version指令获取): 1/1/2024 CatServer-1.18.2-ecf29bc1-server.jar 相关模组/插件:

描述这个BUG 当玩家死亡时身上具有药水效果,玩家重生后,药水效果不会显示,但是数值上可以发现确实存在药水效果 当玩家通过mod或插件拥有一些增益效果/负面效果,死亡重生、跨世界传送会导致效果被叠加,并且不会随着时间消失

导致的问题r 玩家跨世界传送/死亡重生会导致一部分数值异常 部分mod提供的护甲值/生命值/护甲韧性的增益减益会错误的叠加

复现方法 确保玩家被杀死时,身上有药水效果,比如缓慢250,玩家重生后无法移动,药水效果不会随时间消失 get 玩家移动速度的基础值为0.1,移动速度为0.0 此时再给玩家添加缓慢效果,药水效果可以正常随时间消失

截图/视频 (如果没有可以忽略)

Rail1bc commented 6 months ago

运行环境

Windows10

Minecraft版本(1.18.2): 构建版本(从/version指令获取): This serveris running CatServer version 1.18.2-ecf29bc1(MC: 1.18.2) (lmplementing APlversion 1.18.2-R0.1-SNAPSHOT, Forge version 40.2.14)

相关模组/插件:

描述这个BUG 当玩家死亡时身上具有药水效果,玩家重生后,药水效果不会显示,但是数值上可以发现确实存在药水效果 当玩家通过mod或插件拥有一些增益效果/负面效果,死亡重生、跨世界传送会导致效果被叠加,并且不会随着时间消失

导致的问题r 玩家跨世界传送/死亡重生会导致一部分数值异常 部分mod提供的护甲值/生命值/护甲韧性的增益减益会错误的叠加

复现方法 确保玩家被杀死时,身上有药水效果,比如缓慢250,玩家重生后无法移动,药水效果不会随时间消失 get 玩家移动速度的基础值为0.1,移动速度为0.0 此时再给玩家添加缓慢效果,药水效果可以正常随时间消失

截图/视频 (如果没有可以忽略)

CalenXwX commented 5 months ago

看起来是patches/minecraft/net/minecraft/server/players/PlayerList.java.patch第501行 serverplayer.m_21204_().m_22168_(p_11237_.m_21204_().m_22180_()) 人话: serverplayer.getAttributes().load(p_11237_.getAttributes().save()) 这里出现了问题……把原来的Attributes给复制到新ServerPlayer上了…… 受影响的是 ((LivingEntity)ServerPlayer).craftAttributes.handle.f_22139_/attributes(是个HashMap) 里面有一个Key的f_22078_/descriptionId=="attribute.name.generic.movement_speed" 对应的Value的f_22091/permanentModifiers(是个ObjectArraySet) 里面存的速度效果会被复制(这个bug套了好多层好难找 吐了……) 我这边测试的结果是speed slowness这两个速度效果会因为修改了Attributes而被保留 防火/漂浮之类的效果似乎不受影响 经测试已确认删掉这一行之后重生的时候速度效果可以正常被移除 看起来这段是作者近期新加入的代码 并且跟forge和spigot的写法都不太一样 感觉应该把这一行删掉 不过不是很确定会不会影响到其他地方 还是请作者来决定如何修叭~XwX image image @Kotori0629