twilightforest
22 merged pull requests.
New Features
- #158 Extended BlockTFMagicLogSpecial to recognize GregTech soft mallets and toggle sound state while consuming normal durability. Regular right-click continues to toggle acceleration. Added Mods.java config entry. - @DreamYao520
- Added: soft mallet sound toggle for Timewood Clock
- #152 Added IFlowerPottable interface; updated BlockTFSapling, BlockTFPlant, and BlockTFHugeWaterLily to support flower pot placement. Added dependency. - @FourIsTheNumber
- Added: IFlowerPottable interface, flower pot support for saplings and plants
- #133 New Coord2D helper class and rewritten portal lookup logic in TFTeleporter; uses spiral search with Manhattan distance filtering for efficiency. Portal creation and validation logic improved in BlockTFPortal. Updated gradle dependencies. - @LooseEthics
- Added: Coord2D utility class for 2D coordinate handling, configurable max portal size
- #41 Created TFMajorFeatureProvider interface and TFMajorFeatureProviders registry; updated ComponentTFHollowHill, StructureTFMajorFeatureStart, and TFGenCaveStalactite to use provider callbacks for stalactite ore placement. - @YannickMG
- Added: TFMajorFeatureProvider interface, TFMajorFeatureProviders registry
New Content
- #129 Updated lang files (de_DE, en_US, ru_RU, zh_CN, zh_TW) to add missing string entries and fix metadata-keyed locale keys (tile.TFMagicLogSpecial.8.name). - @Eldrinn-Elantey
- Added: localization strings for Twilight Forest blocks and items across five languages
- Fixed: tile.TFMagicLogSpecial.8.name display in multiple languages
Changes
- #149 Updated ModelTFTrophyArmor and ItemTFTrophy to use game tick-based animation timing instead of frame counting, and added sneak-state detection for animation mode. - @Eldrinn-Elantey
- #144 Updated BlockTFMagicLogSpecial tick logic; added TwilightForestMod configuration for blocked blocks list (defaults to Nether portal). Changed to match upstream Tree of Time implementation. - @Caedis
- Added: configuration option for Timewood Clock blocked blocks
- Fixed: Timewood Clock incorrectly accelerating cactus and rainbow cactus
- Closes GTNH#25287
- #123 Added configuration option in TwilightForestMod to conditionally enable/disable EFR integration logic in TFFeature. - @wlhlm
- Added: EFR integration configuration option
Bug Fixes
- #154 Updated TFSkyRenderer to use renderViewEntity for perspective calculations instead of EntityPlayer reference, enabling compatibility with freecam mods. - @Caedis
- Fixed: freecam compatibility in sky rendering
- #145 Added TFWeatherData class to track dimension-specific weather state; modified TFEventListener to maintain separate time/weather from overworld instead of copying it. - @koolkrafter5
- Added: TFWeatherData for dimension-specific weather tracking
- Fixed: weather obelisk and weather control in Twilight Forest
- #142 Updated TFGenericPacketHandler, BlockTFMagicLogSpecial, and ChunkProviderTwilightForest to handle extended block metadata ranges via EndlessIDs. Added EID dependency. - @UltraProdigy
- Added: EndlessIDs compatibility
- Fixed: Tree of Transformation crash with EndlessIDs
- Closes #141
- #140 Added IntCache.resetIntCache() call in TFWorldChunkManager to clear cached int arrays after chunk generation, preventing unbounded memory growth. - @Alexdoru
- Fixed: IntCache memory leak in world chunk manager
- Closes GTNH#22708
- #139 Removed custom ItemBlockTFLeaves and ItemBlockTFLog classes that were overriding getUnlocalizedName; implemented proper localization in TFBlocks and ItemBlockTFTree instead. Simplified lang file entries. - @tiffit
- #138 Set TFBiomeBase field_76754_C (filler block metadata) to 0 instead of leaving it at the vanilla default of 5169201, which was causing metadata 49 to appear on filler blocks. - @tiffit
- Fixed: biome filler block metadata, silk touch dirt tagging
- Closes #57, GTNH#24206
- #136 Removed unnecessary strong references to world servers in TwilightForestMod and BehaviorTFMobEggDispense, allowing proper garbage collection. - @Alexdoru
- Removed: world server memory leak references
- Fixed: world server memory leak
- #131 Updated BlockTFMagicLogSpecial tick logic to check IGrowable interface instead of all blocks, and removed chunk-loading behavior from block scanning. - @Caedis
- Fixed: Timewood Clock incorrectly accelerating non-plant blocks
- #130 Moved Fiery Metal and Knightmetal material registration in TFTinkerConstructIntegration.java above the corresponding tool part registrations, enabling TConstructRegistry's default toolpart addition. - @Charsy89
- Fixed: default toolpart registration for TConstruct materials
- #128 Added hardness check in EntityTFNaga to prevent targeting of unbreakable blocks during combat. - @ModularityEnjoyer
- Fixed: Naga destroying Bedrock and unbreakable blocks
- Closes GTNH#22990
- #127 Added block existence check in BlockTFCritter to verify available surface space before firefly placement, preventing unintended block deletion. - @DarkShadow44
- Fixed: Fireflies deleting blocks during placement, Firefly placement crash
- Closes GTNH#22373, GTNH#22520
Performance
- #137 Rewrote ModelTFTrophyArmor to reuse model vertex arrays instead of allocating new ones each frame, and optimized TFClientProxy rendering code. - @Alexdoru
- Fixed: trophy armor frame allocation spam
- Closes GTNH#22959
- #134 Added FastRandom utility class and refactored ChunkProviderTwilightForest, MapGenTFHollowTree, TFGenCaves, TFGenHugeLilyPad, TFGenLargeRainboak, and TFGenRavine to use faster random operations and reduce allocations. - @mitchej123
- Added: FastRandom utility class
Chores
- #135 Minor comment text adjustment in Coord2D.java. - @LooseEthics
Contributors
Everyone who authored, reviewed or co-authored a change on this page, with how many of them:
@Caedis (5), @Alexdoru (3), @DarkShadow44 (3), @Dream-Master (2), @Eldrinn-Elantey (2), @FourIsTheNumber (2), @koolkrafter5 (2), @LooseEthics (2), @Luca-Guettinger (2), @mitchej123 (2), @Ruling-0 (2), @tiffit (2), @YannickMG (2), @ABKQPO (1), @Algent (1), @boubou19 (1), @Charsy89 (1), @cubefury (1), @DreamYao520 (1), @glowredman (1), @Guvante (1), @ModularityEnjoyer (1), @Nikolay-Sitnikov (1), @RecursivePineapple (1), @Sanduhr32 (1), @thehoblit (1), @UltraProdigy (1), @wlhlm (1)