Can you test in Minecraft whether a player is blocking with a shield?
Should go with scoreboards. I haven't tested it yet.
Create the scoreboard with:
/ scoreboard objectives add shieldUsed stat.useItem.minecraft.shield
To test if who used the sign:
/ execute as @a [score_shieldUsed_min = 1] run deinCommand
To reset the score then do:
/ scoreboard players set @a [score_shieldUsed_min = 1] drankWater 0
This is for the 1.8 :(
In 1.15 I tried minecraft.used: minecraft.shield instead of stat.useItem.minecraft.shield, but nothing happened…
Hmm. Maybe it only counts as use if you use it to avert something. So when it consumes durability. I would guess.
Then I don't think you can tell if a player is right clicking a sign, sorry.