Skip to content

TinkersConstruct ​

79 merged pull requests.

Needs action on an existing world:

  • [check your build] #279 Removed the Tinkers' Inventory GUI tab and moved heart canisters, travel belt, and travel glove to Baubles slots. A config option can disable this migration. Items are preserved on world load.
    The pack now ships with the Tinkers inventory tab switched off, so Heart Canisters, the Travel Belt and the Travel Glove are pushed out of it into your inventory or onto the ground the first time you log in. Check your character after updating and re-equip them in Baubles slots: Heart Canisters stop granting their extra hearts until you do, and per Baubles rules they now drop on death.

New Features ​

  • #316 Added tag registration in TinkerTools for tool stations and stencil tables to enable quest system flexibility. - @mattiasploesch-cpu
    • Added: Item tags for Tinkers tool stations
  • #312 Enhanced CraftingStationContainer and CraftingStationLogic to track ingredient sources and return items to originating connected inventories when shift-clicked, with fallback to player inventory. - @Pxx500
    • Added: ingredient source tracking, return to source feature
  • #294 Updated ModificationInfo.java, multiple modifier classes, and slot logic to batch modifier application and maximize progression in one operation. - @FrostyFire1
    • Added: modifier batching, max-out behavior
  • #281 Added UseWhitelist and DimWhitelist config options to DimensionBlacklist; modified TBaseWorldGenerator to check whitelist when enabled; defaults preserve existing behavior. - @Eldrinn-Elantey
    • Added: Whitelist mode for dimension generation
  • #279 Added config flag to disable Tinkers inventory tab; integrated Baubles support for armor items; added migration logic in TPlayerHandler and ArmorProxyCommon to move items from old tab to Baubles or inventory on load. - @Ranzuu
    • Added: BaublesHelper, config for Tinkers tab, Baubles armor integration
    • Removed: Tinkers inventory tab GUI
    • Migration: The pack now ships with the Tinkers inventory tab switched off, so Heart Canisters, the Travel Belt and the Travel Glove are pushed out of it into your inventory or onto the ground the first time you log in. Check your character after updating and re-equip them in Baubles slots: Heart Canisters stop granting their extra hearts until you do, and per Baubles rules they now drop on death.
  • #278 Added smelting group support to Smeltery.java using integer group IDs; modified RecipeHandlerMelting to combine items with matching groups; updated TinkerSmeltery registration to assign groups. - @tiffit
    • Added: Smelting group API
  • #264 Added Ender Creeper detection to SmelteryLogic smelting logic; registered LoadedMods.ENDER_CREEPERS compatibility flag. - @LooseEthics
    • Added: Ender Creeper liquid ender smelting
  • #258 Added PartChestContainer, PatternShaperChestContainer, and GUI classes; modified TinkerTools registration and ToolStationBlock to support new chest blocks; updated PartCrafterGui and StencilTableGui to display chest contents. - @MCTBL
    • Added: PartChestContainer, PatternShaperChestContainer, PartChestGui, pattern chest block display
    • Fixed: Manual GUI render position
  • #257 Added max relative hardness config to PHConstruct and modified HarvestTool AOE logic to allow block breaking when mining speed permits 1-2 tick mining regardless of hardness difference. - @LazyFlesh
    • Added: AOE hardness difference config option
  • #254 Extended RecipeHandlerToolMaterials to support color localization for NEI material display elements. - @Ranzuu
    • Added: NEI color localization support
  • #236 Added explicit synchronization method to AmmoItem to notify Baubles of ItemStack changes, supporting InventoryBogoSorter integration. - @DarkShadow44
    • Added: ammo sync for Baubles inventory
  • #232 Modified FlexibleToolRenderer, DynamicToolPart, and ToolPart to support transparency; depends on GTNHLib#215 for transparency support. - @SuperSoupr
    • Added: translucent tool and part support
  • #228 Added a new button to CraftingStationGui, new packet handler CraftingStationDumpPacket, and container logic to transfer items from grid to adjacent inventory. - @ChromaPIE
    • Added: dump button on Crafting Station UI, CraftingStationDumpPacket network packet
  • #227 Added a config flag in PHConstruct and modified SearedBlock to check this flag before activating redstone-powered faucet behavior. - @brandyyn
    • Added: config option for faucet redstone activation
  • #194 Extended OreBerries with effects configuration (potion IDs, amplifiers, durations); implemented gradual amplifier scaling based on effect duration and current effect level; added support for individual berry vs. stack consumption (shift-key detection). - @Gamingb3ast
    • Added: Effects configuration system, Potion effect application logic

New Content ​

  • #221 Updated ru_RU.lang file with corrected or new Russian translations. - @Eldrinn-Elantey

Changes ​

  • #320 Modified collision/selection box definitions in LavaTankBlock, CraftingSlab, and ToolStationBlock to reflect updated model geometry. - @Connor-Colenso
    • Added: Hitbox collision definitions
  • #319 Adjusted minimum bookmark column constant in CraftingStationGui. - @Pxx500
  • #317 Redesigned CraftingStationGui layout logic to calculate space more efficiently, added GuiBorderWidget for overhang support, and adjusted CraftingStationStackPositioner and NEI overlay handler. - @Pxx500
    • Added: GuiBorderWidget class, GUI overhang feature
  • #306 Updated ColorUtils.java with new color and bumped GTNHLib dependency version in dependencies.gradle. - @Ranzuu
    • Added: color utility expansion
  • #303 Updated newhearts.png texture file with adjusted color values for improved clarity and consistency with vanilla heart textures. - @ZaykieT
    • Fixed: heart color distinction
  • #295 Updated PHConstruct.java configuration defaults for slime island and ore bush whitelist settings from false to true. - @Eldrinn-Elantey
  • #266 Removed rail smelting recipe registration from TinkerSmeltery. - @DarkShadow44
    • Removed: Rail smelting recipe

Balance ​

  • #268 Modified attack boost multiplier for Certus Quartz in TinkerToolEvents. - @UltraProdigy

Bug Fixes ​

  • #324 Corrected container shift-click routing in CraftingStationContainer and fixed slot indexing in HarvestTool and ToolCore. - @Pxx500
    • Fixed: Crafting Station shift-click behavior, First hotbar slot selection for tools
  • #323 Corrected the accumulation logic in ModAttack to properly account for leftover boost values and initialization, fixing integer overflow when step size exceeded threshold. - @Viptunbeqwfwew
    • Fixed: Quartz modifier damage calculation overflow
  • #315 Modified AbilityHelper.onBlockDestroyed() to check block hardness before applying damage, aligning with vanilla Minecraft behavior. - @Nana-Sakura
    • Fixed: Tinkers tools damaged when clearing instant-break blocks
    • Closes GTNH#26310
  • #314 Corrected packet data handling and GUI logic in BattlesignGui, BattlesignLogic, EquipLogic, and SignDataPacket to properly synchronize sign text rendering. - @mitchej123
    • Fixed: Battle Sign world text display corruption
  • #311 Added null check in CrosshairHandler.java before accessing getCompoundTag() result to prevent NullPointerException. - @Angry3vilbot
    • Fixed: crossbow null pointer crash
    • Closes GTNH#26303
  • #310 Added BlockSideHitListener to track the initial hit face and backported upstream fix to AOEHarvestTool and HarvestTool to prevent direction desync. - @Pxx500
    • Added: BlockSideHitListener
    • Fixed: AOE tool direction desync
  • #297 Added length validation in ModifyBuilder.java and removed stale NBT tags in slot classes to prevent OOB crashes and overconsumption caused by PR #294 regression. - @Algent
  • #296 Corrected slot and container logic in CastingBlockLogic, CraftingStationContainer, PatternShaperContainer, and StencilTableLogic to prevent item duplication and voids. - @Algent
  • #291 Modified ArmorProxyClient.java renderArmorExtras to read from Baubles inventory when Tinkers tab is disabled, instead of always reading from armorExtended inventory. - @Eldrinn-Elantey
    • Fixed: accessory rendering with disabled Tinkers tab
  • #288 Updated TabRegistry.java to show the main inventory tab when Tinkers tab is disabled and other tabs are present. - @Ranzuu
    • Fixed: inventory tab visibility
    • Closes #287
  • #286 Modified ModifyBuilder.java to check part replacement before repair operations, preventing full-durability repairs from blocking legitimate part replacements. - @Krepyn
    • Fixed: part replacement instead of repair
  • #285 Corrected ConveyorBase.java to properly override block replaceability checks, preventing accidental void of slime channels during block placement. - @loenaaaa
  • #284 Added markDirty() call in InventoryCraftingStation.java to flag inventory state changes for synchronization. - @Worive
    • Fixed: missing inventory dirty flag
  • #283 Corrected loot table registration in TinkerWorld.java to properly expose loot pools for external mod integration. - @slprime
    • Fixed: loot registration correctness
  • #280 Added null checks in PatternShaperChestContainer and PatternShaperContainer shift-click handlers. - @MCTBL
    • Fixed: Shift-click crash in stencil table
    • Closes GTNH#24474
  • #277 Adjusted temperature texture bar rendering bounds in SmelteryGui to prevent overflow. - @Ranzuu
    • Fixed: Temperature texture overflow
  • #275 Added +8 offset to random X and Z coordinates in TBaseWorldGenerator oreberry generation to reduce cascading worldgen. - @Charsy89
    • Fixed: Cascading worldgen from Oreberry generation
  • #274 Added super.keyTyped() call in ToolStationGui to allow NEI shortcuts to propagate. - @ROBERT-PARKOURCIVILIZATIONGOD
    • Fixed: NEI shortcuts blocked in Tool Station and Tool Forge
    • Closes GTNH#24387
  • #273 Modified SmelteryLogic to aggregate fuel amount and capacity across all connected lava tanks; updated SmelteryGui fuel bar rendering and tooltip; fixed LavaTankLogic to use actual filled/drained amounts. - @Eldrinn-Elantey
    • Fixed: Smeltery fuel gauge multi-tank display
  • #272 Replaced brownstone speed calculation with improved logic adapted from GT concrete blocks; adjusted speed multipliers to 30% for roads and 15% for other variants. - @Kiryu144
    • Fixed: Brownstone player movement jittering
  • #270 Refactored GlassBlockConnected and GlassPaneConnected rendering; simplified glass block registration; updated glass block connectivity logic. - @Majora320
    • Removed: GlassBlock, GlassBlockStained, GlassPane, PaneBase, old glass pane rendering
    • Fixed: Clear glass pane artifact rendering, glass connectivity display
    • Closes #267
  • #269 Added zero mining speed check in TinkerArmorEvents before applying haste effect; added config option for minimum mining speed threshold. - @ImaMapleTree
    • Fixed: Tool effectiveness bypass with haste enchantment
    • Closes GTNH#23927
  • #260 Added null check to playerDrops in TPlayerHandler; moved status remembering logic to playerDeath; reduced playerDeathWrapper event priority. - @Viptunbeqwfwew
    • Fixed: Null pointer in player drops, event priority ordering
  • #259 Adjusted tab rendering bounds in AbstractTab and InventoryTabVanilla to prevent pixel cutoff. - @Ranzuu
    • Fixed: Inventory tab pixel display
  • #255 Modified PatternShaperContainer shift-click handler to distinguish between blank patterns (transfer to stencil) and output patterns (transfer to inventory). - @MCTBL
    • Fixed: Stencil Table shift-click pattern transfers
  • #251 Added null check for ItemStack parameter in CraftingStationGui.drawToolStats to prevent NullPointerException. - @PLASMAchicken
  • #250 Corrected attack value accumulation logic in ModAttack to properly handle multiple quartz modifier applications. - @imTheSupremeOne
    • Fixed: quartz modifier attack overflow
  • #249 Refactored ToolStationGui and ToolForgeGui to properly use GuiTextField, deduplicated code and fields, and fixed language switching for tool property descriptions. - @Nikolay-Sitnikov
    • Removed: duplicate lang keys, duplicate GUI code
    • Fixed: tool station text box usability, language switching for tool properties
  • #247 Corrected player model renderer in ArmorExtendedGui to not modify the actual player's rotation state, preventing JourneyMap from detecting false label-looking conditions. - @Caedis
    • Fixed: JourneyMap waypoint flickering
    • Closes GTNH#23288
  • #245 Modified ModDurability to remove the broken tool NBT tag when adding durability to a broken tool. - @malabudi
    • Fixed: broken tool flag on durability modifier
  • #244 Added state validation in ToolStationContainer to prevent desync when items are being modified during rename operations. - @loenaaaa
    • Fixed: tool forge item voiding during rename
    • Closes GTNH#22841
  • #243 Refactored SlimeBase class to properly extend vanilla slimes and corrected XP calculations; fixed NBT serialization to preserve health; updated KingBlueSlime XP. - @ohentis
    • Removed: incorrect slime implementation
    • Fixed: slime health NBT loading, slime XP scaling, slime vanilla inheritance, king slime XP values
    • Closes #238, #239, #240, #241
  • #237 Corrected transparency rendering state management in FlexibleToolRenderer for third-person perspective. - @SuperSoupr
    • Fixed: third-person translucency rendering
  • #234 Added hasKey() check before getCompoundTag() call in WeaponryHandler for 2.8.2. - @boubou19
    • Fixed: empty NBT tag creation (2.8.2)
  • #233 Added hasKey() check before getCompoundTag() call in WeaponryHandler to avoid creating empty NBT compounds as a side effect. - @Alexdoru
    • Fixed: empty NBT tag creation
  • #231 Corrected event handling in TinkerArmorEvents and TinkerWorldEvents for the 2.8.x version. - @chochem
    • Fixed: miniature red heart drops in EEC (2.8.x), miniature red heart NEI display (2.8.x)
  • #230 Corrected event handling in TinkerArmorEvents and TinkerWorldEvents that was broken by a previous change. - @chochem
    • Fixed: miniature red heart drops in EEC, miniature red heart NEI display
    • Closes GTNH#22407
  • #229 Corrected loop counter usage in TinkerSmeltery where iter+1 was causing validity checks to be misaligned. - @FourIsTheNumber
    • Fixed: tough rod clay cast texture and name, full guard clay cast recipe generation
    • Closes #201
  • #226 Modified HarvestTool to return no tool classes when the tool is broken, preventing EFR from recognizing broken tools as valid for dirt path and log stripping operations. - @Kynake
    • Fixed: Broken tools enabling EFR features
  • #225 Restructured ammo item class hierarchy: moved generic ammo logic to base AmmoItem class, created specialized ArrowAmmo and BoltAmmo classes to exclude projectile weapons from quiver compatibility. - @koolkrafter5
    • Added: ArrowAmmo, BoltAmmo
    • Removed: Improper quiver slot compatibility
  • #224 Improved tree detection logic in LumberAxe to handle horizontal branches and added caching to prevent redundant block checks. - @ohentis
    • Fixed: Tree chopping with horizontal sections
    • Closes #223
  • #215 Adjusted tooltip rendering in HeartCanister class. - @tuodekun
    • Fixed: Tooltip positioning
    • Closes #214
  • #213 Corrected chest detection logic in CraftingStationLogic to properly distinguish double chests from adjacent trapped chests. - @Dredonkey
    • Fixed: Chest detection misidentification

Performance ​

  • #329 Modified SmelteryBlock and LavaTankBlock to announce removals in onBlockPreDestroy; changed SmelteryLogic to batch structure updates on controller's next tick instead of rebuilding on each onNeighborBlockChange event, reducing overhead from repeated neighboring block updates. - @Pxx500
    • Fixed: repeated smeltery structure rebuilds
  • #321 Optimized rendering allocation in FlexibleToolRenderer, BowBase, ToolCore, ProjectileWeapon, and Crossbow by reducing unnecessary object creation during render passes. - @boubou19
    • Fixed: Excessive RAM allocation during tool rendering
  • #307 Eliminated duplicate rendering code and consolidated common patterns in DryingRackRender, BlockRenderCastingChannel, CastingBlockRender, and other render classes. Extracted shared utility methods to ItemHelper. - @boubou19
    • Added: rendering utility methods
    • Removed: duplicate render code
  • #304 Implemented last-recipe caching and recipe batching in CraftingStationContainer.java to eliminate redundant lookups during bulk crafting operations. - @Caedis
    • Added: recipe caching, recipe batching
    • Fixed: crafting station lag
    • Closes GTNH#25465
  • #292 Optimized TextureHelper.java texture existence checks and added access transformer changes to improve lookup performance. - @tiffit
    • Fixed: startup performance
  • #253 Replaced regex pattern matching with direct string operations in ToolStationGui. - @Nikolay-Sitnikov

