Skip to content

ForgeMultipart ​

11 merged pull requests.

Needs action on an existing world:

  • [read before updating] #47 Fixed a critical issue where microblocks were randomly transforming into Blood Rune slabs. The problem was caused by unknown material names falling back to id 0 and a race condition in single-player where the client handshake cleared shared name maps while the server was reading them. Now unknown materials resolve to a placeholder and redundant handshakes are skipped in integrated mode.
    No step is needed before you update, but do not expect a repair. Microblocks that already turned into Blood Rune slabs in a singleplayer world are permanently changed on disk and have to be broken and put back by hand. From 2.9.0-beta-3 on, no further microblocks are converted, and a microblock whose material is genuinely missing shows the purple-and-black missing texture instead of silently becoming a Blood Rune.

New Features ​

  • #53 Added ISBRHPart interface and updated MultipartRenderer and TileMultipart to support ISBRH-based rendering for parts that implement the interface. - @Cardinalstars
    • Added: ISBRHPart interface
  • #48 Added ItemMicroPartTransformer and PosteaCompat classes that implement PostEA transformer integration to remap microblock material IDs during mod transitions. - @FourIsTheNumber
    • Added: ItemMicroPartTransformer, PosteaCompat integration
  • #38 Added dynamic render option to TMultiPart interface and updated TileMultipart render logic to use the new option instead of doesTick dependency. - @Worive
    • Added: dynamic render option

Changes ​

  • #50 Refactored render pass handling in BlockMultipart, MultipartRenderer, and TileMultipart to improve thread-safety during concurrent rendering operations. - @mitchej123
  • #45 Changed BlockMultipart material definition from Material.rock to a more fitting alternative material class. - @DarkShadow44

Bug Fixes ​

  • #47 Modified DefaultContent, ItemMicroPart, and MicroMaterialRegistry to resolve unknown material names to MissingMicroMaterial placeholder instead of id 0, and updated packet handlers to skip redundant id-map handshakes on integrated clients. - @Caedis
    • Added: MissingMicroMaterial placeholder class
    • Fixed: microblocks becoming Blood Rune slabs randomly
    • Migration: No step is needed before you update, but do not expect a repair. Microblocks that already turned into Blood Rune slabs in a singleplayer world are permanently changed on disk and have to be broken and put back by hand. From 2.9.0-beta-3 on, no further microblocks are converted, and a microblock whose material is genuinely missing shows the purple-and-black missing texture instead of silently becoming a Blood Rune.
    • Closes GTNH#14921
  • #46 Added null check in TMultiPart.sendDescUpdate to skip sending updates when tile() is null, protecting against NPE during chunk unload and wireless redstone frequency updates. - @alppp
    • Fixed: null pointer crash on chunk unload in sendDescUpdate
  • #44 Fixed world client reference leak in MultipartRenderer to properly clear references after rendering. - @Alexdoru
    • Fixed: world client memory leak in renderer
  • #43 Fixed world client reference leak in ControlKeyModifier and MultipartMod handler keybind processing. - @Alexdoru
    • Fixed: world client memory leak in keybind handler
  • #41 Improved world server lifecycle management in MultipartMod handler to properly null out references and prevent memory leaks. - @Alexdoru
    • Fixed: world server memory leak
  • #37 Reverted light value caching in BlockMultipart and TileMultipart; improved null-safety in tile iteration to prevent NPE when tile() returns null during light value queries. - @Worive
    • Removed: light value caching
    • Fixed: AE2 null pointer crash, glowstone mob spawn prevention
    • Closes GTNH#22769, GTNH#22774

Contributors ​

Everyone who authored, reviewed or co-authored a change on this page, with how many of them:

@boubou19 (4), @Alexdoru (3), @Caedis (2), @Kogepan229 (2), @RecursivePineapple (2), @Worive (2), @alppp (1), @Cardinalstars (1), @DarkShadow44 (1), @FourIsTheNumber (1), @Guvante (1), @Luca-Guettinger (1), @mitchej123 (1), @OvermindDL1 (1)