BLEEDING EDGE 1.3_11

- Changed CommandLoader to initialize the instance of reflections with ReflectionTools#reflect(Class<?>);
 - Added JavaDocs for SimplexTask
This commit is contained in:
Paldiu 2021-03-21 14:20:00 -05:00
parent 77400bd81a
commit 71789fa39f
3 changed files with 80 additions and 3 deletions

View File

@ -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.
* </p>
*
* @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
*/

View File

@ -17,22 +17,50 @@ public abstract class SimplexTask implements Consumer<BukkitTask> {
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<BukkitTask>} 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 <T> A subclass of SimplexTask.
*/
public <T extends SimplexTask> 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<BukkitTask> {
}
}
/**
* Registers the parent interface {@link Consumer<BukkitTask>} 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 <T> A subclass of SimplexTask.
*/
public <T extends SimplexTask> void register(T task, SimplexAddon<?> plugin, boolean delayed) {
register(task, plugin, false, delayed);
}
/**
* Registers the parent interface {@link Consumer<BukkitTask>} 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 <T> A subclass of SimplexTask.
*/
public <T extends SimplexTask> 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<BukkitTask> {
}
};
}
private void setTaskId(int taskId) {
this.taskId = taskId;
}
}

View File

@ -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 {