From b65df8f3905ce9f668de8363ebca849a92d4f7e4 Mon Sep 17 00:00:00 2001 From: mja00 Date: Sun, 28 May 2023 21:03:33 -0400 Subject: [PATCH] feat: add folia support --- build.gradle.kts | 2 +- .../commands/TransmuteCommand.java | 3 +- .../chew/transmuteit/utils/Compatibility.java | 33 +++++++++++++++++++ src/main/resources/plugin.yml | 1 + 4 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 src/main/java/pw/chew/transmuteit/utils/Compatibility.java diff --git a/build.gradle.kts b/build.gradle.kts index dc28ea7..4878259 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -49,7 +49,7 @@ dependencies { compileOnly("com.github.MilkBowl", "VaultAPI", "1.7") compileOnly("me.clip", "placeholderapi", "2.10.8") compileOnly("org.jetbrains", "annotations", "22.0.0") - compileOnly("io.papermc.paper", "paper-api", "1.18.1-R0.1-SNAPSHOT") + compileOnly("dev.folia", "folia-api", "1.19.4-R0.1-SNAPSHOT") } // Set the default value to the current time as an ISO-8601 string diff --git a/src/main/java/pw/chew/transmuteit/commands/TransmuteCommand.java b/src/main/java/pw/chew/transmuteit/commands/TransmuteCommand.java index 1d391d0..70c18cf 100644 --- a/src/main/java/pw/chew/transmuteit/commands/TransmuteCommand.java +++ b/src/main/java/pw/chew/transmuteit/commands/TransmuteCommand.java @@ -21,6 +21,7 @@ import pw.chew.transmuteit.guis.TransmuteTakeGUI; import pw.chew.transmuteit.objects.TransmutableItem; import pw.chew.transmuteit.utils.ChatHelper; +import pw.chew.transmuteit.utils.Compatibility; import pw.chew.transmuteit.utils.DataManager; import java.io.IOException; @@ -376,7 +377,7 @@ public boolean handleVersion(CommandSender sender) { sender.sendMessage("Checking for new updates..."); int finalCbuild = cbuild; - Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { + Compatibility.runTaskAsync(plugin, () -> { String[] response = getLatestVersion(); int lbuild = Integer.parseInt(response[0]); String lversion = response[1]; diff --git a/src/main/java/pw/chew/transmuteit/utils/Compatibility.java b/src/main/java/pw/chew/transmuteit/utils/Compatibility.java new file mode 100644 index 0000000..a36a178 --- /dev/null +++ b/src/main/java/pw/chew/transmuteit/utils/Compatibility.java @@ -0,0 +1,33 @@ +package pw.chew.transmuteit.utils; + +import org.bukkit.Bukkit; +import org.bukkit.plugin.Plugin; + +public class Compatibility { + + public static Boolean IS_FOLIA = null; + + private static boolean methodExists(Class clazz, String methodName, Class... parameterTypes) { + try { + clazz.getDeclaredMethod(methodName, parameterTypes); + return true; + } catch (Throwable dontcare) { + return false; + } + } + + public static Boolean isFolia() { + if (IS_FOLIA == null) { + IS_FOLIA = methodExists(Bukkit.class, "getGlobalRegionScheduler"); + } + return IS_FOLIA; + } + + public static void runTaskAsync(Plugin plugin, Runnable runnable) { + if (isFolia()) { + Bukkit.getAsyncScheduler().runNow(plugin, (task) -> runnable.run()); + return; + } + Bukkit.getScheduler().runTaskAsynchronously(plugin, runnable); + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 1dba7df..7cc8e41 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -4,6 +4,7 @@ version: 0.5.0-b${build} api-version: "1.15" description: It's just ProjectE Transmutation for Spigot author: Chewsterchew +folia-supported: true website: https://github.com/ChewMC/TransmuteIt softdepend: [Vault, PlaceholderAPI] commands: