EnderIO
45 merged pull requests.
New Features
- #242 Adds neiMultiplierString, neiEnchantString and neiEnergyString ColorResource entries (default 0x808080) to ColorUtils and uses them in the NEI recipe handlers instead of the hard-coded 0x808080. Bumps GTNHLib from 0.11.22 to 0.11.30. - @Ranzuu
- Added: configurable NEI recipe text colors for energy, enchant names and multipliers
- #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
- #237 Removed spacesuit-related code from ItemEndSteelArmor and updated GT5-Unofficial dependency. - @FourIsTheNumber
- Removed: space suit from End Steel armor
- #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
- #274 Added a missing break in GuiVacuumChest.actionPerformed so the RANGE_ID case no longer falls through into ID_WHITELIST. - @Angry3vilbot
- Fixed: Show Range button in Vacuum Chest toggling the whitelist
- Closes GTNH#27033
- #270 SoulBinderEnderCystalRecipe, SoulBinderPrecientCystalRecipe, SoulBinderReanimationRecipe and SoulBinderSentientRecipe replace the generic SpecialMobs.Special* entry with explicit lists of SpecialMobs Enderman, Zombie and Witch entity names. - @fehling135
- Added: SpecialMobs variants in Soul Binder recipes
- Fixed: SpecialMobs variants not usable in Soul Binder recipes
- Closes GTNH#26965
- #268 AbstractPoweredTaskEntity.getNumCanMerge now also requires ItemStack.areItemStackTagsEqual; TileEntityPainter's custom NBT-handling logic is removed and slot indices become named constants. - @Nikolay-Sitnikov
- Removed: Painting Machine custom NBT-clearing stack logic
- Fixed: Item Buffers voided when stacked in a Painting Machine, Machine configuration cleared or overwritten in a Painting Machine, Identical Item Buffers not stacking in Painting Machine output
- #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 LiquidSettings.updateGuiVisibility calls setInventorySlotsVisible(true) before the non-Ender early return, instead of after it. - @vcwdfca
- Fixed: player inventory hidden in fluid conduit GUI below Ender tier
- #253 PacketTeleport.onMessage now runs PacketUtil.isInvalidPacketForGui only for Type.BEGIN on the server, drops TELEPORT packets sent to the server, and returns early on a null tile. PacketUtil security log messages now include dimension id, tile and current container. - @Glease
- Fixed: Telepad packet sanitizer false positive on non-GUI packet types
- #252 WirelessChargedLocation reads EnderIO.proxy.wirelessChargerController into a local and null-checks it in the constructor and checkChangeCount. The controller is only created server-side. - @Elyspio
- Fixed: Client NullPointerException when placing wireless powered lights on a dedicated server, Client crash on chunk load near a wireless light
- #247 Updated EnderIoRenderer to use renderViewEntity instead of hardcoded camera position for billboard orientation calculation. - @Caedis
- Fixed: freecam compatibility for billboard rendering
- #245 TileEnchanter was reworked (130 lines added) and ContainerEnchanter's output slot getStack now returns te.getOutput(). Config gains enchanterOutputEnableBlockRestriction (false), enchanterOutputAllowlistAsDenylist (false) and enchanterOutputFilterlist (minecraft:hopper, EnderIO:blockConduitBundle). The dependency versions were bumped too. - @felixfour
- Added: Enchanter output block restriction config options
- Fixed: Enchanter output dupe through direct getStackInSlot calls
- #243 NormalInventory.scanInventory and extractItem now handle a null result from NetworkedInventory.getInventoryRecheck(), which is now marked @Nullable. A null inventory is treated as empty. - @wlhlm
- Fixed: NullPointerException when removing an inventory from an Inventory Panel network
- #240 New EtFuturumCompat checks IElytraPlayer. DarkSteelController.setActive refuses GLIDE when canActivateGlide is false, and updateGlide stops elytra flight. KeyTracker.handleGlide checks canActivateGlide. Et Futurum Requiem is a compileOnly dependency. - @jordanamr
- Fixed: Infinite speed and altitude from glider combined with 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 ObeliskRenderer and SoulBinderRenderer wrap inventory rendering in glPushAttrib/glPopAttrib so GL alpha, blend and colour state no longer leaks. Item renderers are registered for the Powered Spawner, Slice'N'Splice, Soul Binder and Telepad blocks. PaintedItemRenderer skips the translate for the travel platform. ZombieGeneratorRenderer, TransceiverRenderer, VacuumChestRenderer, MachinePartRenderer and BrokenSpawnerRenderer were adjusted. - @NeutronSelector
- Fixed: Backhand offhand transparency glitch after holding an obelisk or Machine Chassis, Held item position of Soul Binder, Powered Spawner, Telepad, Travel Anchor and Slice'N'Splice, Zombie Generator model not centred in its block
- 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 GuiInventoryPanel constructor bounds check compared te.getGuiSortMode() to orders.length. It now compares sortOrderIdx to orders.length. - @ImaMapleTree
- Fixed: Inventory Panel sort order not persisting for mod id desc, quantity asc and quantity desc
- #222 EntityWeatherRocket.setDead now runs WeatherTask.complete(worldObj) on the server side only (!worldObj.isRemote), instead of using MinecraftServer.worldServers[0]. - @alppp
- Fixed: Weather Obelisk rocket always changing Overworld weather instead of the current dimension
- #217 Added EnderIO.hasWailaPlugins. BlockZombieGenerator.getWailaInfo and the liquid conduit branch in WailaCompat return early when it is set. BlockTank also changed (diff not shown). The build files were updated too: WAILA dev dependency, WAILAPlugins runtime dependency, Gradle and settings plugin versions. - @danyadev
- Fixed: Duplicate fluid info in WAILA tooltips with WAILA Plugins
- #216 TileWirelessCharger.invalidate() now returns early when worldObj.isRemote, so the client no longer calls deregisterCharger on a controller that does not exist there. - @PLASMAchicken
- Fixed: Client crash when breaking a wireless charger on a 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
- #263 Recipe.isInputForRecipe tracks remaining amounts in an int array instead of copying RecipeInput objects, and CrusherRecipeManager.getRecipeForInput builds the MachineRecipeInput array once outside the loop. - @danyadev
- #249 Adds FacadeType.VALUES in ItemConduitFacade and uses it in ItemConduitFacade and BlockConduitBundle instead of values(). - @boubou19
- #248 Adds cached VALUES arrays to RedstoneControlMode and SkullType and replaces values() calls in conduits, packets and machine code (about 20 files). - @boubou19
- #223 Replaces frequent Enum#values() calls with cached static VALUES arrays (e.g. ConnectionMode.VALUES, DyeColor.VALUES) and ForgeDirections.DIRECTIONS from EnderCore. Bumps the EnderCore dependency from 0.5.5 to 0.5.7. - @Alexdoru
- #221 EnderLiquidConduitNetwork.extractFrom caches getTankInfo and drops two drained.copy() calls. TileReservoir and SmartTank compare Fluid references instead of getId()/getID(). - @danyadev
- #219 Replaced Supplier<Integer> with IntSupplier in AbstractEnderLiquidConduit.Type to avoid Integer boxing on each rate lookup. - @mitchej123
- Fixed: boxing allocations on fluid conduit flow
- #218 In EnderLiquidConduitNetwork.fillFrom, the FluidStack is now reused across target tanks and its amount is decremented, instead of calling copy() once per target tank. - @SwingURM
- Fixed: excess FluidStack copies in ender fluid conduit fill
- #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 IntelliJ quick fixes across about 260 files: diamond operator for generics, final fields, moving the reflection Field lookups in ContainerDarkSteelAnvil into the constructor, and making WailaWorldWrapper a static nested class. - @Alexdoru
Chores
- #239 Raises the required-after:gtnhlib range in the @Mod dependencies string of EnderIO.java from 0.2.10 to 0.9.47. - @felixfour
Contributors
Everyone who authored, reviewed or co-authored a change on this page, with how many of them:
@Dream-Master (13), @boubou19 (10), @Alexdoru (9), @danyadev (5), @UltraProdigy (5), @Caedis (4), @Ranzuu (4), @felixfour (3), @koolkrafter5 (3), @Nikolay-Sitnikov (3), @sisyphussy (3), @Algent (2), @Eldrinn-Elantey (2), @june-dev-username (2), @Kogepan229 (2), @Luca-Guettinger (2), @Pxx500 (2), @thehoblit (2), @tiffit (2), @alppp (1), @Angry3vilbot (1), @AnsonYeung (1), @chochem (1), @cubefury (1), @Elyspio (1), @evgengoldwar (1), @fehling135 (1), @FourIsTheNumber (1), @Glease (1), @ImaMapleTree (1), @jordanamr (1), @Lyfts (1), @MalTeeez (1), @mitchej123 (1), @MLGfruitshoot (1), @NeutronSelector (1), @PLASMAchicken (1), @Ruling-0 (1), @sbancuz (1), @slprime (1), @SwingURM (1), @TheYoingLad (1), @vcwdfca (1), @wlhlm (1), @Worive (1)