diff --git a/src/main/java/com/alttd/playerutils/commands/playerutils_subcommands/Glow.java b/src/main/java/com/alttd/playerutils/commands/playerutils_subcommands/Glow.java index d0a545c..5eaec78 100644 --- a/src/main/java/com/alttd/playerutils/commands/playerutils_subcommands/Glow.java +++ b/src/main/java/com/alttd/playerutils/commands/playerutils_subcommands/Glow.java @@ -2,6 +2,7 @@ package com.alttd.playerutils.commands.playerutils_subcommands; import com.alttd.playerutils.commands.SubCommand; import com.alttd.playerutils.config.Messages; +import com.alttd.playerutils.util.Logger; import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.format.TextColor; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; @@ -18,6 +19,13 @@ import java.util.Optional; import java.util.stream.Collectors; public class Glow extends SubCommand { + + private final Logger logger; + + public Glow(Logger logger) { + this.logger = logger; + } + @Override public boolean onCommand(CommandSender commandSender, String[] args) { if (!(commandSender instanceof Player player)) { @@ -29,6 +37,12 @@ public class Glow extends SubCommand { return false; } + Scoreboard board = Bukkit.getScoreboardManager().getMainScoreboard(); + board.getTeams().stream() + .filter(team -> team.getName().startsWith("Glow")) + .filter(team -> team.hasPlayer(player)) + .forEach(team -> team.removePlayer(player)); + if (args[1].equalsIgnoreCase("off")) { commandSender.sendMiniMessage(Messages.GLOW.GLOW_OFF, null); player.setGlowing(false); @@ -42,20 +56,27 @@ public class Glow extends SubCommand { } DyeColor dyeColor = any.get(); - Scoreboard board = Bukkit.getScoreboardManager().getMainScoreboard(); - Team team = board.getTeam("Glow " + dyeColor.name()); + Team team = board.getTeam("Glow-" + dyeColor.name()); if (team == null) { - team = board.registerNewTeam("Glow " + dyeColor.name()); + team = board.registerNewTeam("Glow-" + dyeColor.name()); + NamedTextColor namedTextColor = NamedTextColor.nearestTo(TextColor.color(dyeColor.getColor().asRGB())); + team.color(namedTextColor); } - if (!team.hasEntry(player.getName())) { - team.addEntry(player.getName()); + if (team.getScoreboard() == null) { + commandSender.sendMiniMessage(Messages.GLOW.UNABLE_TO_GET_SCOREBOARD, null); + logger.warning("Unable to get scoreboard for team"); + return true; } - NamedTextColor namedTextColor = NamedTextColor.nearestTo(TextColor.color(dyeColor.getColor().asRGB())); - team.color(namedTextColor); +// if (!team.hasEntry(player.getName())) { +// team.addEntry(player.getName()); +// } + if (!team.hasPlayer(player)) + team.addPlayer(player); + player.setScoreboard(team.getScoreboard()); player.setGlowing(true); commandSender.sendMiniMessage(Messages.GLOW.GLOW_ON, Placeholder.parsed("color", dyeColor.name()));