Simple Command Timer | [1.13.x - 1.21.x] PlaceholderAPI Support icon

Simple Command Timer | [1.13.x - 1.21.x] PlaceholderAPI Support -----

Command timer, you can also place schedules to the commands to run the days and times that you place




=== NOTAS DE PARCHE / PATCH NOTES ===
Versión: 1.1.0 - Actualización de Formatos de Tiempo
Fecha: 30/06/2025

[ESPAÑOL]
Novedades:
1. Nuevos formatos para placeholders de tiempo:
- Compacto (1h 5m 30s)
- Corto (oculta horas si son cero)
- Digital (solo minutos:segundos)
- Barras de progreso personalizables
- Porcentajes de completado

2. Corrección de errores:
- Solucionado problema con Java <11 (método repeat())
- Mejor manejo de errores en formatos
- Soporte para colores en barras de progreso

3. Mejoras:
- Caché de formatos para mejor rendimiento
- Configuración personalizable en config.yml
- Soporte para placeholders como:
%sctimer_time_comando_compact%
%sctimer_time_comando_bar:▉:░:10%

[ENGLISH]
What's New:
1. New time placeholder formats:
- Compact (1h 5m 30s)
- Short (hides zero hours)
- Digital (minutes:seconds only)
- Custom progress bars
- Completion percentages

2. Bug Fixes:
- Fixed Java <11 compatibility (repeat() method)
- Better error handling for formats
- Color support for progress bars

3. Improvements:
- Format caching for better performance
- Customizable config.yml settings
- Support for placeholders like:
%sctimer_time_command_compact%
%sctimer_time_command_bar:▉:░:10%

=== INSTRUCCIONES / INSTRUCTIONS ===
[ESPAÑOL]
Uso básico:
%sctimer_time_nombrecomando_formato%

Formatos disponibles:
- default: 01:30:15
- compact: 1h 30m 15s
- short: 1:30:15
- digital: 90:15
- progressbar: |||||| (70%)
- bar:▉:░:10: ▉▉▉▉▉▉▉░░░

[ENGLISH]
Basic usage:
%sctimer_time_commandname_format%

Available formats:
- default: 01:30:15
- compact: 1h 30m 15s
- short: 1:30:15
- digital: 90:15
- progressbar: |||||| (70%)
- bar:▉:░:10: ▉▉▉▉▉▉▉░░░

Code (YAML):
#
#                   $$$$$$$$\ $$\                                  
#                   \__$$  __|\__|                                
#   $$$$$$$\  $$$$$$$\ $$ |   $$\ $$$$$$\$$$$\   $$$$$$\   $$$$$$\
#  $$  _____|$$  _____|$$ |   $$ |$$  _$$  _$$\ $$  __$$\ $$  __$$\
#  \$$$$$$\  $$ /      $$ |   $$ |$$ / $$ / $$ |$$$$$$$$ |$$ |  \__|
#   \____$$\ $$ |      $$ |   $$ |$$ | $$ | $$ |$$   ____|$$ |    
#  $$$$$$$  |\$$$$$$$\ $$ |   $$ |$$ | $$ | $$ |\$$$$$$$\ $$ |    
#  \_______/  \_______|\__|   \__|\__| \__| \__| \_______|\__|    
#                                                                
#
# Plugin coded by me, Anyelo120. If you have any suggestions or wish to report bugs, you can join our Discord: https://discord.gg/Fx9RbChAG5
# Plugin desarrollado por Anyelo120. Si tienes sugerencias o deseas reportar errores, únete a nuestro Discord: https://discord.gg/Fx9RbChAG5

# Modifies the name of the plugin you point to. / Cambia el nombre del plugin que se muestra.
plugin_name
: '&8 [&bSc&eTimer&8 ] '

# Changes the time zone for scheduling commands by day and time. / Cambia la zona horaria para programar comandos por día y hora.
time-zone
: 'America/Santiago' # Use a valid Java time zone identifier from java.time.ZoneId. / Usa un identificador de zona horaria válido de java.time.ZoneId.

# ======================
# Day in Spanish      Day in English     Example usage
# Lunes               MONDAY             MONDAY; 12:00:00
# Martes              TUESDAY            TUESDAY; 11:00:00
# Miércoles           WEDNESDAY          WEDNESDAY; 14:30:00
# Jueves              THURSDAY           THURSDAY; 16:45:00
# Viernes             FRIDAY             FRIDAY; 09:15:00
# Sábado              SATURDAY           SATURDAY; 20:00:00
# Domingo             SUNDAY             SUNDAY; 22:10:00
# Diario              DAILY              DAILY; 04:00:00
# ======================

Commands
:
  helloworld
: # PLACEHOLDERAPI: %sctimer_time_helloworld%
    command
: # Define the commands to execute. These will run sequentially. / Define los comandos a ejecutar. Estos se ejecutarán de forma secuencial.
    - 'say ¡Hello world!' # You can place any commands you like. / Puedes colocar los comandos que desees.
    - 'say ¡1!'
    - 'say ¡2!'
    - 'say ¡3!'
    time
: 60 # Time in seconds before executing the commands. 1 = 1 second. / Tiempo en segundos antes de ejecutar los comandos. 1 = 1 segundo.

  scheduletask
: # PLACEHOLDERAPI: %sctimer_time_scheduletask%
    command
:
   - 'say Monday -> 12:00 or Tuesday -> 11:00:00 ¡You can adjust the commands in Config.yml!.'
    schedule
:
   - 'MONDAY; 12:00:00' # Specify the "DAY; hour:minute:second" when the command should execute. / Especifica el "DÍA; hora:minuto:segundo" cuando el comando debe ejecutarse.
    - 'TUESDAY; 11:00:00' # Same as above, but for a different time. / Lo mismo que arriba, pero para otra hora.
    - 'DAILY; 04:00:00' # For daily execution, use "DAILY; hour:minute:second". / Para ejecución diaria, usa "DAILY; hora:minuto:segundo".

  probability
: # PLACEHOLDERAPI: %sctimer_time_probability%
    command
:
   - '50 %=say ¡Este comando tiene un 50% de probabilidad de ejecutarse!' # Command with a 50% probability to run. / Comando con un 50% de probabilidad de ejecutarse.
    - '30 %=say ¡Este comando tiene un 30% de probabilidad de ejecutarse!' # Command with a 30% probability to run. / Comando con un 30% de probabilidad de ejecutarse.
    - 'say ¡Este comando se ejecuta siempre que no haya probabilidad definida!' # Command runs equally if no probability is defined. / Comando ejecutado equitativamente si no hay probabilidad definida.
    random-command
: true # When true, commands are selected randomly. / Cuando es true, los comandos se seleccionan aleatoriamente.
    conditions-commands
:
   - 'players-online 5' # Requires at least 5 players online to execute commands. / Requiere al menos 5 jugadores en línea para ejecutar los comandos.
    - 'players-online-perms playerevento.permiso 3' # At least 3 players with the "playerevent.permission" permission are required. / Se requiere al menos 3 jugadores con el permiso "playerevento.permiso".
    time
: 300 # Executes every 300 seconds (5 minutes). / Se ejecuta cada 300 segundos (5 minutos).

# CONFIGURACIÓN DE FORMATOS DE TIEMPO / TIME FORMATS CONFIGURATION
time-formats
:
  # Formato predeterminado (HH:MM:SS) / Default format (HH:MM:SS)
  default
: "%02d:%02d:%02d"
 
  # Formato compacto (ej: 1h 5m 30s) / Compact format (ex: 1h 5m 30s)
  compact
: "%dh %dm %ds"
 
  # Formato digital (solo minutos y segundos) / Digital format (minutes and seconds only)
  digital
: "%02d:%02d"
 
  # Barra de progreso predeterminada (10 caracteres) / Default progress bar (10 characters)
  progressbar
: "||||||||||"
 
  # Configuración de barra personalizada / Custom bar configuration
  custom_bar
:
    # Carácter para la parte llena / Character for filled part
    filled
: "▉"
   
    # Carácter para la parte vacía / Character for empty part
    empty
: "░"
   
    # Longitud total de la barra / Total bar length
    length
: 10

# EJEMPLOS DE USO / USAGE EXAMPLES:
# %sctimer_time_comando_default% → 01:30:15
# %sctimer_time_comando_compact% → 1h 30m 15s
# %sctimer_time_comando_short% → 1:30:15 (o 90:15 si horas=0 / or 90:15 if hours=0)
# %sctimer_time_comando_digital% → 90:15
# %sctimer_time_comando_progressbar% → ||||||    (70% completado / 70% complete)
# %sctimer_time_comando_bar:▉:░:10% → ▉▉▉▉▉▉▉░░░ (70% completado / 70% complete)

# NOTAS / NOTES:
# - Los placeholders deben usar el formato: %sctimer_time_<nombre_comando>_<formato>%
# - Placeholders should use format: %sctimer_time_<commandname>_<format>%
# - Los formatos pueden personalizarse directamente en el placeholder
# - Formats can be customized directly in the placeholder
# - Ejemplo directo: %sctimer_time_comando_bar:#:-:20%
# - Direct example: %sctimer_time_command_bar:#:-:20%

# Customize plugin messages. / Personaliza los mensajes del plugin.
Lang
:
  Error_alert
: '¡&cFailed to send, you must write something to send or have permissions to do this.! / ¡&cNo se pudo enviar, debes escribir algo para enviar o tener permisos para hacerlo.!'
  Console_alert
: '&cThis command cannot be executed from the console. / &cEste comando no puede ejecutarse desde la consola.'

# Modify the permissions as you prefer. / Modifica los permisos según prefieras.
Permission
:
  scTimer_permission
: 'sctimer.admin'
 
----------, Today at 5:32 PM

¡Actualización Importante de SC Timer!
Hola a todos

Nos complace anunciar una nueva versión de SC Timer que soluciona dos problemas importantes reportados por la comunidad:

- ✅ Recarga de temporizadores sin reinicio arreglado
- ✅ Se arreglo un problema con placeholder
- ✅ Se cambio la variable placeholder por: %sctimer_time_NOMBRE%
- ✅ Placeholders dinámicos: Los placeholders de PlaceholderAPI ahora también se recargan al usar el comando /sctimer reload

Nuevo contenido:
- Ahora puedes colocar condiciones para que se ejecute un comando, como minimo de jugadores o jugadores con permiso minimos

Code (Text):
#
#                   $$$$$$$$\ $$\                                  
#                   \__$$  __|\__|                                
#   $$$$$$$\  $$$$$$$\ $$ |   $$\ $$$$$$\$$$$\   $$$$$$\   $$$$$$\
#  $$  _____|$$  _____|$$ |   $$ |$$  _$$  _$$\ $$  __$$\ $$  __$$\
#  \$$$$$$\  $$ /      $$ |   $$ |$$ / $$ / $$ |$$$$$$$$ |$$ |  \__|
#   \____$$\ $$ |      $$ |   $$ |$$ | $$ | $$ |$$   ____|$$ |    
#  $$$$$$$  |\$$$$$$$\ $$ |   $$ |$$ | $$ | $$ |\$$$$$$$\ $$ |    
#  \_______/  \_______|\__|   \__|\__| \__| \__| \_______|\__|    
#                                                                
#
# Plugin coded by me, Anyelo120. If you have any suggestions or wish to report bugs, you can join our Discord: https://discord.gg/Fx9RbChAG5
# Plugin desarrollado por Anyelo120. Si tienes sugerencias o deseas reportar errores, únete a nuestro Discord: https://discord.gg/Fx9RbChAG5

# Modifies the name of the plugin you point to. / Cambia el nombre del plugin que se muestra.
plugin_name: '&8[&bSc&eTimer&8] '

# Changes the time zone for scheduling commands by day and time. / Cambia la zona horaria para programar comandos por día y hora.
time-zone: 'America/Santiago' # Use a valid Java time zone identifier from java.time.ZoneId. / Usa un identificador de zona horaria válido de java.time.ZoneId.

