PacketSyncAllBauble
基本信息
| 属性 | 值 |
|---|---|
| 路径 | baubles.common.network.PacketSyncAllBauble |
| 类型 | class |
| 接口 | IMessage, IMessageHandler<PacketSyncAllBauble, IMessage> |
| Discriminator | 3 |
| 方向 | S → C |
字段
| 字段 | 类型 | 说明 |
|---|---|---|
playerId |
int(VarInt) |
玩家实体 ID |
inventory |
TIntObjectMap<ItemStack> |
槽位索引 → 物品栈(仅包含非空槽位) |
编码
| 字段 | 字节数 |
|---|---|
playerId |
VarInt(4 字节限) |
inventory.size() |
VarInt(maxSlotIdBytes 字节限 = slotLimit=20 的 VarInt 字节数) |
每条 inventory |
VarInt(槽位 id) + ByteBufUtils.writeItemStack(item) |
客户端处理
- 找到玩家后调用
PlayerHandler.clearPlayerBaubles(player)清理旧缓存 - 重新
getPlayerBaubles获取目标玩家的InventoryBaubles - 直接覆写
baubles.stackList[a] = b - 对每个非空物品,若
IBauble实例,调用onPlayerLoad(b, player)让 bauble 自行恢复状态 - 异常会被
Baubles.log.error记录(不会让一个 bauble 失败中断其他)
触发源
- EventHandlerNetwork.playerLoggedInEvent - 玩家登录
- EventHandlerNetwork.playerChangedDim - 跨维度
- EventHandlerEntity.startTracking - 别的玩家开始追踪此玩家
相关条目
- PacketHandler
- PacketSyncBauble - 单槽位同步
- BaubleExpandedSlots - 提供
maxSlotIdBytes