diff --git a/src/main/java/me/desht/modularrouters/item/module/TargetedModule.java b/src/main/java/me/desht/modularrouters/item/module/TargetedModule.java index 2ebaf624..1459f79e 100644 --- a/src/main/java/me/desht/modularrouters/item/module/TargetedModule.java +++ b/src/main/java/me/desht/modularrouters/item/module/TargetedModule.java @@ -54,7 +54,7 @@ public abstract class TargetedModule extends ModuleItem { @Override public InteractionResult useOn(UseOnContext ctx) { - if (ctx.getPlayer() != null && ctx.getPlayer().isCrouching()) { + if (canPlayerUse(ctx.getPlayer())) { if (isValidTarget(ctx)) { if (getMaxTargets() == 1) { handleSingleTarget(ctx.getItemInHand(), ctx.getPlayer(), ctx.getLevel(), ctx.getClickedPos(), ctx.getClickedFace()); @@ -70,6 +70,14 @@ public InteractionResult useOn(UseOnContext ctx) { } } + private boolean canPlayerUse(Player p) { + if (p != null) { + return (p.isCrouching() || (p.isShiftKeyDown() && (p.isVisuallyCrawling() || p.isVisuallySwimming()))); + } else { + return false; + } + } + protected boolean isValidTarget(UseOnContext ctx) { return InventoryUtils.getInventory(ctx.getLevel(), ctx.getClickedPos(), ctx.getClickedFace()).isPresent(); }