diff options
| author | Krakenied <Krakenied1@gmail.com> | 2023-09-18 15:01:17 +0200 |
|---|---|---|
| committer | Krakenied <Krakenied1@gmail.com> | 2023-09-24 15:57:11 +0200 |
| commit | 68010d38ed3f43c1f21be0d98d49ecf159b28615 (patch) | |
| tree | d4bda9be08863d06c5fb245bbdfd146b72a72081 /bukkit/src | |
| parent | b94b596b8a7925b95d62c7c14682870dac4f1128 (diff) | |
Add and remove players from the boss bar synchronously
Diffstat (limited to 'bukkit/src')
| -rw-r--r-- | bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/bossbar/BossBar_Bukkit.java | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/bossbar/BossBar_Bukkit.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/bossbar/BossBar_Bukkit.java index a3072549..7ac96848 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/bossbar/BossBar_Bukkit.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/bossbar/BossBar_Bukkit.java @@ -10,19 +10,19 @@ import org.bukkit.boss.BarStyle; import org.bukkit.boss.BossBar; import org.bukkit.entity.Player; -import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; public class BossBar_Bukkit implements QuestsBossBar { - private static final RemovalListener<String, BossBar> removalListener = removal -> removal.getValue().removeAll(); + private final BukkitQuestsPlugin plugin; + private final RemovalListener<String, BossBar> removalListener; // use cache because of its concurrency and automatic player on quit removal private final Cache<Player, Cache<String, BossBar>> playerQuestBarCache = CacheBuilder.newBuilder().weakKeys().build(); - private final BukkitQuestsPlugin plugin; public BossBar_Bukkit(BukkitQuestsPlugin plugin) { this.plugin = plugin; + this.removalListener = removal -> plugin.getScheduler().runTask(() -> removal.getValue().removeAll()); //noinspection CodeBlock2Expr (for readability) plugin.getScheduler().runTaskTimerAsynchronously(() -> { @@ -39,9 +39,6 @@ public class BossBar_Bukkit implements QuestsBossBar { @Override public void sendBossBar(Player player, String questId, String title, int time, float progress) { - CompletableFuture<BossBar> future = new CompletableFuture<>(); - future.thenAccept(bar -> bar.addPlayer(player)); - this.plugin.getScheduler().runTaskAsynchronously(() -> { Cache<String, BossBar> questBarCache = playerQuestBarCache.asMap() .computeIfAbsent(player, k -> { @@ -61,7 +58,7 @@ public class BossBar_Bukkit implements QuestsBossBar { bar.setTitle(title); bar.setProgress(progress); - future.complete(bar); + plugin.getScheduler().runTask(() -> bar.addPlayer(player)); }); } } |
