mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-06-25 02:04:44 +02:00
Create BukkitPlatformScheduler
This commit is contained in:
@ -9,8 +9,11 @@ import com.gmail.nossr50.listeners.WorldListener;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.mcmmo.api.platform.PlatformProvider;
|
||||
import com.gmail.nossr50.mcmmo.api.platform.ServerSoftwareType;
|
||||
import com.gmail.nossr50.mcmmo.api.platform.scheduler.PlatformScheduler;
|
||||
import com.gmail.nossr50.mcmmo.api.platform.util.MetadataStore;
|
||||
import com.gmail.nossr50.mcmmo.bukkit.platform.scheduler.BukkitPlatformScheduler;
|
||||
|
||||
import org.bstats.bukkit.Metrics;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
@ -23,6 +26,7 @@ import java.util.logging.Logger;
|
||||
public class BukkitBoostrap extends JavaPlugin implements PlatformProvider {
|
||||
|
||||
private mcMMO core = new mcMMO(this);
|
||||
private final BukkitPlatformScheduler scheduler = new BukkitPlatformScheduler(this);
|
||||
|
||||
@Override
|
||||
public @NotNull Logger getLogger() {
|
||||
@ -89,6 +93,30 @@ public class BukkitBoostrap extends JavaPlugin implements PlatformProvider {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlatformScheduler getScheduler() {
|
||||
return scheduler;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void checkMetrics() {
|
||||
//If anonymous statistics are enabled then use them
|
||||
if (core.getConfigManager().getConfigMetrics().isAllowAnonymousUsageStatistics()) {
|
||||
Metrics metrics;
|
||||
metrics = new Metrics(this);
|
||||
metrics.addCustomChart(new Metrics.SimplePie("version", this::getVersion));
|
||||
|
||||
int levelScaleModifier = core.getConfigManager().getConfigLeveling().getConfigSectionLevelingGeneral().getConfigSectionLevelScaling().getCosmeticLevelScaleModifier();
|
||||
|
||||
if (levelScaleModifier == 10)
|
||||
metrics.addCustomChart(new Metrics.SimplePie("scaling", () -> "Standard"));
|
||||
else if (levelScaleModifier == 1)
|
||||
metrics.addCustomChart(new Metrics.SimplePie("scaling", () -> "Retro"));
|
||||
else
|
||||
metrics.addCustomChart(new Metrics.SimplePie("scaling", () -> "Custom"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void registerEvents() {
|
||||
PluginManager pluginManager = getServer().getPluginManager();
|
||||
|
@ -0,0 +1,60 @@
|
||||
package com.gmail.nossr50.mcmmo.bukkit.platform.scheduler;
|
||||
|
||||
import com.gmail.nossr50.mcmmo.api.platform.scheduler.PlatformScheduler;
|
||||
import com.gmail.nossr50.mcmmo.api.platform.scheduler.Task;
|
||||
import com.gmail.nossr50.mcmmo.bukkit.BukkitBoostrap;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.scheduler.BukkitScheduler;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class BukkitPlatformScheduler implements PlatformScheduler {
|
||||
|
||||
private final BukkitBoostrap bukkitBoostrap;
|
||||
|
||||
public BukkitPlatformScheduler(BukkitBoostrap bukkitBoostrap) {
|
||||
|
||||
this.bukkitBoostrap = bukkitBoostrap;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TaskBuilder getTaskBuilder() {
|
||||
return new TaskBuilder();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Task scheduleTask(TaskBuilder taskBuilder) {
|
||||
final Integer repeatTime = taskBuilder.getRepeatTime();
|
||||
final Integer delay = taskBuilder.getDelay();
|
||||
final boolean isAsync = taskBuilder.isAsync();
|
||||
final Consumer<Task> taskConsumer = taskBuilder.getTask();
|
||||
|
||||
final MMOBukkitTask task = new MMOBukkitTask(taskConsumer);
|
||||
final BukkitScheduler bukkitScheduler = Bukkit.getScheduler();
|
||||
|
||||
final BukkitTask bukkitTask;
|
||||
if (!isAsync) {
|
||||
if (delay == null && repeatTime == null) {
|
||||
bukkitTask = bukkitScheduler.runTask(bukkitBoostrap, task);
|
||||
} else if (delay != null && repeatTime == null) {
|
||||
bukkitTask = bukkitScheduler.runTaskLater(bukkitBoostrap, task, delay);
|
||||
} else {
|
||||
bukkitTask = bukkitScheduler.runTaskTimer(bukkitBoostrap, task, delay != null ? delay : 0, repeatTime);
|
||||
}
|
||||
} else {
|
||||
if (delay == null && repeatTime == null) {
|
||||
bukkitTask = bukkitScheduler.runTaskAsynchronously(bukkitBoostrap, task);
|
||||
} else if (delay != null && repeatTime == null) {
|
||||
bukkitTask = bukkitScheduler.runTaskLaterAsynchronously(bukkitBoostrap, task, delay);
|
||||
} else {
|
||||
bukkitTask = bukkitScheduler.runTaskTimerAsynchronously(bukkitBoostrap, task, delay != null ? delay : 0, repeatTime);
|
||||
}
|
||||
}
|
||||
|
||||
task.setBukkitTask(bukkitTask);
|
||||
|
||||
return task;
|
||||
}
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
package com.gmail.nossr50.mcmmo.bukkit.platform.scheduler;
|
||||
|
||||
import com.gmail.nossr50.mcmmo.api.platform.scheduler.Task;
|
||||
import com.google.common.base.Preconditions;
|
||||
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class MMOBukkitTask implements Task, Runnable {
|
||||
Consumer<Task> task;
|
||||
private BukkitTask bukkitTask;
|
||||
|
||||
public MMOBukkitTask(Consumer<Task> task) {
|
||||
this.task = task;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel() {
|
||||
Preconditions.checkState(bukkitTask != null, "Cannot cancel an an unscheduled task!");
|
||||
bukkitTask.cancel();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
task.accept(this);
|
||||
}
|
||||
|
||||
public void setBukkitTask(BukkitTask bukkitTask) {
|
||||
this.bukkitTask = bukkitTask;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user