1848680016
如题我想发包同步实体的capability数据,但是不知道怎么将服务端的实体发到客户端
我猜测可以用UUID

Panzako
你的思路是一个正确的思路,我的确这么做过
不过没提提供给你方法直接通过uuid获取
你需要通过遍历loadedEntities即可
值得一提的是,由于遗留问题,许多mc的实体同步依然以int id为准
int id只会增长,理论上不会重复(取决于量)而uuid理论上可能(取决于概率)
而player的uuid取决于其session profile,entity的uuid却是服务器随机生成后由datawatcher交由客户端的

黎雨轩
查看SimpleChannel#send的函数签名,以及PacketDistributor的成员变量,那里面有网络包可以实现的所有发包对象

黎雨轩
本帖最后由 黎雨轩 于 2021-11-6 09:39 编辑

至于uuid,我不理解为什么要使用,或许楼主可以给一个更好的使用理由。。。。个人感觉是舍近求远了

Ph-苯
Panzako 发表于 2021-11-5 00:59
你的思路是一个正确的思路,我的确这么做过
不过没提提供给你方法直接通过uuid获取
你需要通过遍历loadedEn ...

同一个实体在服务端的UUID和客户端的UUID好像不一样……

Panzako
Ph-苯 发表于 2021-11-14 12:27
同一个实体在服务端的UUID和客户端的UUID好像不一样……

一样的,除非某些插件做了一些无语的事情
比如LibDistuge这个伪装插件,会乱发UUID
反而是EntityID在玩家转BC后会不一样

Ph-苯
Panzako 发表于 2021-11-14 20:40
一样的,除非某些插件做了一些无语的事情
比如LibDistuge这个伪装插件,会乱发UUID
反而是EntityID在玩家 ...

哦哦,可能是我以前调试的时候弄错了。