From 2786129a09c4e6f1947c09428a70b9df71837e45 Mon Sep 17 00:00:00 2001 From: Pablo Date: Thu, 21 May 2026 15:32:48 +0000 Subject: [PATCH] fix: dispatch reward commands via scheduler to support Folia (#31) --- .../bitaspire/cyberlevels/cache/Rewards.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/bitaspire/cyberlevels/cache/Rewards.java b/src/main/java/com/bitaspire/cyberlevels/cache/Rewards.java index 634af2c..4b4f929 100644 --- a/src/main/java/com/bitaspire/cyberlevels/cache/Rewards.java +++ b/src/main/java/com/bitaspire/cyberlevels/cache/Rewards.java @@ -102,19 +102,21 @@ String parseFormat(String prefix, String line) { } public void executeCommands(Player player) { - for (String command : commands) { - command = command.trim(); + for (String rawCommand : commands) { + String command = rawCommand.trim(); if (StringUtils.isBlank(command)) continue; if (main.isEnabled("PlaceholderAPI")) command = PlaceholderAPI.setPlaceholders(player, main.levelSystem().replacePlaceholders(command, player.getUniqueId(), false)); - if (command.toLowerCase().startsWith("[player]")) { - Bukkit.dispatchCommand(player, parseFormat("[player]", command)); - continue; - } - - Bukkit.dispatchCommand(Bukkit.getConsoleSender(), parseFormat("[console]", command)); + final String toExecute = command; + Bukkit.getScheduler().runTask(main, () -> { + if (toExecute.toLowerCase().startsWith("[player]")) { + Bukkit.dispatchCommand(player, parseFormat("[player]", toExecute)); + } else { + Bukkit.dispatchCommand(Bukkit.getConsoleSender(), parseFormat("[console]", toExecute)); + } + }); } }