Closed fulide closed 4 months ago
5.7.2版本看上去没问题
重新构建了一份后测试还是不行 并且重新整改了一下测试环境 确保准确性 服务端: 非混合端 原生的minecraft server 1.20.1 + forge1.20.1-47.2.23
MOD列表(仅这4个): curios-forge-5.8.1+1.20.1 PlayerSync vc_gliders-forge-1.1.5【放到饰品栏的滑翔伞】 player-animation-lib-forge-1.0.2-rc1+1.20【👆它的前置】
Mysql版本:8.0.27 Mysql在另一台局域网下的windows小机上
config相关: 正确填写mysql相关 第一个测试服务端 Server_id = 169059824 第二个测试服务端Server_id = 169059821 其他不变
开服结果: 无报错 PlayerSync is ready!
Mysql那边 建库成功 建表成功
最终结果: 原版背包的物品有正确同步 依旧无法同步curios饰品栏中的物品 将饰品放入饰品栏后 查看数据库那边 curios表中curios_item内容为{} 进入第二个测试服也确实没有同步饰品
测试结束
可以在Tags发布一个构建好的吗 难道是我构建出了问题 顺带问问你本地测试时用的curios版本是多少
点这里就能下载。用的是5.8.2版本
还是同样的结果。 太奇怪了。
GOOD
这次测试有成功同步了。 然后出现了新的BUG:可以无限复制饰品 复现方法:
在服务端01中 装备一个饰品 退出服务端01 进入服务端02 取下刚才装备的饰品到背包 退出服务端02 回到服务端01 饰品仍然在饰品栏 并且刚才取下来的饰品也还在背包
多次测试 100%触发 测试环境和上次一样没变
还是一样 我一步一步操作看了一下,似乎和数据库方面无关? 在进入和退出服务端的时候,都有正确的读取和更新数据库。
初步感觉 问题可能出在PlayerSync和服务端存档内的playerdata之间处理出了问题(猜的) 举个例子: 当我进入服务端01,装备饰品后,退出服务端01,数据库那边有正确更新内容。 此时进入服务端02,也有正确读取数据库的内容,饰品被同步。此时取下饰品(使饰品栏为空),退出服务端02,数据库那边也有正确更新,curiositem的内容确实变更为{}。 但此时回到服务端01后,饰品栏仍然有饰品。 要么curiositem内容为{}时,没能正确读取并反应,要么就是curiositem内容为{}时,服务端从存档文件夹里面的playerdata里面应用了curios饰品栏数据。
还是一样 我一步一步操作看了一下,似乎和数据库方面无关? 在进入和退出服务端的时候,都有正确的读取和更新数据库。
初步感觉 问题可能出在PlayerSync和服务端存档内的playerdata之间处理出了问题(猜的) 举个例子: 当我进入服务端01,装备饰品后,退出服务端01,数据库那边有正确更新内容。 此时进入服务端02,也有正确读取数据库的内容,饰品被同步。此时取下饰品(使饰品栏为空),退出服务端02,数据库那边也有正确更新,curiositem的内容确实变更为{}。 但此时回到服务端01后,饰品栏仍然有饰品。 要么curiositem内容为{}时,没能正确读取并反应,要么就是curiositem内容为{}时,服务端从存档文件夹里面的playerdata里面应用了curios饰品栏数据。
你确定你用的是最新的构建版吗。我这里测试没问题。这个bug是因为原来写的代码在数据为空时直接跳过了,我改成数据为空时把物品设为空气就好了。
从这个里面下载的,又测试了一遍,确实还是那样。
还是一样 我一步一步操作看了一下,似乎和数据库方面无关? 在进入和退出服务端的时候,都有正确的读取和更新数据库。 初步感觉 问题可能出在PlayerSync和服务端存档内的playerdata之间处理出了问题(猜的) 举个例子: 当我进入服务端01,装备饰品后,退出服务端01,数据库那边有正确更新内容。 此时进入服务端02,也有正确读取数据库的内容,饰品被同步。此时取下饰品(使饰品栏为空),退出服务端02,数据库那边也有正确更新,curiositem的内容确实变更为{}。 但此时回到服务端01后,饰品栏仍然有饰品。 要么curiositem内容为{}时,没能正确读取并反应,要么就是curiositem内容为{}时,服务端从存档文件夹里面的playerdata里面应用了curios饰品栏数据。
你确定你用的是最新的构建版吗。我这里测试没问题。这个bug是因为原来写的代码在数据为空时直接跳过了,我改成数据为空时把物品设为空气就好了。
不清楚了。我是用的客户端在两个世界同步。
感觉两个世界是没办法测试的 它们共用一个playerdata文件夹。 可否试试 [把物品设为空气] 这个操作换成 [删除或清空所有饰品] 此类操作?(如果API有提供相关方法的话)
感觉两个世界是没办法测试的 它们共用一个playerdata文件夹。 可否试试 [把物品设为空气] 这个操作换成 [删除或清空所有饰品] 此类操作?(如果API有提供相关方法的话)
并不是共用的。是两个存档之间可以同步。 curios的物品也是继承的forge的itemHandler。换了一个写法试试 https://github.com/mlus-asuka/PlayerSync/actions/runs/8921132929
感觉两个世界是没办法测试的 它们共用一个playerdata文件夹。 可否试试 [把物品设为空气] 这个操作换成 [删除或清空所有饰品] 此类操作?(如果API有提供相关方法的话)
并不是共用的。是两个存档之间可以同步。 curios的物品也是继承的forge的itemHandler。换了一个写法试试 https://github.com/mlus-asuka/PlayerSync/actions/runs/8921132929
还是一样。
有点不好判断哪个环节的问题,要不弄个debug模式,每个执行阶段都打印点log在控制台?
https://github.com/mlus-asuka/PlayerSync/actions/runs/8923661939 这回绝对修复了
确实!你做到了!终于!可以关闭这个comment了!
顺带问问,有计划支持精妙背包吗? :D
精妙背包的东西是额外储存在世界文件夹的。和playerdata无关
近期更新的(包括最新)的Curios更换了API的位置,不能正常获取到Curios数据了,表现为数据库中Curios表中的item始终为{} 精妙背包里的物品也不能正常保存 如果可以的话 能支持一下就太好了! 以及 为什么会在退出服务器时 好像有个自动删除Curios表中 item内容的操作?没有明白。
测试环境: 系统PVE Linux ZULU17 服务端mohist-1.20.1-621