From b21af8dd6ed849abf8e285fb57a246642b4d63c5 Mon Sep 17 00:00:00 2001 From: fullwall Date: Wed, 1 Feb 2023 23:15:28 +0800 Subject: [PATCH] Trial delaying scoreboard removal on death --- .../citizensnpcs/trait/ScoreboardTrait.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/main/src/main/java/net/citizensnpcs/trait/ScoreboardTrait.java b/main/src/main/java/net/citizensnpcs/trait/ScoreboardTrait.java index fb688c834..a730dbaa6 100644 --- a/main/src/main/java/net/citizensnpcs/trait/ScoreboardTrait.java +++ b/main/src/main/java/net/citizensnpcs/trait/ScoreboardTrait.java @@ -6,6 +6,7 @@ import org.bukkit.Bukkit; import org.bukkit.ChatColor; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.scoreboard.Scoreboard; import org.bukkit.scoreboard.Team; @@ -90,15 +91,17 @@ public void onDespawn() { npc.data().remove(NPC.Metadata.SCOREBOARD_FAKE_TEAM_NAME); if (team == null || name == null || !team.hasEntry(name)) return; - if (team.getSize() == 1) { - for (Player player : Bukkit.getOnlinePlayers()) { - metadata.remove(player.getUniqueId(), team.getName()); - NMS.sendTeamPacket(player, team, 1); + Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), () -> { + if (team.getSize() == 1) { + for (Player player : Bukkit.getOnlinePlayers()) { + metadata.remove(player.getUniqueId(), team.getName()); + NMS.sendTeamPacket(player, team, 1); + } + team.unregister(); + } else { + team.removeEntry(name); } - team.unregister(); - } else { - team.removeEntry(name); - } + }, npc.getEntity() instanceof LivingEntity ? 20 : 2); } @Override