From 71789fa39f168b5aa47bf7b3b138662ad0e8ea32 Mon Sep 17 00:00:00 2001 From: Paldiu Date: Sun, 21 Mar 2021 14:20:00 -0500 Subject: [PATCH] BLEEDING EDGE 1.3_11 - Changed CommandLoader to initialize the instance of reflections with ReflectionTools#reflect(Class); - Added JavaDocs for SimplexTask --- .../simplexcore/command/CommandLoader.java | 5 +- .../simplexcore/task/SimplexTask.java | 77 ++++++++++++++++++- .../simplexcore/utils/Utilities.java | 1 - 3 files changed, 80 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/github/simplexdev/simplexcore/command/CommandLoader.java b/src/main/java/io/github/simplexdev/simplexcore/command/CommandLoader.java index 08c4423..844e3a3 100644 --- a/src/main/java/io/github/simplexdev/simplexcore/command/CommandLoader.java +++ b/src/main/java/io/github/simplexdev/simplexcore/command/CommandLoader.java @@ -40,6 +40,7 @@ public final class CommandLoader { * If the class provided does not extend {@link SimplexCommand}, the loader will throw a new * {@link RuntimeException} and your commands will not be loaded. *

+ * * @param clazz The command class to load from * @return An instance of this where the classpath has been prepared for loading the commands. */ @@ -56,7 +57,7 @@ public final class CommandLoader { throw new RuntimeException("Your command must extend SimplexCommand.class for it to be used as the reference point for loading commands."); } - reflections = new Reflections(clazz); + reflections = ReflectionTools.reflect(clazz); return this; } @@ -92,6 +93,7 @@ public final class CommandLoader { * Gets the command class as a child of {@link CommandExecutor} from the {@link CommandInfo#name()} annotation. * This is for registering the CommandExecutor of the provided command with Bukkit. * This should only be used by the CommandLoader. + * * @param name The name of the command. * @return An instance of the command class as a CommandExecutor. */ @@ -120,6 +122,7 @@ public final class CommandLoader { * Gets the command class as a child of {@link TabCompleter} from the {@link CommandInfo#name()} annotation. * This is for registering the TabCompleter of the provided command with Bukkit. * This should only be used by the CommandLoader. + * * @param name The name of the command * @return The command as an instance of TabCompleter */ diff --git a/src/main/java/io/github/simplexdev/simplexcore/task/SimplexTask.java b/src/main/java/io/github/simplexdev/simplexcore/task/SimplexTask.java index 77f10f9..387401a 100644 --- a/src/main/java/io/github/simplexdev/simplexcore/task/SimplexTask.java +++ b/src/main/java/io/github/simplexdev/simplexcore/task/SimplexTask.java @@ -17,22 +17,50 @@ public abstract class SimplexTask implements Consumer { protected final long INTERVAL; protected Date lastRan = new Date(); protected Timer timer = new Timer(); + protected int taskId; + /** + * Creates a new instance of this class, with a custom defined DELAY and INTERVAL. + * + * @param initialDelay How long before the first time the task executes. + * @param interval How long before the task repeats itself. + */ protected SimplexTask(long initialDelay, long interval) { DELAY = initialDelay; INTERVAL = interval; } - + + /** + * Constructor which automatically registers the DELAY as 0 seconds (NO DELAY) + * and assigns a custom INTERVAL at which it executes. + * + * @param interval How often the task should repeat. Every 20L is 1 second. + * You should use {@link TickedTime} for determining the related server timings. + */ protected SimplexTask(long interval) { DELAY = 0L; INTERVAL = interval; } + /** + * Constructor which automatically registers the DELAY as 30 seconds + * and the INTERVAL at which it executes as 5 minutes. + */ protected SimplexTask() { DELAY = TickedTime.SECOND * 30; // 30 seconds until the task triggers for the first time. INTERVAL = TickedTime.MINUTE * 5; // Task will run at 5 minute intervals once the first trigger has been called. } + /** + * Registers the parent interface {@link Consumer} with the + * {@link org.bukkit.scheduler.BukkitScheduler}. + * + * @param task The instance of a subclass of this class. + * @param plugin Your plugin instance. + * @param repeating Whether or not the task should repeat. + * @param delayed Whether or not to delay the first time the task runs. + * @param A subclass of SimplexTask. + */ public void register(T task, SimplexAddon plugin, boolean repeating, boolean delayed) { if (delayed && repeating) { SimplexCorePlugin.getInstance().getScheduler().runTaskTimer(plugin, task, DELAY, INTERVAL); @@ -45,26 +73,69 @@ public abstract class SimplexTask implements Consumer { } } + + /** + * Registers the parent interface {@link Consumer} with the + * {@link org.bukkit.scheduler.BukkitScheduler}. + * This version of this method will not create a repeating task.. + * + * @param task The instance of a subclass of this class. + * @param plugin Your plugin instance. + * @param delayed Whether or not to delay the start of the task. + * @param A subclass of SimplexTask. + */ public void register(T task, SimplexAddon plugin, boolean delayed) { register(task, plugin, false, delayed); } + /** + * Registers the parent interface {@link Consumer} with the + * {@link org.bukkit.scheduler.BukkitScheduler}. + * This version of this method will not create a delayed or repeating task. + * + * @param task The instance of a subclass of this class. + * @param plugin Your plugin instance. + * @param A subclass of SimplexTask. + */ public void register(T task, SimplexAddon plugin) { register(task, plugin, false, false); } + /** + * Gets the last time the task ran. + * + * @return The last time as a {@link Date} this task last ran. + */ public Date getLastRan() { return lastRan; } + /** + * Sets the last time this task ran. This should be done in a subclass inside of the + * {@link Consumer#accept(Object)} method. + * + * @param lastRan An instance of {@link Date} returning the last time this task ran. + */ public void setLastRan(Date lastRan) { this.lastRan = lastRan; } + /** + * Gets the {@link Timer} instance associated with this class. + * This is for creating and running tasks separate from the {@link org.bukkit.scheduler.BukkitScheduler}. + * + * @return A {@link Timer} object. + */ protected Timer getTimer() { return timer; } + /** + * Creates a new {@link TimerTask} to run with the {@link Timer} + * + * @param supplier A task to complete. + * @return A new instance of TimerTask. + */ protected TimerTask newTimer(VoidSupplier supplier) { return new TimerTask() { @Override @@ -73,4 +144,8 @@ public abstract class SimplexTask implements Consumer { } }; } + + private void setTaskId(int taskId) { + this.taskId = taskId; + } } diff --git a/src/main/java/io/github/simplexdev/simplexcore/utils/Utilities.java b/src/main/java/io/github/simplexdev/simplexcore/utils/Utilities.java index 40fb52e..aed48e7 100644 --- a/src/main/java/io/github/simplexdev/simplexcore/utils/Utilities.java +++ b/src/main/java/io/github/simplexdev/simplexcore/utils/Utilities.java @@ -10,7 +10,6 @@ import java.util.Arrays; import java.util.List; import java.util.SplittableRandom; import java.util.function.Consumer; -import java.util.regex.Pattern; import java.util.stream.Stream; public final class Utilities {