[Forge] Wrench compatibility with other mods
Technici4n opened this issue ยท 4 comments
How should this be handled? We are currently using the following tool actions:
/**
* An action that is triggered by right-clicking a supported block or part, which will disassemble that block or
* part into its item form.
*/
public static final ToolAction WRENCH_DISASSEMBLE = ToolAction.get("wrench_disassemble");
/**
* An action that is triggered by shift-right-clicking a supported block or part, which will rotate that part.
*/
public static final ToolAction WRENCH_ROTATE = ToolAction.get("wrench_rotate");
Implementing a wrench is as simple as:
public class QuartzWrenchItem extends AEBaseItem {
public QuartzWrenchItem(Item.Properties props) {
super(props);
}
@Override
public boolean canPerformAction(ItemStack stack, ToolAction toolAction) {
if (toolAction == AEToolActions.WRENCH_DISASSEMBLE || toolAction == AEToolActions.WRENCH_ROTATE) {
return true;
}
return super.canPerformAction(stack, toolAction);
}
}
And checking if a block can be wrenched is handled in an event: https://github.com/AppliedEnergistics/Applied-Energistics-2/blob/forge/master/src/main/java/appeng/hooks/WrenchHook.java.
Is this approach ok for other modders, or would you prefer tags? So just supporting any item tagged with #forge:wrenches
.
Going to ask a few people, don't hesitate to leave a comment on your preferred approach.
(I personally think tags would be easier, I don't think the tool action system is really useful here since most wrenches should just be simple items that unlock wrenching functionality... with tags they could just be direct Item
instances).
As a non mod author i like tags, it allows me to add support for any item with just a datapack, and not relying on the mod author to do it.
As discussed a long time ago between a few modders (KingLemming and me) we're already using the tag 'forge:wrench' for this
Had some discussion with @McJty on the Forge discord, and we've agreed to use forge:tools/wrench
. This happens to be what Thermal is already using.