@Override
public void handleSetPlayerTeamPacket(ClientboundSetPlayerTeamPacket pPacket) {
PacketUtils.ensureRunningOnSameThread(pPacket, this, this.minecraft);
ClientboundSetPlayerTeamPacket.Action clientboundsetplayerteampacket$action = pPacket.getTeamAction();
PlayerTeam playerteam;
if (clientboundsetplayerteampacket$action == ClientboundSetPlayerTeamPacket.Action.ADD) {
playerteam = this.scoreboard.addPlayerTeam(pPacket.getName());
} else {
playerteam = this.scoreboard.getPlayerTeam(pPacket.getName());
if (playerteam == null) {
LOGGER.warn(
"Received packet for unknown team {}: team action: {}, player action: {}",
pPacket.getName(),
pPacket.getTeamAction(),
pPacket.getPlayerAction()
);
return;
}
}
Optional<ClientboundSetPlayerTeamPacket.Parameters> optional = pPacket.getParameters();
optional.ifPresent(p_233670_ -> {
playerteam.setDisplayName(p_233670_.getDisplayName());
playerteam.setColor(p_233670_.getColor());
playerteam.unpackOptions(p_233670_.getOptions());
Team.Visibility team$visibility = Team.Visibility.byName(p_233670_.getNametagVisibility());
if (team$visibility != null) {
playerteam.setNameTagVisibility(team$visibility);
}
Team.CollisionRule team$collisionrule = Team.CollisionRule.byName(p_233670_.getCollisionRule());
if (team$collisionrule != null) {
playerteam.setCollisionRule(team$collisionrule);
}
playerteam.setPlayerPrefix(p_233670_.getPlayerPrefix());
playerteam.setPlayerSuffix(p_233670_.getPlayerSuffix());
});
ClientboundSetPlayerTeamPacket.Action clientboundsetplayerteampacket$action1 = pPacket.getPlayerAction();
if (clientboundsetplayerteampacket$action1 == ClientboundSetPlayerTeamPacket.Action.ADD) {
for (String s : pPacket.getPlayers()) {
this.scoreboard.addPlayerToTeam(s, playerteam);
}
} else if (clientboundsetplayerteampacket$action1 == ClientboundSetPlayerTeamPacket.Action.REMOVE) {
for (String s1 : pPacket.getPlayers()) {
try {
this.scoreboard.removePlayerFromTeam(s1, playerteam);
} catch (IllegalStateException e) {
LOGGER.warn("ERROR: Prevented IllegalStateException when removing player '{}' from team '{}'. Reason: {}", s1, playerteam.getName(), e.getMessage());
}
}
}
if (clientboundsetplayerteampacket$action == ClientboundSetPlayerTeamPacket.Action.REMOVE) {
this.scoreboard.removePlayerTeam(playerteam);
}
}