Create-Aeronautics:Compatibility + Bug fixesСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачать
ВЕРСИИ (21)
release
Create-Aeronautics:Compatibility + Bug fixes 1.7.25
1.7.2510 авг. 2026 г.13,3 тыс.Minecraft: 1.21.1neoforge
Что нового
## [1.7.25] - 2026-08-10
### 变更 / Changes
- **测试功能标记机制 / Experimental fix tagging mechanism**: 在 `FixEntry` 中新增 `experimental` 字段,允许将修复项标记为测试功能。标记后在 `/fucksable` 命令列表和详情中以黄色 `[测试]` / `[Experimental]` 标签显示。已将 `world-height-override` 标记为测试功能。/ Added `experimental` field to `FixEntry`, allowing fixes to be tagged as experimental. Tagged fixes display a yellow `[测试]` / `[Experimental]` label in the `/fucksable` command list and details. `world-height-override` is now tagged as experimental.
release
Create-Aeronautics:Compatibility + Bug fixes 1.7.24
1.7.2410 авг. 2026 г.44Minecraft: 1.21.1neoforge
Что нового
## [1.7.24] - 2026-08-10
### Bug 修复 / Bug Fixes
- **SubLevelStorage storageCache 并发崩溃修复 / SubLevelStorage storageCache concurrent crash fix (Issue #20)**: 修复 `SubLevelStorage.getRegionStorageFile` 中 `Long2ObjectLinkedOpenHashMap`(storageCache)并发访问导致 `ArrayIndexOutOfBoundsException: Index -1 out of bounds for length N` 崩溃的问题。当 async-save 修复项启用时,`attemptSaveSubLevel` 在异步线程执行访问 storageCache,若主线程同时通过 `getOrLoadHoldingChunk` → `attemptLoadSubLevel` → `getRegionStorageFile` 访问 storageCache,会导致 FastUtil 链表 map 的 prev/next 指针状态损坏。新增 `SubLevelStorageRegionCacheSyncMixin`,用 `synchronized(map)` 保护 `getAndMoveToFirst`、`removeLast`、`putAndMoveToFirst` 三个链表修改操作,确保并发安全。/ Fixed `ArrayIndexOutOfBoundsException: Index -1 out of bounds for length N` crash caused by concurrent access to `Long2ObjectLinkedOpenHashMap` (storageCache) in `SubLevelStorage.getRegionStorageFile`. When async-save fix is enabled, `attemptSaveSubLevel` runs on async thread accessing storageCache; if main thread simultaneously accesses it via `getOrLoadHoldingChunk` → `attemptLoadSubLevel` → `getRegionStorageFile`, the FastUtil linked-map's prev/next pointer state gets corrupted. Added `SubLevelStorageRegionCacheSyncMixin` to protect `getAndMoveToFirst`, `removeLast`, `putAndMoveToFirst` chain-modification operations with `synchronized(map)`, ensuring concurrent safety.
release
Create-Aeronautics:Compatibility + Bug fixes 1.7.23
1.7.2310 авг. 2026 г.20Minecraft: 1.21.1neoforge
Что нового
## [1.7.23] - 2026-08-09
### Bug 修复 / Bug Fixes
- **async-save 存档卡顿回归修复 / async-save save freeze regression fix**: 修复 v1.7.12 起的"存档时服务器卡顿"回归。v1.7.12 在 `saveAll` 返回前 join 所有异步磁盘 IO(`fucksable$awaitPendingIO`),导致主线程在每次存档时阻塞等待全部磁盘 IO(含 gzip 压缩和 `flush` 的磁盘同步)完成,表现为存档时服务器明显卡顿。改为"非阻塞提交 + 屏障 drain"模式:`saveAll` 只把磁盘 IO 提交到异步线程且不在 `saveAll` 内阻塞;`flush` 也推迟到异步线程、在本批待写 IO 完成后执行;任何后续磁盘读取(`getOrLoadHoldingChunk`)以及下一次 `saveAll` / `close` 之前先 drain(join)未完成的异步 IO,既避免主线程与异步线程并发访问非线程安全的 `regionCache`/`storageCache`,又让磁盘 IO 与主线程序列化流水线重叠。/ Fixed the "server freezes during saves" regression introduced in v1.7.12. v1.7.12 joined all async disk IO (`fucksable$awaitPendingIO`) before `saveAll` returned, blocking the main thread on every save while waiting for all disk IO (gzip compression + `flush` disk sync) to finish. Changed to a "non-blocking submit + drain barrier" model: `saveAll` only submits disk IO to the async thread and never blocks inside `saveAll`; `flush` is deferred to the async thread and runs after the current batch of pending writes; before any later disk read (`getOrLoadHoldingChunk`) and before the next `saveAll` / `close`, pending async IO is drained (joined). This keeps the non-thread-safe `regionCache`/`storageCache` from being accessed concurrently by both threads while letting disk IO overlap with main-thread serialization.
release
Create-Aeronautics:Compatibility + Bug fixes 1.7.20
1.7.209 авг. 2026 г.390Minecraft: 1.21.1neoforge
Что нового
## [1.7.20] - 2026-08-04
### 重构 / Refactor
- **统一日志节流代理 / Unified log throttle proxy**: 创建 `ThrottledLogger` 统一输出代理类,按 key 限制日志输出频率(默认 60 秒窗口),支持永久去重(`warnOnce`)和转发到外部 Logger(`warnTo`/`errorTo`)。删除各 mixin 中分散的节流字段和逻辑,统一改为调用 `ThrottledLogger`。/ Created `ThrottledLogger` unified output proxy class, throttles log output by key (default 60s window), supports permanent dedup (`warnOnce`) and forwarding to external Logger (`warnTo`/`errorTo`). Removed scattered throttle fields and logic across mixins, unified to use `ThrottledLogger`.
- 改造的文件 / Modified files: `RapierPhysicsPipelineMixin`, `LevelDestroyBlockGuardMixin`, `FrogportItemExtractLimitMixin`, `SubLevelStorageLogSpamMixin`, `CttLogSpamFixMixin`, `RapierConstraintSelfFixMixinV1`, `RapierConstraintSelfFixMixinV2`
- `RapierPhysicsPipelineMixin` 中之前未节流的 warn 调用(`readPose`、`addVelocity`、`applyImpulse`、`applyForce`、`wakeUp`、`onStatsChanged`)现在也通过 `ThrottledLogger` 节流。/ Previously unthrottled warn calls in `RapierPhysicsPipelineMixin` (`readPose`, `addVelocity`, `applyImpulse`, `applyForce`, `wakeUp`, `onStatsChanged`) are now also throttled via `ThrottledLogger`.
release
Create-Aeronautics:Compatibility + Bug fixes 1.7.19
1.7.196 авг. 2026 г.878Minecraft: 1.21.1neoforge
Что нового
## [1.7.19] - 2026-08-04
### Bug 修复 / Bug Fixes
- **velocity 查询警告刷屏修复 / velocity query warning spam fix**: 修复 `getLinearVelocity` 和 `getAngularVelocity` 在访问无效/已移除的物理 body 时每 tick 输出警告导致控制台刷屏的问题。改为 60 秒节流窗口,窗口内只输出一次警告,和 `teleport` 警告的处理方式一致。/ Fixed `getLinearVelocity` and `getAngularVelocity` warning spamming console every tick when accessing invalid/removed physics bodies. Changed to 60s throttle window, only logging once per window, consistent with the `teleport` warning handling.
release
Create-Aeronautics:Compatibility + Bug fixes 1.7.18
1.7.182 авг. 2026 г.607Minecraft: 1.21.1neoforge
Что нового
## v1.7.18
### Bug 修复 / Bug Fixes
- **i18n 中文乱码修复 / i18n Chinese garbled text fix**: 修复 `LanguageManager` 读写语言文件时未指定 UTF-8 字符集导致中文乱码的问题。/ Fixed `LanguageManager` not specifying UTF-8 charset when reading/writing language files, causing garbled Chinese text.
### 变更 / Changes
- **硬编码中文国际化 / Hardcoded Chinese i18n**: 将 `FuckSableCommand`、`LevelSetBlockMonitorMixin`、`BlockUpdateMonitorMixin` 中的硬编码中文输出改为 i18n 调用,新增对应的翻译键到 `zh.yml` 和 `en.yml`(语言包版本升至 1.3)。/ Replaced hardcoded Chinese strings in `FuckSableCommand`, `LevelSetBlockMonitorMixin`, `BlockUpdateMonitorMixin` with i18n calls, added corresponding translation keys to `zh.yml` and `en.yml` (lang pack version bumped to 1.3).
### 历史版本累积 / Accumulated changes since v1.7.14
- **Issue #17 — Y 轴上限可配置化 / Y-axis limit configurable (Issue #17)**: `player-position-guard` 和 `physics-staff-drag-clipfix` 的 Y 轴上限从硬编码 `+1000` 改为可配置选项 `yMaxMargin`(默认 1000)。/ Changed Y-axis limit of `player-position-guard` and `physics-staff-drag-clipfix` from hardcoded `+1000` to configurable option `yMaxMargin` (default 1000).
- **配置文件自动迁移 / Config file auto-migration**: 每次启动都保存配置文件,老版本升级时自动补全新选项,用户已有配置不丢失。/ Config file is saved on every startup, automatically adding new options when upgrading from older versions without losing existing user config.
- **`/fucksable all reset` 命令修复 / `/fucksable all reset` command fix**: 修复 `resetFixOptions` 方法漏了处理 `all` 参数导致提示"all不是配置项"的问题。/ Fixed `resetFixOptions` method not handling the `all` argument, causing "all is not a valid fix" error.
release
Create-Aeronautics:Compatibility + Bug fixes 1.7.14
1.7.141 авг. 2026 г.310Minecraft: 1.21.1neoforge
Что нового
## [1.7.14] - 2026-08-01
### 变更 / Changes
- **ScalableLux 兼容性光照修复 / ScalableLux compat lighting fix (PR #16)**: 修复 `ScalableLuxCompatMixin` 中 `chunkGetter instanceof Level` 判断在 SubLevel 场景下失败导致 ScalableLux 兼容修复逻辑不执行、SubLevel 光照失效的问题。SubLevel 传入的 `LightChunkGetter` 本身可能不是 `Level` 实例(而是包装器),但 `getLevel()` 返回真正的 `Level`。改为 `chunkGetter.getLevel() instanceof Level` 后能正确识别。/ Fixed `ScalableLuxCompatMixin` `chunkGetter instanceof Level` check failing in SubLevel scenarios, causing ScalableLux compat logic to be skipped and SubLevel lighting to break. The `LightChunkGetter` passed for SubLevels may not be a `Level` instance itself (it's a wrapper), but `getLevel()` returns the real `Level`. Changed to `chunkGetter.getLevel() instanceof Level` for correct detection.
- 感谢 [Variapolis](https://github.com/Variapolis) 的贡献。/ Thanks to [Variapolis](https://github.com/Variapolis) for the contribution.
alpha
Create-Aeronautics:Compatibility + Bug fixes 1.7.13
1.7.131 авг. 2026 г.241Minecraft: 1.21.1neoforge
Что нового
## [1.7.13] - 2026-07-31
### 变更 / Changes
- **block-destroy-coordinate-guard mixin 注入失败修复 / block-destroy-coordinate-guard mixin injection failure fix (Issue #15)**: 修复 `LevelDestroyBlockGuardMixin` 中 `destroyBlock` 方法签名错误导致 mixin 注入失败、游戏启动崩溃的问题。1.21.1 中 `Level.destroyBlock` 的真实签名是 4 个参数 `destroyBlock(BlockPos, boolean, Entity, int)`,之前错误地使用了 3 个参数的签名。/ Fixed `LevelDestroyBlockGuardMixin` crash caused by incorrect `destroyBlock` method signature. In 1.21.1, `Level.destroyBlock` has 4 parameters `destroyBlock(BlockPos, boolean, Entity, int)`, but the mixin incorrectly used a 3-parameter signature.
alpha
Create-Aeronautics:Compatibility + Bug fixes 1.7.12
1.7.1231 июл. 2026 г.92Minecraft: 1.21.1neoforge
Что нового
## [1.7.12] - 2026-07-31
### 变更 / Changes
- **async-save PalettedContainer 多线程崩溃修复 / async-save PalettedContainer multithreading crash fix**: 修复 `async-save` 把整个 `saveAll` 重定向到异步线程导致 `PalettedContainer.pack` 触发 ThreadingDetector 崩溃的问题。改为统一"主线程序列化 + 异步磁盘 I/O"模式:序列化(`PalettedContainer.pack` → NBT 编码)在主线程执行,磁盘 I/O(`attemptSaveSubLevel`/`attemptSaveHoldingChunk`)提交到异步线程执行。/ Fixed `async-save` redirecting entire `saveAll` to async thread causing `PalettedContainer.pack` ThreadingDetector crash. Changed to unified "main-thread serialization + async disk I/O" model: serialization (`PalettedContainer.pack` → NBT encoding) runs on main thread, disk I/O (`attemptSaveSubLevel`/`attemptSaveHoldingChunk`) submitted to async thread.
- 移除 c2me 特殊处理,统一行为。/ Removed c2me special handling, unified behavior.
- **整数极限方块破坏坐标防护 / Integer-overflow block destruction coordinate guard (Issue #14)**: 新增 `block-destroy-coordinate-guard` 修复项,拦截 `Level.setBlock` 和 `Level.destroyBlock`,当坐标超出可配置范围(默认 X/Z ±30M, Y -512~1024)时跳过操作并记录警告(60 秒节流)。/ Added `block-destroy-coordinate-guard` fix: intercepts `Level.setBlock` and `Level.destroyBlock`, skips operations when coordinates exceed configurable limits (default X/Z ±30M, Y -512~1024) and logs throttled warnings (60s).
- 坐标范围可通过 `config/fucksable/config.json` 的 `fixParams.block-destroy-coordinate-guard` 节点调整。/ Coordinate limits are configurable via `fixParams.block-destroy-coordinate-guard` in `config/fucksable/config.json`.
- **修复项参数恢复命令 / Fix options reset command**: 新增 `/fucksable <fix> reset` 命令,恢复指定修复项的参数到默认值。/ Added `/fucksable <fix> reset` command to reset a fix's options to defaults.
release
Create-Aeronautics:Compatibility + Bug fixes 1.7.10
1.7.1031 июл. 2026 г.90Minecraft: 1.21.1neoforge
Что нового
## [1.7.10] - 2026-07-31
### 变更 / Changes
- **ScalableLux 不兼容声明绕过 / ScalableLux incompatibility declaration bypass**: 使用 NeoForge 官方的 `fml.toml` 依赖覆盖(`[dependencyOverrides]`)机制,绕过 Sable 的 `neoforge.mods.toml` 中对 ScalableLux 的 `type = "incompatible"` 声明,避免 NeoForge ModSorter 在启动阶段直接拒绝加载。/ Uses NeoForge's official `fml.toml` dependency override (`[dependencyOverrides]`) mechanism to bypass Sable's `type = "incompatible"` declaration against ScalableLux in `neoforge.mods.toml`, preventing NeoForge ModSorter from aborting startup.
- fs 启动时自动检查并写入 `fml.toml`,无需用户手动配置。/ fs automatically checks and writes `fml.toml` on startup, no manual configuration required.
- 替代了 v1.7.9 中复杂且易出问题的 CoreMod 方案。/ Replaces the complex and error-prone CoreMod approach from v1.7.9.
- **ScalableLux 兼容性 mixin 注入修复 / ScalableLux compat mixin injection fix**: 修复 `ScalableLuxCompatMixin` 的 `@At("NEW")` target 格式不正确导致 mixin 扫描 0 个目标,simulated mod 加载时崩溃(`Scanned 0 target(s)`)。/ Fixed `ScalableLuxCompatMixin` `@At("NEW")` target format causing mixin to scan 0 targets and crash when simulated mod loads (`Scanned 0 target(s)`).
- 将 target 从 `new <类名>(<描述符>)V` 改为纯类名 `net/minecraft/world/level/lighting/LevelLightEngine`。/ Changed target from `new <class>(<descriptor>)V` to plain class name `net/minecraft/world/level/lighting/LevelLightEngine`.
- **控制台刷屏修复 / Console log spam fix**: 修复无物理结构时 `Attempted to teleport invalid/removed body (id=0), skipping` 警告每 tick 刷屏的问题。/ Fixed `Attempted to teleport invalid/removed body (id=0), skipping` warning spamming console every tick when no physics structures exist.
- 警告改为 60 秒节流窗口,窗口内只输出一次。/ Warning now throttled to once per 60s window.
alpha
Create-Aeronautics:Compatibility + Bug fixes 1.7.9
1.7.931 июл. 2026 г.33Minecraft: 1.21.1neoforge
Что нового
## [1.7.9] - 2026-07-31
### Bug 修复 / Bug Fixes
- **ScalableLux 兼容性 mixin `@At("NEW")` target 格式修复 / ScalableLux compat mixin `@At("NEW")` target format fix**: 修复 v1.7.8 中 `ScalableLuxCompatMixin` 的 `@At("NEW")` target 使用了错误的方法描述符格式 `L<类名>;<init>(<参数描述符>)V`,导致 mixin 扫描 0 个目标(`Scanned 0 target(s). No refMap loaded.`),服务端启动崩溃(Issue #13)。/ Fixed v1.7.8 `ScalableLuxCompatMixin` `@At("NEW")` target using incorrect method descriptor format `L<class>;<init>(<descriptor>)V`, causing mixin to scan 0 targets (`Scanned 0 target(s). No refMap loaded.`) and crash server startup (Issue #13).
- **问题 / Issue**: `@At("NEW")` 要求 `new <类名>(<参数描述符>)V` 格式,但代码误用了 `L<类名>;<init>(<参数描述符>)V` 方法描述符格式,mixin 无法匹配 `new LevelLightEngine(...)` 调用点。/ `@At("NEW")` requires `new <class>(<descriptor>)V` format, but code mistakenly used `L<class>;<init>(<descriptor>)V` method descriptor format, mixin could not match `new LevelLightEngine(...)` call site.
- **修复 / Fix**: 将 target 改为 `new net/minecraft/world/level/lighting/LevelLightEngine(Lnet/minecraft/world/level/chunk/LightChunkGetter;ZZ)V`。/ Changed target to `new net/minecraft/world/level/lighting/LevelLightEngine(Lnet/minecraft/world/level/chunk/LightChunkGetter;ZZ)V`.
alpha
Create-Aeronautics:Compatibility + Bug fixes 1.7.8
1.7.830 июл. 2026 г.217Minecraft: 1.21.1neoforge
Что нового
## [1.7.8] - 2026-07-31
### Bug 修复 / Bug Fixes
- **ScalableLux 兼容性 mixin 注入失败修复 / ScalableLux compat mixin injection failure fix**: 修复 v1.7.7 中 `ScalableLuxCompatMixin` 因缺少 `remap = false` 注解导致 NeoForge 启动时 mixin 注入失败崩溃的问题(Issue #10)。/ Fixed crash on startup caused by `ScalableLuxCompatMixin` missing `remap = false` annotation in v1.7.7, which made mixin injection fail on NeoForge (Issue #10).
- **问题 / Issue**: NeoForge moddev 不生成 refmap,`@At("NEW")` target `new LevelLightEngine(...)` 无法解析,触发 `MixinTransformerError: Critical injection failure: Redirector fucksable$fixLightEngineInit ... Scanned 0 target(s). No refMap loaded`,服务端启动崩溃。/ NeoForge moddev does not generate refmap; the `@At("NEW")` target `new LevelLightEngine(...)` could not be resolved, triggering `MixinTransformerError: Critical injection failure: Redirector fucksable$fixLightEngineInit ... Scanned 0 target(s). No refMap loaded` and crashing server startup.
- **修复 / Fix**: 在 `@Mixin`、`@At`、`@Redirect` 注解均添加 `remap = false`,并将 `@Mixin(ServerLevelPlot.class)` 改为 `@Mixin(targets = "dev.ryanhcode.sable.sublevel.plot.ServerLevelPlot", remap = false)`,与项目其他 mixin 保持一致。/ Added `remap = false` to `@Mixin`, `@At`, and `@Redirect` annotations, and changed `@Mixin(ServerLevelPlot.class)` to `@Mixin(targets = "dev.ryanhcode.sable.sublevel.plot.ServerLevelPlot", remap = false)`, consistent with other mixins in the project.
alpha
Create-Aeronautics:Compatibility + Bug fixes 1.7.7
1.7.729 июл. 2026 г.244Minecraft: 1.21.1neoforge
Что нового
## [1.7.7] - 2026-07-30
### 变更 / Changes
- **ScalableLux 兼容性修复 / ScalableLux compatibility fix**: 修复 ScalableLux 与 Sable 的光照引擎不兼容问题(Issue #8)。/ Fixed ScalableLux incompatibility with Sable's light engine (Issue #8).
- **问题 / Issue**: Sable 的 `ServerLevelPlot` 构造函数从主世界 `LevelLightEngine` 读取 `blockEngine`/`skyEngine` 字段判断 SubLevel 是否有方块光/天空光。ScalableLux 的 `LevelLightEngineMixin.construct` 清空了这两个字段(用 `StarLightInterface` 替代 vanilla 光照引擎),导致 Sable 误判 SubLevel 无方块光、无天空光,SubLevel 光照完全失效。/ Sable's `ServerLevelPlot` constructor reads the `blockEngine`/`skyEngine` fields of the main world `LevelLightEngine` to determine if the SubLevel has block light / sky light. ScalableLux's `LevelLightEngineMixin.construct` clears these fields (replacing vanilla light engine with `StarLightInterface`), causing Sable to misjudge SubLevel as having no block light and no sky light, completely disabling SubLevel lighting.
- **修复 / Fix**: 新增 `scalablelux-compat` 修复项,拦截 `ServerLevelPlot` 构造函数中 `new LevelLightEngine(...)` 调用,当 ScalableLux 存在时通过 `StarLightInterface.hasBlockLight()/hasSkyLight()` 重新计算正确的光照参数。/ Added `scalablelux-compat` fix: intercepts `new LevelLightEngine(...)` in `ServerLevelPlot` constructor; when ScalableLux is present, recalculates correct light parameters via `StarLightInterface.hasBlockLight()/hasSkyLight()`.
- **物理结构崩溃修复 / Physics structure crash fix**: 修复 simulated mod 的 `EndSeaPhysics.physicsTick` 调用 `RigidBodyHandle.getLinearVelocity` 访问已移除的 rapier native body 导致 `RuntimeException: Body has been removed` 崩溃。/ Fixed `RuntimeException: Body has been removed` crash when simulated mod's `EndSeaPhysics.physicsTick` calls `RigidBodyHandle.getLinearVelocity` on a removed rapier native body.
- 新增 `RigidBodyHandleMixin`,拦截 `getLinearVelocity` 和 `getAngularVelocity` 方法,try-catch 捕获 `RuntimeException` 并返回零向量,复用 `panic-guard` 修复项开关。/ Added `RigidBodyHandleMixin`: intercepts `getLinearVelocity` and `getAngularVelocity`, catches `RuntimeException` and returns zero vector, reuses the `panic-guard` fix toggle.
- **配置文件修复 / Config file fix**: 修复配置文件不存在时未重新生成的问题,以及执行命令修改配置后未立即保存的问题。/ Fixed config not regenerating when missing, and config not saving immediately after command modification.
- 配置保存时记录修复项的显式启用状态(`isExplicitlyEnabled`)而非 `isEnabled`,避免环境条件未满足的修复项被误写为 false。/ Config now saves explicit enable state (`isExplicitlyEnabled`) instead of `isEnabled`, preventing fixes with unmet environment conditions from being written as false.
- 首次启动或配置文件被删除时立即重新生成。/ Regenerates immediately on first launch or when config is deleted.
release
Create-Aeronautics:Compatibility + Bug fixes 1.7.6
1.7.629 июл. 2026 г.42Minecraft: 1.21.1neoforge
Что нового
## [1.7.6] - 2026-07-30
### 变更 / Changes
- **c2me 兼容性修复 / c2me compatibility fix**: 修复 fucksable 的 `async-save` 修复项与 c2me 的 `preventAsyncEntityUnload` mixin 冲突问题。/ Fixed conflict between fucksable's `async-save` fix and c2me's `preventAsyncEntityUnload` mixin.
- **问题 / Issue**: fucksable 把 `SubLevelHoldingChunkMap.saveAll` 整体放到异步 IO 线程执行,异步线程执行 `processUnloads` → `removeSubLevel` → `removeEntity` 时,c2me 检测到异步线程调用 `ChunkMap.removeEntity` 并抛出 `ConcurrentModificationException: Async entity unload`,导致 sub-level 保存流程中断。/ fucksable ran `saveAll` entirely on async IO thread; when the async thread called `processUnloads` → `removeSubLevel` → `removeEntity`, c2me detected async `ChunkMap.removeEntity` call and threw `ConcurrentModificationException: Async entity unload`, interrupting the sub-level save flow.
- **修复 / Fix**: 检测 c2me 存在时,`saveAll` 在主线程执行(unload 部分不触发 c2me 冲突),但磁盘 IO(`attemptSaveSubLevel`、`attemptSaveHoldingChunk`)提交到异步 IO 线程执行,`saveAll` 返回前等待所有异步磁盘 IO 完成。/ When c2me is present, `saveAll` runs on main thread (unload does not trigger c2me conflict), but disk IO (`attemptSaveSubLevel`, `attemptSaveHoldingChunk`) is submitted to async IO thread; `saveAll` waits for all async disk IO to complete before returning.
- **影响 / Impact**: c2me 存在时保留异步磁盘 IO 性能,同时避免实体卸载冲突。c2me 不存在时行为不变。/ Preserves async disk IO performance when c2me is present while avoiding entity unload conflict. Behavior unchanged when c2me is absent.
release
Create-Aeronautics:Compatibility + Bug fixes 1.7.5
1.7.529 июл. 2026 г.165Minecraft: 1.21.1neoforge
Что нового
## [1.7.5] - 2026-07-19
### 变更 / Changes
- **开源到 XSY-Team 组织 / Open-sourced to XSY-Team org**: 代码现在同时托管在 [XSY-Team/fuck-sable](https://github.com/XSY-Team/fuck-sable)(主仓库)和 [OLKMO/FuckSable-Unofficial](https://github.com/OLKMO/FuckSable-Unofficial)(个人仓库)。/ Code is now hosted on both [XSY-Team/fuck-sable](https://github.com/XSY-Team/fuck-sable) (main) and [OLKMO/FuckSable-Unofficial](https://github.com/OLKMO/FuckSable-Unofficial) (personal). 两个仓库内容一致,同步维护。/ Both repos have identical content and are maintained in sync.
- **jar 产物重命名 / jar artifact renamed**: `FuckSable-Unofficial-x.x.x.jar` → `fuck-sable-x.x.x.jar`,与新仓库名一致。/ Renamed to match the new repo name.
- **UpdateChecker 双源查询 / UpdateChecker dual-source query**: 更新检查器现在同时查询 `OLKMO/FuckSable-Unofficial` 和 `XSY-Team/fuck-sable` 两个仓库的 latest release,取版本号更高的作为更新提示。单个仓库查询失败不影响另一个。/ Update checker now queries both `OLKMO/FuckSable-Unofficial` and `XSY-Team/fuck-sable` repos for the latest release, using the higher version as the update notification. Failure of one repo query does not affect the other.
- **README 链接调整 / README link updates**: README 中的图片 URL 和 Releases 链接主链接改为 `XSY-Team/fuck-sable`,同时保留 `OLKMO/FuckSable-Unofficial` 作为备用下载源。/ README image URL and Releases links now point to `XSY-Team/fuck-sable` as the main source, with `OLKMO/FuckSable-Unofficial` kept as a backup download source.
beta
Create-Aeronautics:Compatibility + Bug fixes 1.6.8
1.6.819 июн. 2026 г.9,8 тыс.Minecraft: 1.21.1neoforge
Что нового
### Bug Fixes
- Fix Vista camera chunk loading incompatibility with Sable physics structures: project ViewFinder SubLevel coordinates to world coordinates before force-loading chunks, preventing TPS drop and infinite loading loops
- Fix `SteamVentValueBoxTransformMixin` crash on Aeronautics 1.3.0+: remove `@Shadow direction` field (removed in upstream), use reflection to set direction field for cross-version compatibility
alpha
Create-Aeronautics:Compatibility + Bug fixes 1.6.7
1.6.719 июн. 2026 г.81Minecraft: 1.21.1neoforge
Что нового
- Fix CTT log spam fix mixin crash: correct Logger.warn target signature
- Fix RapierPhysicsPipelineMixin crash: remove unused poseCache @Shadow field
- Fix startup animation character misalignment
release
Create-Aeronautics:Compatibility + Bug fixes 1.6.5
1.6.519 июн. 2026 г.622Minecraft: 1.21.1neoforge
Что нового
- Fix physics structures spamming logs when repeatedly out of world bounds — now only warns once per SubLevel
beta
Create-Aeronautics:Compatibility + Bug fixes 1.6.4
1.6.418 июн. 2026 г.102Minecraft: 1.21.1neoforge
Что нового
v1.6.4: fix ParticleEngine.crack signature, update SteamVent mixin, enable fixes for both sides
release
Create-Aeronautics:Compatibility + Bug fixes 1.6.3
1.6.317 июн. 2026 г.125Minecraft: 1.21.1neoforge
Что нового
## v1.6.3
### Bug Fixes
- Fix crash on Sable 2.0.2+: `@Shadow field sceneId was not located in RapierPhysicsPipeline` (field removed in upstream)
- Remove fstemp3/fsban/fslook features (conflicted with core functionality)
- Restore auto-update to config-controlled behavior
release
fuck-sable 1.6.1
1.6.19 июн. 2026 г.107Minecraft: 1.21.1neoforge
Что нового
Initial commit version