diff --git a/src/main/java/com/simibubi/create/content/schematics/client/SchematicAndQuillHandler.java b/src/main/java/com/simibubi/create/content/schematics/client/SchematicAndQuillHandler.java index 220ce6699..dd4960c3c 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/SchematicAndQuillHandler.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/SchematicAndQuillHandler.java @@ -98,40 +98,41 @@ public class SchematicAndQuillHandler { return true; } - public void onMouseInput(int button, boolean pressed) { + public boolean onMouseInput(int button, boolean pressed) { if (!pressed || button != 1) - return; + return false; if (!isActive()) - return; + return false; LocalPlayer player = Minecraft.getInstance().player; if (player.isShiftKeyDown()) { discard(); - return; + return true; } if (secondPos != null) { ScreenOpener.open(new SchematicPromptScreen()); - return; + return true; } if (selectedPos == null) { Lang.translate("schematicAndQuill.noTarget") .sendStatus(player); - return; + return true; } if (firstPos != null) { secondPos = selectedPos; Lang.translate("schematicAndQuill.secondPos") .sendStatus(player); - return; + return true; } firstPos = selectedPos; Lang.translate("schematicAndQuill.firstPos") .sendStatus(player); + return true; } public void discard() { diff --git a/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java b/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java index cdf875a74..9fe72d003 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java @@ -243,23 +243,23 @@ public class SchematicHandler { selectionScreen.renderPassive(poseStack, partialTicks); } - public void onMouseInput(int button, boolean pressed) { + public boolean onMouseInput(int button, boolean pressed) { if (!active) - return; + return false; if (!pressed || button != 1) - return; + return false; Minecraft mc = Minecraft.getInstance(); if (mc.player.isShiftKeyDown()) - return; + return false; if (mc.hitResult instanceof BlockHitResult) { BlockHitResult blockRayTraceResult = (BlockHitResult) mc.hitResult; BlockState clickedBlock = mc.level.getBlockState(blockRayTraceResult.getBlockPos()); if (AllBlocks.SCHEMATICANNON.has(clickedBlock)) - return; + return false; if (AllBlocks.DEPLOYER.has(clickedBlock)) - return; + return false; } - currentTool.getTool() + return currentTool.getTool() .handleRightClick(); } diff --git a/src/main/java/com/simibubi/create/events/InputEvents.java b/src/main/java/com/simibubi/create/events/InputEvents.java index 2b4e847ab..ada1a3eb0 100644 --- a/src/main/java/com/simibubi/create/events/InputEvents.java +++ b/src/main/java/com/simibubi/create/events/InputEvents.java @@ -45,15 +45,17 @@ public class InputEvents { } @SubscribeEvent - public static void onMouseInput(InputEvent.MouseButton event) { + public static void onMouseInput(InputEvent.MouseButton.Pre event) { if (Minecraft.getInstance().screen != null) return; int button = event.getButton(); boolean pressed = !(event.getAction() == 0); - CreateClient.SCHEMATIC_HANDLER.onMouseInput(button, pressed); - CreateClient.SCHEMATIC_AND_QUILL_HANDLER.onMouseInput(button, pressed); + if (CreateClient.SCHEMATIC_HANDLER.onMouseInput(button, pressed)) + event.setCanceled(true); + else if (CreateClient.SCHEMATIC_AND_QUILL_HANDLER.onMouseInput(button, pressed)) + event.setCanceled(true); } @SubscribeEvent