Skip to content

Commit 9affef2

Browse files
committed
Support managing teams by player id and name
Sadly vanilla scoreboard teams are still managed by player username
1 parent ddb59fd commit 9affef2

File tree

2 files changed

+45
-16
lines changed

2 files changed

+45
-16
lines changed

src/main/java/dev/booky/cloudchat/CloudChatApi.java

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,59 @@
55
import org.bukkit.entity.Player;
66
import org.bukkit.scoreboard.Scoreboard;
77

8+
import java.util.UUID;
9+
810
public interface CloudChatApi {
911

1012
default Scoreboard getVanillaScoreboard() {
1113
return Bukkit.getScoreboardManager().getMainScoreboard();
1214
}
1315

16+
// creation
17+
1418
default boolean createTeam(Player player) {
1519
return this.createTeam(this.getVanillaScoreboard(), player);
1620
}
1721

18-
boolean createTeam(Scoreboard scoreboard, Player player);
22+
default boolean createTeam(Scoreboard scoreboard, Player player) {
23+
return this.createTeam(scoreboard, player.getUniqueId(), player.getName());
24+
}
25+
26+
default boolean createTeam(UUID playerId, String username) {
27+
return this.createTeam(this.getVanillaScoreboard(), playerId, username);
28+
}
29+
30+
boolean createTeam(Scoreboard scoreboard, UUID playerId, String username);
31+
32+
// removal
1933

2034
default boolean removeTeam(Player player) {
2135
return this.removeTeam(this.getVanillaScoreboard(), player);
2236
}
2337

24-
boolean removeTeam(Scoreboard scoreboard, Player player);
38+
default boolean removeTeam(Scoreboard scoreboard, Player player) {
39+
return this.removeTeam(scoreboard, player.getUniqueId(), player.getName());
40+
}
41+
42+
default boolean removeTeam(UUID playerId, String username) {
43+
return this.removeTeam(this.getVanillaScoreboard(), playerId, username);
44+
}
45+
46+
boolean removeTeam(Scoreboard scoreboard, UUID playerId, String username);
47+
48+
// updates
2549

2650
default boolean updateTeam(Player player) {
2751
return this.updateTeam(this.getVanillaScoreboard(), player);
2852
}
2953

30-
boolean updateTeam(Scoreboard scoreboard, Player player);
54+
default boolean updateTeam(Scoreboard scoreboard, Player player) {
55+
return this.updateTeam(scoreboard, player.getUniqueId(), player.getName());
56+
}
57+
58+
default boolean updateTeam(UUID playerId, String username) {
59+
return this.updateTeam(this.getVanillaScoreboard(), playerId, username);
60+
}
61+
62+
boolean updateTeam(Scoreboard scoreboard, UUID playerId, String username);
3163
}

src/main/java/dev/booky/cloudchat/CloudChatManager.java

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,18 @@
1515
import org.bukkit.scoreboard.Team;
1616

1717
import java.text.DecimalFormat;
18+
import java.util.UUID;
1819

1920
class CloudChatManager implements CloudChatApi {
2021

2122
private static final DecimalFormat FORMAT = new DecimalFormat("0000");
2223
private static final Component SEPARATOR = Component.text(" \u25cf ", NamedTextColor.DARK_GRAY);
2324

2425
@Override
25-
public boolean createTeam(Scoreboard scoreboard, Player player) {
26+
public boolean createTeam(Scoreboard scoreboard, UUID playerId, String username) {
2627
LuckPerms luckperms = LuckPermsProvider.get();
2728

28-
User user = luckperms.getUserManager().getUser(player.getUniqueId());
29+
User user = luckperms.getUserManager().getUser(playerId);
2930
if (user == null) {
3031
return false;
3132
}
@@ -38,18 +39,18 @@ public boolean createTeam(Scoreboard scoreboard, Player player) {
3839
String teamName = FORMAT.format(9999 - group.getWeight().orElse(0))
3940
+ RandomStringUtils.randomAlphanumeric(16 - 4);
4041

41-
Team team = scoreboard.getPlayerTeam(player);
42+
Team team = scoreboard.getEntryTeam(username);
4243
if (team == null) {
4344
team = scoreboard.registerNewTeam(teamName);
44-
team.addPlayer(player);
45+
team.addEntry(username);
4546
}
4647
this.updateTeam(user, team);
4748
return true;
4849
}
4950

5051
@Override
51-
public boolean removeTeam(Scoreboard scoreboard, Player player) {
52-
Team team = scoreboard.getPlayerTeam(player);
52+
public boolean removeTeam(Scoreboard scoreboard, UUID playerId, String username) {
53+
Team team = scoreboard.getEntryTeam(username);
5354
if (team == null) {
5455
return false;
5556
}
@@ -58,18 +59,14 @@ public boolean removeTeam(Scoreboard scoreboard, Player player) {
5859
}
5960

6061
@Override
61-
public boolean updateTeam(Scoreboard scoreboard, Player player) {
62-
if (!player.isOnline()) {
63-
return false;
64-
}
65-
62+
public boolean updateTeam(Scoreboard scoreboard, UUID playerId, String username) {
6663
LuckPerms luckperms = LuckPermsProvider.get();
67-
User user = luckperms.getUserManager().getUser(player.getUniqueId());
64+
User user = luckperms.getUserManager().getUser(playerId);
6865
if (user == null) {
6966
return false;
7067
}
7168

72-
Team team = scoreboard.getPlayerTeam(player);
69+
Team team = scoreboard.getEntryTeam(username);
7370
if (team != null) {
7471
this.updateTeam(user, team);
7572
return true;

0 commit comments

Comments
 (0)