Internal / Refactor ​

  • #313 Removed magic color numbers and replaced them with ColorUtils method calls in ArmorExtendedGui, KnapsackGui, SmelteryGui, CraftingStationGui, FrypanGui, PartChestGui, PartCrafterGui, PatternChestGui, and StencilTableGui. - @Ranzuu
  • #293 Moved color constants to ColorUtils.java and updated references in TProxyClient, RecipeHandlerToolMaterials, and other classes. Removed LocalizedColors.java. - @Ranzuu
    • Added: color utilities consolidation
    • Removed: LocalizedColors.java
  • #263 Created LocalizedColors enum cache in TProxyClient; refactored RecipeHandlerToolMaterials to use cached enums instead of inline color strings. - @Ranzuu
    • Added: LocalizedColors enum
  • #217 Added additional drawing method to AbstractTab to support modified tab rendering, enabling AdventureBackpack to remove its duplicate implementation. - @wlhlm
    • Added: AbstractTab drawing method

Chores ​

  • #309 Updated tooltip and display logic across multiple classes to unify fluid unit formatting and numeric presentation in NEI handlers and WAILA providers. - @Connor-Colenso
  • #235 Deleted unused event handler registration from SmelteryProxyClient. - @Alexdoru
    • Removed: unused event registration

Contributors ​

Everyone who authored, reviewed or co-authored a change on this page, with how many of them:

@Dream-Master (19), @UltraProdigy (18), @Ranzuu (11), @Alexdoru (7), @boubou19 (7), @Pxx500 (7), @koolkrafter5 (6), @Nikolay-Sitnikov (6), @Caedis (5), @danyadev (5), @Eldrinn-Elantey (5), @Ethryan (4), @LazyFlesh (4), @Ruling-0 (4), @Algent (3), @DarkShadow44 (3), @FourIsTheNumber (3), @MCTBL (3), @mitchej123 (3), @sisyphussy (3), @wlhlm (3), @chochem (2), @Connor-Colenso (2), @cubefury (2), @FrostyFire1 (2), @Guvante (2), @ham-corp (2), @kuba6000 (2), @loenaaaa (2), @Luca-Guettinger (2), @ohentis (2), @slprime (2), @SuperSoupr (2), @tiffit (2), @Viptunbeqwfwew (2), @VortexSo4 (2), @ah-OOG-ah (1), @Angry3vilbot (1), @brandyyn (1), @C0bra5 (1), @Charsy89 (1), @ChromaPIE (1), @DennisOrtin (1), @Dredonkey (1), @EnderProyects (1), @Gamingb3ast (1), @ImaMapleTree (1), @imTheSupremeOne (1), @iouter (1), @Kiryu144 (1), @Krepyn (1), @Kynake (1), @LazyFleshWasTaken (1), @lc-1337 (1), @LooseEthics (1), @Majora320 (1), @malabudi (1), @MalTeeez (1), @mattiasploesch-cpu (1), @Miklebe (1), @Nana-Sakura (1), @PLASMAchicken (1), @ROBERT-PARKOURCIVILIZATIONGOD (1), @Sanduhr32 (1), @seventh-june (1), @thehoblit (1), @tuodekun (1), @Worive (1), @ZaykieT (1), @zyf051520 (1)