From 3dd3bcc03ead51d1a88c98fc7dbffa2af3d98579 Mon Sep 17 00:00:00 2001 From: Pyrbu Date: Thu, 11 May 2023 05:46:14 +0100 Subject: [PATCH] partially fix commands being executed on wrong thread, still broken on folia --- .../interaction/types/ConsoleCommandAction.java | 2 +- .../znpcsplus/interaction/types/PlayerCommandAction.java | 2 +- .../lol/pyr/znpcsplus/scheduling/FoliaScheduler.java | 9 ++------- .../lol/pyr/znpcsplus/scheduling/SpigotScheduler.java | 4 ++-- .../java/lol/pyr/znpcsplus/scheduling/TaskScheduler.java | 2 +- 5 files changed, 7 insertions(+), 12 deletions(-) diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/types/ConsoleCommandAction.java b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/types/ConsoleCommandAction.java index 2945e43..c23452f 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/types/ConsoleCommandAction.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/types/ConsoleCommandAction.java @@ -15,7 +15,7 @@ public class ConsoleCommandAction extends NpcAction { @Override public void run(Player player) { String cmd = argument.replace("{player}", player.getName()).replace("{uuid}", player.getUniqueId().toString()); - Bukkit.dispatchCommand(Bukkit.getConsoleSender(), ZNpcsPlus.PLACEHOLDERS_SUPPORTED ? PlaceholderAPI.setPlaceholders(player, cmd) : cmd); + ZNpcsPlus.SCHEDULER.runSync(() -> Bukkit.dispatchCommand(Bukkit.getConsoleSender(), ZNpcsPlus.PLACEHOLDERS_SUPPORTED ? PlaceholderAPI.setPlaceholders(player, cmd) : cmd)); } @Override diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/types/PlayerCommandAction.java b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/types/PlayerCommandAction.java index 1ed2cfd..bc1c2bf 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/interaction/types/PlayerCommandAction.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/interaction/types/PlayerCommandAction.java @@ -15,7 +15,7 @@ public class PlayerCommandAction extends NpcAction { @Override public void run(Player player) { String cmd = argument.replace("{player}", player.getName()).replace("{uuid}", player.getUniqueId().toString()); - Bukkit.dispatchCommand(player, ZNpcsPlus.PLACEHOLDERS_SUPPORTED ? PlaceholderAPI.setPlaceholders(player, cmd) : cmd); + ZNpcsPlus.SCHEDULER.runSync(() -> Bukkit.dispatchCommand(player, ZNpcsPlus.PLACEHOLDERS_SUPPORTED ? PlaceholderAPI.setPlaceholders(player, cmd) : cmd)); } @Override diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/scheduling/FoliaScheduler.java b/plugin/src/main/java/lol/pyr/znpcsplus/scheduling/FoliaScheduler.java index 342b4ff..51b699b 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/scheduling/FoliaScheduler.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/scheduling/FoliaScheduler.java @@ -13,13 +13,8 @@ public class FoliaScheduler extends TaskScheduler { } @Override - public void runAsync(Runnable runnable) { - try { - Object scheduler = Reflections.FOLIA_GET_ASYNC_SCHEDULER.get().invoke(null); - Reflections.FOLIA_RUN_NOW.get().invoke(scheduler, plugin, (Consumer) o -> runnable.run()); - } catch (IllegalAccessException | InvocationTargetException e) { - throw new RuntimeException(e); - } + public void runSync(Runnable runnable) { + // TODO: Figure out which scheduler to use for running commands } @Override diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/scheduling/SpigotScheduler.java b/plugin/src/main/java/lol/pyr/znpcsplus/scheduling/SpigotScheduler.java index f8f6b68..10a420c 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/scheduling/SpigotScheduler.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/scheduling/SpigotScheduler.java @@ -9,8 +9,8 @@ public class SpigotScheduler extends TaskScheduler { } @Override - public void runAsync(Runnable runnable) { - Bukkit.getScheduler().runTaskAsynchronously(plugin, runnable); + public void runSync(Runnable runnable) { + Bukkit.getScheduler().runTask(plugin, runnable); } @Override diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/scheduling/TaskScheduler.java b/plugin/src/main/java/lol/pyr/znpcsplus/scheduling/TaskScheduler.java index daf2852..af97271 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/scheduling/TaskScheduler.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/scheduling/TaskScheduler.java @@ -9,7 +9,7 @@ public abstract class TaskScheduler { this.plugin = plugin; } - public abstract void runAsync(Runnable runnable); + public abstract void runSync(Runnable runnable); public abstract void runLaterAsync(Runnable runnable, long ticks);