Attempting to improve teams for glow

This commit is contained in:
Teriuihi 2023-07-07 01:09:42 +02:00
parent 0324458efb
commit 8fa21120be

View File

@ -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()));