onEnable & onDisable

This commit is contained in:
Yazawazi 2022-04-27 17:30:16 +08:00 committed by GitHub
parent 7789df6d4d
commit 2374c53ec3
3 changed files with 27 additions and 5 deletions

View File

@ -9,6 +9,14 @@ public class TaskHandler implements Job {
execute(null); execute(null);
} }
public void onEnable() {
}
public void onDisable() {
}
@Override @Override
public void execute(JobExecutionContext context) throws JobExecutionException { public void execute(JobExecutionContext context) throws JobExecutionException {
// TODO Auto-generated method stub // TODO Auto-generated method stub

View File

@ -30,7 +30,7 @@ public final class TaskMap {
public void resetNow() { public void resetNow() {
// Unregister all tasks // Unregister all tasks
for (TaskHandler task : this.tasks.values()) { for (TaskHandler task : this.tasks.values()) {
unregisterTask(task.getClass().getAnnotation(Task.class).taskName()); unregisterTask(task);
} }
// Run all afterReset tasks // Run all afterReset tasks
@ -51,17 +51,19 @@ public final class TaskMap {
} }
} }
public TaskMap unregisterTask(String taskName) { public TaskMap unregisterTask(TaskHandler task) {
this.tasks.remove(taskName); this.tasks.remove(task.getClass().getAnnotation(Task.class).taskName());
this.annotations.remove(taskName); this.annotations.remove(task.getClass().getAnnotation(Task.class).taskName());
try { try {
Scheduler scheduler = schedulerFactory.getScheduler(); Scheduler scheduler = schedulerFactory.getScheduler();
scheduler.deleteJob(new JobKey(taskName)); scheduler.deleteJob(new JobKey(task.getClass().getAnnotation(Task.class).taskName()));
} catch (SchedulerException e) { } catch (SchedulerException e) {
e.printStackTrace(); e.printStackTrace();
} }
task.onDisable();
return this; return this;
} }
@ -88,6 +90,7 @@ public final class TaskMap {
if (annotation.executeImmediately()) { if (annotation.executeImmediately()) {
task.execute(null); task.execute(null);
} }
task.onEnable();
} catch (SchedulerException e) { } catch (SchedulerException e) {
e.printStackTrace(); e.printStackTrace();
} }

View File

@ -11,6 +11,17 @@ import org.quartz.JobExecutionException;
@Task(taskName = "MoonCard", taskCronExpression = "0 0 0 * * ?", triggerName = "MoonCardTrigger") @Task(taskName = "MoonCard", taskCronExpression = "0 0 0 * * ?", triggerName = "MoonCardTrigger")
// taskCronExpression: Fixed time period: 0:0:0 every day (twenty-four hour system) // taskCronExpression: Fixed time period: 0:0:0 every day (twenty-four hour system)
public class MoonCard extends TaskHandler { public class MoonCard extends TaskHandler {
@Override
public void onEnable() {
Grasscutter.getLogger().info("[Task] MoonCard task enabled.");
}
@Override
public void onDisable() {
Grasscutter.getLogger().info("[Task] MoonCard task disabled.");
}
@Override @Override
public synchronized void execute(JobExecutionContext context) throws JobExecutionException { public synchronized void execute(JobExecutionContext context) throws JobExecutionException {
Grasscutter.getGameServer().getPlayers().forEach((uid, player) -> { Grasscutter.getGameServer().getPlayers().forEach((uid, player) -> {