▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Моды/Really Fast Paintings
Really Fast Paintings

Really Fast Paintings

Block-backed paintings for Minecraft on Fabric.

Оцените первым
449
1
Все версии→Really Fast Paintings 1.1.0

Really Fast Paintings 1.1.0

Release12.09.2026

Список изменений

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(...) 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 (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(...): the anchor block is placed and its PaintingBlockEntity 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, preventing automatic conversion listeners from immediately reconverting newly restored entities on the next server tick.
  • Removal-Guard State Reset:

    • Guaranteed that PaintingBlockEntity.setRemoving(false) 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(...) 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.
      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 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) 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 PaintingBlockEntitys (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 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 (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 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 fix: separate cleanup and rollback recovery stages and enumerate anchor block states
  • 9219c07 fix: harden restoration recovery boundary, chunk-granular stats, and regression test suite
  • 84c3faf fix: harden restoration safety, uninstallation scope, and honest test harness
  • 105191d fix: address reproduced restoration safety failures
  • afa0d9e test: cover callback removal and multi-tick restoration
  • 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

Файлы

fast-paintings-1.1.0.jar(92.29 KiB)
Основной
Скачать

Метаданные

Канал релиза

Release

Номер версии

1.1.0

Загрузчики

Fabric

Версии игры

26.2

Загрузок

316

Дата публикации

12.09.2026

Загрузил

ID версии

Главная