Added folia support
This commit is contained in:
@@ -27,7 +27,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"
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -84,7 +84,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"
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -95,7 +95,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)
|
||||
}
|
||||
}
|
||||
7
eco-core/core-folia/build.gradle
Normal file
7
eco-core/core-folia/build.gradle
Normal file
@@ -0,0 +1,7 @@
|
||||
group 'com.willfp'
|
||||
version rootProject.version
|
||||
|
||||
dependencies {
|
||||
//compileOnly 'dev.folia:folia-api:1.19.3-R0.1-SNAPSHOT'
|
||||
compileOnly 'org.spigotmc:spigot-api:1.17.1-R0.1-SNAPSHOT'
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.willfp.eco.internal.scheduling
|
||||
|
||||
import com.willfp.eco.core.EcoPlugin
|
||||
import com.willfp.eco.core.scheduling.Scheduler
|
||||
|
||||
class EcoSchedulerFolia(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)
|
||||
}
|
||||
}
|
||||
@@ -4,10 +4,11 @@ version rootProject.version
|
||||
dependencies {
|
||||
compileOnly project(":eco-core:core-proxy")
|
||||
compileOnly project(":eco-core:core-backend")
|
||||
compileOnly project(":eco-core:core-folia")
|
||||
|
||||
// Libraries
|
||||
implementation 'com.github.WillFP:Crunch:1.1.3'
|
||||
implementation 'mysql:mysql-connector-java:8.0.25'
|
||||
implementation 'mysql:mysql-connector-java:8.0.28'
|
||||
implementation 'org.jetbrains.exposed:exposed-core:0.37.3'
|
||||
implementation 'org.jetbrains.exposed:exposed-dao:0.37.3'
|
||||
implementation 'org.jetbrains.exposed:exposed-jdbc:0.37.3'
|
||||
|
||||
@@ -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
|
||||
@@ -36,7 +37,8 @@ import com.willfp.eco.internal.gui.slot.EcoSlotBuilder
|
||||
import com.willfp.eco.internal.integrations.PAPIExpansion
|
||||
import com.willfp.eco.internal.logging.EcoLogger
|
||||
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
|
||||
@@ -87,7 +89,7 @@ class EcoImpl : EcoSpigotPlugin(), Eco {
|
||||
SafeInternalNamespacedKeyFactory() else FastInternalNamespacedKeyFactory()
|
||||
|
||||
override fun createScheduler(plugin: EcoPlugin) =
|
||||
EcoScheduler(plugin)
|
||||
if (Prerequisite.HAS_FOLIA.isMet) EcoSchedulerFolia(plugin) else EcoSchedulerSpigot(plugin)
|
||||
|
||||
override fun createEventManager(plugin: EcoPlugin) =
|
||||
EcoEventManager(plugin)
|
||||
|
||||
@@ -19,4 +19,5 @@ include(":eco-core:core-nms:v1_19_R1")
|
||||
include(":eco-core:core-nms:v1_19_R2")
|
||||
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