Bug Fixes (1 of 2)
Index · Previous: Performance · Next: Bug Fixes (2 of 2)
PCB Factory: other fixes and balance
Around the sub-multiblock change: the biochamber recipe lost its incorrect bio-catalyst gating, the minimum casing count is only checked on Tier 3, hatch placement on Tier 3 was unrestricted, the factory no longer requires a cooling tower to run, and the controller tooltip and Tier 3 hints were corrected.
Shipped in 11 pull requests
- bigger nanite bus (GT5-Unofficial #7694)
- Fix Recipes FInished not displaying the amount (GT5-Unofficial #7517)
- Only check PCB min casing for T3 (GT5-Unofficial #6912)
- Fix PCB Factory controller tooltip (GT5-Unofficial #6697)
- T3 PCB Factory Hatch Placement Removed Restriction (GT5-Unofficial #6650)
- pcb factory module tweaks and balance changes (GT5-Unofficial #5730)
- Localization of text in waila (GT5-Unofficial #5697)
- Clean out more unused MUI1 code (GT5-Unofficial #5561)
- Fix PCB Factory not working without cooling tower (GT5-Unofficial #5377)
- [MUI2] port MTEPCBFactory to MUI2 (GT5-Unofficial #5271)
- Fix PCB Factory T3 from always being shown in hints and building in creative (GT5-Unofficial #5255)
AdventureBackpack2
- #57 [world data] Fixed backpack disappearing on death when using keepinventory, and fixed backpack desyncing when traveling between dimensions. The backpack will now properly persist across dimension changes and respawns. - @Worive
- Technical: Modified PlayerEventHandler and BackpackProperty to correctly track backpack state across dimension changes and death events. Removed ServerProxy cleanup code that was incorrectly clearing backpack properties on dimension change.
- What to do: Recover any lost Adventure Backpacks from your inventory or creative mode; this fix prevents future loss when traveling between dimensions or using keepinventory.
- Closes #5035
- ...and 7 smaller change(s), see the full list per mod.
BuildCraft
- #33 [world data] Removed the buggy useServerDataOnClient configuration option that caused numerous duplication and infinite power exploits. This fixes EBF infinite power, item duplication, and other serious issues. - @tiffit
- Technical: Removed useServerDataOnClient config flag and related proxy code that allowed server-side data to override client predictions, causing desynchronization.
- What to do: Existing duped or corrupted items in your world will remain; proceed cautiously or use creative mode to remove excess inventory.
- Closes #24468, #24658, #24710, #24722, #25365
GT5-Unofficial
- #7919 [world data] Fixed a critical bug that could permanently corrupt the GregTech ore generation pattern file, which likely caused many unexplained oregen issues. Added a command to manually inspect and adjust the pattern if needed. - @Algent
- Technical: Rewrote oregen pattern loading/saving logic in GTWorldgenerator and GTPacketSendOregenPattern to use enum names instead of ordinals, preventing corruption. Added GTPacketRequestOregenPattern and associated tests. Updated default pattern and improved validation.
- What to do: Use the new command to verify and correct your GregTech_OregenPattern.dat file if corrupted; consider regenerating affected chunks if ore generation was corrupted.
- #7215 [world data] Fixes ore vein generation sometimes producing fragmented or mixed-ore chunks depending on which chunk loaded first. Ore veins now generate consistently across chunk boundaries. - @Kogepan229
- Technical: Cached resolved CachedOreVein (layer + placement seed) in GTWorldgenerator.java and WorldgenGTOreLayer.java to ensure all chunks in an ore seed use the same placement parameters, preventing geometry drift.
- What to do: Regenerate chunk columns containing fragmented ore veins to get consistent vein geometry; existing irregular ore chunks will remain as they are.
- Closes #24689, #24690
- #6632 [world data] Fixed Callisto ice ore processing, which was missed in a previous ore processing fix. - @tiffit
- Technical: OrePrefixes: added missing ore processing configuration for Callisto ice ore.
- What to do: Regenerate Callisto ice ore deposits or manually rebuild ore processing recipes.
- #6631 [world data] Fixed ore processing for plutonium and titanium ores, restoring the ability to properly process these ores after recent changes. - @tiffit
- Technical: OrePrefixes: added missing ore processing configuration for plutonium and titanium ore types.
- What to do: Regenerate plutonium and titanium ore deposits or manually rebuild ore processing recipes.
- Closes #24516
- #5771 [world data] Completely reworked CAL imprint and sliced circuit system to be NBT-independent and enum-based. Old imprints show deprecation warnings and auto-convert to new format when used; fixes CAL functionality issues. - @boubou19
- Technical: Replaced NBT-based imprint identification with CircuitImprint enum tied to meta-IDs. Created migration recipe (DeprecatedPartsMigrationRecipe) to convert old items. Refactored CALImprintRecipe, CircuitImprintLoader, and added CircuitPartsItem to handle new system.
- What to do: CAL imprints and sliced circuits are now NBT-independent; insert old items into a crafting grid to convert them to new meta-id linked versions.
- Closes #23396
- #7442 [rebuild required] Fixed GT++ PowerGen multiblock machines (LFTR and F-1A Rocket Engine) to accept 4A dynamo hatches instead of the deprecated buffered dynamo hatches, allowing these structures to form correctly. - @Sanduhr32
- Technical: Updated GTPPMultiBlockBase and MTENuclearReactor to accept 4A tier dynamo hatches and removed acceptance of deprecated buffered dynamo hatch validation.
- What to do: GT++ PowerGen multis (LFTR, F-1A Rocket Engine) now accept 4A dynamo hatches; disassemble and rebuild using the correct hatch type.
- Closes #25464, #25876
- #7087 [rebuild required] Fixed turbines and other multi-block machines using ExtendedPowerMultiBase to lose durability on components properly. They were not taking maintenance damage after a prior refactor. - @Yoshy2002
- Technical: Restored
mEUtassignment fromlEUtin ExtendedPowerMultiBase so that doRandomMaintenanceDamage() in MTEMultiBlockBase correctly calculates damage using mEUt. - What to do: Turbines and other multiblocks will now correctly apply maintenance damage again; rebuild any multiblocks using ExtendedPowerMultiBase that depend on this behavior to reset their durability state.
- Technical: Restored
- #6900 [rebuild required] Fixed ME output and storage buses getting stuck or becoming unresponsive after placement. These blocks were incorrectly setting their owner to null, causing items to fail to transfer or be stuck in buffers. - @AnsonYeung
- Technical: Fixed
setFrontFacingtriggeringgetProxybefore the owner field was initialized in ItemMachines. This prevented proper owner assignment for ME input/output bus variants, breaking ME network integration. - What to do: Replace ME input/output buses and storage buses that had stopped functioning; existing machines will work again once reloaded.
- Closes #24924, #24925, #24931, #24973
- Technical: Fixed
- #6952 [read before updating] Large Essentia Smeltery now correctly calculates parallel processing instead of always being zero, restoring machine functionality. - @Krakenrek
- Technical: Fixed mParallel initialization in MTELargeEssentiaSmeltery.
- What to do: Large Essentia Smeltery that was non-functional will now work; existing machines resume operation.
- Closes #25020
- #6941 [check your build] Output hatches now respect priority ordering and properly prevent item/fluid voiding during recipe execution. ME output hatches support interleaved output with other hatches. - @hinyb
- Technical: Separated recipe check logic from actual output logic in multiblock output systems; refactored IVoidable, output helper classes, and ME hatch implementations to allow proper overflow handling.
- What to do: Fusion reactor output hatches now respect priority correctly; existing output setups may need hatch priority re-ordered to restore intended behavior.
- Closes #25183
- #6922 [check your build] Fixed multi-block machines failing to detect distilled water for their operation. Distilled water detection was cached before the liquid was loaded, causing structures like Chembath and Ore Washing Plant to malfunction. Water detection is now lazy-loaded per-check, and several machines (Flocculation Unit, Purification Plant) now auto-place water like other structures. - @Yoshy2002
- Technical: Moved distilled water caching from static initialization to lazy load in GTUtility, resetting water checks before each machine validation to prevent edge cases. Refactored multiple multi-block tile entities to use auto-place water logic. NEI preview support improved with water display, pending StructureLib#63 for complete functionality.
- What to do: Existing Chembath, Ore Washing Plant, Clarifier, and Flocculation Unit multiblocks that rely on water detection must have their water sources re-verified and may need repositioning.
- Closes #25042
- #5608 [check your build] Algae Pond completely overhauled: tier system fixed, parallels reduced from 2 to 1, structure requirements clarified (75 sterile casings minimum, not 64), and recipes ported to RA2 with new NEI handler. - @boubou19
- Technical: Rewrote MTEAlgaePondBase with new tier initialization and water detection. Created RecipeLoaderAlgaePond for RA2 recipe integration. Added CasingTier enum, AlgaePondFrontend recipe map, and GTStructureUtility methods. Updated GTRecipeConstants.
- What to do: Algae pond tier requirements and structure checks have changed; verify your existing pond meets the new specifications (now requires 75+ casings instead of 64, and parallels reduced from 2 to 1).
- Closes #21644
- #5134 [config] Fixed Ender Fluid Link cover migration from ModularUI1 to ModularUI2 that was incorrectly inverting the import/export mode state. - @FrostyFire1
- Technical: Corrected state migration logic in CoverEnderFluidLink to properly preserve import/export configuration during GUI framework transition.
- What to do: Existing ender fluid link covers on machines migrated from MUI1 may have inverted import/export state; check their configuration after updating.
- Closes #22099
- #7333 [config] Projectors now respect the maximum glass tier when building multiblocks with large stack sizes, allowing players to build tier 13 multiblocks directly with universium glass without manual overrides. - @AnsonYeung
- Technical: Modified GTStructureUtility to cap glass tier to maximum available glass based on stack size instead of always using borosilicate glass for large stacks.
- What to do: Existing projector configurations with non-borosilicate glass overrides for high-tier multiblocks will need adjustment; default behavior now uses borosilicate for large stack sizes.
- #7565 [recipes changed] Fixed CeLUAG crystal recipes that were using drastically underpriced base amounts. Crystal SoC now correctly costs 2,400 CeLUAG and Raw Advanced Crystals cost 3,600 CeLUAG instead of the incorrectly low 24 and 36. - @DylanTaylor1
- Technical: Corrected base amount constants in
BeamlineRecipeLoaderfor two CeLUAG recipes (24→2400, 36→3600). Reordered methods inMaskListfor consistency with argument order. - What to do: Adjust CeLUAG input amounts in beamline recipes from the previously changed values to the corrected amounts (24 to 2400, 36 to 3600).
- Technical: Corrected base amount constants in
- #7912 Restored Naquadah fuel registrations that were accidentally removed in a previous change. This prevents players' existing Naquadah fuels from disappearing when updating their worlds. - @UltraProdigy
- Technical: Partial revert of PR #7892 to restore fuel registry entries in GGMaterial.
- Note: No action needed; this PR restores fluids to prevent their loss from existing worlds after a previous change deleted them.
- #7458 Fixed a NullPointerException crash that occurred when removing powerfail events for teams without valid owner data, which could happen during machine removal. - @AnsonYeung
- Technical: Added null-checks for team owner in GTPowerfailTracker.removePowerfailEvents() and removed problematic GTPacketClearPowerfail packet handling.
- #7439 Fixed a crash caused by using an undeclared utility class. Replaced all usages with the correct FastUtils pair implementation to prevent NoClassDefFoundError. - @tiffit
- Technical: Replaced jvmdg's Pair with fastutils Pair implementation in filter GUI classes (MTEFilterGui, buffer and special filter base GUIs).
- #7350 Fixed client hang when viewing a Basic Pump with a full internal buffer by clamping progress calculations. - @zaru-noodles
- Technical: TTRenderGTProgressBar clamps progress ratio and MTEPump caps mProgresstime increment to prevent overflow.
- Closes #25641
- #7168 Fixed two critical issues in the Distillation Tower: crashes when recipes have fewer outputs than tower height, and non-stop production when the ME output hatch is full. - @AnsonYeung
- Technical: Added bounds checking in FluidEjectionHelper and OutputHatchWrapper, and fixed recipeCheck parameter passing to ME hatches in MTEMultiBlockBase.
- #7158 Fixed a server crash that occurred when the Milk Infusion Armor Augment (Night Vision) was equipped on mechanical armor. The issue was caused by calling a client-side-only method on the server. - @Spaghetti-OberNub
- Technical: Replaced client-only isBadEffect() call with server-compatible gt5u$isBadEffect() method in MilkInfusionBehavior, matching the pattern used in PlayerSleepEventHandler.
- Closes #25337
- #7152 Fixed a crash in the recipe map cache system that could cause maceration stacks to shut down unexpectedly. - @AnsonYeung
- Technical: Corrected modulus calculation in RecipeMapBackend cacheMap to properly handle negative indices and prevent array access errors.
- Closes #25302
- #7120 Fixed Scanner allowing recipes with voltage above its tier to self-clock and run. Scanner now properly rejects recipes requiring more voltage than it can supply. - @AnsonYeung
- Technical: Added voltage requirement check in MTEScanner before allowing AssemblyLine recipe acceptance, matching the pattern used in the original code before PR #5677.
- Closes #25077
- #7101 Fixed machine fluid output voiding when total output exceeds 32-bit integer limit. High-parallel machines can now output fluid amounts above 2.1 billion units. - @Marsietiss
- Technical: Removed GTUtility.longToInt() clamping and changed FluidParallelData.perParallel from int to long to preserve full precision of large fluid outputs.
- #6867 Fixed crash when opening ender fluid link covers in multiplayer. These covers can now be opened without causing a server-side error. - @Luca-Guettinger
- Technical: Added null-safety checks in CoverEnderFluidLinkGui to prevent crashes during GUI initialization on server.
- Closes #24951
- #6822 Fixed Field Engineer's Toolbox voiding IC2 reactor chambers and other IC2 blocks when broken with the wrench, now properly returning the blocks themselves. - @querns
- Technical: Added call to GTProxy to invoke toolbox block breaking event handler; removed unneeded @SubscribeEvent annotations from ItemGTToolbox since the class was never registered with Forge EventBus.
- Closes #25091
- #6779 Reverted a performance optimization that caused transformers to stop accepting EU after switching modes. Transformers and similar machines that can change EU facing without rotation now work correctly again. - @AnsonYeung
- Technical: Reverted PR #6751 in BaseMetaTileEntity.java and related classes. Restores full face rechecking logic for blocks that dynamically change EU facing configurations.
- Closes #24844
- #6746 Fixed fluid input drain bug where type-unaware drain-by-amount pulled wrong fluids, causing primary inputs to never deplete on waterline multiblocks with multiple input hatches. - @Caedis
- Technical: Second pass of depleteInput now uses type-specific drain instead of generic drain-by-amount in CommonMetaTileEntity, MTEMultiBlockBase, and related input hatches.
- Closes #301
- #6683 Fixed ME Output Bus voiding items when multiple transactions occur in a single tick. The fix adds per-tick transaction tracking to ensure items aren't incorrectly discarded. - @hinyb
- Technical: Added per-tick transaction tracking in MTEHatchOutputBusMEBase to prevent multiple transactions in the same tick from voiding items, moved markDirty() call to storePartial() for consistency, and optimized store logic.
- Closes #24652
- #6675 Fixed a bug where unsafe type casting was causing the Overclock Calculator to consume more power than expected when using dual UV hatches. The fix prevents the cast from interfering with power calculations. - @Nana-Sakura
- Technical: Modified OverclockCalculator.java to prevent unsafe type casting that was corrupting power calculation logic when multiple hatch configurations are present.
- Closes #24686
- #6641 Fixed infinite water/ice exploit where electric saws broke ice blocks and placed water. Saws now properly consume durability when breaking ice without leaving water behind. - @DarkShadow44
- Technical: IToolStats, MetaGeneratedTool, GTTool, ToolSaw, and DetravToolElectricProspectorBase: added water placement prevention and proper durability consumption when ice blocks are broken with saws.
- Closes #24424
- #6630 Fixed ME Output Hatch incorrectly voiding fluids in no-voiding mode when multiple fluid outputs overflow. Fluids are now properly rejected instead of lost. - @hinyb
- Technical: MTEHatchOutputME: corrected overflow logic to use isAllowed() check instead of canStore() for proper fluid handling in no-voiding mode.
- Closes #24384, #24617
- #6617 Fixed Extreme Combustion Engine efficiency state persisting across world reloads and prevented efficiency from exceeding 100%. These were blocking the machine from reaching its intended maximum output. - @Yoshy2002
- Technical: MTEExtremeCombustionEngine: efficiency variable no longer persists across world reloads (likely by resetting on load), and efficiency capping logic was added to prevent values exceeding 100%.
- Closes #24576
- #6567 Fixes a critical item duplication exploit in GT filters where sortStacks could generate resources from nothing. - @Worive
- Technical: Added validation to prevent sortStacks from creating items in MTEFilterBase. Modified MTEBuffer and GTUtility to add safety checks preventing item generation during stack sorting.
- Closes #286
- #6499 Fixed ore processing for new stone types by assigning proper ore prefixes. This restores the ability to smelt overworld ores in TConstruct smeltery and fixes incorrect NEI recipe displays. - @tiffit
- Technical: Added OrePrefixes assignments to all StoneTypes that were using default prefix, preventing overrides in GTOreDictUnificator.
- #6464 Fixed the Extreme Combustion Engine not generating EU and corrected the scanner incorrectly reporting negative power output. - @tiffit
- Technical: Corrected power generation calculations in MTEExtremeCombustionEngine to produce valid EU output.
- #6461 Fixed a critical bug where the Large Combustion Engine was not generating any EU output despite consuming fuel correctly. - @tiffit
- Technical: Corrected EU generation parameters in MTELargeCombustionEngine to properly calculate and output power.
- Closes #24354
- #6418 Fixed Regulator and Chest Buffer machines not respecting configured stack size limits after API migration, restoring proper item flow control. - @Luca-Guettinger
- Technical: Added setMaxSinkSlotStackSize integration in MTERegulator and pre-transfer validation in MTEBuffer to enforce stack size limits in the new ItemTransfer API.
- Closes #24175, #24629
- #6267 Fixed Mega EBF energy hatch tier being incorrectly unlimited; now properly limited by glass tier as intended. - @khaskelbergTAU
- Technical: Added glass tier check to MTEMegaBlastFurnace.java energy hatch validation logic (6 additions, 2 removals).
- Closes #24123
- #6228 Fixed fluid duplication exploit in GT fluid tanks by preventing improper fluid container handling. - @danyadev
- Technical: Enhanced GTUtility and MTEDigitalTankBase to prevent fluid duplication during fill/drain operations; also refactored some methods during debugging.
- Closes #273
- #6192 Fixed multiple Toolbox issues including item voiding when moving the toolbox via hotbar keys, null pointer exceptions during rendering, and a ModularUI warning. - @querns
- Technical: Added defensive null checks, inventory scanning fallback for moved toolboxes, removed unused code, and fixed MUI2 console warning in toolbox-related classes.
- Closes #24003
- #6024 Fixed Neutron Activator hanging the server when chunks are not fully loaded by preventing infinite loops in chunk validation. - @Worive
- Technical: Modified MTENeutronActivator to limit chunk checks up to current height when machine is already formed, preventing StructureLib from returning true on unloaded chunks and causing infinite loops.
- Closes #23032
- #6014 Fixed ME Output Buses and Hatches voiding stored contents on server restart. Items now persist correctly through save/load cycles. - @lc-1337
- Technical: Added data persistence to MTEHatchOutputMEBase to prevent stored item loss during server restarts.
- Closes #23631
- #5983 Fixed a crash in the Sparge Tower multiblock structure. - @seventh-june
- Technical: Fixed crash in MTESpargeTower by correcting structure validation logic.
- #5960 Fixed a crash when using NEI autocrafting with crafting stations. The game would crash with a null pointer exception due to slot contents changing during item crafting. - @noah-cope-dev
- Technical: Fixed NPE in GTShapelessRecipe.matches by caching the result of getStackInSlot(i) in a local variable, preventing null reference issues when slot contents change between calls during onCraftMatrixChanged events.
- Closes #23618
- #5867 Fixed server crash caused by outdated TinkersGregworks configuration. Servers will no longer crash when players use TinkersGregworks if their config is not the latest version. - @danyadev
- Technical: Updated MaterialsInjector.java to remove reliance on deprecated configProps and configIDs fields; now uses the newer TinkersGregworks implementation. Reduces config version requirements.
- #5861 Fixed broken circuit selection panels in MUI1-based GUIs. Singleblock machines like CRIB and Solidifier Hatch can now properly select and configure circuits. - @zyf051520
- Technical: Re-added GTPacketSetConfigurationCircuit and GTPacketSetMold packets that were removed in PR #5683, but now only used in MUI1 contexts. CRIB and Solidifier Hatch (MUI1) require these packets for sync; Extrusion Hatch (MUI2) does not. Updated BaseTileEntity and MTEHatchSolidifier to send packets appropriately.
- Closes #23432
- #5858 Fixed a critical bug preventing certain GUI interfaces from opening in the latest daily build. This restores functionality for multiple multiblock and hatch interfaces that were broken after recent updates. - @chrombread
- Technical: Removed deprecated ModularUI2 method calls across 20+ GUI files and fixed phantom item slot synchronization. Updated dependencies.gradle and reverted parts of PR #5683 to restore packet-based sync for MUI1 contexts (CRIB, Solidifier Hatch, etc.). Also renamed MTECokeOvenGui for consistency.
- Closes #23466
- #5659 Fixed Galacticraft rockets producing 20 times the listed pollution by limiting pollution emission to once per second instead of every tick. - @wlhlm
- Technical: Updated the rocket pollution mixin to apply pollution only once per second rather than every game tick.
- Closes #23141
- #5602 Ore Drilling Plant drilling fluid consumption fixed. Was consuming 2 buckets per block instead of per layer, making the machine extremely inefficient. - @Spicierspace153
- Technical: Moved tryConsumeDrillingFluid call outside iterator loop in MTEOreDrillingPlantBase to consume fluid once per layer, not per block.
- #5599 Fixes crash in multi-mode multiblocks like Industrial Wash Plant when CRIB cache is used and mode switches during processing. Recipe lookups no longer fail. - @zyf051520
- Technical: Added IDualInputHatchWithPattern interface and mode tracking to MTEHatchCraftingInputME and MTEHatchCraftingInputSlave. Updated ProcessingLogic to handle recipe cache invalidation on mode changes.
- #5532 Fixed crash when Galacticraft causes block updates during server start before executor service initializes. Executor now lazily initialized to prevent null pointer exceptions. - @DarkShadow44
- Technical: Changed executor service to lazy on-demand initialization in RunnableMachineUpdate instead of eager initialization during FMLServerStartingEvent, preventing race condition with Galacticraft.
- #5518 Removed rubber duplication from cable maceration recipes. Rubber can no longer be infinitely recycled from cables, preventing an unintended economy exploit. - @UltraProdigy
- Technical: Removed secondary material definition for rubber in OrePrefixes, preventing cables from yielding rubber when macerated.
- #5467 Fixed overclock calculator overflow causing invalid recipe parallelization. Helioflare and other high-tier machines now work correctly with extreme overclock configurations. - @Sopel97
- Technical: Fixed integer overflow in OverclockCalculator.calculateMultiplierUnderOneTick() when multiplying large powers of 2 that exceed 31 bits. Now properly handles calculations that would previously overflow to 0 and break parallel machine logic.
- Closes #22375
- #5445 Fixed Bacterial Vat allowing Sievert radiation recipes to run without a Radio Hatch installed, bypassing an important machine requirement. - @StaffiX
- Technical: Added radio hatch presence check in MTEBioVat for Sievert-based recipes to prevent execution without required equipment.
- Closes #22652
- #5420 Fixed L.E.S.U. (Large Energy Storage Unit) corrupting its power storage when using 107 casings, causing the stored power to overflow to maximum values. A missing long cast in power calculation has been corrected. - @OmdaCZ
- Technical: Added long cast in MTELESU.java power calculation to prevent integer overflow when handling large energy values with maximum casing configuration.
- #5393 Fixes infinite free resource exploitation in Indalloy 140 recycling by preventing recycling recipes with too few inputs. - @chochem
- Technical: Added input validation in RecipeGenMaterialProcessing to filter out recycling recipes with insufficient input materials.
- Closes #22580
- #5376 Restores missing gas outputs in Bartworks electrolysis recipes, particularly oxygen and hydrogen. These recipes were broken during previous recipe reworks. - @UltraProdigy
- Technical: Fixed gas reading logic in CellLoader and DustLoader to properly retrieve gas outputs instead of incorrectly calling getGas(0).
- #5375 Fixes a crash when replacing input buses on machines and prevents null pointer exceptions when ItemIO objects persist after machines are dismantled. - @RecursivePineapple
- Technical: Second part of singleblock blocking mode fix. Added null checks in GTItemSink and CommonMetaTileEntity to handle ItemIO lifecycle after machine destruction.
- Closes #22560
- #5209 Fixed crash when using Botanic Horizons wrench on GT multi-blocks. The issue was a missing side check when calling hint on frame blocks. - @combusterf
- Technical: Added side check in GTStructureUtility to prevent calling client-sided methods on server-side code when processing frame hints.
- Closes #22132
- #5201 Fixed server crash when using the debug energy hatch UI. Resolved by using proper utility methods instead of client-sided code. - @chrombread
- Technical: Replaced client-sided IKey methods with GTUtility.translate() in MTEHatchEnergyDebugGui for server-safe operation.
- #5200 Fixed server crash when opening the Fluid Regulator Cover UI. The issue was using client-sided IKey methods in a server context. - @FrostyFire1
- Technical: Modified CoverFluidRegulatorGui to avoid using IKey.lang inside IKey.dynamic string suppliers on server-side code.
- Closes #22274
- #5193 Fixed crash when destroying void miners or other machines with multiple MetricsCovers. The issue was a ConcurrentModificationException during collection iteration. - @Worive
- Technical: Replaced foreach loop with new HashSet in GlobalMetricsCoverDatabase to prevent concurrent modification exceptions when destroying multiblocks.
- Closes #19367
- #5192 Fixed critical crash in game startup caused by the OrePrefixes enum-to-class conversion. The game can now start successfully. - @chochem
- Technical: Corrected OrePrefixes.java configuration to prevent crashes related to the #5121 refactor.
- #5122 Fixed crashes when multiblock machines produce null output items or fluids by adding proper null-safety checks to the GUI. - @FrostyFire1
- Technical: Added null checks in MTEMultiBlockBaseGui to prevent NPE when output items or fluids are null.
- #5112 Fixed a crash when adding Prismarine recipes caused by null values. Prismarine material generation has been corrected to use proper tags and remove invalid dust/gem generation. - @chochem
- Technical: Moved Prismarine material configuration and added SubTag fixes to prevent nulls in recipe addition; removed invalid dust/gem generation with id -1 from MaterialsInit.
- #5086 Fixed array index crash caused by invalid ore metadata values from SpecialMobs ninja skeletons. - @RecursivePineapple
- Technical: Added bounds checking in GTBlockOre.getMaterial() and GTDataUtils to validate metadata is within legal range (0-127), returns null for illegal values.
- #5075 Fixed server-side crash in cover GUIs caused by accessing client-only IKey objects on the server. - @chrombread
- Technical: Changed KeyProvider to use string-based language keys instead of IKey objects, updated all cover GUI implementations to use IKey.lang() for client-side key conversion.
- #5074 Fixed a crash when cleaning cauldrons by throwing items into them. - @querns
- Technical: Added null/type safety checks in MetaGeneratedItem01 cauldron cleaning logic.
- #5073 Restored carbon ore item definitions that were accidentally deleted during a merge conflict. - @chochem
- Technical: Re-added carbon ore item registration in MaterialsInit.
- #5068 Fixed a critical crash where muffler buttons were being created in all GUIs without proper validation. - @VortexSo4
- Technical: Added conditional check in GTBaseGuiBuilder to validate muffler button applicability before creation.
- #7004 Fixed multiple worldgen issues including asteroids spawning on HEE islands, incorrect height validation, swapped min/max variables, and coordinate handling in stone worldgen. - @Algent
- Technical: Fixed asteroid spawn logic corrupted by mutable cache in HEEIslandScanner, corrected height validation overwrite in GTWorldgenerator, fixed swapped min/max and sign variables in worldgen code, added spotless-off annotations to WorldgenStone, corrected coordinate type usage and seed progression in WorldgenStone, and integrated fastutil.
- Note: Existing asteroids and terrain already spawned in chunks remain unchanged; only new worldgen is affected.
- ...and 507 smaller change(s), see the full list per mod.
MalisisDoors
- #32 [world data] Doors now remember their previous manual open/close state through redstone power updates. Manual actions persist unless explicitly undone, matching vanilla door behavior. - @Brownshome
- Technical: Added 'powered' tracking variable to DoorTileEntity to store the previous power state and prevent redstone updates from immediately overriding manual door actions.
- What to do: Manually open or close any doors that should remain in a specific state after world load, as redstone power updates will no longer override your manual actions.
- #29 [rebuild required] Fixed doors and trapdoors not respecting their open/closed state when the world loads. Door hitboxes and visual state now align correctly with their placement configuration. - @tiffit
- Technical: Updated Door and TrapDoor block classes to set the TileEntity open/closed state based on block metadata when the tile entity is created.
- What to do: Trapdoors in villages and player-built structures will have their collision boxes corrected when the world loads; rebuild or adjust trapdoors if their hitbox remains misaligned.
- Closes #24401
- #30 Fixed block replacements not having their delegate names set, which was causing visual errors and log spam when replacement blocks were used. - @tiffit
- Technical: Updated ReplacementTool.java to properly set delegate names on replacement blocks, and added access transformer rules to malisisdoors_at.cfg to expose necessary fields.
- ...and 1 smaller change(s), see the full list per mod.
Random-Things
- #21 [world data] Fixed Spectre dimension teleportation failing to generate safe landing areas due to chunk scheduler changes in Hodgepodge. - @Alexdoru
- Technical: Refactored
TeleporterSpectreto generate the landing cube on every teleport within the teleporter method rather than during initialization; removed redundant chunk generation code from event handlers and utilities. - What to do: Teleport to the Spectre dimension again to regenerate the platform.
- Technical: Refactored
- #22 Fixed game crash when Spectre glass is used in ArchitectureCraft or Botania blocks by removing unnecessary GL calls. - @tiffit
- Technical: Removed OpenGL calls from
BlockSpectreGlass.getRenderColor()that served no visual purpose and caused crashes with mod compatibility. - Closes #1813, #25519
- Technical: Removed OpenGL calls from
- ...and 1 smaller change(s), see the full list per mod.
SGCraft
- #27 [world data] Stargate ring blocks now correctly form across chunk boundaries. Previously, ring blocks in neighboring chunks could fail to render as connected until the player logged out and back in. - @pierrei
- Technical: Changed
SGRingBlock.mergeWith()to usete.markBlockChanged()instead ofmarkWorldBlockForUpdate(). The former calls bothmarkDirty()andmarkBlockForUpdate(updateChunk=true), ensuring the tile entity'sisMergedstate syncs to clients in adjacent chunks. - What to do: Relog to force the Stargate ring to fully form across chunk boundaries.
- Technical: Changed
- ...and 1 smaller change(s), see the full list per mod.
StorageDrawers
- #71 [world data] Fixed missing Chisel recipes for non-vanilla drawers and restored reset custom drawer recipes to their expected values. - @Alexdoru
- Technical: Corrected PackFactory config loading and ChiselIntegrationModule initialization order to ensure proper integration after preinit. Adjusted IntegrationRegistry to handle module ordering correctly.
- What to do: Regenerate Storage Drawers recipes or check chisel recipe integration in your config folder.
- Closes #24441, #24923
- ...and 7 smaller change(s), see the full list per mod.
ThaumicEnergistics
- #97 [world data] Fixed Arcane Assembler crafting tasks not appearing in tree view and being lost on save/load. Tasks now persist correctly and display properly in the crafting terminal. - @zyf051520
- Technical: Created ItemArcaneCraftingPattern to properly implement ICraftingPatternItem. Updated ArcaneCraftingPattern and TileArcaneAssembler to serialize/deserialize crafting patterns correctly by returning the pattern item instead of Knowledge Core.
- What to do: Re-encode any Arcane Assembler crafting patterns to restore visibility in tree view; restart the game to recover lost pending tasks.
- #141 [read before updating] Fixed Vis Interface connection and Memory Card functionality, resolving connection issues on multiplayer servers and improper channel management. - @Kogepan229
- Technical: Improved grid node configuration and connection handling in PartVisInterface.
- What to do: Reconnect or place Vis Interfaces again to restore their network functionality and memory card compatibility.
- Closes #25891, #26385
- #140 [read before updating] Fixed Vis Relay Interface not consuming an ME network channel, allowing it to operate without claiming a channel slot. - @Mrnikbobjeff
- Technical: Added REQUIRE_CHANNEL flag to PartVisInterface grid node configuration, matching the behavior of other ThE parts that require a channel.
- What to do: Reinstall the mod; existing Vis Relay Interfaces will resume consuming ME channels as intended.
- #137 Fixed overflow issues when loading legacy essentia cells that lack proper type and stack count data in their NBT. - @Kogepan229
- Technical: Added proper initialization of type count and stack count for old cells in EssentiaCellInventory during load.
- Closes #25653
- #134 Fixed a crash that kicked players when interacting with Thaumic Energistics GUI elements due to missing GUI color values in updated AE2. - @Ranzuu
- Technical: Updated AE2 dependency and fixed color references in GuiArcaneAssembler, GuiDistillationPatternEncoder, and GuiKnowledgeInscriber to use new AE2 color API.
- Closes #25047
- #128 Fixed a crash that occurred when inserting essentia storage cells into a cell workbench. The issue was a NullPointerException during cell config reading. - @Kogepan229
- Technical: Updated AE2 dependency and fixed EssentiaCellConfig to properly handle cell configuration reads, preventing NEP on workbench insertion.
- Closes #24440
- #127 Fixed Cell Microscope drive scanning, which was incorrectly attempting to scan cells on the client where they are inaccessible. Now properly performs scans on the server. - @Kogepan229
- Technical: Moved cell scanning logic from client to server by implementing server-side packet handling in ItemCellMicroscope and adding a new client packet to receive scan results.
- ...and 12 smaller change(s), see the full list per mod.
VisualProspecting
- #78 [world data] Fixed two critical issues: ore veins in spawn chunks being unscannable, and cache rebuild failing to re-detect veins after deleting the cache file. Players can now prospecting all areas and safely reset the VP cache folder. - @C0bra5
- Technical: Ensured ServerCache and ClientCache are instantiated before world creation by moving instance access to early FML lifecycle hooks, preventing race condition where VeinGenerateEvent fires before cache registration. Fixed cache rebuild logic to properly re-identify veins.
- What to do: Ores in spawn chunks can now be prospected; if you deleted the VP cache to fix prospecting issues, re-scan affected areas.
- #73 Fixed crash when creating Prospector's Log entries. The packet system now correctly accounts for variable-length ore vein name strings, allowing players to successfully generate prospecting logs. - @wlhlm
- Technical: Updated packet splitting logic in OreVeinPosition and TransferCache to account for variable vein name string lengths when determining packet boundaries.
- Closes #18377
- ...and 6 smaller change(s), see the full list per mod.
BloodMagic
- #136 [rebuild required] Fixed demon city buildings not generating correctly after field name changes to Int3. Added special serialization to preserve compatibility with existing building configs. - @koolkrafter5
- Technical: Added Int3Adapter for custom JSON reading/writer in BuildingSchematic to handle Int3 field serialization, and uncommented debug code in DemonBuilding and TEDemonPortal (creative-mode only).
- What to do: Replace any demon city buildings that failed to load with new ones using the structure wand.
- #147 Fixed crash when applying high-level Drowning potion effects to entities. Also fixed signed/unsigned byte handling that caused crashes with amplifier level 255. - @Angry3vilbot
- Technical: Fixed damage interval calculation in AlchemicalWizardryEventHooks by swapping division operands (amplifier / 20 instead of 20 / amplifier) and ensuring correct handling of unsigned byte values.
- Note: If an entity with a high Drowning effect level exists in your world, this fix will prevent the crash on load; no action needed.
- Closes #26399
- #137 Fixed a crash caused by division by zero when using a redstone comparator to read blood from an altar. Worlds affected by this bug are now joinable again. - @HectorHW
- Technical: Added a null check and default value (1.0) for getOrbMultiplier() in TEAltar to prevent division by zero when the multiplier unexpectedly returns 0.
- Note: If your world has become unloadable due to this crash, the fix will allow you to rejoin; no further action needed.
- Closes #25627
- ...and 5 smaller change(s), see the full list per mod.
Hardcore-Ender-Expansion
- #41 [rebuild required] Falling obsidian now correctly drops as an item instead of silently destroying any block it lands on, preventing loss of tile entity contents like OpenBlocks graves. - @Eldrinn-Elantey
- Technical: Modified
EntityBlockFallingObsidianto check if the landing position has a replaceable block before callingsetBlock, mirroring vanillaEntityFallingBlockbehavior. - What to do: Rebuild or relocate any structures that depend on falling obsidian landing behavior; check for buried items where obsidian previously overwrote blocks.
- Technical: Modified
- ...and 3 smaller change(s), see the full list per mod.
IguanaTweaksTConstruct
- #30 [rebuild required] Fixed tool part replacement logic that was incorrectly replacing parts instead of repairing ammunition items. Items like throwing knives would lose their original parts when durability was being restored. - @Krepyn
- Technical: Updated ModPartReplacement and ReplacementLogic to check for the 'Ammo' NBT key (used by AmmoItem) in addition to the standard 'Damage' key before attempting part replacement.
- What to do: Repair or re-craft affected throwing knives and similar AmmoItem tools that had their parts incorrectly replaced.
- #39 [read before updating] Fixed magical wood modifier handling when replacing tool parts. Uniform magical wood tools now properly maintain all 8 modifiers during part replacement, and individual magic wood parts correctly add/remove modifiers. - @tiffit
- Technical: Enhanced ReplacementLogic.getResultingModifierCount to distinguish between uniform (HEAD+HANDLE both magical wood) and non-uniform magical wood tools, properly adding/removing modifiers based on part material changes. Added magic wood material ID dependency.
- What to do: Tools made from magical wood may have incorrect modifier counts; re-craft them to restore the correct number of modifiers.
- Closes #9452, #25825
- #23 Fixed crash to server selection screen when tinkers tools were present by making the easy tool repair recipe compatible with TGregworks. The crash was caused by ModToolRepair being unavailable during recipe loading. - @jordanamr
- Technical: Updated RepairCraftingRecipe to check for ModToolRepair availability before attempting to use it, added ModSupportHelper integration. Added TGregworks dependency.
- Closes #20961
- ...and 3 smaller change(s), see the full list per mod.
ProjectRed
- #60 [rebuild required] 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. - @Worive
- Technical: Updated TileAutoCrafter to enforce NBT matching in recipe validation.
- What to do: Auto Crafter NBT matching fix will break crafts that relied on NBT mismatch; rebuild affected crafting plans with correct NBT.
- #85 [read before updating] Fixed ProjectRed Item Importers and other devices voiding items in their internal buffer when loading worlds or reloading servers. - @ModularityEnjoyer
- Technical: Fixed itemFlow NBT tag loading in device abstracts to properly restore queued items on world load.
- What to do: Re-enter the world to restore items that were voided in buffers during previous reloads.
- Closes #25041
- #82 [read before updating] Fixed ProjectRed Red Alloy wires not providing redstone power to machines or lamps. Wires will now properly trigger adjacent redstone components. - @Luca-Guettinger
- Technical: Fixed rwConnectable ThreadLocal initialization to use initialValue(), ensuring the server thread gets true as default instead of false, so canConnectRedstone() returns correct values.
- What to do: Red alloy wires will now function; re-test any redstone systems that worked around the non-functional wires.
- Closes #24592, #24634
- ...and 6 smaller change(s), see the full list per mod.
Botanic-horizons
- #50 [read before updating] Fixed a crash when using the Disassembly Wrench on multiblocks that use frame structures. The crash was caused by the wrench calling a client-only method on the dedicated server. - @alppp
- Technical: Fixed HoloScanner and HoloExtractor to avoid calling IIconContainer.getIcon(), which is @SideOnly(Side.CLIENT) and stripped from server JAR, causing NoSuchMethodError on 39 GT5 multiblocks.
- What to do: Do not use the Disassembly Wrench on server-side multiblocks; the fix prevents server crashes when using it.
- ...and 3 smaller change(s), see the full list per mod.
ForgeMultipart
- #47 [read before updating] 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. - @Caedis
- Technical: 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.
- What to do: Reload your world to restore any microblocks that became Blood Rune slabs.
- Closes #14921
- #46 Fixed a null pointer crash that occurred during chunk unload when sendDescUpdate was called on a tile that had already been cleared. This prevents crashes with wireless redstone and other multipart-dependent mods during world unloading. - @alppp
- Technical: 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.
- #37 Fixed two critical issues: glowstone not preventing mob spawns, and a null pointer crash when AE2 attempts to read light values from invalid tile entities. The light value caching system was reverted and improved iteration logic was applied to skip null references. - @Worive
- Technical: 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.
- Closes #22769, #22774
Thaumic_Exploration
- #57 [read before updating] Fixed critical Soul Brazier exploit allowing permanent warp deletion, resolved client crashes on Vis Relay connection, and improved block particle loading and error messaging. Refactored code for stability and clarity. - @thehoblit
- Technical: Rewrote TileEntitySoulBrazier with offline player NBT warp restoration; added SaveUtils for player data access; removed problematic SoulBrazierQueue/Utils classes; improved rendering and error handling in ClientProxy and TileEntitySoulBrazierRenderer.
- What to do: Warp stored in Soul Braziers will be returned; be aware the brazier will now correctly reject offline players and sync warp edits.
- Closes #202, #23735
- ...and 7 smaller change(s), see the full list per mod.
ThaumicHorizons
- #114 [read before updating] Fixed multiple critical pocket plane bugs: keystone binding failures, portal interaction issues, player getting stuck in ping-pong teleport loops, and world save corruption. - @Eldrinn-Elantey
- Technical: Fixed BlockSlot.onBlockActivated return value, ItemKeystone instanceof logic, coordinate binding formula using dimensionID, wormhole cooldown (10→200 ticks), generation thread execution (.run()→.start()), chunk marking in wrong dimension, and added null checks and portal state guards.
- What to do: Re-bind keystones to pocket planes if they became unbound; avoid fast repeated wormhole teleports to prevent ping-pong effects.
- ...and 11 smaller change(s), see the full list per mod.
EnderStorage
- #21 [read before updating] Fixed a fluid duplication glitch that occurred when Ender Tanks were stacked with other items. Ender Tanks can no longer act as fluid containers in their item form, preventing multiplication of fluid transfers. - @UltraProdigy
- Technical: Removed IFluidContainerItem implementation from ItemEnderStorage to prevent stack-size-based fluid duplication exploits.
- What to do: Remove Ender Tanks from fluid cells or machine IFluidContainerItem slots before updating; they will no longer function in those contexts.
- Closes #20913
- ...and 1 smaller change(s), see the full list per mod.
Share-Where-I-am
- #10 [read before updating] Shared waypoints received from chat are now saved to disk, preventing them from vanishing when the player logs out. - @Eldrinn-Elantey
- Technical: Fixed
CommandWaypointSaveto write waypoint data to disk instead of keeping it in memory only. - What to do: Re-share waypoints received from other players to persist them across relog.
- Closes #20805
- Technical: Fixed
- ...and 4 smaller change(s), see the full list per mod.
BloodArsenal
- #33 [recipes changed] Fixed critical NullPointerException in Soul Compacter that caused LP to be deducted twice per use, and adjusted costs accordingly. - @koolkrafter5
- Technical: Enabled Jabel and generic injection in gradle.properties, added null check for UpgradedAltars.getUpgrades() which returns null on client, doubled costs to maintain balance, and aligned Dawn rune multiplier with Dusk runes.
- What to do: Soul Compacter costs have doubled; recalculate LP costs for existing ritual compactions if needed.
- ...and 4 smaller change(s), see the full list per mod.
ArchitectureCraft
- #49 Updated getBlockReplacement method signature to match Postea API changes, fixing a server upgrade crash. - @vermz99
- Technical: Updated
TileShape.javaandItemShapeTransformer.javato use the newgetBlockReplacementsignature from Postea PR#25, and bumped Postea dependency.
- Technical: Updated
- #29 Fixed a softlock crash when mixing opaque and translucent blocks on ArchitectureCraft slopes. Players can now safely apply tinted glass or other translucent cladding to slopes without the game freezing. - @DarkShadow44
- Technical: Updated RenderRoof to only render geometry compatible with the current rendering pass (opaque vs. translucent) rather than attempting to render both simultaneously.
- Closes #22648
- ...and 7 smaller change(s), see the full list per mod.
Backhand
- #196 Fixed multiple offhand interaction bugs that caused items to trigger twice, GUI/inventory to close unexpectedly, and items in the offhand to fail when right-clicked. Added a configuration blacklist for problematic items. - @Algent
- Technical: Modified MixinMinecraft and MixinEntityAspectOrb to properly handle canceled right-click block interactions and edge cases where server-side main hand tools return false. Added mainhandUseStopsOffhandFallback config to prevent offhand fallback for items with complex handling.
- Closes #20627, #21886, #21923, #22157, #164
- ...and 9 smaller change(s), see the full list per mod.
Battlegear2-for-Backhand
- #15 Ender Arrows no longer incorrectly break blocks by using corrupted metadata. Added a blacklist feature to prevent breaking specific block types (like GT machines and AE2 cables). - @ABKQPO
- Technical: Fixed getBlockMetadata calls in EntityEnderArrow that were causing incorrect metadata to drop. Implemented block hardness check and blacklist to prevent breaking indestructible/protected blocks.