COWMODSКаталог модов
Really Fast Paintings

ВЕРСИИ (3)

release

Really Fast Paintings 2.0.0

2.0.0
27 сент. 2026 г.295Minecraft: 26.3fabric
Скачать
Что нового
# Really Fast Paintings v2.0.0 Minecraft 26.3 release for Fabric. - Updated painting placement, persistence, rendering, and metadata for Minecraft 26.3. - Requires Fabric Loader 0.19.5 or newer, Fabric API 0.161.0 or newer for 26.3, and Java 25. - Keeps Distant Decorations 2.0.0 optional. Its published Modrinth artifact supplies the compile API. - Added client GameTests that enter a world, render a 2×2 painting, and exercise Distant Decorations record delivery and distant render submission. [Changes since v1.1.0](https://github.com/justbecauseph/really-fast-paintings/compare/v1.1.0...v2.0.0)
release

Really Fast Paintings 1.1.0

1.1.0
12 сент. 2026 г.313Minecraft: 26.2fabric
Скачать
Что нового
# Changelog: v1.0.0...v1.1.0 ### Summary Really Fast Paintings **v1.1.0** focuses on baseline correctness, failure-safe migration and restoration boundaries, prevention of duplicate entities or orphaned helper parts, chunk-granular auditing, and regression test coverage. --- ### 🐛 Bug Fixes - **Anchor Coordinate Resolution Outside Origin:** - Fixed an issue in [`PaintingPartBlock.findAnchorLookup(...)`]( src/main/java/me/justbecause/fastpaintings/block/PaintingPartBlock.java#L110-L162) where search candidates were allocated without setting offset coordinates (defaulting to `(0, 0, 0)`). Multipart paintings placed away from origin now properly resolve their anchor across all 4 horizontal facings. - Implemented [`AnchorLookupResult`]( src/main/java/me/justbecause/fastpaintings/block/PaintingPartBlock.java#L164-L186) (`Found`, `Unloaded`, `Orphan`) to avoid treating part blocks adjacent to unloaded chunks as orphans, eliminating premature self-destruction or forced chunk loading. - **Placement Order & Neighbor Updates:** - Fixed placement sequencing in [`PaintingPlacementService.tryPlacePainting(...)`]( src/main/java/me/justbecause/fastpaintings/painting/PaintingPlacementService.java#L23-L65): the anchor block is placed and its [`PaintingBlockEntity`]( src/main/java/me/justbecause/fastpaintings/block/entity/PaintingBlockEntity.java) variant initialized before placing part blocks, preventing neighbor-update cascades from destroying part blocks during placement. - **Multi-Tick Restoration Suppression Loop:** - Restored vanilla `Painting` entities are tagged with `fastpaintings:restored` and tracked in an in-memory suppressed UUID set in [`PaintingConversionService`]( src/main/java/me/justbecause/fastpaintings/painting/PaintingConversionService.java#L24-L50), preventing automatic conversion listeners from immediately reconverting newly restored entities on the next server tick. - **Removal-Guard State Reset:** - Guaranteed that [`PaintingBlockEntity.setRemoving(false)`]( src/main/java/me/justbecause/fastpaintings/block/entity/PaintingBlockEntity.java#L48-L54) is properly reset during restoration rollback, preventing surviving anchor blocks from remaining permanently locked against future removal. --- ### 🛡️ Safety & Recovery Improvements - **Staged Restoration Recovery & Rollback Boundary:** - Expanded the recovery boundary in [`PaintingConversionService.tryRestore(...)`]( src/main/java/me/justbecause/fastpaintings/painting/PaintingConversionService.java#L180-L336) to begin prior to footprint removal. - Added pre-spawn footprint validation ensuring all cells are cleared of block representations before attempting entity insertion. - Structured recovery into two distinct, independently guarded stages: 1. **Stage 1 (Entity Reconciliation & Cleanup):** Cleans up attempted entities and clears suppression markers via [`EntityCleaner`]( src/main/java/me/justbecause/fastpaintings/painting/PaintingConversionService.java#L143-L146). 2. **Duplicate Representation Prevention:** If entity cleanup fails and the attempted vanilla entity remains active in the level, footprint rollback is skipped to prevent duplicate representations (both active entity and block painting). Throws a location-bearing [`RestorationException`]( src/main/java/me/justbecause/fastpaintings/painting/RestorationException.java) containing the anchor position, preserving all failure causes. 3. **Stage 2 (Footprint Rollback):** Safely restores all footprint cells to their original block states and resets the anchor removal guard only when the entity is confirmed dead/absent from the level. - **Suppression Preservation on Failed Operator Reconversion:** - Preserved restoration tags and UUID suppression when an operator explicitly runs `/fastpaintings convert` and conversion fails due to an obstacle (such as custom entity data). Suppression markers are retained until conversion commits successfully. --- ### 📊 Migration & Diagnostic Commands - **Section-Granular Chunk State Auditing:** - Implemented [`PaintingMigrationCommand.scanChunk(LevelChunk)`]( src/main/java/me/justbecause/fastpaintings/command/PaintingMigrationCommand.java#L209-L239) using palette prechecks (`section.maybeHas(...)`) and intra-section block iteration `(0..15)`: - Counts actual `PAINTING_BLOCK` states directly (`scan.anchorBlocks()`). - Counts `PAINTING_PART_BLOCK` helper states (`scan.helperParts()`). - Separately counts instantiated [`PaintingBlockEntity`]( src/main/java/me/justbecause/fastpaintings/block/entity/PaintingBlockEntity.java)s (`scan.anchorBlockEntities()`). - Missing-BE orphan anchor states never report false clean (0 anchors). - `/fastpaintings stats` output displays: `Block painting anchors: %d (BlockEntities: %d)` alongside helper parts. - Guaranteed zero boundary-crossing reads into unloaded chunks during chunk scans. - **Command Scope & Safe Uninstallation Documentation:** - Updated [`README.md`]( README.md#L87-L119) and in-game feedback to clarify execution scopes: - `/fastpaintings convert` evaluates loaded entities across all dimensions. - `/fastpaintings stats` and `/fastpaintings restore` operate strictly on loaded chunks around active players or world spawn. - Added a step-by-step **Safe Uninstallation Procedure** to guide operators in backing up worlds, disabling conversion configs, restoring paintings in loaded chunks, and certifying 0 remaining anchors/helpers before removing the mod jar. --- ### 🧪 Testing & Verification - **New Unit Tests:** - Added [`PaintingPartBlockUnitTest.java`]( src/test/java/me/justbecause/fastpaintings/block/PaintingPartBlockUnitTest.java) (5 tests), covering: - Anchor lookup candidate calculation within bounded planes. - Strict avoidance of reads into unloaded chunks (`testAnchorLookupCandidateMakesNoReadsIntoUnloadedChunks`). - Proven orphan detection when all candidates are loaded. - Total unit test suite: **67 tests passing (0 failures)**. - **Expanded GameTest Suite:** - Expanded [`FastPaintingsGameTests.java`]( src/gametest/java/me/justbecause/fastpaintings/test/FastPaintingsGameTests.java) from 5 to **22 mod tests (23 total GameTests passing)**: - All 4 horizontal facings (`NORTH`, `SOUTH`, `EAST`, `WEST`) tested for placement and break. - Multipart anchor resolution and break verification outside origin with drop integrity assertions. - Backing wall destruction via natural game physics block updates. - Multi-tick restoration suppression survival. - Atomic rollback on entity insertion failures, spawner crashes, and incomplete removals. - `testRestorationCleanupFailurePreventsDuplicateRepresentations`: Verifies rollback is skipped and `RestorationException` raised if an entity remains active. - `testStatsCountsAnchorBlockWithoutBlockEntity`: Verifies orphan anchor blocks without block entities are counted accurately. - Zero item drops in creative mode. --- ### 📦 Commits (v1.0.0...v1.1.0) - [`7baecfe`](https://github.com/justbecauseph/fast-paintings/commit/7baecfe) `fix: separate cleanup and rollback recovery stages and enumerate anchor block states` - [`9219c07`](https://github.com/justbecauseph/fast-paintings/commit/9219c07) `fix: harden restoration recovery boundary, chunk-granular stats, and regression test suite` - [`84c3faf`](https://github.com/justbecauseph/fast-paintings/commit/84c3faf) `fix: harden restoration safety, uninstallation scope, and honest test harness` - [`105191d`](https://github.com/justbecauseph/fast-paintings/commit/105191d) `fix: address reproduced restoration safety failures` - [`afa0d9e`](https://github.com/justbecauseph/fast-paintings/commit/afa0d9e) `test: cover callback removal and multi-tick restoration` - [`6ccddc9`](https://github.com/justbecauseph/fast-paintings/commit/6ccddc9) `fix: resolve multipart painting anchors outside world origin` **Full Changelog**: https://github.com/justbecauseph/really-fast-paintings/compare/v1.0.0...v1.1.0
release

Really Fast Paintings 1.0.0

1.0.0
21 авг. 2026 г.16Minecraft: 26.2fabric
Скачать
Что нового
**Full Changelog**: https://github.com/justbecauseph/really-fast-paintings/commits/v1.0.0