Links
Tags
Creators
Details
All versions
1.0.0
Release
Virtual-Redstone-Wire 1.0.0last month 139
Uploaded by
Compatibility
Minecraft: Java Edition
1.20.1
Platform
Forge
Supported environments
Client and server
Changes
Full Changelog: https://github.com/JularDepick/Virtual-Redstone-Wire/compare/v0.5.3...v1.0.0
修复
- 普通操作被拒绝后不再清空全部撤销/重做历史: 此前收到增量追回响应会整体清空历史, 玩家做过多次操作后, 任意一次操作被拒绝(目标链路已存在或已不存在)都会丢失此前全部可撤销历史; 现在仅移除前提已不成立的条目, 其余历史保留
- 追回数据过期时, 全量同步请求立即发出, 不再延迟到下一次同步广播
- 换维度后立即作废旧维度数据并重新同步: 此前换维度依赖的回调在客户端不会触发, 原维度的链路与线缆选中框会被画到新维度(表现为"在主世界里建的链路出现在了末地, 但对着它操作没有反应", 且不操作就一直存在); 现在换维度后旧数据立即清空, 并强制向新维度重新同步
- 上述"出现在错误维度的链路"被拒绝一次后自动消失: 请求的追回起点超出服务端当前版本时按数据过期处理, 立刻改发全量同步, 不再停在错误显示上
- 进入世界与换维度时的首次同步不再被请求节流吞掉(此前被吞掉后, 本次进入的维度可能长时间没有链路数据)
- 少数情况下操作队列会永久卡住、之后所有操作都没有反应的问题已修复; 其他维度的失败结果也不会再顶掉当前操作的在途状态
- 版本回退等异常时序下, 客户端不再把增量同步结果当成全量而暂时丢失链路显示
- 清空历史后不会再冒出一条已失效的历史条目(清空时同时取消排队中的撤销/重做请求)
- 未连接服务器时(标题界面的 Mods 菜单)打开本模组配置界面不再崩溃
- 单维度链路数量较大时, 进入世界与换维度的首次同步不再失败: 此前单包载荷超过 32767 字符会编码失败(约 500 条链路即触发, 严重时客户端被断开), 现在按分片下发, 规模不再受限
- 删除一条链路不再误熄灭同一输出面上其他来源的信号: 此前删链会把该输出面的存储信号无条件清零, 静止来源(红石块, 常开拉杆)不会自行恢复
- 多人同 tick 提交部分重叠的相反操作(如同一链路被同时建立与删除)按冲突处理, 涉及批次全部不执行
- 线缆剪出链超过批量上限时给出提示(此前静默无反应); 线缆剪的结果提示改由服务端确认后显示(此前在请求发出前就提示"已切断", 服务端拒绝时提示与事实相反)
- 放大镜信息面板不再永久停在"等待服务端返回"(此前若命中 1 秒查询节流则不会发起查询)
- 多人环境下不再把他人的成功操作误当成本机的确认(避免撤销历史出现实际未创建的条目)
- 非法请求载荷(输出面取值非法, 同一请求内重复链路)不再可能破坏存档或让全量同步永久失效
- 线缆数量较大时存档不再写入失败并丢失全部链路: 此前网络数据被写成单个 NBT 字符串, 超过 65535 字节上限即让整个维度存档写入中断(约 250 条链路即可触发), 且下一次进入世界会因读到空数据而报错并把链路清空; 现在写入不再受该上限约束, 读取遇到缺失或损坏数据也只提示并跳过, 不再打断进入世界
优化
- 撤销/重做失败提示细分: 状态型失败在服务端确认该链路刚被其他玩家操作时, 提示"该链路刚被 XXX 修改"(附玩家名); 其余情况维持"状态已变化"提示
- 普通操作失败时, 若确认本机数据与服务端一致, 不再发起多余的同步请求, 失败反馈更快
- 多人同 tick 提交相同操作时, 被拒提示不再误指向另一位玩家
- 专用服务器上修改服务端配置(渲染距离, 最大链路距离等)后, 已连接客户端立即采用新值(此前需重连才生效)
- 服务端新增请求限流(同一玩家拉取最小间隔)与排队上限, 异常刷包不会拖垮服务器
- 面名(上/下/东/西/南/北)改为本地化显示
- 枢纽方块(单一方块挂多条链路)的描边渲染去重, 减少重复几何提交
- 快捷栏上方的飘浮提示不再与原版物品名称高亮重叠
- 历史窗口页关闭按钮的命中区域不再在首帧落在左上角
- 配置界面的数值项改为离开界面时统一落盘(此前每次按键都写文件), 越界输入会把输入框显示更正为实际生效值
- 撤销/重做历史上限被调小时, 已有的双栈立即收缩到新上限
- 线缆, 线缆剪与放大镜的右键改为"按下触发一次, 长按不重复": 此前右键按住不放会每 4 tick 重复一次, 长按同一个方块会让线缆起点在"选中/取消选中"之间反复切换, 反复建链与删链, 线缆剪反复批量删除, 放大镜反复重开信息面板; 现在按住期间只触发一次, 松开后才能再次触发。三个物品的左键依旧不触发任何动作(左键保持原版行为); 未瞄准方块时(对着空气按右键)依旧不触发任何动作, 与改动前一致
兼容性
- 通信协议版本由 3 升级为 4, 客户端与服务端必须同时升级到 v1.0.0, 新旧版本之间无法建立连接
- 拒绝响应在本版本内补充维度字段(协议版本仍为 4, 不属于额外的升级), 客户端与服务端仍须同版本部署
- 增量广播补充请求者名单, 全量与追回响应补充分片信息, 服务端新增 422/429 校验, 均属协议 4 内部补齐(协议版本仍为 4)
- 链路数据与存档格式对使用者保持兼容, 使用 v0.5.3 及更早版本的存档可直接沿用(线缆网络在存档内的存储形态由单个字符串改为分块字符串列表, 读取同时兼容新旧两种形态, 旧存档首次保存时自动转为新形态, 无需人工迁移)
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:8peDMJZg:Lyt9742K"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:8peDMJZg:Lyt9742K"
}

