partially fix commands being executed on wrong thread, still broken on folia

This commit is contained in:
Pyrbu 2023-05-11 05:46:14 +01:00
parent b482317684
commit 3dd3bcc03e
5 changed files with 7 additions and 12 deletions

@ -15,7 +15,7 @@ public class ConsoleCommandAction extends NpcAction {
@Override @Override
public void run(Player player) { public void run(Player player) {
String cmd = argument.replace("{player}", player.getName()).replace("{uuid}", player.getUniqueId().toString()); 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 @Override

@ -15,7 +15,7 @@ public class PlayerCommandAction extends NpcAction {
@Override @Override
public void run(Player player) { public void run(Player player) {
String cmd = argument.replace("{player}", player.getName()).replace("{uuid}", player.getUniqueId().toString()); 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 @Override

@ -13,13 +13,8 @@ public class FoliaScheduler extends TaskScheduler {
} }
@Override @Override
public void runAsync(Runnable runnable) { public void runSync(Runnable runnable) {
try { // TODO: Figure out which scheduler to use for running commands
Object scheduler = Reflections.FOLIA_GET_ASYNC_SCHEDULER.get().invoke(null);
Reflections.FOLIA_RUN_NOW.get().invoke(scheduler, plugin, (Consumer<Object>) o -> runnable.run());
} catch (IllegalAccessException | InvocationTargetException e) {
throw new RuntimeException(e);
}
} }
@Override @Override

@ -9,8 +9,8 @@ public class SpigotScheduler extends TaskScheduler {
} }
@Override @Override
public void runAsync(Runnable runnable) { public void runSync(Runnable runnable) {
Bukkit.getScheduler().runTaskAsynchronously(plugin, runnable); Bukkit.getScheduler().runTask(plugin, runnable);
} }
@Override @Override

@ -9,7 +9,7 @@ public abstract class TaskScheduler {
this.plugin = plugin; this.plugin = plugin;
} }
public abstract void runAsync(Runnable runnable); public abstract void runSync(Runnable runnable);
public abstract void runLaterAsync(Runnable runnable, long ticks); public abstract void runLaterAsync(Runnable runnable, long ticks);