EpicScheduler icon

EpicScheduler -----

Schedule actions to happen or repeat in specified dates!



Java Version: 17

Dependencies: EpicPluginLib

Description:

Schedule Action Bars, Boss Bars, Chat Messages, Commands and Titles to be executed in a specific date! Schedules will be saved and resumed if the server is restarted, this can be very useful for things like VIP handling, periodic world regeneration, scheduled server events, reminders, periodic backups, periodic world saves, or whatever you want to happen in a specific day, as long as you can do it using a command.

Features:
  • Schedules are saved between restarts
  • Schedules can repeat every few days, hours, minutes, seconds
  • Can pick random results to execute
  • Can execute to EVERYONE online, everyone in a specific world, or to a specific player
  • Simple commands for setting and cancelling schedules
  • Command results can be executed either by the player or console
  • PlaceholderAPI Support!

Installation:
Make sure your server is using JAVA 17!
  1. Drop EpicPluginLib and EpicScheduler in your plugins folder.
  2. Restart your server.
  3. Edit the file schedules.yml to set up schedules.

Commands and Permissions:
/schedule <yyyy-MM-dd> <HH:mm:ss> <result> [target] <resultValue>:

Schedules a result to happen in the specified date. Available results are: actionbar, bossbar, chatmessage, command and title.
Targets are who the result will be executed to. Available targets are: EVERYONE, <worldname>, <playerUUID>. Only player UUIDs are supported. Command is the only result which you don't need to specify a target.
Result value is the text of the result.
The last three arguments of boss bars are used for color, style, and progress, for example:
/schedule 2022-09-27 10:43:09 bossbar EVERYONE Hello everyone! BLUE SOLID 1.0
Titles need to have the title and subtitle enclosed in quotes. The last three arguments of titles are used for fade in, stay, and fade out, for example:
/schedule 2022-09-27 10:45:20 title EVERYONE "&9Hello Everyone" "&7How is it going?" 10 70 20
Commands values can either be the command itself, that is executed only once at console, or you can specify a target and an executor (CONSOLE or PLAYER), just separate it in semicolons like "TARGET;EXECUTOR;COMMAND", for example:
/schedule 2022-09-27 10:50:25 command EVERYONE;PLAYER;me What's up!
Permission to use schedule command is: epicscheduler.schedule

/unschedule <yyyy-MM-dd> <HH:mm:ss>:
Cancels an already set schedule, preventing it from repeating and executing, by removing it from config.
Permission to use unschedule command is: epicscheduler.schedule

/epicscheduler info [schedule]:
Lists all running schedules, or shows information about a specific schedule.
Permission to use info command is: epicscheduler.info

/epicscheduler reset:
Cancels all running schedules, reads all schedules from config, then reset the updated schedules.
Permission to use reset command is: epicscheduler.reset

Configuration:
In schedules.yml you just need to create a section of a date, make sure it's enclosed in quotes, and that it follows the yyyy-MM-dd HH:mm:ss format. In it, create the result section that you would like to be executed. Available result sections: Action Bars, Boss Bars, Chat Messages, Commands and Titles. For example:
Code (YAML):
'2022-09-27 11:05:37':
  Repeat
: 1 day #Available: days, hours, minutes and seconds
  Chat Messages
: #Available:
    Pick
: RANDOM #Available: ALL and RANDOM
    Target
: EVERYONE #Available: EVERYONE, <worldname> and <playerUUID>
    '1'
: #Enumerate the results to be picked.
      Text
: 'Hello there!'
    '2'
:
      Text
: 'Hi there!'
Everything about every result is documented in the example configuration:
Code (YAML):
# Schedules results that will execute on the specified date.
# Each schedule have results.
# Dates have the following format: 'yyyy-MM-dd HH:mm:ss'
# The local timezone will be used.
# If the date is due when the server is offline, the results are ran the next time the server goes online.
# Schedules are deleted once their dates are due.
# Here's an example of how to set a schedule:
'2100-09-08 19:54:24'
:
  # You can add the 'Repeat' setting.
  # Format is <time> <unit>. Available units: days, day, hours, hour, minutes, minute, seconds, second.
  Repeat
: 1 day # Once the date is met, the results will be rescheduled to happen in 1 day, or '2100-09-09 19:54:24'.
  # This schedule is set to repeat every 1 day. If I turn the server off and turn it back on 48 hours later, it will
  #perform the 2 missed repeats right after the server loads! When this setting is true, the schedule will perform
  #only once right after the server loads, instead of the amount of missed repeats.
  Skip Missed Repeats
: false
  Boss Bars
: # Available results: Action Bars, Boss Bars, Chat Messages, Commands and Titles.
    Target
: EVERYONE # To who this result will happen. Available: EVERYONE, <worldName>, <playerUUID>, <world1,world2...>, and <player1,player2...>.
    Pick
: RANDOM # Tells that a RANDOM bar should be picked. Use ALL to send all results at once.
    '1'
: # You must number each bar that you add to 'Boss Bars'.
      Color
: BLUE # Available: BLUE, GREEN, RED, PINK, PURPLE, WHITE, YELLOW.
      Style
: SEGMENTED_6 # Available: SOLID, SEGMENTED_6, SEGMENTED_10, SEGMENTED_12, SEGMENTED_20.
      Progress
: 1.0 # The progress of the bar. Must be 1.0 for full, and 0.0 for empty.
      Title
: '&6Hello %player_displayname%' # The title of the boss bar. Supports PlaceHolderAPI.
    '2'
:
      Color
: GREEN
      Style
: SOLID
      Progress
: 0.5
      Title
: '&5How ya doing?'
  Chat Messages
:
    # My UUID. Since names can change between schedules, only UUIDs are allowed in Target.
    # This is useful when you want to handle the end of VIPs in your server.
    Target
: 1fc1bfdf-ead0-4ee9-9b40-a3f58db88552
    Pick
: ALL
    '1'
:
      Text
: "&9What's up, Epicnicity322?"
    '2'
:
      Text
: "Hope everything is fine."
  Titles
:
    Target
: world_the_end
    #Pick: ALL # Pick is irrelevant here, since there's only one title, and I don't want to use random.
    '1'
:
      Title
: '&1Hello'
      Subtitle
: '&7How''s the dragon fight?'
      Fade In
: 10 # Time in ticks for title to fade in.
      Stay
: 70 # Time in ticks for title to stay.
      Fade Out
: 20 # Time in ticks for title to fade out.
  Commands
:
    # Commands are the only result which don't include Target option. By default, they are executed once in console, but
    #you can see more info on how to change that behavior below.
    Pick
: RANDOM
    '1'
:
      Values
:
        # You can specify a target to run the command for every target. Available: EVERYONE, <worldName>, <playerUUID>, <world1,world2...>, and <player1,player2...>.
        # The second argument is who will be executing the command. CONSOLE or the PLAYER.
        # Third argument is the command itself.
        # The format is: <target>;<executor>;<command>
        - 'EVERYONE;CONSOLE;tell %player_name% This is console whispering to you, %player_displayname%'
        - 'world_the_end;PLAYER;me I''m in the end fighting the dragon!'
        # If you don't specify a target and executor, the command will run once in console.
        - 'say hi everyone, from console'
    '2'
:
      Values
:
       - 'say what''s up everyone'
  Action Bars
:
    Target
: EVERYONE
    '1'
:
      Text
: '&aHello there!'
Resource Information
Author:
----------
Total Downloads: 52
First Release: Sep 27, 2022
Last Update: Sep 27, 2022
Category: ---------------
All-Time Rating:
0 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings