Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
55fc6d762f | ||
|
|
b9c5eb2b4e | ||
|
|
393d0031c7 |
@@ -26,7 +26,7 @@ public class Prerequisite {
|
||||
*/
|
||||
public static final Prerequisite HAS_PAPER = new Prerequisite(
|
||||
() -> ClassUtils.exists("com.destroystokyo.paper.event.block.BeaconEffectEvent"),
|
||||
"Requires server to be running paper (or a fork)"
|
||||
"Requires server to be running paper"
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -69,7 +69,7 @@ public class Prerequisite {
|
||||
@Deprecated(since = "6.49.0", forRemoval = true)
|
||||
public static final Prerequisite HAS_BUNGEECORD = new Prerequisite(
|
||||
() -> ClassUtils.exists("net.md_5.bungee.api.event.ServerConnectedEvent"),
|
||||
"Requires server to be running BungeeCord (or a fork)"
|
||||
"Requires server to be running BungeeCord"
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -80,7 +80,15 @@ public class Prerequisite {
|
||||
@Deprecated(since = "6.49.0", forRemoval = true)
|
||||
public static final Prerequisite HAS_VELOCITY = new Prerequisite(
|
||||
() -> ClassUtils.exists("com.velocitypowered.api.event.player.ServerConnectedEvent"),
|
||||
"Requires server to be running Velocity (or a fork)"
|
||||
"Requires server to be running Velocity"
|
||||
);
|
||||
|
||||
/**
|
||||
* Requires the server to be running an implementation of Folia.
|
||||
*/
|
||||
public static final Prerequisite HAS_FOLIA = new Prerequisite(
|
||||
() -> ClassUtils.exists("io.papermc.paper.threadedregions.scheduler.RegionisedScheduler"),
|
||||
"Requires server to be running Folia!"
|
||||
);
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.willfp.eco.core.scheduling;
|
||||
|
||||
import com.willfp.eco.core.EcoPlugin;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -14,9 +16,13 @@ public interface Scheduler {
|
||||
* @param runnable The lambda to run.
|
||||
* @param ticksLater The amount of ticks to wait before execution.
|
||||
* @return The created {@link BukkitTask}.
|
||||
* @deprecated Does not work with Folia.
|
||||
*/
|
||||
BukkitTask runLater(@NotNull Runnable runnable,
|
||||
long ticksLater);
|
||||
@Deprecated(since = "6.53.0", forRemoval = true)
|
||||
default BukkitTask runLater(@NotNull Runnable runnable,
|
||||
long ticksLater) {
|
||||
return runLater(new Location(Bukkit.getWorlds().get(0), 0, 0, 0), (int) ticksLater, runnable);
|
||||
}
|
||||
|
||||
/**
|
||||
* Run the task after a specified tick delay.
|
||||
@@ -26,10 +32,12 @@ public interface Scheduler {
|
||||
* @param runnable The lambda to run.
|
||||
* @param ticksLater The amount of ticks to wait before execution.
|
||||
* @return The created {@link BukkitTask}.
|
||||
* @deprecated Does not work with Folia.
|
||||
*/
|
||||
@Deprecated(since = "6.53.0", forRemoval = true)
|
||||
default BukkitTask runLater(long ticksLater,
|
||||
@NotNull Runnable runnable) {
|
||||
return runLater(runnable, ticksLater);
|
||||
return runLater(new Location(Bukkit.getWorlds().get(0), 0, 0, 0), (int) ticksLater, runnable);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -39,10 +47,14 @@ public interface Scheduler {
|
||||
* @param delay The amount of ticks to wait before the first execution.
|
||||
* @param repeat The amount of ticks to wait between executions.
|
||||
* @return The created {@link BukkitTask}.
|
||||
* @deprecated Does not work with Folia.
|
||||
*/
|
||||
BukkitTask runTimer(@NotNull Runnable runnable,
|
||||
long delay,
|
||||
long repeat);
|
||||
@Deprecated(since = "6.53.0", forRemoval = true)
|
||||
default BukkitTask runTimer(@NotNull Runnable runnable,
|
||||
long delay,
|
||||
long repeat) {
|
||||
return runTimer(new Location(Bukkit.getWorlds().get(0), 0, 0, 0), (int) delay, (int) repeat, runnable);
|
||||
}
|
||||
|
||||
/**
|
||||
* Run the task repeatedly on a timer.
|
||||
@@ -53,11 +65,13 @@ public interface Scheduler {
|
||||
* @param delay The amount of ticks to wait before the first execution.
|
||||
* @param repeat The amount of ticks to wait between executions.
|
||||
* @return The created {@link BukkitTask}.
|
||||
* @deprecated Does not work with Folia.
|
||||
*/
|
||||
@Deprecated(since = "6.53.0", forRemoval = true)
|
||||
default BukkitTask runTimer(long delay,
|
||||
long repeat,
|
||||
@NotNull Runnable runnable) {
|
||||
return runTimer(runnable, delay, repeat);
|
||||
return runTimer(new Location(Bukkit.getWorlds().get(0), 0, 0, 0), (int) delay, (int) repeat, runnable);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -67,10 +81,14 @@ public interface Scheduler {
|
||||
* @param delay The amount of ticks to wait before the first execution.
|
||||
* @param repeat The amount of ticks to wait between executions.
|
||||
* @return The created {@link BukkitTask}.
|
||||
* @deprecated Does not work with Folia.
|
||||
*/
|
||||
BukkitTask runAsyncTimer(@NotNull Runnable runnable,
|
||||
long delay,
|
||||
long repeat);
|
||||
@Deprecated(since = "6.53.0", forRemoval = true)
|
||||
default BukkitTask runAsyncTimer(@NotNull Runnable runnable,
|
||||
long delay,
|
||||
long repeat) {
|
||||
return runTimerAsync((int) delay, (int) repeat, runnable);
|
||||
}
|
||||
|
||||
/**
|
||||
* Run the task repeatedly and asynchronously on a timer.
|
||||
@@ -81,11 +99,13 @@ public interface Scheduler {
|
||||
* @param delay The amount of ticks to wait before the first execution.
|
||||
* @param repeat The amount of ticks to wait between executions.
|
||||
* @return The created {@link BukkitTask}.
|
||||
* @deprecated Does not work with Folia.
|
||||
*/
|
||||
@Deprecated(since = "6.53.0", forRemoval = true)
|
||||
default BukkitTask runAsyncTimer(long delay,
|
||||
long repeat,
|
||||
@NotNull Runnable runnable) {
|
||||
return runAsyncTimer(runnable, delay, repeat);
|
||||
return runTimerAsync((int) delay, (int) repeat, runnable);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -93,28 +113,28 @@ public interface Scheduler {
|
||||
*
|
||||
* @param runnable The lambda to run.
|
||||
* @return The created {@link BukkitTask}.
|
||||
* @deprecated Does not work with Folia.
|
||||
*/
|
||||
BukkitTask run(@NotNull Runnable runnable);
|
||||
@Deprecated(since = "6.53.0", forRemoval = true)
|
||||
default BukkitTask run(@NotNull Runnable runnable) {
|
||||
return run(new Location(Bukkit.getWorlds().get(0), 0, 0, 0), runnable);
|
||||
}
|
||||
|
||||
/**
|
||||
* Run the task asynchronously.
|
||||
*
|
||||
* @param runnable The lambda to run.
|
||||
* @return The created {@link BukkitTask}.
|
||||
*/
|
||||
BukkitTask runAsync(@NotNull Runnable runnable);
|
||||
|
||||
/**
|
||||
* Schedule the task to be ran repeatedly on a timer.
|
||||
* Schedule the task to be run repeatedly on a timer.
|
||||
*
|
||||
* @param runnable The lambda to run.
|
||||
* @param delay The amount of ticks to wait before the first execution.
|
||||
* @param repeat The amount of ticks to wait between executions.
|
||||
* @return The id of the task.
|
||||
* @deprecated Not needed.
|
||||
*/
|
||||
int syncRepeating(@NotNull Runnable runnable,
|
||||
long delay,
|
||||
long repeat);
|
||||
@Deprecated(since = "6.53.0", forRemoval = true)
|
||||
default int syncRepeating(@NotNull Runnable runnable,
|
||||
long delay,
|
||||
long repeat) {
|
||||
return runTimer(runnable, delay, repeat).getTaskId();
|
||||
}
|
||||
|
||||
/**
|
||||
* Schedule the task to be ran repeatedly on a timer.
|
||||
@@ -125,15 +145,73 @@ public interface Scheduler {
|
||||
* @param delay The amount of ticks to wait before the first execution.
|
||||
* @param repeat The amount of ticks to wait between executions.
|
||||
* @return The id of the task.
|
||||
* @deprecated Not needed.
|
||||
*/
|
||||
@Deprecated(since = "6.53.0", forRemoval = true)
|
||||
default int syncRepeating(long delay,
|
||||
long repeat,
|
||||
@NotNull Runnable runnable) {
|
||||
return syncRepeating(runnable, delay, repeat);
|
||||
return runTimer(runnable, delay, repeat).getTaskId();
|
||||
}
|
||||
|
||||
/**
|
||||
* Cancel all running tasks from the linked {@link EcoPlugin}.
|
||||
*/
|
||||
void cancelAll();
|
||||
|
||||
/**
|
||||
* Run a task asynchronously.
|
||||
*
|
||||
* @param task The lambda to run.
|
||||
* @return The created {@link BukkitTask}.
|
||||
*/
|
||||
BukkitTask runAsync(@NotNull Runnable task);
|
||||
|
||||
/**
|
||||
* Run a task.
|
||||
*
|
||||
* @param location The location.
|
||||
* @param task The task.
|
||||
* @return The created {@link BukkitTask}.
|
||||
*/
|
||||
BukkitTask run(@NotNull Location location,
|
||||
@NotNull Runnable task);
|
||||
|
||||
/**
|
||||
* Run a task after a delay.
|
||||
*
|
||||
* @param location The location.
|
||||
* @param ticksLater The delay.
|
||||
* @param task The task.
|
||||
* @return The created {@link BukkitTask}.
|
||||
*/
|
||||
BukkitTask runLater(@NotNull Location location,
|
||||
int ticksLater,
|
||||
@NotNull Runnable task);
|
||||
|
||||
/**
|
||||
* Run a task on a timer.
|
||||
*
|
||||
* @param location The location.
|
||||
* @param delay The delay.
|
||||
* @param repeat The repeat delay.
|
||||
* @param task The task.
|
||||
* @return The created {@link BukkitTask}.
|
||||
*/
|
||||
BukkitTask runTimer(@NotNull Location location,
|
||||
int delay,
|
||||
int repeat,
|
||||
@NotNull Runnable task);
|
||||
|
||||
/**
|
||||
* Run a task asynchronously on a timer.
|
||||
*
|
||||
* @param delay The delay.
|
||||
* @param repeat The repeat delay.
|
||||
* @param task The task.
|
||||
* @return The created {@link BukkitTask}.
|
||||
*/
|
||||
BukkitTask runTimerAsync(int delay,
|
||||
int repeat,
|
||||
@NotNull Runnable task);
|
||||
}
|
||||
|
||||
@@ -14,4 +14,4 @@ class EcoRunnableFactory(private val plugin: EcoPlugin) : RunnableFactory {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
package com.willfp.eco.internal.scheduling
|
||||
|
||||
import com.willfp.eco.core.EcoPlugin
|
||||
import com.willfp.eco.core.scheduling.Scheduler
|
||||
import org.bukkit.Bukkit
|
||||
import org.bukkit.scheduler.BukkitTask
|
||||
|
||||
class EcoScheduler(private val plugin: EcoPlugin) : Scheduler {
|
||||
override fun runLater(
|
||||
runnable: Runnable,
|
||||
ticksLater: Long
|
||||
): BukkitTask {
|
||||
return Bukkit.getScheduler().runTaskLater(plugin, runnable, ticksLater)
|
||||
}
|
||||
|
||||
override fun runTimer(
|
||||
runnable: Runnable,
|
||||
delay: Long,
|
||||
repeat: Long
|
||||
): BukkitTask {
|
||||
return Bukkit.getScheduler().runTaskTimer(plugin, runnable, delay, repeat)
|
||||
}
|
||||
|
||||
override fun runAsyncTimer(
|
||||
runnable: Runnable,
|
||||
delay: Long,
|
||||
repeat: Long
|
||||
): BukkitTask {
|
||||
return Bukkit.getScheduler().runTaskTimerAsynchronously(plugin, runnable, delay, repeat)
|
||||
}
|
||||
|
||||
override fun run(runnable: Runnable): BukkitTask {
|
||||
return Bukkit.getScheduler().runTask(plugin, runnable)
|
||||
}
|
||||
|
||||
override fun runAsync(runnable: Runnable): BukkitTask {
|
||||
return Bukkit.getScheduler().runTaskAsynchronously(plugin, runnable)
|
||||
}
|
||||
|
||||
override fun syncRepeating(
|
||||
runnable: Runnable,
|
||||
delay: Long,
|
||||
repeat: Long
|
||||
): Int {
|
||||
return Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, runnable, delay, repeat)
|
||||
}
|
||||
|
||||
override fun cancelAll() {
|
||||
Bukkit.getScheduler().cancelTasks(plugin)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.willfp.eco.internal.scheduling
|
||||
|
||||
import com.willfp.eco.core.EcoPlugin
|
||||
import com.willfp.eco.core.scheduling.Scheduler
|
||||
import org.bukkit.Bukkit
|
||||
import org.bukkit.Location
|
||||
import org.bukkit.scheduler.BukkitTask
|
||||
|
||||
class EcoSchedulerSpigot(private val plugin: EcoPlugin) : Scheduler {
|
||||
override fun runLater(location: Location, ticksLater: Int, task: Runnable): BukkitTask {
|
||||
return Bukkit.getScheduler().runTaskLater(plugin, task, ticksLater.toLong())
|
||||
}
|
||||
|
||||
override fun runTimer(location: Location, delay: Int, repeat: Int, task: Runnable): BukkitTask {
|
||||
return Bukkit.getScheduler().runTaskTimer(plugin, task, delay.toLong(), repeat.toLong())
|
||||
}
|
||||
|
||||
override fun run(location: Location, task: Runnable): BukkitTask {
|
||||
return Bukkit.getScheduler().runTask(plugin, task)
|
||||
}
|
||||
|
||||
override fun runAsync(task: Runnable): BukkitTask {
|
||||
return Bukkit.getScheduler().runTaskAsynchronously(plugin, task)
|
||||
}
|
||||
|
||||
override fun runTimerAsync(delay: Int, repeat: Int, task: Runnable): BukkitTask {
|
||||
return Bukkit.getScheduler().runTaskTimerAsynchronously(plugin, task, delay.toLong(), repeat.toLong())
|
||||
}
|
||||
|
||||
override fun cancelAll() {
|
||||
Bukkit.getScheduler().cancelTasks(plugin)
|
||||
}
|
||||
}
|
||||
6
eco-core/core-folia/build.gradle.kts
Normal file
6
eco-core/core-folia/build.gradle.kts
Normal file
@@ -0,0 +1,6 @@
|
||||
group = "com.willfp"
|
||||
version = rootProject.version
|
||||
|
||||
dependencies {
|
||||
compileOnly("dev.folia:folia-api:1.19.4-R0.1-SNAPSHOT")
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
package com.willfp.eco.internal.scheduling
|
||||
|
||||
import com.willfp.eco.core.EcoPlugin
|
||||
import com.willfp.eco.core.scheduling.Scheduler
|
||||
import org.bukkit.Bukkit
|
||||
import org.bukkit.Location
|
||||
import org.bukkit.scheduler.BukkitTask
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
class EcoSchedulerFolia(private val plugin: EcoPlugin) : Scheduler {
|
||||
override fun runLater(runnable: Runnable, ticksLater: Long): BukkitTask {
|
||||
Bukkit.getGlobalRegionScheduler().runDelayed(plugin, { runnable.run() }, ticksLater)
|
||||
}
|
||||
|
||||
override fun runLater(location: Location, ticksLater: Int, task: Runnable): BukkitTask {
|
||||
Bukkit.getRegionScheduler().runDelayed(plugin, location, { task.run() }, ticksLater.toLong())
|
||||
}
|
||||
|
||||
override fun runTimer(delay: Long, repeat: Long, runnable: Runnable): BukkitTask {
|
||||
Bukkit.getGlobalRegionScheduler().runAtFixedRate(plugin, { runnable.run() }, delay, repeat)
|
||||
}
|
||||
|
||||
override fun runTimer(location: Location, delay: Int, repeat: Int, task: Runnable): BukkitTask {
|
||||
Bukkit.getRegionScheduler().runAtFixedRate(plugin, location, { task.run() }, delay.toLong(), repeat.toLong())
|
||||
}
|
||||
|
||||
override fun run(runnable: Runnable): BukkitTask {
|
||||
Bukkit.getGlobalRegionScheduler().run(plugin) { runnable.run() }
|
||||
}
|
||||
|
||||
override fun run(location: Location, task: Runnable): BukkitTask {
|
||||
Bukkit.getRegionScheduler().run(plugin, location) { task.run() }
|
||||
}
|
||||
|
||||
override fun runAsync(task: Runnable): BukkitTask {
|
||||
Bukkit.getAsyncScheduler().runNow(plugin) { task.run() }
|
||||
}
|
||||
|
||||
override fun runTimerAsync(delay: Int, repeat: Int, task: Runnable): BukkitTask {
|
||||
Bukkit.getAsyncScheduler()
|
||||
.runAtFixedRate(plugin, { task.run() }, delay * 50L, repeat * 50L, TimeUnit.MILLISECONDS)
|
||||
}
|
||||
|
||||
override fun cancelAll() {
|
||||
Bukkit.getScheduler().cancelTasks(plugin)
|
||||
Bukkit.getAsyncScheduler().cancelTasks(plugin)
|
||||
Bukkit.getGlobalRegionScheduler().cancelTasks(plugin)
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import com.willfp.eco.core.Eco
|
||||
import com.willfp.eco.core.EcoPlugin
|
||||
import com.willfp.eco.core.PluginLike
|
||||
import com.willfp.eco.core.PluginProps
|
||||
import com.willfp.eco.core.Prerequisite
|
||||
import com.willfp.eco.core.command.CommandBase
|
||||
import com.willfp.eco.core.command.PluginCommandBase
|
||||
import com.willfp.eco.core.config.ConfigType
|
||||
@@ -39,7 +40,8 @@ import com.willfp.eco.internal.integrations.PAPIExpansion
|
||||
import com.willfp.eco.internal.logging.EcoLogger
|
||||
import com.willfp.eco.internal.placeholder.PlaceholderParser
|
||||
import com.willfp.eco.internal.proxy.EcoProxyFactory
|
||||
import com.willfp.eco.internal.scheduling.EcoScheduler
|
||||
import com.willfp.eco.internal.scheduling.EcoSchedulerFolia
|
||||
import com.willfp.eco.internal.scheduling.EcoSchedulerSpigot
|
||||
import com.willfp.eco.internal.spigot.data.DataYml
|
||||
import com.willfp.eco.internal.spigot.data.KeyRegistry
|
||||
import com.willfp.eco.internal.spigot.data.ProfileHandler
|
||||
@@ -101,7 +103,7 @@ class EcoImpl : EcoSpigotPlugin(), Eco {
|
||||
)
|
||||
|
||||
override fun createScheduler(plugin: EcoPlugin) =
|
||||
EcoScheduler(plugin)
|
||||
if (Prerequisite.HAS_FOLIA.isMet) EcoSchedulerFolia(plugin) else EcoSchedulerSpigot(plugin)
|
||||
|
||||
override fun createEventManager(plugin: EcoPlugin) =
|
||||
EcoEventManager(plugin)
|
||||
|
||||
@@ -20,4 +20,5 @@ include(":eco-core:core-nms:v1_19_R2")
|
||||
include(":eco-core:core-nms:v1_19_R3")
|
||||
include(":eco-core:core-proxy")
|
||||
include(":eco-core:core-plugin")
|
||||
include(":eco-core:core-backend")
|
||||
include(":eco-core:core-backend")
|
||||
include(":eco-core:core-folia")
|
||||
|
||||
Reference in New Issue
Block a user