Handle team packets async

This commit is contained in:
libraryaddict 2021-01-24 01:24:54 +13:00
parent 348ef9e25d
commit 0d558d79be
3 changed files with 14 additions and 22 deletions

View File

@ -68,6 +68,7 @@ import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import java.util.regex.Matcher;
@ -91,14 +92,18 @@ public class DisguiseUtilities {
return split[1];
}
public String getPrefix() {
public synchronized String getPrefix() {
return split[0];
}
public String getSuffix() {
public synchronized String getSuffix() {
return split[2];
}
public synchronized void setSplit(String[] split) {
this.split = split;
}
public void handleTeam(Scoreboard board, boolean nameVisible) {
nameVisible = !DisguiseConfig.isArmorstandsName() && nameVisible;
Team team = board.getTeam(getTeamName());
@ -181,6 +186,8 @@ public class DisguiseUtilities {
private final static List<UUID> viewSelf = new ArrayList<>();
private final static List<UUID> viewBar = new ArrayList<>();
private static long lastSavedPreferences;
@Getter
private final static ConcurrentHashMap<String, DScoreTeam> teams = new ConcurrentHashMap<>();
/**
* Only allow saves every 2 minutes
@ -1710,6 +1717,8 @@ public class DisguiseUtilities {
exName.setTeamName(getUniqueTeam());
}
getTeams().put(exName.getTeamName(), exName);
for (Scoreboard board : getAllScoreboards()) {
exName.handleTeam(board, disguise.isNameVisible());
}
@ -1748,6 +1757,7 @@ public class DisguiseUtilities {
t.unregister();
}
getTeams().remove(removed.getScoreboardName().getTeamName());
removed.getScoreboardName().setTeamName(null);
}

View File

@ -173,7 +173,7 @@ public class PacketsManager {
if (NmsVersion.v1_13.isSupported() &&
DisguiseConfig.getPlayerNameType() != DisguiseConfig.PlayerNameType.ARMORSTANDS) {
scoreboardTeamListener = new PacketListenerScoreboardTeam();
ProtocolLibrary.getProtocolManager().addPacketListener(scoreboardTeamListener);
ProtocolLibrary.getProtocolManager().getAsynchronousManager().registerAsyncHandler(scoreboardTeamListener);
}
}
}

View File

@ -33,25 +33,7 @@ public class PacketListenerScoreboardTeam extends PacketAdapter {
return;
}
DisguiseUtilities.DScoreTeam team = null;
loop:
for (Set<TargetedDisguise> disguises : DisguiseUtilities.getDisguises().values()) {
for (Disguise disguise : disguises) {
if (!disguise.isPlayerDisguise() || !((PlayerDisguise) disguise).hasScoreboardName()) {
continue;
}
DisguiseUtilities.DScoreTeam t = ((PlayerDisguise) disguise).getScoreboardName();
if (!name.equals(t.getTeamName())) {
continue;
}
team = t;
break loop;
}
}
DisguiseUtilities.DScoreTeam team = DisguiseUtilities.getTeams().get(name);
if (team == null) {
return;