ProjectRed
26 merged pull requests.
Needs action on an existing world:
- [check your build] #60 Fixed Auto Crafter matching items by NBT tag as intended. Items with different enchantments, names, or other NBT data will no longer be interchangeable in crafts.
After updating, check your Auto Crafters. An Auto Crafter only accepts ingredients whose NBT tag matches the plan exactly now, so any crafter that was quietly being fed a differently tagged item, renamed, enchanted, or carrying any other NBT, stops producing without an error. Re-make the plan using the exact item you actually feed it.
New Features
- #79 Implemented IInventory interface in TileBlockBreaker to enable pipe network integration. - @Luca-Guettinger
- Added: IInventory implementation in block breaker
- #66 Added configuration option in Configurator and updated lightmicroblocks rendering to enforce light level 15 when enabled. - @june-dev-username
- Added: Configuration option for sawn lamp light level
- Fixed: Sawn lamps sometimes producing no light
Changes
- #89 Added config option to enable/disable Inductive Furnace (default true). Furnace was spamming oredict queries and duplicating vanilla smelting recipes with oredict support. - @boubou19
- Added: Config option for Inductive Furnace
- #71 Added 4 new localization strings and updated guis.scala to reference localized keys for GUI element text. - @Ranzuu
- Added: GUI element localization strings
- #64 Added separate localization keys in en_US.lang and updated AutoCrafter, BatteryBox, BlockPlacer, ChargingBench, ElectrotineGenerator, FilteredImporter, InductiveFurnace, ProjectBench, and GUI classes to use container-specific keys. - @Ranzuu
- Added: Separate GUI title localization strings (16 new entries)
- Fixed: GUI localization display issues
- #61 Corrected capitalization in en_US.lang localization file (37 strings). - @ModularityEnjoyer
- Fixed: Capitalization inconsistencies in localizations
Bug Fixes
- #85 Fixed itemFlow NBT tag loading in device abstracts to properly restore queued items on world load. - @ModularityEnjoyer
- Fixed: Item buffer voiding on world reload
- Migration: Items that ProjectRed devices dropped from their internal buffer on earlier world loads are gone for good. From now on items in an Item Importer survive a world load.
- Closes GTNH#25041
- #82 Fixed rwConnectable ThreadLocal initialization to use initialValue(), ensuring the server thread gets true as default instead of false, so canConnectRedstone() returns correct values. - @Luca-Guettinger
- Fixed: Redstone power transmission from Red Alloy wires
- Migration: Red Alloy wire starts powering lamps and machines again, so anything wired to one may switch on the first time you load in.
- Closes GTNH#24592, GTNH#24634
- #81 Fixed world client leak in exploration and fabrication TESR modules by cleaning up light matrix references. - @Alexdoru
- Fixed: Light matrix memory leak in renders
- #76 Fixed reusableRun object pool references in ProjectRedTransmission, wirepropagation.scala, and propagation.scala that were preventing garbage collection. - @Alexdoru
- Fixed: Memory leak in wire propagation, Memory leak in fabrication wire propagation
- #75 Updated ChipResponder.scala to detect item type prototypes in locked drawers rather than requiring stored items. - @Dragovorn
- Fixed: Responder chip not filling empty locked drawers
- #68 Updated gatepartarray.scala pulse handling logic based on upstream fix. - @Engineer12798
- Fixed: Array gate pulse logic
- #67 Updated lightpart.scala to enable glow rendering for non-full block lamp parts. - @Worive
- Fixed: Missing glow effect on partial-height lamp blocks
- Closes GTNH#23112
- #65 Updated PluginStorageDrawers to check for item prototype presence rather than item quantity when determining drawer compatibility. - @ModularityEnjoyer
- Fixed: Dynamic Item Responder not filling locked empty drawers with defined items
- Closes GTNH#23020
- #62 Applied upstream fix to TileProjectBench to prevent item duplication during recipe plan crafts. - @PLASMAchicken
- Fixed: Item duplication in Project Bench crafting, Item duplication from shift-click crafting
- Closes Dupes-Exploits-GTNH#216, Dupes-Exploits-GTNH#224
- #60 Updated TileAutoCrafter to enforce NBT matching in recipe validation. - @Worive
- Fixed: Auto Crafter crafting items with mismatched NBT
- Migration: After updating, check your Auto Crafters. An Auto Crafter only accepts ingredients whose NBT tag matches the plan exactly now, so any crafter that was quietly being fed a differently tagged item, renamed, enchanted, or carrying any other NBT, stops producing without an error. Re-make the plan using the exact item you actually feed it.
- #59 Changed TileBlockBreaker and TileDiamondBlockBreaker to pass target block coordinates to sound method instead of their own position. - @DarkShadow44
- Fixed: Crash when block breaker targets blocks with position-dependent tile entities
- #58 Updated lightmicroblocks.scala and bumped dependency version. Requires ForgeMultipart PR #38. - @Worive
- Fixed: Inverted lamp slab glow rendering
- Closes GTNH#22770
Performance
- #88 Added regression tests for rendered models; lazily construct gate renderers and component models; precompute built-in wire layouts while preserving resource-pack overrides; cache wire geometry and torch geometry while isolating mutable state. - @boubou19
- Added: Regression tests for gate models, Wire layout precomputation
- Removed: Redundant wire geometry copies
- #87 Refactored lamp rendering: light values now use per-world packed hash table instead of tile entity lookups; inverted state derived from metadata + redstone on tick; halos moved from TESR to batched VBO sorted by color, rebuilt only on cache changes. Removed per-lamp halo rendering config. - @boubou19
- Added: Halo batching system
- Removed: Lamp halo quantity config option
- #78 Continued optimization of components.scala and added fixes to fmpgatepart.scala and gaterenders.scala. Corrected UV transformation that was being applied as coordinate transformation. - @AnsonYeung
- Fixed: UV transformation bug in previous optimization
- #77 Refactored components.scala to instantiate 2 reusable models instead of 48, deferring rotation calculations to render time and combining with translation and lighting. - @AnsonYeung
- #69 Implemented recipe result caching in TileAutoCrafter to reduce redundant recipe lookups. Profiling shows substantial reduction in CPU usage under load. - @Caedis
- Added: Recipe caching mechanism in AutoCrafter
Internal / Refactor
- #72 Replaced IBlockEventHandler-based moss spreading with vanilla updateTick via mixins. Removed MossSpreadHandler.scala and added mixin classes (BlockMixin, BlockStoneBrickMixin, EarlyMixinLoader) with two new mixin JSON configs. - @MalTeeez
- Added: BlockMossyCobblestone.java, MossSpreadHandler.java (mixin-based), EarlyMixinLoader.java, BlockMixin.java, BlockStoneBrickMixin.java, Mixin config entries
- Removed: IBlockEventHandler moss spreading, MossSpreadHandler.scala
Chores
- #86 Corrected misspelling 'primative' to 'primitive' in GuiICWorkbench. - @PLASMAchicken
- Closes GTNH#26150
- #80 Updated LICENSE.md to adopt MIT license. - @xronin01
Contributors
Everyone who authored, reviewed or co-authored a change on this page, with how many of them:
@boubou19 (7), @UltraProdigy (5), @Alexdoru (4), @Dream-Master (3), @ModularityEnjoyer (3), @PLASMAchicken (3), @wlhlm (3), @Worive (3), @AnsonYeung (2), @DarkShadow44 (2), @koolkrafter5 (2), @Luca-Guettinger (2), @Nikolay-Sitnikov (2), @Ranzuu (2), @RecursivePineapple (2), @Algent (1), @Caedis (1), @Dragovorn (1), @Engineer12798 (1), @glowredman (1), @june-dev-username (1), @Kogepan229 (1), @Ktmi (1), @LazyFlesh (1), @MalTeeez (1), @OvermindDL1 (1), @spacebuilder2020 (1), @xronin01 (1)