Skip to content

Adds Field Engineer's Toolbox#5906

Open
querns wants to merge 53 commits intoGTNewHorizons:masterfrom
querns:advanced-toolbox
Open

Adds Field Engineer's Toolbox#5906
querns wants to merge 53 commits intoGTNewHorizons:masterfrom
querns:advanced-toolbox

Conversation

@querns
Copy link
Contributor

@querns querns commented Feb 13, 2026

Field Engineer's Toolbox

java_4AyAHcU90R

This PR adds the new toolbox I've been working on for the last month and change. Intended to replace the IC2 toolbox, it adds several new quality of life features and is intended to be used heavily at all levels of play.

Suggested Recipe

I'm targeting mid-LV for the toolbox's gating.

java_Oy9lErwTpn (the fluid is polyethylene, which makes it somewhat more challenging to do in LV, but definitely doable)

Features

Tool storage

java_KZMAgLjoDG

The field engineer's toolbox can hold the seven primary tools of GT5 in dedicated slots: the wrench, wire cutters, screwdriver, hard hammer, soft mallet, crowbar, and soldering iron. Only these types of tools can be assigned to these dedicated slots. There is also a dedicated battery slot (see below) and six generic slots for general storage. Dedicated slots have a silhouetted background and a tooltip explaining their restriction.

Active Tool Selection

Tools in the toolbox can be selected as the active tool by the user using a radial menu by pressing the pick block button. (Radial menu was stolen from matter manipulator.) When selected, the toolbox takes on the appearance of the selected tool, and can be used as if it was actually the tool you selected. All damage and power expenditure is applied to the tool.

java_Ev8210Nhvj.mp4

Pick Block Support

There is also limited pick block support for switching tools. Pressing pick block while looking at a compatible block will automatically pick an appropriate tool and skip the radial menu. It also has support for precise selection on a block face, allowing it to (for example) select a crowbar if it hovers over the side of a pipe with a cover attached, or otherwise pick a wrench. Pick Block functionality can also work on other mod items with a special defensive decider class; the PR ships with project red gates and ender IO conduits as potential targets.

java_GxoPDkxxuf.mp4

Battery Functionality

Adding a battery to the battery slot allows for the toolbox to handle electricity related functionality:

  • Electric tools in the toolbox will charge themselves from the battery's reserve.
  • Adding a battery-containing toolbox to a charger will charge the battery, and thus the tools inside by proxy.
  • Having a battery allows GT++ wireless chargers to charge the whole toolbox.

Any tier battery can be added to the toolbox, but charging mechanics are limited by the tier of the battery and the tier of the tools. The battery will never expend more than 1A of its tier per tick, and it will not charge a tool for more than 1A of the tool's tier per tick. This means that while you could add a Zero Point Module to the toolbox, it's not going to be drastically more effective at charging tools than a lapotron crystal is.

Other Stuff

  • Like the IC2 toolbox, right clicking with the toolbox on a maintenance hatch fixes the maintenance hatch.
  • The soldering iron will pull soldering wire from the generic slots of the toolbox.
  • Config circuits will look for a screwdriver in a toolbox and use it, even if it isn't the active tool.
  • Pressing the GT5U mode switch key will change the mode of the selected tool, if it has any.
  • Breaking a tool in the toolbox makes it render a short animation for a few seconds to help communicate that the tool was broken. (Open the toolbox or switch to another tool to cancel this animation early.)
java_FSdkH8Jy4v.mp4

Differences from Areas of Interest thread

Due to design decisions and feedback, some features were cut from the original design. These include:

  • No longer has healing axe functionality. This was considered by some to be too powerful, and sparked a tangential discussion line that really had nothing to do with the toolbox at all.
  • No special offhand functionality. The current design is intended for use in the main hand only, and doesn't provide any particular incentive to keep it in the offhand over the healing axe.

Future Tasks

I've kept the number of pick block deciders small for now, because I want to get the bulk of the functionality out in a reasonable time frame. Adding new pick block deciders is easy and can be done in future PRs.

Changes Not Related to the Toolbox

I changed a few other things with the codebase while doing this as well.

  • The radial menu was stolen from Matter Manipulator and added directly to this repo. It can now be used by other things as well.
  • The GTNHLib dep was bumped to allow Adds pick block event mixin GTNHLib#259 to be used. The infinite spray can was updated to use this event rather than the clumsy mouse event it was relying on before, so people who are still using Apple II mice with no middle mouse button can bind Pick Block to a key or something.
  • I made the naming mechanic of the infinite spray can stop using the anvil naming functionality. Players with an old anvil name on their infinite spray can will need to remove the name using a Tool Station or something.
  • I renamed the trowel class from BehaviorTrowel to BehaviourTrowel so it looked like the others.

# Conflicts:
#	dependencies.gradle
#	src/main/java/gregtech/api/enums/ItemList.java
#	src/main/resources/assets/gregtech/lang/en_US.lang
* The middle click trap event wasn't properly being canceled when the GUI was slated to be open, which caused the server in multiplayer to complete the block picking, potentially shifting the user's active item and leading to a client-side NPE
* Various charging activities (battery charging internal items, wireless charger charging battery) were causing item updates to interrupt block harvesting if the stats of the selected tool were too low. Charging activities are now turned off if the current item is actively being used.
# Conflicts:
#	src/main/java/gregtech/api/modularui2/GTGuiTextures.java
@UltraProdigy UltraProdigy added the New Feature Add something new. Please explain in detail how it works. label Feb 13, 2026
@Dream-Master Dream-Master added the 🚧 Testing on Zeta Do not merge yet, testing this PR on Zeta label Feb 13, 2026
Dream-Master and others added 25 commits February 14, 2026 10:49
Since this PR adds stuff in the same place where the IC2 crops stuff was removed, git interpreted it as this PR re-adding the removed lines. These are now gone in this PR too.
It was possible to potentially throw an unchecked
exception when trying to pick block with an empty
toolbox. I refactored the logic to be more defensive
in this case.
# Conflicts:
#	src/main/java/gregtech/common/GTClient.java
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🚧 Testing on Zeta Do not merge yet, testing this PR on Zeta New Feature Add something new. Please explain in detail how it works.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants