✅ Added support for multiple execution times in TIME scheduled commands, allowing one command to run at several times during the day.
✅ Implemented backward-compatible time parsing for both single values ("HH:mm" / "HH:mm:ss") and YAML lists.
✅ Updated command info/list and GUI display to show all configured times for TIME commands.
✅ Improved daily trigger tracking so each configured time executes once per day reliably.
daily-announce:
enabled: true
type: "TIME"
time:
- "11:00"
- "23:00"
command: "say Right now is %hour%:%minute%!"
description: "Daily announcement"
✅ Added full version compatibility support from Minecraft 1.17 up to the latest release, ensuring seamless operation across all modern server versions.
✅ Implemented cross-version handling for internal API changes to maintain consistent behavior and stability.
✅ Ensured all existing features, commands, and placeholders work identically on every supported version without limitations.
✅ Improved long-term maintainability by future-proofing the plugin against upcoming Minecraft updates.
✅ Verified performance and reliability across the entire supported version range for production environments.
✅ Added $delay$ placeholder feature for delayed command execution across all command types (TIME, INTERVAL, WEEKLY, MONTHLY_DAY, GAME_TIME).
✅ Implemented cumulative delay system where multiple $delay$ commands execute sequentially with customizable delay intervals.
✅ Commands without $delay$ before delayed commands execute immediately, while those after delayed commands execute after all delays complete.
✅ Added comprehensive delay support with delay value specified in seconds via the delay configuration field.
✅ Delay feature works seamlessly with all existing placeholder replacements (%day%, %month%, %year%, %hour%, %minute%, PlaceholderAPI, etc.).
✅ Enhanced configuration flexibility with delay parameter available for all command types without any restrictions.
✅ Added detailed logging for delayed command scheduling and execution with timing information.
Here's a practical example of using the new delay feature for a server restart countdown:
restart-countdown:
enabled: true # Set to true to enable
type: "TIME"
commands:
- "say Restart in 10 seconds"
- "$delay$ say Restart in 9 seconds"
- "$delay$ say Restart in 8 seconds"
- "$delay$ say Restart in 7 seconds"
- "$delay$ say Restart in 6 seconds"
- "$delay$ say Restart in 5 seconds"
- "$delay$ say Restart in 4 seconds"
- "$delay$ say Restart in 3 seconds"
- "$delay$ say Restart in 2 seconds"
- "$delay$ say Restart in 1 second"
- "$delay$ say Restarting server now!"
- "$delay$ restart" # Restart command will execute after all delays
time: "23:59" # Execute at 23:59 every day
delay: "1" # 1 second delay between each command
Three major new features have been added to the TimerCommand plugin:
Allows you to run a command on specific days of the week at a determined time (e.g., every Friday at 22:59).
weekly-example:
enabled: true
type: "WEEKLY"
command: "say This command runs every Monday, Wednesday and Friday at 12:00!"
time: "12:00" # Format: HH:mm or HH:mm:ss
days:
- "monday"
- "wednesday"
- "friday"
/tc add WEEKLY <command_name> <day_1-7> <HH:MM:SS> <command>
Day Numbers:
1 = Monday2 = Tuesday3 = Wednesday4 = Thursday5 = Friday6 = Saturday7 = Sundaymonday (MON)tuesday (TUE)wednesday (WED)thursday (THU)friday (FRI)saturday (SAT)sunday (SUN)Days are case-insensitive - all of these work:
"monday", "MONDAY", "Monday""mon", "MON", "Mon"Example 1: Command every Tuesday at 15:30
tuesday-event:
enabled: true
type: "WEEKLY"
command: "say Tuesday event!"
time: "15:30"
days:
- "tuesday"
Command line: /tc add WEEKLY tuesday_event 2 15:30 say Tuesday event!
Example 2: Commands on weekdays at 09:00
weekday-morning:
enabled: true
type: "WEEKLY"
commands:
- "say Good morning!"
- "broadcast Server is ready"
time: "09:00"
days:
- "monday"
- "tuesday"
- "wednesday"
- "thursday"
- "friday"
Command line: /tc add WEEKLY weekday_morning 1 09:00 say Good morning!
Then manually add days to config.yml.
Instead of running a single command, you can now specify a list of commands that will be executed in sequence.
Old way (still works):
single-command:
enabled: true
type: "TIME"
command: "say Single command"
time: "12:00"
New way (list):
multiple-commands:
enabled: true
type: "TIME"
commands:
- "say First command"
- "give @a diamond 1"
- "broadcast Server announcement"
time: "12:00"
commands array, the command field is ignoredExample 1: Daily cleanup with multiple commands
daily-cleanup:
enabled: true
type: "TIME"
commands:
- "say Starting server cleanup!"
- "save-all"
- "broadcast Server will restart in 10 seconds"
time: "06:00"
Example 2: Weekly bonus on Friday with multiple commands
weekly-bonus:
enabled: true
type: "WEEKLY"
commands:
- "broadcast Friday bonus!"
- "give @a gold_ingot 10"
- "effect give @a speed 3600 1"
time: "19:00"
days:
- "friday"
Allows you to run a command at a specific in-game time (measured in ticks) in a specific world (e.g., when the sun reaches noon).
In-game time is measured in ticks (0-24000 per day):
game-time-example:
enabled: true
type: "GAME_TIME"
command: "say It's noon in-game!"
world: "world" # World name
tick: 6000 # In-game tick (0-24000)
/tc add GAME_TIME <command_name> <world_name> <tick_0-24000> <command>
doDaylightCycle gamerule - if it's off, the command may not triggerExample 1: Noon announcement
noon-event:
enabled: true
type: "GAME_TIME"
command: "say The sun has reached its peak!"
world: "world"
tick: 6000
Command line: /tc add GAME_TIME noon_event world 6000 say The sun has reached its peak!
Example 2: Midnight effect with multiple commands
midnight-event:
enabled: true
type: "GAME_TIME"
commands:
- "say Midnight in-game!"
- "effect give @a blindness 10"
- "broadcast The night is darkest!"
world: "world"
tick: 18000
Command line: /tc add GAME_TIME midnight_event world 18000 say Midnight in-game!
Example 3: Multiple world events during the day
sunrise:
enabled: true
type: "GAME_TIME"
command: "effect give @a speed 300 1"
world: "world"
tick: 0
sunset:
enabled: true
type: "GAME_TIME"
commands:
- "say The sun is setting"
- "effect give @a slowness 300 1"
world: "world"
tick: 12000
weekly-with-multiple:
enabled: true
type: "WEEKLY"
commands:
- "say Friday is here!"
- "give @a diamond 5"
- "effect give @a haste 1800 2"
- "broadcast Weekend event starts!"
time: "19:00"
days:
- "friday"
Command line: /tc add WEEKLY friday_event 5 19:00 say Friday is here!
world-noon:
enabled: true
type: "GAME_TIME"
commands:
- "execute in world run effect give @a speed 600 1"
- "broadcast It's noon in the main world!"
world: "world"
tick: 6000
nether-midnight:
enabled: true
type: "GAME_TIME"
command: "say It's midnight in the Nether"
world: "world_nether"
tick: 18000
command and new commands list cannot be used together in one schedulercommands if both are presentScheduledCommand.java
commands field (list instead of single command)daysOfWeek field for WEEKLY typegameTimeWorld and gameTimeTarget fields for GAME_TIME typecheckWeeklyExecution(), checkGameTimeExecution()execute() now supports multiple commandsCommandScheduler.java
loadCommands() method to support:
commands arraydays array for WEEKLY typeworld and tick for GAME_TIME typejava.time.DayOfWeekaddCommand() method to save WEEKLY and GAME_TIME parameterscommands.yml
Possible causes:
doDaylightCycle gamerule is disabledSolutions:
/say %server_world_name%/gamerule doDaylightCycle true/timePossible causes:
config.yml is incorrectSolutions:
config.yml and set the correct timezoneFor more information, see the commands.yml file documentation or README.md
A comprehensive command scheduler for Spigot/Paper servers
%day%, %month%, %year%, %hour%, %minute%For support or feature suggestions, contact me:
discord://-/users/771295264153141250 (App)!bStats
config.yml
A comprehensive command scheduler for Spigot/Paper servers