# ======================
# Day in Spanish      Day in English     Example usage
# Lunes               MONDAY             MONDAY; 12:00:00
# Martes              TUESDAY            TUESDAY; 11:00:00
# Miércoles           WEDNESDAY          WEDNESDAY; 14:30:00
# Jueves              THURSDAY           THURSDAY; 16:45:00
# Viernes             FRIDAY             FRIDAY; 09:15:00
# Sábado              SATURDAY           SATURDAY; 20:00:00
# Domingo             SUNDAY             SUNDAY; 22:10:00
# Diario              DAILY              DAILY; 04:00:00
# ======================

Commands:
  helloworld: # PLACEHOLDERAPI: %sctimer_time_helloworld%
    command: # Define the commands to execute. These will run sequentially. / Define los comandos a ejecutar. Estos se ejecutarán de forma secuencial.
    - 'say ¡Hello world!' # You can place any commands you like. / Puedes colocar los comandos que desees.
    - 'say ¡1!'
    - 'say ¡2!'
    - 'say ¡3!'
    time: 60 # Time in seconds before executing the commands. 1 = 1 second. / Tiempo en segundos antes de ejecutar los comandos. 1 = 1 segundo.

  scheduletask: # PLACEHOLDERAPI: %sctimer_time_scheduletask%
    command:
    - 'say Monday -> 12:00 or Tuesday -> 11:00:00 ¡You can adjust the commands in Config.yml!.'
    schedule:
    - 'MONDAY; 12:00:00' # Specify the "DAY; hour:minute:second" when the command should execute. / Especifica el "DÍA; hora:minuto:segundo" cuando el comando debe ejecutarse.
    - 'TUESDAY; 11:00:00' # Same as above, but for a different time. / Lo mismo que arriba, pero para otra hora.
    - 'DAILY; 04:00:00' # For daily execution, use "DAILY; hour:minute:second". / Para ejecución diaria, usa "DAILY; hora:minuto:segundo".

  probability: # PLACEHOLDERAPI: %sctimer_time_probability%
    command:
    - '50%=say ¡Este comando tiene un 50% de probabilidad de ejecutarse!' # Command with a 50% probability to run. / Comando con un 50% de probabilidad de ejecutarse.
    - '30%=say ¡Este comando tiene un 30% de probabilidad de ejecutarse!' # Command with a 30% probability to run. / Comando con un 30% de probabilidad de ejecutarse.
    - 'say ¡Este comando se ejecuta siempre que no haya probabilidad definida!' # Command runs equally if no probability is defined. / Comando ejecutado equitativamente si no hay probabilidad definida.
    random-command: true # When true, commands are selected randomly. / Cuando es true, los comandos se seleccionan aleatoriamente.
    conditions-commands:
    - 'players-online 5' # Requires at least 5 players online to execute commands. / Requiere al menos 5 jugadores en línea para ejecutar los comandos.
    - 'players-online-perms playerevento.permiso 3' # At least 3 players with the "playerevent.permission" permission are required. / Se requiere al menos 3 jugadores con el permiso "playerevento.permiso".
    time: 300 # Executes every 300 seconds (5 minutes). / Se ejecuta cada 300 segundos (5 minutos).

# Customize plugin messages. / Personaliza los mensajes del plugin.
Lang:
  Error_alert: '¡&cFailed to send, you must write something to send or have permissions to do this.! / ¡&cNo se pudo enviar, debes escribir algo para enviar o tener permisos para hacerlo.!'
  Console_alert: '&cThis command cannot be executed from the console. / &cEste comando no puede ejecutarse desde la consola.'

# Modify the permissions as you prefer. / Modifica los permisos según prefieras.
Permission:
  scTimer_permission: 'sctimer.admin'
 
----------, May 29, 2025

Resumen de Cambios Implementados
Soporte para Tareas Diarias (DAILY)
  1. Configuración:
    • Añadido soporte para la palabra clave DAILY en la sección schedule del archivo de configuración (config.yml).
  2. Lógica en TimerManager:
    • Modificación de la lógica en TimerManager para manejar DAILY correctamente sin intentar convertirlo a un DayOfWeek.
    • Verificación de DayOfWeek para asegurar que solo los días válidos se conviertan a DayOfWeek.
