Sposobów jest kilka, ale skupię się na najprostszym.
Do odczytu czasu rzeczywistego (dokładniej, czasu systemowego) można wykorzystać wyrażenie now w połączeniu z tym wyrażeniem. Przykład poniżej.
every 1 second:
set {_currentTime::*} to (now formatted as "HH:mm:ss") split at ":"
{_currentTime::2} and {_currentTime::3} are "00"
broadcast "&aWybiła godzina &6%{_currentTime::1}%:00&a."
W Twoim przypadku wystarczy co sekundę lub co minutę (w zależności od tego jakiej dokładności wymagasz) sprawdzać czy sformatowany czas to "18:00:00" (lub "18:00" dla "HH:mm").
EDIT:
Dzień tygodnia można sprawdzić za pomocą formatu "u" lub "E". Do tego również załączam przykład:
command /test:
trigger:
send (now formatted as "u")
send (now formatted as "E")
send (now formatted as "EEEE")
[11:18:04 INFO]: 5
[11:18:04 INFO]: pt.
[11:18:04 INFO]: piątek
Implementacyjnie przyjemniejsza jest wersja z liczbą (u), ponieważ format tekstowy (E) jest zależny od lokalizacji językowej.
Cały wachlarz dostępnych formatów dat został opisany tutaj.
Pozdrawiam.