SyncHandler

基本信息

属性 值
类名 squeek.applecore.network.SyncHandler
类型 class,静态 channel + 实例事件处理器
频道 NetworkRegistry.INSTANCE.newSimpleChannel(ModInfo.MODID)
启用版本 Minecraft 1.7.10

功能

服务端把玩家的饱和度与消耗值同步到客户端。

方法 / 字段 说明
init() 注册 2 个消息类并把自身挂到 FML 总线与 Forge 总线
onLivingUpdateEvent(LivingUpdateEvent) 每 tick 检查并按需发包
onPlayerLoggedIn(PlayerLoggedInEvent) 清理该 UUID 的缓存
lastSaturationLevels Map<UUID, Float> 饱和度缓存
lastExhaustionLevels Map<UUID, Float> 消耗值缓存

实现要点

  • 两个消息的判别 id:MessageExhaustionSync = 0, MessageSaturationSync = 1;两者方向均为 Side.CLIENT。
  • 饱和度用 != 比较,值一变就发包(不设阈值)。
  • 消耗值用 Math.abs(last - current) >= ModConfig.EXHAUSTION_SYNC_THRESHOLD 比较,默认阈值 0.01D;等于阈值时也会发包。
  • 缓存是无界 HashMap,仅在玩家登录事件里 remove。 长生命周期服务端若玩家反复上下线,条目会随唯一 UUID 增长; 源码无容量上限或过期清理。
  • onLivingUpdateEvent 首行做 instanceof EntityPlayerMP 判断, 客户端实体直接返回。

相关条目