Te funkcję można lepiej napisać. Wiem, jestem czepialski, ale skoro funkcja znajduje się w dziale z poradnikami, powinna ona obsłużyć możliwie dużo przypadków.
Brakuje obsługi dni, tygodni i lat. W dodatku zamiana przy spójniku "and" tworzy brzydką przerwę na 3 spacje. Kod sam w sobie można skrócić, ponieważ słowo kluczowe 'else' jest niepotrzebne, co jest związane z tym, iż zwracanie wartości kończy wykonywanie funkcji.
Poniżej pokazałem co mam na myśli.
function dodajCD(p: player, v: text, t: text, s: timespan) :: boolean:
# [...]
send "%{_t}% %{_s}%" to {_p}
return false
set {cooldown::%{_v}%::%{_p}%} to now
return true
Dziwnie to wytłumaczyłeś i zdaje się, że niepoprawnie.
@CoFFeIN04 Owszem, można użyć wbudowanych w Minecraft'cie cooldownów, ale trzeba się liczyć z pewnymi konsekwencjami - podążając za przykładem z początku wątku, cooldown będzie obowiązywał dla wszystkich diamentowych mieczy w ekwipunku gracza, a nie tylko dla tego konkretnego diamentowego miecza. Mówiąc ogólniej, działa ona na dany typ przedmiotu, nie na konkretny przedmiot.
Dla potwierdzenia można zajrzeć do kodu źródłowego Skripta (ściślej mówiąc, klasy ExprItemCooldown) i zauważyć, że te wyrażenie przy ustawianiu go wykorzystuje metodę HumanEntity#setCooldown(org.bukkit.Material material, int ticks).
Pozdrawiam.