From 95786e32d2d5a877220705648c8139486549c781 Mon Sep 17 00:00:00 2001 From: darbyjack Date: Fri, 24 Mar 2023 13:26:56 -0500 Subject: [PATCH] Started working on Folia support --- build.gradle.kts | 6 +- .../placeholderapi/PlaceholderAPIPlugin.java | 2 +- .../manager/CloudExpansionManager.java | 55 ++++++++----------- .../manager/LocalExpansionManager.java | 13 +++-- .../updatechecker/UpdateChecker.java | 29 ++++++---- .../me/clip/placeholderapi/util/Futures.java | 6 +- src/main/resources/plugin.yml | 2 + 7 files changed, 57 insertions(+), 56 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index ba02025..2a68d6e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -26,7 +26,7 @@ dependencies { implementation("org.bstats:bstats-bukkit:3.0.1") implementation("net.kyori:adventure-platform-bukkit:4.3.0") - compileOnly("org.spigotmc:spigot-api:1.19-R0.1-SNAPSHOT") + compileOnlyApi("dev.folia:folia-api:1.19.4-R0.1-SNAPSHOT") // this is temp compileOnlyApi("org.jetbrains:annotations:23.0.0") testImplementation("org.openjdk.jmh:jmh-core:1.32") @@ -38,8 +38,8 @@ dependencies { java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 // this is temp + targetCompatibility = JavaVersion.VERSION_17 // this is temp withJavadocJar() withSourcesJar() diff --git a/src/main/java/me/clip/placeholderapi/PlaceholderAPIPlugin.java b/src/main/java/me/clip/placeholderapi/PlaceholderAPIPlugin.java index 1fc84bf..20840fe 100644 --- a/src/main/java/me/clip/placeholderapi/PlaceholderAPIPlugin.java +++ b/src/main/java/me/clip/placeholderapi/PlaceholderAPIPlugin.java @@ -162,7 +162,7 @@ public final class PlaceholderAPIPlugin extends JavaPlugin { HandlerList.unregisterAll(this); - Bukkit.getScheduler().cancelTasks(this); + Bukkit.getAsyncScheduler().cancelTasks(this); // this is hopefully temp adventure.close(); adventure = null; diff --git a/src/main/java/me/clip/placeholderapi/expansion/manager/CloudExpansionManager.java b/src/main/java/me/clip/placeholderapi/expansion/manager/CloudExpansionManager.java index 11d7cb3..3a45af1 100644 --- a/src/main/java/me/clip/placeholderapi/expansion/manager/CloudExpansionManager.java +++ b/src/main/java/me/clip/placeholderapi/expansion/manager/CloudExpansionManager.java @@ -203,40 +203,33 @@ public final class CloudExpansionManager { plugin.getLogger().log(Level.WARNING, "Failed to download expansion information", e); } - // loop thru what's left on the main thread - plugin - .getServer() - .getScheduler() - .runTask( - plugin, - () -> { - try { - for (Map.Entry entry : values.entrySet()) { - String name = entry.getKey(); - CloudExpansion expansion = entry.getValue(); + //todo: Figure out why this was being scheduled back on the main thread + try { + for (Map.Entry entry : values.entrySet()) { + String name = entry.getKey(); + CloudExpansion expansion = entry.getValue(); - expansion.setName(name); + expansion.setName(name); - Optional localOpt = - plugin.getLocalExpansionManager().findExpansionByName(name); - if (localOpt.isPresent()) { - PlaceholderExpansion local = localOpt.get(); - if (local.isRegistered()) { - expansion.setHasExpansion(true); - expansion.setShouldUpdate( - !local.getVersion().equalsIgnoreCase(expansion.getLatestVersion())); - } - } + Optional localOpt = + plugin.getLocalExpansionManager().findExpansionByName(name); + if (localOpt.isPresent()) { + PlaceholderExpansion local = localOpt.get(); + if (local.isRegistered()) { + expansion.setHasExpansion(true); + expansion.setShouldUpdate( + !local.getVersion().equalsIgnoreCase(expansion.getLatestVersion())); + } + } - cache.put(toIndexName(expansion), expansion); - } - } catch (Throwable e) { - // ugly swallowing of every throwable, but we have to be defensive - plugin - .getLogger() - .log(Level.WARNING, "Failed to download expansion information", e); - } - }); + cache.put(toIndexName(expansion), expansion); + } + } catch (Throwable e) { + // ugly swallowing of every throwable, but we have to be defensive + plugin + .getLogger() + .log(Level.WARNING, "Failed to download expansion information", e); + } }); } diff --git a/src/main/java/me/clip/placeholderapi/expansion/manager/LocalExpansionManager.java b/src/main/java/me/clip/placeholderapi/expansion/manager/LocalExpansionManager.java index 80c785a..9516bd0 100644 --- a/src/main/java/me/clip/placeholderapi/expansion/manager/LocalExpansionManager.java +++ b/src/main/java/me/clip/placeholderapi/expansion/manager/LocalExpansionManager.java @@ -269,12 +269,13 @@ public final class LocalExpansionManager implements Listener { return false; } - final ExpansionRegisterEvent event = new ExpansionRegisterEvent(expansion); - Bukkit.getPluginManager().callEvent(event); - - if (event.isCancelled()) { - return false; - } +// this is temp +// final ExpansionRegisterEvent event = new ExpansionRegisterEvent(expansion); +// Bukkit.getPluginManager().callEvent(event); +// +// if (event.isCancelled()) { +// return false; +// } expansionsLock.lock(); try { diff --git a/src/main/java/me/clip/placeholderapi/updatechecker/UpdateChecker.java b/src/main/java/me/clip/placeholderapi/updatechecker/UpdateChecker.java index 8001d61..f35d862 100644 --- a/src/main/java/me/clip/placeholderapi/updatechecker/UpdateChecker.java +++ b/src/main/java/me/clip/placeholderapi/updatechecker/UpdateChecker.java @@ -24,6 +24,7 @@ import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.util.Arrays; +import java.util.concurrent.CompletableFuture; import javax.net.ssl.HttpsURLConnection; import me.clip.placeholderapi.PlaceholderAPIPlugin; import me.clip.placeholderapi.util.Msg; @@ -54,35 +55,43 @@ public class UpdateChecker implements Listener { return spigotVersion; } + //todo: Figure out a better approach for this? public void fetch() { - Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { + CompletableFuture update = new CompletableFuture<>(); + CompletableFuture.supplyAsync(() -> { try { HttpsURLConnection con = (HttpsURLConnection) new URL( - "https://api.spigotmc.org/legacy/update.php?resource=" + RESOURCE_ID).openConnection(); + "https://api.spigotmc.org/legacy/update.php?resource=" + RESOURCE_ID).openConnection(); con.setRequestMethod("GET"); spigotVersion = new BufferedReader(new InputStreamReader(con.getInputStream())).readLine(); } catch (Exception ex) { plugin.getLogger().info("Failed to check for updates on spigot."); - return; + return false; } if (spigotVersion == null || spigotVersion.isEmpty()) { - return; + plugin.getLogger().info("Failed to check for updates on spigot."); + return false; } updateAvailable = spigotIsNewer(); if (!updateAvailable) { - return; + plugin.getLogger().info("PlaceholderAPI is up to date."); + return false; } - Bukkit.getScheduler().runTask(plugin, () -> { + return true; + }); + + update.whenComplete((result, error) -> { + if (result) { plugin.getLogger() - .info("An update for PlaceholderAPI (v" + getSpigotVersion() + ") is available at:"); + .info("An update for PlaceholderAPI (v" + getSpigotVersion() + ") is available at:"); plugin.getLogger() - .info("https://www.spigotmc.org/resources/placeholderapi." + RESOURCE_ID + "/"); - Bukkit.getPluginManager().registerEvents(this, plugin); - }); + .info("https://www.spigotmc.org/resources/placeholderapi." + RESOURCE_ID + "/"); + Bukkit.getPluginManager().registerEvents(UpdateChecker.this, plugin); + } }); } diff --git a/src/main/java/me/clip/placeholderapi/util/Futures.java b/src/main/java/me/clip/placeholderapi/util/Futures.java index c29892f..8ea6af4 100644 --- a/src/main/java/me/clip/placeholderapi/util/Futures.java +++ b/src/main/java/me/clip/placeholderapi/util/Futures.java @@ -40,11 +40,7 @@ public final class Futures { @NotNull final CompletableFuture future, @NotNull final BiConsumer consumer) { future.whenComplete((value, exception) -> { - if (Bukkit.isPrimaryThread()) { - consumer.accept(value, exception); - } else { - Bukkit.getScheduler().runTask(plugin, () -> consumer.accept(value, exception)); - } + consumer.accept(value, exception); }); } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 077b274..4f2aea2 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -4,6 +4,8 @@ main: "me.clip.placeholderapi.PlaceholderAPIPlugin" version: ${version} author: HelpChat +folia-supported: true + api-version: "1.13" description: "An awesome placeholder provider!"