数据同步模块 >=26.1
包 dev.anvilcraft.lib.v2.sync 提供了一套声明式字段同步系统,通过 @Sync 注解和 SyncProxy<T> 代理自动在客户端和服务端之间同步 Java 对象的字段值。支持方向控制、维度感知分发,以及字节码注入简化字段声明。
Availability
本模块仅在 Minecraft 26.1 版本中存在。
架构概览
- 注解层 —
@Sync标记可同步的类,指定同步方向 - 代理层 —
SyncProxy<T>包装字段值,提供自动编解码和变更通知 - 管理层 —
SyncManager维护注册表并协调数据发送 - 网络层 —
SyncPayload通过IInsensitiveBiPacket在两端传输 - 注入层 —
SyncBytecodeInjector通过字节码注入自动建立 proxy 与所属对象/字段名/方向的关联,对用户透明 - 配置层 —
SyncConfigManager为同步字段分配唯一 ID,通过SyncConfigurationPayload在网络传输时将字段名压缩为整数
文档索引
| 文档 | 内容 |
|---|---|
| 核心 API | @Sync 注解、SyncProxy、SyncDirection、SyncManager、SyncRegisterEntry |
| 使用指南 | 完整使用示例、字节码注入、注册流程 |
快速开始
java
// 1. 标记可同步的类
@Sync(SyncDirection.BOTH)
public class MySyncObject {
public final SyncProxy<Integer> counter = new SyncProxy<>(0);
public final SyncProxy<String> name = new SyncProxy<>("");
}
// 2. 使用
MySyncObject obj = new MySyncObject();
obj.counter.setValue(42); // 自动同步到对端
int val = obj.counter.getValue(); // 获取当前值依赖管理
groovy
dependencies {
implementation "dev.anvilcraft.lib:anvillib-sync-neoforge-26.1:2.0.0"
}注意事项
SyncProxy字段必须声明为public final- 支持 18 种内置类型的默认 StreamCodec(CompoundTag、String、Integer、Vector3fc 等)
- 自定义类型需通过
SyncProxy(value, customCodec)指定编解码器 - 同步方向在运行时由
SyncDirection控制:BOTH/C2S/S2C