You would have to do this with Skript! Here's one I made for you!
# you can change the delay of this to what ever you want like tick, second, minute, hour, etc.
options:
delay: 1 second
on place:
set {_wait} to the time diffrence between {@delay} and now
if {_wait} >= {pt::%player's uuid%}:
set {pt::%player's uuid%} to now
else:
set {_need} to n({_wait}, 2)
cancel event
play sound "entity.villager.no" with volume 5 to player
send "&cYou must wait %{_need}%&c before placing a block again!"
function format(n: number, type: integer) :: text:
if {_type} is 1:
set {_n} to "%{_n}%"
set {_n} to regex replace "(?<=\d)(?=(\d{3})+(?!\d))" with "," in {_n}
return {_n}
if {_type} is 2:
set {_data} to "No,30|Oc,27|Sep,24|Se,21|Qi,18|Qu,15|T,12|B,9|M,6|K,3"
loop split {_data} at "|":
set {_s::*} to split loop-value at ","
{_n} >= 10 ^ {_s::2} parsed as number
return "%{_n} / 10 ^ {_s::2} parsed as number%%{_s::1}%"
return "%{_n}%"
This should work if it doesn't tell me what's wrong!