版本信息
你使用的IDE:IntelliJ IDEA 3.3
Forge版本: 28.2.0
Minecraft版本: 1.14.4
错误情况简述
我已经有了一个完整且可用的能力,可以正常保存玩家的水分值,可以在游戏过程中改变该值。
进入存档后使用AttachCapabilitiesEvent向玩家附加能力,初始值是20(此时在服务端和客户端分别创建能力)。
然后在LivingEntityUseItemEvent.Finish(玩家使用完物品后调用该事件)处将值-1,即19(此时服务端和客户端分别更改数值)。
然后进入末地,客户端重新调用AttachCapabilitiesEvent向客户端玩家附加能力(此时服务端是19,客户端为初始值20)。
然后在LivingEntityUseItemEvent.Finish将值-1(此时服务端为18,客户端为19)。
最后返回主世界,客户端再次重新附加能力,服务端为18,客户端为20。
退出存档,重新进入,客户端与服务端的值皆为上次的服务端值:18。
因为我需要把该值渲染出来,而客户端每次的重置导致该值并不是“准确的”
相关代码
@SubscribeEvent
public void onAttachCapabilities(AttachCapabilitiesEvent<Entity> event) {
if (event.getObject() instanceof PlayerEntity) {
event.addCapability(new ResourceLocation(XXX.MOD_ID + ":" + "thirst"), new ThirstProvider());
}
}
因为我不确定在客户端边,进入末地后的玩家和之前的玩家是否是同一个实例。
如果是,那能否拦截AttachCapabilitiesEvent,该怎么做。
如果不是,那能否从服务端重新同步数据到客户端,该怎么做。