Integración con PlaceholderAPI
  1. Manejo de Placeholders:
    • Añadido el manejo de placeholders para mostrar el tiempo restante hasta la próxima ejecución de las tareas.
    • Creación de la clase PlaceholderHandler para registrar y manejar los placeholders.
  2. Registro de Placeholders:
    • Registro del manejador de placeholders durante la inicialización del plugin en la clase Main.
Ejemplo de Configuración
Code (YAML):
# Plugin coded by me, Anyelo120 if you have any suggestions or report any
# bugs you can join our discord: https://discord.gg/Fx9RbChAG5

# Modifies the name of the plugin you point to.
plugin_name
: '&8 [&bSc&eTimer&8 ] '

# Cambia la zona horario en caso de que quieras programar dias y horas cuando se ejecute un comando.
time-zone
: 'America/Santiago'   # Utiliza un identificador de zona horaria válido de java.time.ZoneId

# ======================
# Día en español    Día en inglés    Ejemplo de uso
# Lunes                MONDAY            MONDAY; 12:00:00
# Martes            TUESDAY            TUESDAY; 11:00:00
# Miércoles            WEDNESDAY        WEDNESDAY; 14:30:00
# Jueves            THURSDAY        THURSDAY; 16:45:00
# Viernes            FRIDAY            FRIDAY; 09:15:00
# Sábado            SATURDAY        SATURDAY; 20:00:00
# Domingo            SUNDAY            SUNDAY; 22:10:00
# Diario            DAILY            DAILY; 04:00:00
# ======================

Commands
:
  command-1
: # PLACEHOLDERAPI: %sctimer_time_until_command-1%
    command
: # Create a network of commands to your liking, these are executed sequentially. / Crea un red de comandos a tu gusto, estos se ejecutan de forma secuencial.
    - 'say ¡Hello world!' # you can place the commands you want. / puedes colocar los comandos que deees.
    - 'say ¡1!'
    - 'say ¡2!'
    - 'say ¡3!'
    time
: 60 # sets the time it will take to execute the commands, this is in second 1 = 1 second. / establece el tiempo que tomara en ejecutar los comandos, esta en segundo 1 = 1 segundo.

  command-2
: # PLACEHOLDERAPI: %sctimer_time_until_command-2%
    command
:
   - 'say ¡You can adjust the commands in Config.yml!'
    time
: 120

  command-3
: # PLACEHOLDERAPI: %sctimer_time_until_command-3%
    command
:
   - 'say Remember to leave your suggestion and rating.'
    time
: 180
 
  command-4
: # PLACEHOLDERAPI: %sctimer_time_until_command-4%
    command
:
   - 'say Monday -> 12:00 or Tuesday -> 11:00:00 ¡You can adjust the commands in Config.yml!.'
    schedule
:
   - 'MONDAY; 12:00:00' # Coloca el "DIA; hora/minuto/segundo" de cuando se ejecutara el comando.
    - 'TUESDAY; 11:00:00' # Enter the "DAY; hour/minute/second" of when the command will be executed.
    - 'DAILY; 04:00:00' # Enter the "DAILY; hour/minute/second" for daily execution. / Coloca el "DAILY; hour/minute/second" para ejecución diaria.
   
# Modifies the plugin's messages.
Lang
:
  Error_alert
: '¡&cFailed to send, you must write something to send or have permissions to do this.!'
  Console_alert
: '&cThis command cannot be executed from the console'
 
# Modify the permissions to your liking.
Permission
:
  scTimer_permission
: 'sctimer.admin'
----------, Jun 10, 2024

Problemas relacionados cuando se reinicia el servidor, si un reinicio estaba dentro de un rango de 5 minutos de la hora de ejecución de un tarea esta se repetia.

"Related problems when the server is restarted, if a restart was within a range of 5 minutes of the execution time of a task it was repeated."
----------, Jan 12, 2024

