CmdCalendar - Developed by Simon_Flash ([email protected])
Current Version: 1.1.2
Status: Active -> new features and updates are in development
GitHub | Download | CmdCalendar Wiki | Support Discord
CmdCalendar allows administrators to create, edit, and run commands through Scheduler tasks and Interval tasks. Though simple in nature, the implementation of these features has the potential to be an incredibly powerful plugin used for a multitude of server functions. The possibilities are endless, so use your creativity to bring your server to the next level!
Here are just a couple of things server owners have done with CmdCalendar:
- Create custom announcements
- Automatically start drop parties
- Clear entities to reduce lag
- Build custom animations
- And even more!
Features:
- Run commands on specific intervals
- Run commands based on a schedule pattern
- Run commands when starting, reloading, or stopping
- Completely editable through the config file
- Task descriptions for stronger organization
- Verification of values before being set to run
- Instantly view all tasks or those of a specified status
- Command blacklist to block dangerous commands
- Ability to conceal tasks through the config
- Various debug commands (just in case!)
CmdCalendar also has an updated reference wiki and a support Discord for those who need additional help, both linked above.
Using CmdCalendar is very straightforward, and most commands are fully documented in the plugin (use /CmdCal to pull up a list of commands. Hovering over a command argument will display information about the command, aliases, the permission node, and any notes). Furthermore, the documentation for CmdCalendar can be viewed in the README.md file on the GitHub, linked above.
Creating a CmdCalendar Task
This section is being migrated over to the CmdCalendar Wiki
Creating a task is rather straightforward, but it can take some time to get used to. Donāt forget about the documentation on our GitHub (linked above) and the in-game documentation (/CmdCal) if you experience issues with commands. If those donāt work, feel free to send me a message or join the support Discord above!
The first task weāre going to make is going to be an Interval task. Interval tasks run commands at specific intervals (hence the name) and are only concerned about the time between tasks rather than the time the task runs. To create the task, weāll use the following command.
/CmdCal CreateTask Announcer Interval -> Creates the task Announcer of type Interval
With our task created, we need to add in a couple variable before we can actually activate it. To do this, weāre going to use EditTask to set the task interval, command, and (optionally) a description.
/CmdCal EditTask Announcer Interval 300 -> Sets the interval for Announcer (seconds, changable in Config)
/CmdCal EditTask Announcer Command /broadcast Download CmdCalendar! -> Sets the command for Announcer
/CmdCal EditTask Announcer Description -> Subtly advertises CmdCalendar
With that done, weāre ready to start the task.
/CmdCal StartTask Announcer -> Starts the Announcer task
/CmdCal ShowTask Announcer -> Displays information about the Announcer task
If youāre following along on your server, the last command will display a list of information about the Announcer task, but what weāre particularly looking for is the green āActiveā status. By default, this task wonāt activate until that first delay length has passed, so weāll have 300 seconds to make our next task.
Interval tasks are simple and donāt take up a lot of resources, but also donāt offer a lot of control over the task itself. Interval tasks will reset their countdown after a server restart, and thereās no way to specify any additional rules. This, however, is where Scheduler tasks come in.
A Scheduler task runs when certain time-based requirements are met. For example, letās say that we want our announcer task to broadcast at the start of the minute instead of a random time, but still has the 5-minute interval. Like before, we need to start by creating a Scheduler task, and weāll add in the same command and description.
/CmdCal CreateTask Announcer2 Scheduler
/CmdCal EditTask SetCommand Announcer2
/CmdCal EditTask SetDescription Announcer2
With that done, we can create the schedule for the command itself, which uses the following format and base conditions.
ā##ā: Define a specific number as a condition -> ā0 28 18 14 3ā encodes March 14 at 6:28:00
ā*ā: Include all posibilities, effectively ignoring the condition -> ā0 28 18 * *ā Any day at 6:28:00
Lastly, CmdCalendar currently uses one modifier, the increment.
ā/##ā: Includes times that are whole-number multiples of ## -> ā0 28 /12 * *ā Any day at 00:28:00 or 12:28:00
With this, we can now fully construct our scheduler. We arenāt concerned with the month, day, or time, so we can mark those arguments with ā*ā to ignore them. Our task will run at the start of the minute, so second should be ā0ā (00 is also acceptable). Lastly, we want the task to run every 5 minutes, which is defined using the interval modifier, ā/5ā. This leaves us with the following schedule that does exactly what we want it to do!
0 /5 * * *
Back to commands, letās set this as Announcer2ās schedule and see how it works.
/CmdCal EditTask Announcer2 Schedule 0 /5 * * *
/CmdCal StartTask Announcer2
/CmdCal ShowTask Announcer2
Congratulations! If youāre following along, youāve successfully made your first CmdCalendar task! From here, itās up to you how you use CmdCalendarās tasks to add a whole new dynamic into the game. The power is in your hands now!
If you have a suggestion for CmdCalendar feel free to send me a message and Iāll look into adding it for the next version of CmdCalendar. Of course, if you experience an error that you believe is caused by CmdCalendar please contact me so I can ensure everthing works as intended for other users!
If you need support for CmdCalendar or another one of my plugins, feel free to join my support Discord linked above for fast assistance. Additionally, members of the Discord will be notified early about new updates and plugins right when they come out!