Et-Futurum-Requiem
48 merged pull requests.
Needs action on an existing world:
- [check your build] #37 Lava now pushes players and mobs sideways the way flowing water does, and dropped items float to the top of water and lava instead of sinking. A current also carries items about four times faster than before. How hard a liquid pushes depends on how full the block is: a source block pushes at full strength, the thin edge of a flow at 0.4 of that.
Check your builds that move items on water or lava. Items that used to sink and sit on the bottom ride on the surface instead, and they travel faster, so a water stream feeding a hopper, an item elevator or a lava trash pit can overshoot or drop its load somewhere else. Check your lava builds too: lava drags players and mobs along now, which it did not do before. Two switches inconfig/etfuturum/mixins.cfgput it back:liquidItemFloatturns off the floating on its own, andadjustedLiquidPhysicsturns off the lava push, the faster items and the scaling by how full the block is. Turn off both for exactly the old behaviour.
New Features
- #116 Added ItemCoopersMallet class, Backhand and IronChest compatibility handlers, recipe integration, textures, and sounds. - @Caedis
- Added: Cooper's Mallet tool item, Chest-to-barrel conversion mechanic, Backhand quiver integration, IronChest and IronBarrel support, Mallet texture and sound effects
- Closes GTNH#26387
- #107 Added ItemBlockLantern to support Baubles IBaubleRender API for belt slot rendering (optional dependency). - @Eldrinn-Elantey
- Added: lantern belt slot support, Baubles integration
- #104 Introduced ModernLightmap class and updated MixinEntityRenderer mixins to handle modern lightmap gradients and end flash effects. Auto-disables for modded dimensions with custom lightmaps. - @Eclipse-Sol
- Added: ModernLightmap, blocklight gradients, nightvision gradients
- #95 Added horsewater mixin to EntityHorse to implement liquid buoyancy behavior for ridden horses. - @jordanamr
- Added: Ridden horse floating in liquids capability
- #91 Added EndFlashAPI, EndFlashState, and EndFlashSound classes; integrated two new mixins for EntityRenderer and RenderGlobal to handle end flash rendering and brightness adjustments; updated ConfigWorld with related settings. - @Eclipse-Sol
- Added: End flash visual effect, End flash sound, EndFlashAPI for mod integration, Modern lightmap support, end_flash.png texture
- #87 Added entity death message handler in EntityEventHandler.java that sends formatted death messages to pet owners; added config flag in ConfigFunctions.java to enable the feature. - @Nikolay-Sitnikov
- Added: pet death notifications to owner
- #72 Added WorldIconManager for screenshot capture and display; created LoadingScreenRenderManager and associated rendering classes for chunk visualization; implemented search filtering in world selection GUI; uses daemon threads for non-blocking icon generation. - @alppp
- Added: world thumbnail capture and display, modern loading screen with progress visualization, world search filtering
- #71 Added mixin in MixinEntityPlayer.java to track distance traveled in new boats alongside vanilla boats; updated EtFuturumEarlyMixins to include the boatstat mixin. - @Caedis
- Added: boat distance stat tracking
- #70 Added slot count tooltip generation in ItemBlockBarrel.java and BlockBarrel.java; added localization strings for tooltip display. - @Caedis
- Added: barrel slot count tooltip
- Closes GTNH#21400
- #69 Modified GuiEditWoodSign to use FontRendering.countVisibleChars for the 15 visible character limit while keeping raw length capped at 90; updated TileEntityWoodSignRenderer; bumped GTNHLib dependency. - @alppp
- Added: support for & format codes on wood signs
- #45 Added CompatForbiddenMagic handler, significantly expanded CompatThaumcraft (207 lines added), improved NEI integration with IMCSenderGTNH, added new enchantments to ModEnchantments. - @koolkrafter5
- Added: Forbidden Magic compatibility, Enhanced Thaumcraft support, New enchantments
- Fixed: Composter NEI recipe display
- #44 Rewrote BlockBubbleColumn logic, added custom particles (BubbleColumnFX, DeferredBubbleFX, WaterCurrentDownFX), updated renderer, added configuration options, and integrated into main world listener. - @Caedis
- Added: Bubble column particles, Water current particle effects, Client event handler for bubble physics, Bubble column configuration options
- Removed: Experimental flag for bubble columns, Old static block renderer
- #35 Added StrippedLogRegistry, new block classes (BlockModernWoodFenceCompat, BlockStrippedLogCompat), and expanded ModBlocks/ModItems with 170+ new BOP and Witchery wood variant blocks and items. - @Caedis
- Added: BOP and Witchery wood support, Stripped log compatibility system, Doors, trapdoors, fences, boats, signs for 170+ wood types, StrippedLogRegistry API
- #21 Added Battlegear compatibility handler to support tipped arrow retrieval from quivers. - @Kynake
- Added: Battlegear quiver tipped arrow support, CompatBattlegear handler
New Content
- #119 Added barrel and barrel upgrade crafting recipes to ModRecipes. - @Pilad
- Added: Barrel vanilla recipes, Barrel upgrade recipes
- #52 Added new disc items and recipes in ModItems.java, ModRecipes.java, and EtFuturum.java; registered with Thaumcraft compatibility; added textures and language localization for new discs. - @ABKQPO
- Added: music disc items, Disc 5 fragments, loot table integration for strongholds and dungeons, mob drops for Lava Chicken and Tears discs
- #48 Added raw ore recipe entries to BlastFurnaceRecipes. - @Caedis
- Added: Blast furnace recipes for raw ores
Changes
- #80 Added ore dictionary registrations in ModRecipes.java for BOP and Witchery log variants. - @NotKaizul
- Added: ore dictionary entries for BOP and Witchery logs
- #57 Updated dependencies.gradle to reference Baubles Expanded dependency in place of the superseded Baubles mod. - @UltraProdigy
- Removed: old Baubles dependency reference
- #46 Removed 16 lines of observer notification code, now only firing notifications on actual block/metadata changes instead of all world updates. - @Caedis
- Removed: Redundant observer notification calls
- #37 Added mixins for BlockLiquid, Entity, EntityItem and World.
changeEntitySpeedByFluidLevelscales the horizontal push from 1.0 in a source block down to 0.4 at flow level 7. MixinWorld multiplies the 0.014 acceleration constant by 4 for EntityItem. MixinEntityItem floats an item only while its downward motion is above -0.15 and its horizontal motion below 0.015. The old floatLava redirect in uninflammableitem was removed, so fireproof items float by the same path. - @MalTeeez- Added: Modern liquid physics behavior, Entity motion in lava, Item floatation mechanics, Liquid level-based physics adjustment
- Removed: Old uninflammableitem mixin logic from EntityItem
- Migration: Check your builds that move items on water or lava. Items that used to sink and sit on the bottom ride on the surface instead, and they travel faster, so a water stream feeding a hopper, an item elevator or a lava trash pit can overshoot or drop its load somewhere else. Check your lava builds too: lava drags players and mobs along now, which it did not do before. Two switches in
config/etfuturum/mixins.cfgput it back:liquidItemFloatturns off the floating on its own, andadjustedLiquidPhysicsturns off the lava push, the faster items and the scaling by how full the block is. Turn off both for exactly the old behaviour.
Bug Fixes
- #121 Modified SpawnChunkProgress and LoadingScreenWorldGenTracker to prevent stale chunk state from corrupting the world at load time. - @danyadev
- Fixed: World preview contamination on entry
- #115 Added toString() method to RegistryMapping and improved validation logging in DeepslateOreRegistry. - @boubou19
- Added: RegistryMapping toString() method
- Fixed: Deepslate ore mapping issue, Error message clarity
- #113 Changed NBT storage of BurnTime from Short to Integer in TileEntityBlastFurnace and TileEntitySmoker to prevent overflow. - @playfuldoggo
- Fixed: Furnace burn time overflow with high-duration fuels
- #101 Updated WorldGenCherryTrees to avoid replacing the ground block when cherry tree grows. - @Spaghetti-OberNub
- Fixed: Cherry tree growth replacing fertilized soil
- Closes GTNH#25956
- #90 Added BoP lily pad handling to EntityNewBoat's entity collision logic. - @zaru-noodles
- Fixed: Boats not destroying BoP lily pads
- Closes GTNH#25425
- #89 Replaced mixin-based colormap generation in ChunkProviderGenerate/Hell/End with a new LoadingScreenChunkColorSampler that samples real block map colors from generated chunks, making it compatible with any IChunkProvider implementation. - @alppp
- Added: LoadingScreenChunkColorSampler class for sampling block colors
- Removed: MixinChunkProviderGenerate chunk coloring logic, MixinChunkProviderEnd chunk coloring logic, MixinChunkProviderHell chunk coloring logic, LoadingScreenChunkStage tracking class
- Fixed: Loading screen showing white grid with custom generators
- #88 Refactored WorldIconManager to capture world icons only at world start, pause, or quit instead of on autosave timer; removed glReadPixels calls that were blanking the HUD. - @alppp
- Removed: autosave timer screenshot generation
- Fixed: HUD blinking on autosave
- Closes GTNH#25404
- #82 Added thread-safety guards in ServerEventHandler to prevent the client thread from mutating the server-side LongOpenHashSet during chunk loading operations. - @Algent
- Fixed: concurrency crash on teleport and render distance change
- Closes GTNH#25076
- #78 Added mixin MixinItemHoverHarnessThaumcraft to check for spectator mode in addition to creative mode when determining harness behavior. - @tiffit
- Added: spectator mode support for Thaumostatic Harness
- Fixed: Thaumostatic Harness spectator mode fall
- Closes GTNH#24957
- #77 Added texture files for stripped_bigflowerstem_log and _top in biomesoplenty assets; updated BlockStrippedLogCompat to properly reference the compat textures. - @tiffit
- Added: BOP flower stem log textures
- Fixed: missing textures on BOP flower stem blocks
- #76 Changed ServerEventHandler to track chunk coordinates instead of chunk references, preventing double-registration in the entity tracker when chunks load their stored entities. - @tiffit
- Removed: entity spawning via spawnEntityInWorld on chunk load
- Fixed: entity tracker duplication, ghost entities on world reload
- Closes GTNH#24853
- #74 Added mixin in MixinEntity to apply boat camera updates during Entity.setAngles; corrected EntityNewBoat.applyYawToEntity to use prevRotationYaw for prevRenderYawOffset instead of rotationYaw. - @JackOfNoneTrades
- Fixed: boat camera jitter, boat key turn jitter
- #63 Added proper cleanup in ServerEventHandler and client entity renderers to prevent world and entity references from persisting in memory; fixed a mixin in MixinEntityPlayerMP. - @Alexdoru
- Fixed: world memory leaks
- #61 Relocated ore dictionary registration from postInit to Init in EtFuturum.java and ModRecipes.java so logs are registered before Railcraft's coke oven recipe generation. - @tiffit
- Fixed: Railcraft coke oven stripped log compatibility
- Closes GTNH#24395
- #58 Overrode createStackedBlock() in BaseSlab.java to return two single slab items when the block is a double slab. - @jamiehu427
- Fixed: double slab Silk Touch drop behavior
- #49 Updated mixin target in MixinEntity.captureStepContext to match CoFH's replacement method. - @Caedis
- Fixed: Step height detection with CoFH installed
- #47 Replaced hardcoded expansion heuristic in MixinEntity step logic with proper 1.12-style collision checks; reverted BlockDirtPath height from workaround value. - @Caedis
- Fixed: Stepping mechanics when adjacent to blocks, Grass path collision height
- Closes Et-Futurum-Requiem#210
- #42 Added logic to BlockCopperDoor oxidation handler to verify target blocks match the original block type before replacement, preventing random block destruction. - @nwmqpa
- Fixed: Copper door duplication during oxidation, Unintended block destruction from oxidation updates
- #29 Added RenderPlayerEvent hook to hide spectators and TConstruct mixin to suppress accessory armor rendering for spectator-mode players. - @Eldrinn-Elantey
- Added: Spectator visibility filtering, TConstruct spectator mixin
- Fixed: Spectator equipment visibility leak
- #27 Registered pickaxe harvest levels and OreDictionary names for BlockBasalt, BlockBlackstone, BlockDeepslate, and BlockTuff. - @loenaaaa
- Added: OreDictionary names for stone-type blocks, Pickaxe harvest level registration
- Fixed: Primal Crusher crushing of deepslate
- Closes GTNH#23140
Performance
- #111 Cached enum values array in EtFuturum to eliminate repeated allocations. - @boubou19
- Fixed: Enum allocation spam
- #53 Replaced collection type in OceanMonument.java with fastutil's Long2IntOpenHashMap for better memory efficiency during underwater structure generation. - @Alexdoru
Internal / Refactor
- #79 Deleted LoadingScreenCubicWorldGenTracker, removed empty spawn methods, dropped unused
approximateflag from state tracking classes, trimmed unused chunk color constants, and fixed state reset in WorldIconManager. - @Worive- Removed: LoadingScreenCubicWorldGenTracker, unused spawn methods, approximate flag, unused color constants, missing_world_icon.png asset
- Fixed: world unload mid-capture state reset
- #66 Removed the loadedChunks HashSet from ServerEventHandler.java; entities can be spawned directly into the world without maintaining a separate tracking set. - @Alexdoru
- Removed: loadedChunks set from ServerEventHandler
- #43 Removed baubles/api package classes and added Baubles as an external dependency; ItemArmorElytra now imports from the dependency. - @Caedis
- Removed: baubles/api/BaubleType.java, baubles/api/IBauble.java, baubles/api/expanded/IBaubleExpanded.java
- #36 Replaced custom leaf decay logic in BaseLeaves with calls to gtnhlib's leaf decay handler, removing 88 lines of duplicated code. - @Alexdoru
- Removed: Custom leaf decay logic
Chores
- #41 Updated gradle/wrapper, gradle.properties, removed build.old.gradle and legacy config files, restructured dependencies.gradle, updated buildscript. - @Dream-Master
- Added: gradle/gradle-daemon-jvm.properties
- Removed: LATEST_VERSION file, build.old.gradle, Legacy config files, Star imports, Old libs folder entries
Contributors
Everyone who authored, reviewed or co-authored a change on this page, with how many of them:
@Caedis (22), @Dream-Master (12), @UltraProdigy (11), @koolkrafter5 (6), @alppp (5), @Alexdoru (4), @tiffit (4), @Algent (3), @boubou19 (3), @embeddedt (3), @Ethryan (3), @MalTeeez (3), @ABKQPO (2), @Eclipse-Sol (2), @Eldrinn-Elantey (2), @Guvante (2), @seventh-june (2), @0hwx (1), @cubefury (1), @danyadev (1), @JackOfNoneTrades (1), @jamiehu427 (1), @JohnButlerThird (1), @jordanamr (1), @jss2a98aj (1), @Kynake (1), @loenaaaa (1), @Luca-Guettinger (1), @MassAnarchyy (1), @Nana-Sakura (1), @Nikolay-Sitnikov (1), @NotKaizul (1), @nwmqpa (1), @Pilad (1), @PLASMAchicken (1), @playfuldoggo (1), @Pxx500 (1), @Ranzuu (1), @Ruling-0 (1), @Spaghetti-OberNub (1), @Stars-27 (1), @Worive (1), @zaru-noodles (1)