Procedure trigger when starting to break block

Started by Virinas-code on

Topic category: Help with MCreator software

Last seen on 23:39, 31. Jan 2023
Joined Jan 2023
Points:

User statistics:

  • Modifications:
  • Forum topics:
  • Wiki pages:
  • MCreator plugins:
  • Comments:
Procedure trigger when starting to break block
Tue, 01/24/2023 - 23:32 (edited)

How do I trigger a procedure when a player starts to break a block?

Goal

I am trying to make a custom tools that insta-break any block when it has power.

Actual solution

I made a procedure to break the block and add its item to the player's inventory if the tool has power.

Problem

I need an event Starting to break block to trigger my procedure, but I can't find it.

My question

Is there any way to make a Starting to break block trigger?
If not, is there any other way to reach my goal?

Code

Objects
Redstone Pickaxe

It's the tool that can insta-break stuff. I configured it to be as good as bare hand by default.

Block breaking procedure

Triggered when starting to break a block. If using a redstone pickaxe with power, insta-breaks the block.

Code
Block breaking procedure
package org.sustakenusername.redpower.procedures;

/* imports omitted */

@Mod.EventBusSubscriber
public class RedstoneToolBreakProcedure {
	@SubscribeEvent
	public static void onBlockBreak(BlockEvent.BreakEvent event) {
		execute(event, event.getLevel(), event.getPos().getX(), event.getPos().getY(), event.getPos().getZ(), event.getState(), event.getPlayer());
	}

	public static void execute(LevelAccessor world, double x, double y, double z, BlockState blockstate, Entity entity) {
		execute(null, world, x, y, z, blockstate, entity);
	}

	private static void execute(@Nullable Event event, LevelAccessor world, double x, double y, double z, BlockState blockstate, Entity entity) {
		if (entity == null)
			return;
		if ((entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem().isCorrectToolForDrops(blockstate)) {
			if ((entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag()
					.getDouble("redpower.Power") > 0) {
				if (entity instanceof Player _player) {
					ItemStack _setstack = (new ItemStack(blockstate.getBlock()));
					_setstack.setCount(1);
					ItemHandlerHelper.giveItemToPlayer(_player, _setstack);
				}
				world.setBlock(new BlockPos(x, y, z), Blocks.AIR.defaultBlockState(), 3);
				(entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().putDouble("redpower.Power",
						((entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag()
								.getDouble("redpower.Power") - 1));
			}
		}
	}
}
Edited by Virinas-code on Tue, 01/24/2023 - 23:32
Last seen on 21:02, 19. Sep 2023
Joined Jan 2023
Points:

User statistics:

  • Modifications:
  • Forum topics:
  • Wiki pages:
  • MCreator plugins:
  • Comments:
If your tools are custom,…
Thu, 01/26/2023 - 22:39

If your tools are custom, you might be able to do it with the “when item is swung” trigger. (That trigger is in the item itself, not in the procedure trigger)

Last seen on 23:39, 31. Jan 2023
Joined Jan 2023
Points:

User statistics:

  • Modifications:
  • Forum topics:
  • Wiki pages:
  • MCreator plugins:
  • Comments:
Thannk you!
Tue, 01/31/2023 - 23:40

Thannk you!