EnderIO
42 merged pull requests.
New Features
- #242 Added new color enum values to ColorUtils and bumped GTNHLib dependency version; updated 6 recipe handler classes to use the new colors. - @Ranzuu
- Added: three new color constants
- #238 Implemented ColorUtils utility class and applied it to recipe handler GUIs; repositioned Range label in conduit GUI by 34 pixels. - @Ranzuu
- Added: ColorUtils class, color constants for priority and suction
- #236 Added language file keys for ItemBuffer and other buffer GUIs and updated GuiBuffer to reference localization keys. - @Ranzuu
- Added: localization keys for buffer GUI titles
- #227 Enhanced TileEnchanter and ContainerEnchanter to support automated extraction via decrStackSize (drains XP automatically) while preserving GUI functionality via setInventorySlotContents; increased writable book slot capacity to 64. - @felixfour
- Added: EnderIO Enchanter automation support, Automatic XP drainage on item extraction
- #226 Enhanced TravelController rendering logic to check both main and offhand for the Staff of Traveling; added BackhandUtil helper for offhand detection. - @sbancuz
- Added: Offhand Staff of Traveling rendering support
- Fixed: Travel anchor not showing with staff in offhand
- Closes GTNH#21507
- #208 Enhanced PlantableFarmer to support planting logic for Pam's nether seeds alongside existing harvest functionality. - @TheYoingLad
- Added: Pam's Harvestcraft nether seed planting support
New Content
- #257 Language file update in en_US.lang (+1 line). - @june-dev-username
Changes
- #258 Reverted changes to TileReservoir water handling logic and related language file entries to allow time for comprehensive water source rebalancing. - @boubou19
- #239 Bumped @Mod annotation's minimumBuildNumber to reflect the GTNHLib version requirement introduced in PR #227. - @felixfour
- #237 Removed spacesuit-related code from ItemEndSteelArmor and updated GT5-Unofficial dependency. - @FourIsTheNumber
- Removed: space suit from End Steel armor
- #222 Modified EntityWeatherRocket to store and respect the dimension it was created in, allowing dimension-specific rocket behavior. - @alppp
- #217 Updated Gradle and dependencies to work with Waila's native fluid display; modified BlockTank and BlockZombieGenerator Waila integration logic. - @danyadev
- #215 Enhanced ItemCapacitor tooltip rendering with improved visibility; added fake storage slot to TileFarmStation to act as overflow buffer (similar to Forestry apiaries) when main storage is full. - @evgengoldwar
- Added: Capacitor detailed capacity tooltip, Farming Station fake storage buffer
- #210 Replaced hardcoded re-check logic in NetworkedInventory with universal TileEntity validity checks using isInvalid() and cached TileEntity references. - @Worive
- Fixed: Conduit reconnection after block replacement
- #209 Modified MaterialRecipes and EE3Util to skip registration of these items when GT5U is detected, preventing duplicate item stacks and their associated auto-generated recipes. - @chochem
- Removed: Duplicate item registrations in GTNH (8 material items)
Balance
- #256 Updated TileReservoir refill rate constant from 9 to 10 buckets per second. - @june-dev-username
Bug Fixes
- #262 Moved night vision application from client-side to server-side tick handler using existing PacketUpgradeState infrastructure with new NIGHT_VISION type, using 400-tick effect duration refreshed below 220 ticks. - @Eldrinn-Elantey
- Added: server-side night vision application, PacketUpgradeState NIGHT_VISION type
- Removed: client-side night vision application
- Fixed: night vision loss on portal crossing, multiplayer night vision sync
- #261 Reverted problematic night vision handling logic in DarkSteelController.java that prevented the upgrade from functioning. - @Caedis
- Removed: incorrect night vision handling
- Fixed: night vision upgrade functionality
- #255 Corrected condition check in LiquidSettings GUI to allow player inventory display independently of fluid conduit tier restriction. - @vcwdfca
- Fixed: player inventory not shown with lower-tier fluid conduits
- #253 Updated PacketTeleport and PacketUtil sanitizer to only apply GUI tile validation to packets that are actually sent from GUI interactions, not all teleport packet variants. - @Glease
- Fixed: PacketTeleport sanitizer false positive
- #252 Added null safety check in WirelessChargedLocation to guard against accessing the wireless controller on the client-side, where it is never initialized. - @Elyspio
- Fixed: client NPE when placing wireless lights on dedicated servers
- #247 Updated EnderIoRenderer to use renderViewEntity instead of hardcoded camera position for billboard orientation calculation. - @Caedis
- Fixed: freecam compatibility for billboard rendering
- #245 Added explicit inventory slot access control in ContainerEnchanter and TileEnchanter, requiring use of extraction methods that enforce XP draining and enchanting logic. - @felixfour
- Added: Config options for enchanter access control
- Fixed: direct getStackInSlot duplication exploit
- #243 Added null check in InventoryDatabaseServer to handle missing inventories gracefully, and improved NetworkedInventory state management. - @wlhlm
- Fixed: NullPointerException when removing inventory network blocks
- #240 Added EtFuturumCompat module to detect and prevent combined use of glider upgrade and Elytra in DarkSteelController. - @jordanamr
- Added: EtFuturumCompat compatibility class, glider-elytra conflict detection
- Fixed: infinite speed and altitude with glider and elytra
- Closes GTNH#24479
- #235 Removed stale world references in IoConfigRenderer, GliderUpgrade, SolarUpgrade, and TravelEntitySpecialRenderer. - @Alexdoru
- Fixed: world client leaks in gui and upgrades
- #233 Removed redundant world field assignments in AbstractMachineRenderer and TechneMachineRenderer to prevent holding stale client-side world references. - @Alexdoru
- Fixed: world client leak in TechneMachineRenderer
- #232 Fixed GL alpha state management in obelisk, machine chassis, and multiple renderer classes; corrected held item positioning in SoulBinder, Powered Spawner, TelePad, Travel Anchor, and Slice'N'Splice renderers. - @NeutronSelector
- Fixed: GL alpha state leaking, backhand transparency rendering, held item positioning
- Closes GTNH#23699
- #231 Changed nightVisionActive flag to only update from explicit player input; suppress potion effect during inventory sync but resume automatically once inventory is restored. - @Eldrinn-Elantey
- Fixed: night vision disabling on dimension change
- #228 Corrected array bounds check in GuiInventoryPanel sort order validation. - @ImaMapleTree
- Fixed: inventory panel sort options not persisting
- #216 Added null-safety guard in TileWirelessCharger to handle cases where the wireless controller reference is accessed during entity invalidation. - @PLASMAchicken
- Fixed: Client crash when breaking wireless charger on server
- Closes GTNH#23035
- #212 Refactored WirelessChargerController and WirelessChargedLocation to properly clean up world references in CommonProxy on world unload, preventing lingering memory retention. - @Alexdoru
- Fixed: World leak in WirelessChargerController
- #211 Refactored ConduitNetworkTickHandler registration and cleanup in CommonProxy, AbstractConduitNetwork, and CapBankNetwork to properly deregister tick handlers and clear world-dependent data structures on world unload. - @Alexdoru
- Removed: World references held by ConduitNetworkTickHandler
- Fixed: World leak in ConduitNetworkTickHandler
Performance
- #249 Added enum value caching in BlockConduitBundle and ItemConduitFacade. - @boubou19
- #248 Cached
Enum.values()results in 15+ files where enums are frequently iterated, particularly in conduit networks, machines, and item handling code. - @boubou19 - #223 Added static cached arrays for frequently-called Enum#values() methods (e.g., ConnectionMode, Facing) in conduit-related classes; depends on EnderCore#30 for DyeColor caching. - @Alexdoru
- Added: Enum values caching in conduit classes
- #221 Eliminated duplicate getTankInfo() calls in EnderLiquidConduitNetwork; replaced Fluid.getId() comparisons with direct object equality checks in TileReservoir and SmartTank. - @danyadev
- Fixed: Redundant HashMap lookups via Fluid.getId(), Unnecessary drained.copy() calls
- #219 Simplified FluidStack copying in AbstractEnderLiquidConduit to eliminate unnecessary intermediate allocations during fluid transfer. - @mitchej123
- Fixed: Fluid conduit allocation spam
- #218 Modified EnderLiquidConduitNetwork.doFill() to avoid redundant FluidStack.copy() calls that were allocating thousands of objects per tick in large networks. - @SwingURM
- Fixed: Excessive FluidStack allocations in liquid conduit networks
- #214 Deleted brute-force EnderIO item enumeration in ThaumcraftCompat.java for 2.8.2; Thaumcraft will generate aspects on-demand when items are scanned in-game. - @boubou19
- Removed: Thaumcraft aspect pre-generation code
- Fixed: Excessive pack boot time overhead from aspect brute-forcing
- #213 Deleted brute-force EnderIO item enumeration in ThaumcraftCompat.java; Thaumcraft will generate aspects on-demand when items are scanned in-game. - @Alexdoru
- Removed: Thaumcraft aspect pre-generation code
- Fixed: Excessive pack boot time overhead from aspect brute-forcing
Internal / Refactor
- #234 Applied IntelliJ quick fixes across 20+ files to resolve static analysis warnings without changing runtime behavior. - @Alexdoru
Contributors
Everyone who authored, reviewed or co-authored a change on this page, with how many of them:
@Dream-Master (12), @Alexdoru (10), @boubou19 (10), @UltraProdigy (5), @Caedis (4), @danyadev (4), @Ranzuu (4), @felixfour (3), @koolkrafter5 (3), @sisyphussy (3), @Eldrinn-Elantey (2), @june-dev-username (2), @Kogepan229 (2), @Luca-Guettinger (2), @Nikolay-Sitnikov (2), @Pxx500 (2), @thehoblit (2), @tiffit (2), @Algent (1), @alppp (1), @AnsonYeung (1), @chochem (1), @cubefury (1), @Elyspio (1), @evgengoldwar (1), @FourIsTheNumber (1), @Glease (1), @ImaMapleTree (1), @jordanamr (1), @Lyfts (1), @MalTeeez (1), @mitchej123 (1), @NeutronSelector (1), @PLASMAchicken (1), @Ruling-0 (1), @sbancuz (1), @slprime (1), @SwingURM (1), @TheYoingLad (1), @vcwdfca (1), @wlhlm (1), @Worive (1)