Et-Futurum-Requiem
49 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
- #124 New WitherSpawnHelper with pattern checks, a BlockSkull mixin that cancels func_149965_a when the pattern matches, and DispenserBehaviourWitherSpawning registered for skulls, all gated by ConfigEntities.enableModernWither. - @Nana-Sakura
- Added: Lying-down Wither spawn pattern, Soul soil as Wither base block, Dispenser Wither spawning, enableModernWither config option
- Fixed: Wither does not spawn when built lying down
- Closes GTNH#26516
- #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
- #46 Removed two MixinWorld injections at the tail of notifyBlocksOfNeighborChange (both overloads) that called etfu$notifySurroundingObservers. The change is taken from upstream. - @Caedis
- Removed: Observer notification after neighbour block updates
- #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: adjusted liquid physics, item floating in liquids, config options for both
- 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
- #125 EntityArmourStand.attackEntityFrom now returns false early when isDead is already set, so the drop logic cannot run a second time. - @Chitak985
- Fixed: armor stand duplication from repeated damage calls
- Closes GTNH#25140
- #121 LoadingScreenWorldGenTracker.markTerrain now gates on the new SpawnChunkProgress.isActive() instead of LoadingScreenStateTracker.isActive(), so populate and loadChunk events after spawn progress completes are ignored. - @danyadev
- Fixed: random chunk changes in the world loading preview just before entering the world
- #115 Added RegistryMapping.toString() that prints the registry name or an unregistered marker plus meta. Reworded the DeepslateOreRegistry error. BlockDeepslateCopperOre now passes ModBlocks.COPPER_ORE.isEnabled() to the super constructor. - @boubou19
- Fixed: Invalid deepslate ore mapping error for copper ore when copper ore is disabled, Unreadable deepslate mapping error message
- #113 TileEntitySmoker and TileEntityBlastFurnace now write and read BurnTime as an NBT integer instead of a short. Reading an old save's short tag with getInteger returns 0, so a furnace that is burning at save time may lose its remaining burn time. - @playfuldoggo
- Fixed: Smoker and Blast Furnace burn time short overflow with long-burning fuels
- #101 WorldGenCherryTrees.generate reads the block under the sapling and only calls setBlock with dirt if it is grass or mycelium. - @Spaghetti-OberNub
- Fixed: Cherry Sapling replacing Fertilized Soil with dirt on growth
- Closes GTNH#25956
- #90 EntityNewBoat.collideWithSurfaceBlocks also checks the new ExternalContent.Blocks.BOP_LILYPAD (BiomesOPlenty lilyBop) alongside Blocks.waterlily. - @zaru-noodles
- Fixed: Boats not destroying BoP lily pads
- Closes GTNH#25425
- #89 Adds LoadingScreenChunkColorSampler, which averages MapColor of top blocks per chunk. Removes the MixinChunkProviderGenerate/Hell/End mixins and the LoadingScreenChunkStage enum. LoadingScreenHooks caches colors per chunk and resets on new launch. - @alppp
- Added: Block-color sampling for loading screen chunk map
- Removed: Generation-stage based chunk colors
- Fixed: White chunk grid with custom world generators, Stale loading screen map between worlds
- #88 WorldIconManager no longer toggles hideGUI or reads the framebuffer on the autosave timer. ClientEventHandler drops the WorldEvent.Save scheduling and the render tick start hook, and adds a RenderGameOverlayEvent.Pre hook. - @alppp
- Removed: Autosave world icon capture
- Fixed: HUD blinking off during world icon capture
- Closes GTNH#25404
- #82 ServerEventHandler chunkLoad, chunkUnload and worldUnload handlers now return early when world.isRemote, so only the server thread touches the LongOpenHashSet. - @Algent
- Fixed: Crash from client and server threads modifying the same chunk set
- Closes GTNH#25076
- #79 WorldIconManager.resetData() restores hideGUI from savedHideGUI and clears captureNextFrame if a capture is in progress. Also deleted LoadingScreenCubicWorldGenTracker, empty begin/finishVanillaSpawn stubs, the unused approximate flag, 10 unused CHUNK_COLOR_* constants, unused SpawnChunkProgress imports in the four chunk-provider mixins, and missing_world_icon.png. - @Worive
- Removed: LoadingScreenCubicWorldGenTracker, unused chunk color constants, missing_world_icon.png asset
- Fixed: HUD left hidden when a world unloads during thumbnail capture
- #78 Adds a late mixin into Thaumcraft's ItemHoverHarness that cancels onArmorTick when the player is a spectator. It loads only when Thaumcraft is present; Thaumcraft is added as a compileOnly dependency. - @tiffit
- Fixed: Falling into the void in Spectator Mode with a Thaumostatic Harness
- Closes GTNH#24957
- #77 BlockStrippedLogCompat.registerBlockIcons uses the bigflowerstem_side icon name for the BoP bigflowerstem variant instead of log_<name>_side. Adds stripped_bigflowerstem_log textures. - @tiffit
- Added: stripped bigflowerstem log textures
- Fixed: Missing texture on stripped BoP flower stem logs
- #76 ServerEventHandler no longer calls spawnEntityInWorld for entity replacement on chunk load. It now keeps a per-dimension LongSet of packed loaded chunk coords, updated on ChunkEvent Load/Unload and WorldEvent Unload, so no entity references are held. - @tiffit
- Fixed: Duplicate entity tracking errors, Ghost and re-appearing entities after world reload
- Closes GTNH#24853
- #74 New client mixin boatcamera.client.MixinEntity calls the boat's passenger yaw limit at the tail of Entity.setAngles and syncs first person arm yaw, registered when new boats are enabled. EntityNewBoat.applyYawToEntity was refactored, and prevRenderYawOffset now uses prevRotationYaw. - @JackOfNoneTrades
- Fixed: boat camera jitter, player and hand jitter when turning a boat with A/D
- #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 Split ModRecipes.init: the wood type flags and registerOreDictionary now run from EtFuturum.init, and the rest moved to a new ModRecipes.postInit called from postInit. - @tiffit
- Fixed: stripped logs missing from coke oven recipes
- Closes GTNH#24395
- #58 BaseSlab overrides createStackedBlock to return 2 single slab items with meta % 8 when the block is a double slab. - @jamiehu427
- Fixed: double slabs dropping the double slab item with silk touch
- #49 Changed the captureStepContext injection target in stepfix MixinEntity from World.getCollidingBoundingBoxes to AxisAlignedBB.setBB with shift AFTER. - @Caedis
- Fixed: step height fix not applying with CoFH
- #47 Rewrote the stepfix MixinEntity to run the same extra collision checks as 1.12 using MixinExtras Local, Share and LocalRef, replacing the hardcoded bounding box expansion. BlockDirtPath collision box now uses maxY instead of y + 1. - @Caedis
- Fixed: can't step up blocks when rubbing against one on the side
- Closes Et-Futurum-Requiem#210
- #42 BlockCopperDoor.setCopperBlock now records the previous block and whether the ticked half is the upper one, then updates the block below or above only if it was the same block as before. - @nwmqpa
- Fixed: copper door duplication during oxidation, block under a copper door replaced on oxidation
- #29 SpectatorModeClient now cancels RenderPlayerEvent.Pre at HIGHEST priority for other viewers' spectators, and a new late mixin on tconstruct ArmorProxyClient#adjustArmor cancels for spectators, registered only when TConstruct is loaded. - @Eldrinn-Elantey
- Fixed: spectator players showing modded backpacks, spectator players showing Travel Glove and Travel Belt
- #27 Added setHarvestLevel("pickaxe", 0) to BlockBasalt, BlockBlackstone, BlockDeepslate and BlockTuff, and registered BASALT, DEEPSLATE and TUFF under the "stone" ore dictionary name in ModRecipes.registerOreDictionary. - @loenaaaa
- Added: pickaxe harvest level on Basalt, Blackstone, Deepslate and Tuff, stone ore dictionary entries for Basalt, Deepslate and Tuff
- Fixed: Primal Crusher does not crush Deepslate
- Closes GTNH#23140
Performance
- #111 EtFuturum.java loops over ModBlocks.VALUES and ModItems.VALUES, cached arrays of values(), in preInit, init, postInit and onLoadComplete. The VALUES fields are declared in the enums, which the shown diff does not include. - @boubou19
- #53 OceanMonument replaces HashMap<WorldCoord,Integer> with fastutil Long2IntOpenHashMap keyed by GTNHLib CoordinatePacker.pack, removes getMap(). dependencies.gradle sets Thaumcraft transitive=false and bumps ForbiddenMagic to 0.9.14-GTNH. - @Alexdoru
- Removed: OceanMonument.getMap
Internal / Refactor
- #66 Removed the loadedChunks set from ServerEventHandler. replaceEntity now takes the EntityJoinWorldEvent and spawns the replacement directly in the world, and the explicit event.setCanceled(true) calls at the call sites were dropped. - @Alexdoru
- Removed: loaded chunks set in ServerEventHandler
- #43 Removed the src/main/java/baubles/api package (BaubleType, IBauble, IBaubleExpanded). Added a Baubles-Expanded 2.2.11-GTNH compileOnly dependency. ItemArmorElytra gets @Optional.Interface and @Optional.Method annotations for Baubles|Expanded. - @Caedis
- Removed: Bundled baubles API classes
- #36 BaseLeaves.updateTick delegates to gtnhlib BFSLeafDecay and the local decay code is removed. Added a GTNHLib 0.9.41 api dependency in dependencies.gradle and a required-after:gtnhlib@[0.9.41,) entry in Reference.DEPENDENCIES. - @Alexdoru
- Removed: Built-in leaf decay implementation in BaseLeaves
Chores
- #57 In dependencies.gradle the ForbiddenMagic compileOnly dependency is now declared with transitive = false, so it no longer pulls in the old Baubles dependency. - @UltraProdigy
- Fixed: Forbidden Magic dev dependency pulling in the replaced Baubles dependency
Contributors
Everyone who authored, reviewed or co-authored a change on this page, with how many of them:
@Caedis (21), @Dream-Master (11), @UltraProdigy (11), @koolkrafter5 (6), @alppp (5), @Alexdoru (4), @tiffit (4), @ABKQPO (3), @Algent (3), @boubou19 (3), @embeddedt (3), @Ethryan (3), @MalTeeez (3), @Eclipse-Sol (2), @Eldrinn-Elantey (2), @Guvante (2), @Nana-Sakura (2), @Nikolay-Sitnikov (2), @seventh-june (2), @0hwx (1), @Chitak985 (1), @cubefury (1), @danyadev (1), @JackOfNoneTrades (1), @jamiehu427 (1), @JohnButlerThird (1), @jordanamr (1), @jss2a98aj (1), @Kynake (1), @loenaaaa (1), @Luca-Guettinger (1), @MassAnarchyy (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)