Version FIX
----------, Jan 12, 2024

Hemos actualizado el código para incluir una función de verificación que se activa dentro de un intervalo de 5 minutos. Esta función comprueba si el comando se ha ejecutado correctamente antes de proceder con las siguientes operaciones.

"We have updated the code to include a verification feature that activates within a 5-minute window. This feature checks whether the command has been executed correctly before proceeding with subsequent operations."
----------, Jan 12, 2024

¡Hola a todos los usuarios de SC Timer!

Nos complace anunciar una serie de mejoras significativas en nuestro plugin SC Timer, destinadas a optimizar su rendimiento y facilitar su uso. Estos cambios se han implementado teniendo en cuenta sus valiosos comentarios y las tendencias actuales en desarrollo. Aquí hay un resumen de lo que es nuevo:

Optimización de Manejo de Tiempo:

Hemos mejorado la forma en que SC Timer gestiona los eventos programados. Ahora, en lugar de verificar cada segundo, el plugin calcula de manera inteligente el próximo tiempo de ejecución, reduciendo la carga en el servidor y mejorando la eficiencia general.
Actualización a Java Time API:

Decimos adiós a java.util.Calendar y damos la bienvenida a la moderna API java.time. Esto no solo mejora la precisión de la programación de tiempo sino que también hace que el código sea más limpio y fácil de mantener.
Compatibilidad con Zonas Horarias:

Ahora el plugin es totalmente compatible con diferentes zonas horarias, lo que permite una programación más precisa y personalizada de eventos según tu ubicación geográfica.
Configuración Más Intuitiva:

Hemos actualizado config.yml para que sea más intuitivo configurar los comandos y horarios, incluyendo el uso de formatos de tiempo más claros y una definición sencilla de la zona horaria.
Estas mejoras están pensadas para ofrecer una experiencia más fluida y eficiente, tanto para administradores de servidores como para jugadores. ¡Esperamos que disfruten de las nuevas características y que SC Timer siga siendo una herramienta valiosa para sus servidores de Minecraft!

Como siempre, agradecemos sus comentarios y sugerencias. ¡Estén atentos para más actualizaciones en el futuro!

Saludos cordiales,
RottenBone Studio✨

#################################

Hello all SC Timer users!

We are pleased to announce a series of significant improvements to our SC Timer plugin, aimed at optimizing its performance and ease of use. These changes have been implemented taking into account your valuable feedback and current developing trends. Here's a summary of what's new:

Time Management Optimization:

We have improved the way SC Timer handles scheduled events. Now, instead of checking every second, the plugin intelligently calculates the next execution time, reducing the load on the server and improving overall efficiency.
Update to Java Time API:

We say goodbye to java.util.Calendar and welcome the modern java.time API. This not only improves the accuracy of timing scheduling but also makes the code cleaner and easier to maintain.
Time Zone Compatibility:

The plugin now fully supports different time zones, allowing for more precise and personalized scheduling of events based on your geographic location.
More Intuitive Configuration:

We've updated config.yml to make it more intuitive to configure commands and times, including the use of clearer time formats and a simple definition of the time zone.
These improvements are designed to offer a smoother and more efficient experience for both server administrators and players. We hope you enjoy the new features and that SC Timer continues to be a valuable tool for your Minecraft servers!

As always, we welcome your comments and suggestions. Stay tuned for more updates in the future!

Kind regards,
RottenBone Studio✨
----------, Jan 9, 2024

Español [​IMG]:
Ahora puedes colocar dias, horas y minutos en el cual quieres que se ejecute el comando.

- puedes colocar una fecha en la cual quieres que se ejecute tu comando personalizado, con la zona horario del pais que desees.

English [​IMG]:
Now you can set days, hours and minutes in which you want the command to be executed.

- You can set a date on which you want your custom command to run, with the time zone of the country you want.

----------, Dec 29, 2022

Resource Information
Author:
----------
Total Downloads: 992
First Release: Dec 20, 2022
Last Update: Today at 5:32 PM
Category: ---------------
All-Time Rating:
6 ratings
Find more info at discord.gg...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings