How to make it so that when you click on the right mouse button. From the player in a certain radius, a shockwave goes off. And why doesn't the sound work? Example: Click
public class HammerMontuItem extends PickaxeItem {
public HammerMontuItem(Properties properties) {
super(ModToolTiers.Hammer_montu, 2, -2.8f, properties);
}
@Override
public InteractionResultHolder<ItemStack> use(Level world, Player player, InteractionHand hand) {
ItemStack stack = player.getItemInHand(hand);
BlockPos pos = player.blockPosition();
int radius = 5;
if (!world.isClientSide && player instanceof ServerPlayer) {
ServerPlayer serverPlayer = (ServerPlayer) player;
serverPlayer.swing(hand, true);
world.playSound(null, player.getX(), player.getY(), player.getZ(),
ModSounds.EARTHQUAKE.get(), SoundSource.PLAYERS, 2.0f, 1.0f);
// serverPlayer.connection.send(new SAnimateHandPacket(serverPlayer, hand));
for (BlockPos targetPos : BlockPos.betweenClosed(pos.offset(-radius, -radius, -radius), pos.offset(radius, radius, radius))) {
BlockState targetState = world.getBlockState(targetPos);
if (isOre(targetState) && targetPos.getY() < pos.getY()) {
int heightDifference = pos.getY() - targetPos.getY();
BlockPos newPosition = targetPos.above(heightDifference);
world.setBlockAndUpdate(newPosition, targetState.getBlock().defaultBlockState());
world.setBlockAndUpdate(targetPos, Blocks.AIR.defaultBlockState());
}
}
}
return InteractionResultHolder.pass(stack);
}
private boolean isOre(BlockState state) {
Block block = state.getBlock();
return block == Blocks.COAL_ORE || block == Blocks.IRON_ORE
|| block == Blocks.GOLD_ORE || block == Blocks.DIAMOND_ORE || block == Blocks.LAPIS_ORE;
}