diff --git a/src/main/java/net/minestom/server/scoreboard/Team.java b/src/main/java/net/minestom/server/scoreboard/Team.java
index cc53e3f44..91673002c 100644
--- a/src/main/java/net/minestom/server/scoreboard/Team.java
+++ b/src/main/java/net/minestom/server/scoreboard/Team.java
@@ -11,6 +11,7 @@ import net.minestom.server.network.packet.server.play.TeamsPacket;
import net.minestom.server.network.packet.server.play.TeamsPacket.CollisionRule;
import net.minestom.server.network.packet.server.play.TeamsPacket.NameTagVisibility;
import net.minestom.server.utils.PacketUtils;
+import org.jetbrains.annotations.NotNull;
import java.util.Collections;
import java.util.Set;
@@ -64,17 +65,12 @@ public class Team {
*/
private JsonMessage suffix;
- /**
- * Identifiers for the entities in this team
- */
- private String[] entities;
-
/**
* Default constructor to creates a team.
*
* @param teamName The registry name for the team
*/
- protected Team(String teamName) {
+ protected Team(@NotNull String teamName) {
this.teamName = teamName;
this.teamDisplayName = ColoredText.of("");
@@ -86,7 +82,6 @@ public class Team {
this.prefix = ColoredText.of("");
this.suffix = ColoredText.of("");
- this.entities = new String[0];
this.members = new CopyOnWriteArraySet<>();
}
@@ -97,12 +92,7 @@ public class Team {
*
* @param member The member to be added
*/
- public void addMember(String member) {
- final String[] entitiesCache = new String[this.entities.length + 1];
- System.arraycopy(this.entities, 0, entitiesCache, 0, this.entities.length);
- entitiesCache[this.entities.length] = member;
- this.entities = entitiesCache;
-
+ public void addMember(@NotNull String member) {
// Adds a new member to the team
this.members.add(member);
@@ -110,7 +100,7 @@ public class Team {
final TeamsPacket addPlayerPacket = new TeamsPacket();
addPlayerPacket.teamName = this.teamName;
addPlayerPacket.action = TeamsPacket.Action.ADD_PLAYERS_TEAM;
- addPlayerPacket.entities = new String[]{member};
+ addPlayerPacket.entities = members.toArray(new String[0]);
// Sends to all online players the add player packet
PacketUtils.sendGroupedPacket(CONNECTION_MANAGER.getOnlinePlayers(), addPlayerPacket);
@@ -121,24 +111,18 @@ public class Team {
*
* @param member The member to be removed
*/
- public void removeMember(String member) {
+ public void removeMember(@NotNull String member) {
+ // Removes the member from the team
+ this.members.remove(member);
+
// Initializes remove player packet
final TeamsPacket removePlayerPacket = new TeamsPacket();
removePlayerPacket.teamName = this.teamName;
removePlayerPacket.action = TeamsPacket.Action.REMOVE_PLAYERS_TEAM;
- removePlayerPacket.entities = new String[]{member};
+ removePlayerPacket.entities = members.toArray(new String[0]);
+
// Sends to all online player teh remove player packet
PacketUtils.sendGroupedPacket(CONNECTION_MANAGER.getOnlinePlayers(), removePlayerPacket);
-
- // Removes the player from the
- this.members.remove(member);
-
- final String[] entitiesCache = new String[this.entities.length - 1];
- int count = 0;
- for (String teamMember : this.members) {
- entitiesCache[count++] = teamMember;
- }
- this.entities = entitiesCache;
}
/**
@@ -168,8 +152,9 @@ public class Team {
* Warning: This is only changed on the server side.
*
* @param visibility The new tag visibility
+ * @see #updateNameTagVisibility(NameTagVisibility)
*/
- public void setNameTagVisibility(NameTagVisibility visibility) {
+ public void setNameTagVisibility(@NotNull NameTagVisibility visibility) {
this.nameTagVisibility = visibility;
}
@@ -178,7 +163,7 @@ public class Team {
*
* @param nameTagVisibility The new tag visibility
*/
- public void updateNameTagVisibility(NameTagVisibility nameTagVisibility) {
+ public void updateNameTagVisibility(@NotNull NameTagVisibility nameTagVisibility) {
this.setNameTagVisibility(nameTagVisibility);
sendUpdatePacket();
}
@@ -189,8 +174,9 @@ public class Team {
* Warning: This is only changed on the server side.
*
* @param rule The new rule
+ * @see #updateCollisionRule(CollisionRule)
*/
- public void setCollisionRule(CollisionRule rule) {
+ public void setCollisionRule(@NotNull CollisionRule rule) {
this.collisionRule = rule;
}
@@ -199,7 +185,7 @@ public class Team {
*
* @param collisionRule The new collision rule
*/
- public void updateCollisionRule(CollisionRule collisionRule) {
+ public void updateCollisionRule(@NotNull CollisionRule collisionRule) {
this.setCollisionRule(collisionRule);
sendUpdatePacket();
}
@@ -210,8 +196,9 @@ public class Team {
* Warning: This is only changed on the server side.
*
* @param color The new team color
+ * @see #updateTeamColor(ChatColor)
*/
- public void setTeamColor(ChatColor color) {
+ public void setTeamColor(@NotNull ChatColor color) {
this.teamColor = color;
}
@@ -220,7 +207,7 @@ public class Team {
*
* @param teamColor The new team color
*/
- public void updateTeamColor(ChatColor teamColor) {
+ public void updateTeamColor(@NotNull ChatColor teamColor) {
this.setTeamColor(teamColor);
sendUpdatePacket();
}
@@ -302,6 +289,7 @@ public class Team {
*
* @return the packet to add the team
*/
+ @NotNull
public TeamsPacket createTeamsCreationPacket() {
TeamsPacket teamsCreationPacket = new TeamsPacket();
teamsCreationPacket.teamName = teamName;
@@ -313,7 +301,7 @@ public class Team {
teamsCreationPacket.teamColor = this.teamColor.getId();
teamsCreationPacket.teamPrefix = this.prefix;
teamsCreationPacket.teamSuffix = this.suffix;
- teamsCreationPacket.entities = this.entities;
+ teamsCreationPacket.entities = this.members.toArray(new String[0]);
return teamsCreationPacket;
}
@@ -323,6 +311,7 @@ public class Team {
*
* @return the packet to remove the team
*/
+ @NotNull
public TeamsPacket createTeamDestructionPacket() {
TeamsPacket teamsPacket = new TeamsPacket();
teamsPacket.teamName = teamName;
@@ -335,6 +324,7 @@ public class Team {
*
* @return an unmodifiable {@link Set} of registered players
*/
+ @NotNull
public Set getMembers() {
return Collections.unmodifiableSet(members);
}
@@ -362,6 +352,7 @@ public class Team {
*
* @return the tag visibility
*/
+ @NotNull
public NameTagVisibility getNameTagVisibility() {
return nameTagVisibility;
}
@@ -371,6 +362,7 @@ public class Team {
*
* @return the collision rule
*/
+ @NotNull
public CollisionRule getCollisionRule() {
return collisionRule;
}
@@ -380,6 +372,7 @@ public class Team {
*
* @return the team color
*/
+ @NotNull
public ChatColor getTeamColor() {
return teamColor;
}
@@ -402,10 +395,6 @@ public class Team {
return suffix;
}
- public String[] getEntities() {
- return entities;
- }
-
/**
* Sends an {@link TeamsPacket.Action#UPDATE_TEAM_INFO} packet.
*/