-
Notifications
You must be signed in to change notification settings - Fork 0
26.2 Network Sync and Payload Protocol
Dasik (Rifaditya) edited this page Aug 21, 2026
·
1 revision
| Protocol Parameter | Value |
|---|---|
| Channel Identifier | durability-multiplier:sync_rules |
| Payload Class | net.instantgratification.durabilitymultiplier.network.DurabilityPayload |
| Network Manager | net.instantgratification.durabilitymultiplier.network.DurabilityNetworking |
| Client State Cache | net.instantgratification.durabilitymultiplier.network.DurabilityClientState |
| Codec Type | StreamCodec<FriendlyByteBuf, DurabilityPayload> |
| Sync Triggers | Player Join (ServerPlayConnectionEvents.JOIN) & GameRule Change (GameRulesMixin) |
Because tooltips are rendered on the physical client but GameRules exist on the logical server, Durability Multiplier uses Fabric Networking API to push live snapshots of all 25 GameRules to clients.
sequenceDiagram
autonumber
participant Server as Logical Server
participant Net as DurabilityNetworking
participant Client as Remote Client
participant State as DurabilityClientState
participant UI as ItemStackTooltipMixin
Note over Server,Client: Event 1: Player Joins World
Server->>Net: ServerPlayConnectionEvents.JOIN
Net->>Net: Snapshot 25 GameRules
Net->>Client: Send DurabilityPayload (sync_rules)
Client->>State: DurabilityClientState.apply(payload)
Note over Server,Client: Event 2: Admin Changes /gamerule
Server->>Net: GameRules.set() [GameRulesMixin TAIL]
Net->>Client: Broadcast DurabilityPayload to all players
Client->>State: DurabilityClientState.apply(payload)
Client->>UI: Tooltips update immediately without relog
DurabilityPayload serializes 25 fields efficiently using FriendlyByteBuf VarInts and Booleans:
public record DurabilityPayload(
int multiplierGlobal,
int multiplierWeapons,
int multiplierSwords,
int multiplierSpears,
int multiplierTridents,
int multiplierMaces,
int multiplierBows,
int multiplierCrossbows,
int multiplierShields,
int multiplierTools,
int multiplierArmor,
int multiplierElytra,
boolean infinityGlobal,
boolean infinityWeapons,
boolean infinitySwords,
boolean infinitySpears,
boolean infinityTridents,
boolean infinityMaces,
boolean infinityBows,
boolean infinityCrossbows,
boolean infinityShields,
boolean infinityTools,
boolean infinityArmor,
boolean infinityElytra,
boolean showTooltip
) implements CustomPacketPayloadDurability Multiplier is engineered with ❤️ by Dasik (Rifaditya) | Licensed under GNU General Public License v3.0 (GPL-3.0-or-later).
📌 Repository Source Disclaimer: The documentation in this Wiki reflects the current source code state in the repository, which may include recent unreleased commits or developmental features ahead of public release builds on CurseForge and Modrinth.
- 26.2 Hub
- 26.2 Multipliers
- 26.2 God Mode
- 26.2 Damage & Math
- 26.2 Item Classification
- 26.2 Dynamic Registry
- 26.2 Tooltips & HUD
- 26.2 Network Protocol
- 26.2 GameRules Table
- 26.2 Commands & Admin
- 26.2 Advancements
- 26.2 Configuration
- 26.2 ModVersionGuard
- 26.2 Architecture & Mixins
- 26.2 Developer Setup
- 26.2 API & Addons
- 26.2 FAQ & Diagnostics
- 26.1.2 Hub
- 26.1.2 Multipliers
- 26.1.2 God Mode
- 26.1.2 Damage & Math
- 26.1.2 Item Classification
- 26.1.2 Dynamic Registry
- 26.1.2 Tooltips & HUD
- 26.1.2 Network Protocol
- 26.1.2 GameRules Table
- 26.1.2 Commands & Admin
- 26.1.2 Advancements
- 26.1.2 Configuration
- 26.1.2 Architecture & Mixins
- 26.1.2 Developer Setup
- 26.1.2 API & Addons
- 26.1.2 FAQ & Diagnostics