SRVCron (1.8-1.21.11) [Scheduler | Events | Jobs | Conditions | Spigot/Bungee] icon

SRVCron (1.8-1.21.11) [Scheduler | Events | Jobs | Conditions | Spigot/Bungee] -----

Create tasks, schedule everything you need. Control what happens on your server. Manage everything.



Continuation of the well-known Cron plugin - MC-Cron.
All credits goes to the original author - TheTadeSK.

SRV-Cron is a all-in-one minecraft server scheduler that has many features to schedule jobs for certain times or in-game events.

It is a continuation of a well-known Cron plugin - MC-Cron with a lot of additional and expanded features that original MC-Cron plugin does not provide, such as PlaceholderAPI support, sending commands as players, variable actions and condition checking.

_________________________________________________


# FEATURES


These are some of the features that this plugin provides.

Customizable jobs;
Various command execution;
Execute commands by every online player;
Send title messages to every online player;
Play sounds to every online player;
Filter command action receivers by a condition or permission;
Event jobs & commands;
Start-up commands;
Delayed command execution (/timer);
BungeeCord support;
PlaceholderAPI support;


AVAILABLE EVENTS
(Use these values in configuration)
- join-event
- quit-event
- weather-change-event
- world-load-event
- player-bed-enter-event
- player-change-world-event
- player-gamemode-change-event
- player-kick-event
- chat-event
- command-event
- item-pickup-event
- player-advancement-done-event

BUILT-IN PLACEHOLDERS
- {player_name} - for events that relate to a player.
- {world_name} - for events that relate to a world.

.. and bunch more event-specific placeholders, read more at:
https://github.com/M0diis/SRV-Cron/wiki/Configuration#events

You can use both placeholders if event relates to both player and a world (ex. player-change-world-event)

BungeeCord has only two events available, join & quit.
_________________________________________________


# COMMANDS & PERMISIONS


RUN COMMAND AFTER SPECIFIED SECONDS
Command: /timer <seconds> <command>
Permission: srvcron.command.timer

RELOAD CONFIGURATION & JOBS
Command: /srvcron reload
Permission: srvcron.command.reload

RUN CRON OR EVENT JOB MANUALLY
Command: /srvcron run <job-name> or /srvcron run event <event-name>
Permission: srvcron.command.run

SUSPEND JOB EXECUTION
Command: /srvcron suspend <job-name>
Permission: srvcron.command.suspend

RESUME JOB EXECUTION
Command: /srvcron resume <job-name>
Permission: srvcron.command.resume

JOB INFORMATION
Command: /srvcron jobinfo <job-name>
Permission: srvcron.command.jobinfo

JOB & EVENT LIST
Command: /srvcron list [events]
Permission: srvcron.command.list
_________________________________________________


# CONFIGURATION


Configuration is pretty simple and easy to understand.
For more detailed explanation, visit Github wiki page:

Configuration · M0diis/SRV-Cron Wiki

DEFAULT CONFIGURATION
Code (YAML):

# Available command actions:
# [MESSAGE] or [TEXT] -> this will send a direct message to the player.
# [PLAYER] -> a command will be sent by the player.
# [CONSOLE] or none -> a command will be sent by the console.
# [TITLE] -> will show a title to a player. A more detailed usage below.
# [SOUND] -> this will play a sound to the player.
# [LOG <logname>] -> this will log a message to a log file.
# [LOG] -> this will send a log message to the console.
# ---
#- <ALL>[PLAYER] will be executed by every online player EXCEPT the player who dispatched the event.
#- <ALL>[CONSOLE] will be executed by console for every online player. Placeholders will apply to the player.
#- will be executed once via the server console.
# ---
# "<ALL+>" in Event-Job will be executed by every online player INCLUDING the player who dispatched the event.
# Use {placeholder} to apply a placeholder to the player who dispatched the event.
# ---
# Detailed explanation:
# This will play a sound to the player.
# The first argument is the sound, the second is the volume and the third is the pitch.
# You can find a list of sounds here: https://www.digminecraft.com/lists/sound_list_pc.php
#  - '[SOUND] ENTITY.PLAYER.LEVELUP, 1.0, 1.0'
# This will show a title to the player.
# The first argument is the title, the second is the subtitle.
# The last three are: fade-in, stay and fade-out times.
#  - '[TITLE] This is a title, This is a subtitle, 20, 60, 20'
# Alternatively you can use opt out the subtitle or the times, or just the subtitle.
#  - '[TITLE] This is a title'
#  - '[TITLE] This is a title, 20, 60, 20'
# ---
# You can also filter out the players using placeholders.
# - '[PLAYER (%vault_eco_balance% > 1000)] This will only be executed by the player if he has more than 1000 balance.'
# Same applies to all the other actions, title, message, sound, etc., ex:
# '[TITLE (%vault_eco_balance% > 1000)] You have more than 1000 balance!'
# This will send a title to all the players that have more than 1000 balance.
# ---
# Available operators:
# - X less than Y: <
# - X is greater than Y: >
# - X less or equal to Y: <=
# - X is greater or equal to Y: >=
# - X is equals to Y: ==
# - X is not equals to Y: !=
# ---
# This works best for placeholders that return numeric values.
# Operators might work for values that return yes or true, ex.:
# - '[PLAYER (%player_is_op%)] shout Yay, I'm an OP when this job was executed.'
# ---
# You can also check if player has a permission, ex.:
# - '[PLAYER (PERMISSION:some.permission)] shout You have the permission!'
jobs
:
  save
:
    time
: every 1 hour
    commands
:
     - say Saving world!
      - save- all
      - say Save Complete!
  restart
:
    time
: every 1 day of week at 6:00
    commands
:
     - say Server restart in 10 seconds!
      - timer 10 stop
  tps
:
    time
: every 30 minutes
    commands
:
     - tps
# If you do not want to use any event jobs, use:
# event-jobs: { }
event-jobs
:
  join-event
:
    welcome
:
      time
: 1
      commands
:
       - tell {player_name } Hello!
        - <ALL> [CHAT ] Hello {player_name }!
  quit-event
:
    bye
:
      time
: 5
      commands
:
       - say {player_name } left the game few seconds ago.
  player-gamemode-change-event
:
    whisper
:
      time
: 0
      commands
:
       - "<ALL> [TEXT (PERM:staff.notify.gamemode)] Player {player_name} changed his gamemode from {from_gamemode} to {to_gamemode}"
startup
:
  commands
:
   - say Server was started!
    - timer 60 say Server is online for 1 minute!
    - save- all
    - ' [LOG <server_startup.log> ] Server has been started.'

schedule
:
  # Controls numeric weekdays in expressions like: every day of week in 1,5 at 12:00
  # Supported: monday-first (default, ISO), sunday-first (legacy), iso, legacy
  weekday-numbering
: monday-first

debug
: false
silent-start
: false
notify-update
: true
log-to-file
: true
locale
: 'en'
 
Syntax:
Code (Text):

# named weekdays
time: every wednesday at 00:00
time: every monday,friday at 18:30

# list/range support
time: every day of week in 1,3,5 at 12:00
time: every day of week in 2..6 at 07:45
time: every day of month in 1..5 at 09:00

# plain intervals
time: every 30 seconds
time: every 5 minutes
time: every 1 hour
time: every 2 days

# multiple times per day
time: every day at 08:00,12:00,18:00

# time windows
time: every 15 minutes from 09:00 to 17:00
time: every 20 minutes from 23:00 to 03:00

# nth / last weekday in month
time: every 2nd monday of month at 10:00
time: every last friday of month at 22:00

# relative calendar keywords
time: every weekday at 09:00
time: every weekend at 11:00
time: every month on last-day at 23:55

# month-name schedules
time: every january,march day 1 at 08:00

# start/end constraints
time: every 1 hour between 2026-06-01 and 2026-09-01

# per-job timezone and jitter
# options order is: ... [between ...] [jitter ...] [timezone ...]
time: every day at 09:00 timezone Europe/Berlin
time: every 5 minutes jitter 30s
time: every 10 minutes jitter 2m timezone Europe/Berlin

# one-shot execution
time: at 2026-06-10 14:30

# classic cron expression (opt-in)
time: cron: 0 0 * * 3
time: cron: */15 9-17 * * mon-fri
 


Notes:
- Cron format is "minute hour day-of-month month day-of-week".
- Cron supports "*", lists (,), ranges (-), and steps (/) in each field.
- Cron month/day-of-week names are supported (e.g. "jan", "mon-fri").
- Day-of-week DSL numbers stay compatible with existing configs (1=Sunday ... 7=Saturday).
- Legacy expressions are still accepted for backward compatibility:
- "every 4 day of week at 00:00" (or without "at", defaults to "00:00")
- "every 1 day of month at 09:00" (or without "at", defaults to "00:00")

_________________________________________________


# API


For more detailed explanation, visit Github wiki page:
API · M0diis/SRV-Cron Wiki (github.com)

There are currently 3 events that are fired upon certain actions.

CronJobDispatchEvent
CronJobDispatchEvent
StartupCommandDispatchEvent

You can also interact with the API.

_________________________________________________

MY OTHER PLUGINS

CoreCord - CoreProtect integration for Discord.
ExtraEnchants - Simple additional enchantments for your server.
AntiAnvilRename - Prevent players from renaming certain items using anvils.
SimpleBombs - Customizable bombs for prison and other servers.
VenturaCalendar - In-game calendar with customizable events and much more.
OnlinePlayersGUI - Online players in a GUI. Filter by conditions, placeholders.

Resources from M0dii - all plugins.
_________________________________________________

Please leave a positive review if the plugin works as intended, if you have an issue contact me on discord provided or open an issue on github.

If you're feeling generous and enjoy my plugins - you can support my work here:
- PayPal: https://www.paypal.com/paypalme/ModestasKazlauskas
- Ko-fi: https://ko-fi.com/m0dii

Resource Information
Author:
----------
Total Downloads: 2,083
First Release: Mar 1, 2022
Last Update: Jun 6, 2026
Category: ---------------
All-Time Rating:
1 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings