Skip to content

MatterManipulator ​

62 merged pull requests.

New Features ​

  • #79 Added edit transform functionality across all manipulator modes by extending ItemMatterManipulator with mode-specific transform windows (cable transform, cylinder transform, generic cube transform). - @Azusfin
    • Added: transform editing UI for all modes, cable-specific transform window, cylinder-specific transform window, localization strings for new UI
  • #78 Added EnderStorageItemConsumer.java that registers as a custom consumer in MMItemConsumer.java, providing special handling for Ender Storage items. - @Azusfin
    • Added: EnderStorageItemConsumer for flexible ender storage handling
  • #76 Enhanced AECellItemProvider.java to copy cell restriction settings. - @Azusfin
    • Added: AE cell restriction copying
  • #75 Added Dynamism Tablet property detection to BlockPropertyRegistry.java. - @Azusfin
    • Added: Dynamism Tablet copy support
  • #74 Added Forestry wood type detection to BlockPropertyRegistry.java. Wood type is extracted from NBT rather than metadata. - @vermz99
    • Added: Forestry wood tile entity support
  • #73 Extended ItemMatterManipulator.java with transform editing in move mode. Added networking message in Messages.java to synchronize transform changes. Updated MMRenderer.java to enforce default transform when rendering paste region. - @Azusfin
  • #72 Created new ItemConsumer interface and implementations (AECableItemConsumer, DefaultItemConsumer, IItemConsumer) in consumers/ package. Refactored PendingBuild.java to use the new consumer system. Registered consumers can provide special handling for items not found in inventory. - @Azusfin
    • Added: ItemConsumer interface and system, AECableItemConsumer for flexible cable consumption
    • Closes GTNH#24609
  • #71 Enhanced ComputerComponentItemProvider.java to add APU to fuzzy matching and implement special handling for loot floppy disks. - @Azusfin
    • Added: APU and loot floppy disk copy support
    • Fixed: Matter Manipulator cannot copy APUs in Quantum Computer racks
    • Closes GTNH#25995
  • #69 Extended PatternItemProvider.java to handle the new AE2 Ultimate Pattern item type. - @Azusfin
    • Added: AE2 Ultimate Pattern copy support
    • Closes GTNH#25775
  • #68 Enhanced AECellItemProvider.java to handle fluid cells using FluidStack directly. Updated GTAnalysisResult.java and MMUtils.java to support fluid cell serialization. - @hinyb
    • Added: Fluid cell copy/paste support
    • Fixed: Matter Manipulator crash with filtered ME Output Hatch fluid cells
    • Closes GTNH#25866
  • #66 Added fluidTransferRate detection support in BlockPropertyRegistry.java for OC Transposer blocks. - @Azusfin
    • Added: OC Transposer copy support with fluid transfer rate detection
  • #47 Added ComputerComponentItemProvider class to handle OC component duplication; treats addressed EEPROMs, HDDs, and floppies specially with size constraints. - @Vlamonster
    • Added: OpenComputers component copying
  • #44 Extended InteropConstants and MMState cable registry; added OC cable detection in MMUtils and Mods compatibility check. - @Luca-Guettinger
    • Added: Open Computers cable support
  • #40 Introduced SmartCopyIntegration and WirelessLinkFixer classes; extended MMState and PendingBuild to track and apply advanced copy transformations; requires AE2 PR #1205. - @Luca-Guettinger
    • Added: wireless connector auto-linking, auto-proxy CRIB replacement, auto-P2P interface conversion
  • #34 Added FMPPartTransforms class to handle FMP/Project Red rotation and placement logic; extended MultipartAnalysisResult to store additional metadata; updated MMRenderer for improved visualization. - @Luca-Guettinger
    • Added: FMP/Project Red copy-paste support, rotation handling for multipart blocks, support block failure messages in survival
  • #22 Added support for MEOutput cacheMode and checkMode; updated dependencies and gradle configuration for upstream GT5-Unofficial#5853. - @hinyb
    • Added: MEOutput cacheMode support, MEOutput checkMode support
  • #18 Added BlockSpec::toDisplayString() method and updated ItemMatterManipulator to use localized tooltip strings. - @Discreater
    • Added: localized tooltip strings, BlockSpec::toDisplayString method
  • #13 Refactored MTEMMUplink class (-52 lines, +13 lines) as part of post-feature-freeze merge. - @Dream-Master

New Content ​

  • #65 Updated MTEMMUplink.java tooltip generation and WirelessLinkFixer.java. Adjusted dependency versions. - @DylanTaylor1

