Skip to content

Instantly share code, notes, and snippets.

@WizardlyBump17
Created June 18, 2022 02:10
Show Gist options
  • Save WizardlyBump17/4013d978890c56921c0789e77fdf9967 to your computer and use it in GitHub Desktop.
Save WizardlyBump17/4013d978890c56921c0789e77fdf9967 to your computer and use it in GitHub Desktop.
Simple utility class to create and update scoreboards
private Scoreboard getPlayerScoreboard(Player player) {
GamePlayer gamePlayer = getPlayer(player);
List<GamePlayer> bestPlayers = getBestPlayers(3);
Scoreboard scoreboard = ScoreboardUtil.create(
"§c§lSolo §e§lMode",
"§aYour kills: §f" + gamePlayer.getKills(),
"§aYour lives: " + (gamePlayer.getLives() == 0 ? "§cDEAD" : "§f" + gamePlayer.getLives()),
"",
"§61. " + (bestPlayers.get(0) == null ? "None" : bestPlayers.get(0).getName() + ": §f" + bestPlayers.get(0).getKills()),
"§72. " + (bestPlayers.get(1) == null ? "None" : bestPlayers.get(1).getName() + ": §f" + bestPlayers.get(1).getKills()),
BROWN + "3. " + (bestPlayers.get(2) == null ? "None" : bestPlayers.get(2).getName() + ": §f" + bestPlayers.get(2).getKills())
);
Team hide = scoreboard.registerNewTeam("hide");
hide.setOption(Team.Option.NAME_TAG_VISIBILITY, Team.OptionStatus.NEVER);
return scoreboard;
}
public void updateScoreboard(GamePlayer player) {
Scoreboard scoreboard = playerScoreboards.get(player.getPlayer());
if (scoreboard == null)
return;
List<GamePlayer> bestPlayers = getBestPlayers(3, false);
ScoreboardUtil.update(
scoreboard,
"§aYour kills: §f" + player.getKills(),
"§aYour lives: " + (player.getLives() == 0 ? "§cDEAD" : "§f" + player.getLives()),
"",
"§61. " + (bestPlayers.get(0) == null ? "None" : bestPlayers.get(0).getName() + ": §f" + bestPlayers.get(0).getKills()),
"§72. " + (bestPlayers.get(1) == null ? "None" : bestPlayers.get(1).getName() + ": §f" + bestPlayers.get(1).getKills()),
BROWN + "3. " + (bestPlayers.get(2) == null ? "None" : bestPlayers.get(2).getName() + ": §f" + bestPlayers.get(2).getKills())
);
}
package my.cool.packagE;
import lombok.experimental.UtilityClass;
import org.bukkit.Bukkit;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.Team;
@UtilityClass
public class ScoreboardUtil {
public static Scoreboard create(String title, String... lines) {
Scoreboard scoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
Objective objective = scoreboard.registerNewObjective("title", "dummy", title);
objective.setDisplaySlot(DisplaySlot.SIDEBAR);
for (int i = 0; i < 16 && i < lines.length; i++) {
Team team = scoreboard.registerNewTeam("line" + (15 - i));
team.setPrefix(lines[i]);
team.addEntry("§".repeat(i));
objective.getScore("§".repeat(i)).setScore(15 - i);
}
return scoreboard;
}
public static void update(Scoreboard scoreboard, String... lines) {
for (int i = 0; i < 16 && i < lines.length; i++) {
Team team = scoreboard.getTeam("line" + (15 - i));
if (team == null)
team = scoreboard.registerNewTeam("line" + (15 - i));
team.setPrefix(lines[i]);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment