From 0f81b2863011f57286b1dd6bb13f5259b68aa149 Mon Sep 17 00:00:00 2001 From: Tim203 Date: Thu, 30 Sep 2021 22:16:15 +0200 Subject: [PATCH] Fixed GeyserMC/Geyser#2556 --- .../java/scoreboard/JavaTeamTranslator.java | 25 ++++++++++--------- .../connector/scoreboard/Scoreboard.java | 5 ++++ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/scoreboard/JavaTeamTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/scoreboard/JavaTeamTranslator.java index 9e9d2813c..c4b2eacd5 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/java/scoreboard/JavaTeamTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/scoreboard/JavaTeamTranslator.java @@ -43,12 +43,12 @@ import java.util.Arrays; @Translator(packet = ServerTeamPacket.class) public class JavaTeamTranslator extends PacketTranslator { - private final GeyserLogger LOGGER = GeyserConnector.getInstance().getLogger(); + private final GeyserLogger logger = GeyserConnector.getInstance().getLogger(); @Override public void translate(GeyserSession session, ServerTeamPacket packet) { - if (LOGGER.isDebug()) { - LOGGER.debug("Team packet " + packet.getTeamName() + " " + packet.getAction() + " " + Arrays.toString(packet.getPlayers())); + if (logger.isDebug()) { + logger.debug("Team packet " + packet.getTeamName() + " " + packet.getAction() + " " + Arrays.toString(packet.getPlayers())); } if ((packet.getAction() == TeamAction.ADD_PLAYER || packet.getAction() == TeamAction.REMOVE_PLAYER) && packet.getPlayers().length == 0) { @@ -60,15 +60,16 @@ public class JavaTeamTranslator extends PacketTranslator { Scoreboard scoreboard = session.getWorldCache().getScoreboard(); Team team = scoreboard.getTeam(packet.getTeamName()); switch (packet.getAction()) { - case CREATE -> scoreboard.registerNewTeam(packet.getTeamName(), packet.getPlayers()) - .setName(MessageTranslator.convertMessage(packet.getDisplayName())) - .setColor(packet.getColor()) - .setNameTagVisibility(packet.getNameTagVisibility()) - .setPrefix(MessageTranslator.convertMessage(packet.getPrefix(), session.getLocale())) - .setSuffix(MessageTranslator.convertMessage(packet.getSuffix(), session.getLocale())); + case CREATE -> + scoreboard.registerNewTeam(packet.getTeamName(), packet.getPlayers()) + .setName(MessageTranslator.convertMessage(packet.getDisplayName())) + .setColor(packet.getColor()) + .setNameTagVisibility(packet.getNameTagVisibility()) + .setPrefix(MessageTranslator.convertMessage(packet.getPrefix(), session.getLocale())) + .setSuffix(MessageTranslator.convertMessage(packet.getSuffix(), session.getLocale())); case UPDATE -> { if (team == null) { - LOGGER.debug(LanguageUtils.getLocaleStringLog( + logger.debug(LanguageUtils.getLocaleStringLog( "geyser.network.translator.team.failed_not_registered", packet.getAction(), packet.getTeamName() )); @@ -84,7 +85,7 @@ public class JavaTeamTranslator extends PacketTranslator { } case ADD_PLAYER -> { if (team == null) { - LOGGER.debug(LanguageUtils.getLocaleStringLog( + logger.debug(LanguageUtils.getLocaleStringLog( "geyser.network.translator.team.failed_not_registered", packet.getAction(), packet.getTeamName() )); @@ -94,7 +95,7 @@ public class JavaTeamTranslator extends PacketTranslator { } case REMOVE_PLAYER -> { if (team == null) { - LOGGER.debug(LanguageUtils.getLocaleStringLog( + logger.debug(LanguageUtils.getLocaleStringLog( "geyser.network.translator.team.failed_not_registered", packet.getAction(), packet.getTeamName() )); diff --git a/connector/src/main/java/org/geysermc/connector/scoreboard/Scoreboard.java b/connector/src/main/java/org/geysermc/connector/scoreboard/Scoreboard.java index 3795db83f..9b2417c16 100644 --- a/connector/src/main/java/org/geysermc/connector/scoreboard/Scoreboard.java +++ b/connector/src/main/java/org/geysermc/connector/scoreboard/Scoreboard.java @@ -258,6 +258,11 @@ public final class Scoreboard { addScores.add(score.getCachedInfo()); } + // we need this as long as MCPE-143063 hasn't been fixed + if (add && score.getUpdateType() != ADD && !objectiveUpdate) { + removeScores.add(score.getCachedInfo()); + } + score.setUpdateType(NOTHING); }