mirror of
https://github.com/BG-Software-LLC/WildLoaders.git
synced 2025-01-17 20:41:58 +01:00
Fixed errors when disabling the plugin due to running new tasks (#100)
This commit is contained in:
parent
faa1fde848
commit
3e68804785
@ -18,6 +18,7 @@ import com.bgsoftware.wildloaders.listeners.BlocksListener;
|
|||||||
import com.bgsoftware.wildloaders.listeners.ChunksListener;
|
import com.bgsoftware.wildloaders.listeners.ChunksListener;
|
||||||
import com.bgsoftware.wildloaders.listeners.PlayersListener;
|
import com.bgsoftware.wildloaders.listeners.PlayersListener;
|
||||||
import com.bgsoftware.wildloaders.nms.NMSAdapter;
|
import com.bgsoftware.wildloaders.nms.NMSAdapter;
|
||||||
|
import com.bgsoftware.wildloaders.scheduler.Scheduler;
|
||||||
import com.bgsoftware.wildloaders.utils.database.Database;
|
import com.bgsoftware.wildloaders.utils.database.Database;
|
||||||
import org.bstats.bukkit.Metrics;
|
import org.bstats.bukkit.Metrics;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
@ -44,6 +45,7 @@ public final class WildLoadersPlugin extends JavaPlugin implements WildLoaders {
|
|||||||
@Override
|
@Override
|
||||||
public void onLoad() {
|
public void onLoad() {
|
||||||
plugin = this;
|
plugin = this;
|
||||||
|
Scheduler.initialize();
|
||||||
|
|
||||||
DependenciesManager.inject(this);
|
DependenciesManager.inject(this);
|
||||||
|
|
||||||
@ -93,11 +95,13 @@ public final class WildLoadersPlugin extends JavaPlugin implements WildLoaders {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
if (shouldEnable) {
|
if (!shouldEnable)
|
||||||
Database.stop();
|
return;
|
||||||
loadersHandler.removeChunkLoaders();
|
|
||||||
npcHandler.killAllNPCs();
|
Scheduler.disable();
|
||||||
}
|
Database.stop();
|
||||||
|
loadersHandler.removeChunkLoaders();
|
||||||
|
npcHandler.killAllNPCs();
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean loadNMSAdapter() {
|
private boolean loadNMSAdapter() {
|
||||||
|
@ -6,6 +6,9 @@ import org.bukkit.World;
|
|||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
|
|
||||||
public class Scheduler {
|
public class Scheduler {
|
||||||
|
|
||||||
|
private static final ScheduledTask NULL_TASK = () -> {};
|
||||||
|
|
||||||
private static final ISchedulerImplementation IMP = initializeSchedulerImplementation();
|
private static final ISchedulerImplementation IMP = initializeSchedulerImplementation();
|
||||||
|
|
||||||
private static ISchedulerImplementation initializeSchedulerImplementation() {
|
private static ISchedulerImplementation initializeSchedulerImplementation() {
|
||||||
@ -24,6 +27,8 @@ public class Scheduler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean isEnabled = true;
|
||||||
|
|
||||||
private Scheduler() {
|
private Scheduler() {
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -32,23 +37,43 @@ public class Scheduler {
|
|||||||
// Do nothing, load static initializer
|
// Do nothing, load static initializer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void disable() {
|
||||||
|
isEnabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean isRegionScheduler() {
|
public static boolean isRegionScheduler() {
|
||||||
return IMP.isRegionScheduler();
|
return IMP.isRegionScheduler();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ScheduledTask runTask(World world, int chunkX, int chunkZ, Runnable task, long delay) {
|
public static ScheduledTask runTask(World world, int chunkX, int chunkZ, Runnable task, long delay) {
|
||||||
|
if (!isEnabled) {
|
||||||
|
return executeNow(task);
|
||||||
|
}
|
||||||
|
|
||||||
return IMP.scheduleTask(world, chunkX, chunkZ, task, delay);
|
return IMP.scheduleTask(world, chunkX, chunkZ, task, delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ScheduledTask runTask(Entity entity, Runnable task, long delay) {
|
public static ScheduledTask runTask(Entity entity, Runnable task, long delay) {
|
||||||
|
if (!isEnabled) {
|
||||||
|
return executeNow(task);
|
||||||
|
}
|
||||||
|
|
||||||
return IMP.scheduleTask(entity, task, delay);
|
return IMP.scheduleTask(entity, task, delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ScheduledTask runTask(Runnable task, long delay) {
|
public static ScheduledTask runTask(Runnable task, long delay) {
|
||||||
|
if (!isEnabled) {
|
||||||
|
return executeNow(task);
|
||||||
|
}
|
||||||
|
|
||||||
return IMP.scheduleTask(task, delay);
|
return IMP.scheduleTask(task, delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ScheduledTask runTaskAsync(Runnable task, long delay) {
|
public static ScheduledTask runTaskAsync(Runnable task, long delay) {
|
||||||
|
if (!isEnabled) {
|
||||||
|
return executeNow(task);
|
||||||
|
}
|
||||||
|
|
||||||
return IMP.scheduleAsyncTask(task, delay);
|
return IMP.scheduleAsyncTask(task, delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,4 +109,9 @@ public class Scheduler {
|
|||||||
return runTaskAsync(task, 0L);
|
return runTaskAsync(task, 0L);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static ScheduledTask executeNow(Runnable task) {
|
||||||
|
task.run();
|
||||||
|
return NULL_TASK;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user