Changes ​

  • #64 Updated WirelessLinkFixer.java to adapt to changes in AE2's wireless connector and hub implementation. - @Kogepan229
  • #60 Enhanced RenderHints.java and StreamingVertexBuffer.java with improved rendering logic. Updated MMRenderer.java and MMState.java to prevent AE cable interaction crashes. Dependency updates in dependencies.gradle. - @RecursivePineapple
    • Added: Togglable dependency features
    • Fixed: AE cable render crash
  • #57 Migrated tessellator usage from CapturingTessellator to LocalTessellator; refactored BoxRenderer, RenderHints, and VertexBuffer classes; updated dependency versions; requires GTNHLib PR #393. - @sisyphussy
  • #53 Adjusted GTAnalysisResult and MTEMMUplink to align with GT5u API changes; updated dependency version. - @Kogepan229
  • #50 Updated InteropConstants, WirelessLinkFixer, WirelessBlockMover, and BlockPropertyRegistry to use AE2 wireless component APIs instead of AE2Stuff; adjusted dependencies and removed AE2Stuff references. - @Kogepan229
    • Migration: Update code that references AE2Stuff wireless connector/hub APIs to use the new AE2 versions.
  • #48 Introduced BlockPropertyRegistry to store OC TE block face/rotation properties. - @Vlamonster
    • Added: OpenComputers orientation tracking
  • #30 Bumped GT5-Unofficial dependency for GT5-Unofficial#5261 language file standardization. - @iouter
  • #26 Added Textures class with OptionalResource support and updated MTEMMUplink to use the new texture API. - @leagris
    • Added: Textures class with OptionalResource support
  • #25 Bumped GT5-Unofficial dependency version for GT5-Unofficial#5781. - @boubou19
  • #21 Updated BlockPropertyRegistry to adapt for GT5-Unofficial#5771 CAL changes. - @boubou19
  • #19 Refactored chat messaging to use ChatComponentTranslation throughout analysis results and building classes, allowing client-side localization. - @Discreater
    • Added: client-side chat localization
    • Fixed: server-language forcing on clients
  • #16 Updated dependencies and rendering code (BoxRenderer, QuadViewComparator, RenderHints) to use new quads API from GTNHLib#100. - @ah-OOG-ah
  • #15 Language file update correcting grammar in en_US.lang. - @GTNH-Afx237v7
    • Fixed: grammar in upgrade description

Bug Fixes ​

  • #82 Updated AEAnalysisResult and AEPartData to track and enforce pattern capacity limits; added capacity validation in MMUtils. - @Azusfin
  • #81 Modified AECellItemProvider to skip fuzzy mode configuration when fuzzy card is absent, resulting in cleaner NBT structures for empty cells. - @AnsonYeung
    • Fixed: NBT pollution from unwanted fuzzy mode entries
  • #80 Added server-side check in ItemMatterManipulator to validate uplink charging requests. - @Azusfin
    • Fixed: missing server-side check for uplink charging
  • #77 Improved error handling and upgrade installation logic in MMUtils.java to properly handle creative mode and report missing upgrades. - @Azusfin
    • Fixed: AE upgrades not copied in creative mode, Missing upgrade error messages
  • #67 Added an inventory adapter in InventoryAdapter.java that filters out the pattern slots in Arcane Assembler blocks, preventing them from being treated as normal inventory items. - @tiffit
    • Added: Arcane Assembler inventory adapter to ignore pattern slots
    • Fixed: Matter Manipulator + Arcane Assembler duplication exploit
    • Closes Dupes-Exploits-GTNH#326
  • #63 Modified PendingBuild.java and PendingMove.java to send translation keys and arguments to the client for localization, rather than pre-translating on the server using StatCollector. - @Eldrinn-Elantey
    • Fixed: Block warning messages not translating on dedicated servers
  • #61 Modified MMInventory.java to accept IActionHost instead of requiring a security terminal specifically. Renamed field in MMState.java to reflect the broader compatibility. - @LazyFlesh
    • Added: Wireless access point connectivity for AE2 interaction
    • Fixed: Matter Manipulator cannot access AE2 through wireless access points
    • Closes GTNH#25373
  • #59 Fixed FMPBlockMover.java and StandardBlockMover.java to properly handle null tile entity assignment. The setTileEntity() method was silently failing on null input. - @Algent
  • #58 Refactored AEPartData.java to use downloadSettings() and uploadSettings() methods instead of manual NBT manipulation. This aligns Matter Manipulator's copying behavior with AE2's memory card system. - @Kogepan229
    • Added: AE2 part settings copy via memory card methods
    • Fixed: Matter Manipulator not copying ME Level Emitter item/fluid amounts
    • Closes GTNH#25115
  • #56 Added bounds check in GTAnalysisResult.apply() and clears ghost circuit data in MMState when substituting CRIBs with proxies to prevent size mismatch. - @Luca-Guettinger
    • Fixed: CRIB proxy ArrayIndexOutOfBoundsException
    • Closes GTNH#25050
  • #55 Updated dependencies.gradle to reference correct EnderIO version. - @dipo33
    • Fixed: EnderIO dependency version
  • #52 Updated GTAnalysisResult to use IFluidLockableMui2 API instead of deleted IFluidLockable. - @Luca-Guettinger
  • #51 Added block event posting in AbstractBuildable to trigger grief protection callbacks; applied to move and build modes. - @Lyfts
  • #49 Added reflection-based fallback in GTAnalysisResult and MTEMMUplink to handle both public and protected MTEHatchEnergyMulti.Amperes field; updated GT5u dependency version. - @RecursivePineapple
    • Fixed: energy tunnel hatch copying on older servers
  • #46 Introduced CarpentersBlocksAnalysisResult to capture Carpenter's Block state and custom shapes; extended PendingBlock to apply this state on placement. - @Luca-Guettinger
    • Added: Carpenter's Blocks state preservation
    • Fixed: Carpenter's Blocks copying
    • Closes GTNH#21078
  • #43 Extended InventoryAdapter to handle Crafting Input Buffer's manual slot configuration. - @Luca-Guettinger
    • Fixed: Crafting Input Buffer manual slot copying
  • #42 Adjusted MMInventory fluid handling logic to properly iterate and fill stacked fluid cell containers. - @Luca-Guettinger
    • Fixed: stacked fluid cell filling
  • #41 Corrected packet handling in MMUtils; bug introduced in PR #19. - @Luca-Guettinger
  • #39 Extended BlockSpec to track slab variants; adjusted PendingBuild cost calculation to correctly count slab usage. - @Luca-Guettinger
    • Fixed: slab consumption and copying
    • Closes GTNH#22781
  • #37 Refactored block movement system: replaced monolithic PendingMove with strategy pattern (BlockMover interface, FMPBlockMover, GTBlockMover, StandardBlockMover, WirelessBlockMover). Wireless components now use dedicated mover logic. - @Luca-Guettinger
    • Added: BlockMover abstraction, FMPBlockMover, GTBlockMover, StandardBlockMover, WirelessBlockMover
    • Fixed: wireless hub/connector relocation
    • Closes GTNH#24269
  • #36 Modified InventoryAnalysis and PendingBlock to properly notify AE2 of new hatch availability; likely triggers AE2's cache invalidation on block placement. - @Luca-Guettinger
    • Fixed: AE2 hatch detection after MM replacement
  • #33 Added AEPartData and enhanced AEAnalysisResult to properly handle and copy fluid configuration in dual interface blocks. - @Luca-Guettinger
    • Added: AEPartData fluid handling, dual interface fluid support
    • Fixed: fluid copying in dual interfaces, Level Emitter settings copying
    • Closes GTNH#23587, GTNH#23621
  • #31 Updated ItemMatterManipulator to save and restore default Minecraft NBT properties when changing manipulator modes. - @WhyDoLogic2
    • Fixed: NBT data loss on mode change
    • Closes GTNH#23997
  • #28 Fixed GTAnalysisResult to adapt for latest GT5U integrated ore factory API changes. - @LazyFlesh
  • #27 Reverted Textures class approach and kept QU icon containers local in MTEMMUplink to avoid extra client init path causing render crashes. - @UltraProdigy
    • Removed: Textures class
    • Fixed: client crash on UV quest tab click
    • Closes GTNH#23925
  • #17 Fixed block capturing logic in AbstractBuildable, PendingBlock, and PendingMove; removed BlockCaptureDrops mixin and related early capture mixin. - @RecursivePineapple
    • Removed: BlockCaptureDrops mixin, MixinBlockDropCapturing
    • Fixed: block capturing reliability

Performance ​

  • #24 Performance optimization in DeMemberator ASM transformation reducing transforming time from 45.4ms to 9.5ms (0.85% to 0.19%). - @danyadev

Internal / Refactor ​

  • #62 Updated InteropConstants.java to use a centralized isGTRenderer() method. This simplifies code and improves maintainability. - @RecursivePineapple
    • Removed: Inline renderer detection logic
  • #29 Replaced direct NBT manipulation in GTAnalysisResult with public getter/setter methods for integrated ore factory. - @Alexdoru
  • #20 Removed number formatting utility methods from MMUtils and updated callers to use GTNHLib implementation. - @Connor-Colenso
    • Removed: MMUtils number formatting methods

Contributors ​

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

@RecursivePineapple (42), @Luca-Guettinger (13), @Azusfin (12), @Dream-Master (10), @UltraProdigy (6), @Kogepan229 (5), @boubou19 (3), @Alexdoru (2), @cubefury (2), @Discreater (2), @hinyb (2), @lc-1337 (2), @Ruling-0 (2), @Vlamonster (2), @ah-OOG-ah (1), @Algent (1), @Angry3vilbot (1), @AnsonYeung (1), @AshVz (1), @chrombread (1), @Connor-Colenso (1), @danyadev (1), @dipo33 (1), @DylanTaylor1 (1), @Eldrinn-Elantey (1), @glektarssza (1), @GTNH-Afx237v7 (1), @Guvante (1), @iouter (1), @koolkrafter5 (1), @kuba6000 (1), @LazyFlesh (1), @LazyFleshWasTaken (1), @leagris (1), @Lyfts (1), @Sanduhr32 (1), @sisyphussy (1), @TheYoingLad (1), @tiffit (1), @vermz99 (1), @WhyDoLogic (1), @WhyDoLogic2 (1)