v26.2-0.17.0
·
101 commits
to releases/26.2
since this release
Summary
Breaking Changes
- Sign storage is now region-sharded. Instead of one signs.json per world, sign data is split into per-region files under
bluemapsignmarkers/<level>/<dimension>/. This happens automatically on first boot after upgrading — your oldsigns.jsonis renamed as a backup, not deleted. (#109) - Signs removed from unloaded chunks now get cleaned up on load. If a sign's block is gone when its chunk loads (e.g. its region file was deleted or regenerated outside the mod), the matching marker is now removed instead of lingering on the map. (#110)
- Downgrading is not supported. Once you upgrade and the mod migrates your sign data to the region-sharded format, going back to
v26.2-0.16.0or earlier is unsafe — older versions only read the oldsigns.json, which will be stale. - Back up before you upgrade. As good practice, back up your sign storage folder and
config/bluemapsignmarkers/BMSM-Core.jsonbefore installing this release.
Fixes
- Fixed a bug where upgrading from an old world save could crash the migration or silently drop signs when a sign's marker-group prefix could no longer be found. (#138)
- Fixed a bug where one invalid or missing marker-group prefix in your config could stop all sign processing. Invalid groups are now caught once at config load and logged, instead of crashing every sign parse. (#139)
/bluemap reloadnow removes markers for signs whose prefix no longer matches any configured marker group, instead of leaving them behind. (#121)- Fixed a rare race condition on server startup that could affect sign loading. (#167)
- Fixed a bug where reloading BlueMap's config (
/bluemap reload) could leave a disabled connector still listening for events, risking duplicate or inconsistent marker updates. (#140)
Internal
- Added broad unit test coverage across the sign-parsing, persistence, and config layers, and hardened several concurrency-sensitive paths for correctness.
What's Changed
- #129 Bootstraps unit testing by @tpwalke2 in #130
- #131 escape html special characters from signs by @tpwalke2 in #132
- #109 Changes sign storage to be sharded by region by @tpwalke2 in #141
- #110 Refresh signs on chunk load by @tpwalke2 in #142
- #121 allow hot reloads on config by @tpwalke2 in #143
- #144 Add tests for ReactiveQueue by @tpwalke2 in #145
- #144 Add tests for MarkerSetIdentifierCollection by @tpwalke2 in #146
- #144 Add tests for ActionFactory by @tpwalke2 in #147
- #144 Add tests for config provider by @tpwalke2 in #148
- #144 Add tests for config manager by @tpwalke2 in #149
- #144 Add tests for FileUtils by @tpwalke2 in #150
- #144 Add tests for SignEntry by @tpwalke2 in #151
- #144 Add tests for ParsingContext by @tpwalke2 in #152
- #144 Add tests for Version3Converter by @tpwalke2 in #153
- #144 Add tests for VersionedFileSignEntryLoader by @tpwalke2 in #154
- #144 Add tests for Version1SignEntryLoader by @tpwalke2 in #155
- Feature/tpwalke2/144 context by @tpwalke2 in #156
- #134 Do not restart thread if attempting to shutdown by @tpwalke2 in #157
- #137 synchronizes updates to marker sets by @tpwalke2 in #158
- #159 wait for remaining tasks to complete by @tpwalke2 in #160
- #159 synchronize queue assignment by @tpwalke2 in #161
- #159 synchronize markersetidentifiercollection by @tpwalke2 in #162
- #159 synchronize in SignManager by @tpwalke2 in #163
- #138 Do not make up prefixes if not found by @tpwalke2 in #164
- #139 Catch regex exceptions by @tpwalke2 in #165
- #140 detach exact listener instances by @tpwalke2 in #166
- #167 fix SignManager race condition by @tpwalke2 in #168
- Merge latest from main to 26.2 release branch by @tpwalke2 in #170
Full Changelog: v26.2-0.16.0...v26.2-0.17.0