From ce1533ded5d30060acee12e11e2402a4d1c7ffa6 Mon Sep 17 00:00:00 2001 From: vytskalt Date: Sat, 14 Feb 2026 01:21:47 +0200 Subject: [PATCH] yeet packetevents adapter --- INSTALLATION.md | 1 - README.md | 1 - .../implementation/PacketAdapterLoader.java | 25 +-- versions/packetevents/build.gradle.kts | 10 +- .../ObjectivePacketAdapterImpl.java | 161 ------------------ .../PacketAdapterProviderImpl.java | 56 ------ .../packetevents/PacketEventsSender.java | 65 ------- .../packetevents/ScoreFormatConverter.java | 31 ---- .../AbstractTeamDisplayPacketAdapter.java | 61 ------- .../AdventureTeamDisplayPacketAdapter.java | 55 ------ .../team/LegacyTeamDisplayPacketAdapter.java | 31 ---- .../team/TeamsPacketAdapterImpl.java | 45 ----- .../team/WrapperPlayServerTeamsLegacy.java | 60 ------- 13 files changed, 3 insertions(+), 599 deletions(-) delete mode 100644 versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/ObjectivePacketAdapterImpl.java delete mode 100644 versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/PacketAdapterProviderImpl.java delete mode 100644 versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/PacketEventsSender.java delete mode 100644 versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/ScoreFormatConverter.java delete mode 100644 versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/team/AbstractTeamDisplayPacketAdapter.java delete mode 100644 versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/team/AdventureTeamDisplayPacketAdapter.java delete mode 100644 versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/team/LegacyTeamDisplayPacketAdapter.java delete mode 100644 versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/team/TeamsPacketAdapterImpl.java delete mode 100644 versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/team/WrapperPlayServerTeamsLegacy.java diff --git a/INSTALLATION.md b/INSTALLATION.md index b93b9a8..30340cd 100644 --- a/INSTALLATION.md +++ b/INSTALLATION.md @@ -17,7 +17,6 @@ dependencies { // Add packet adapter implementations you want: runtimeOnly("net.megavex:scoreboard-library-modern:$scoreboardLibraryVersion") // 1.17+ - runtimeOnly("net.megavex:scoreboard-library-packetevents:$scoreboardLibraryVersion") // 1.8+ runtimeOnly("net.megavex:scoreboard-library-legacy:$scoreboardLibraryVersion") // 1.7.10-1.12.2 // If using the PacketEvents implementation, scoreboard-library expects PacketEvents to be in the classpath. diff --git a/README.md b/README.md index 32f9900..57d976f 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,6 @@ Join the [Discord](https://discord.gg/v7nmTDTW8W) or create an issue for support - **modern.** Supports 1.17-1.21.11. Can take advantage of [Paper](https://papermc.io)'s native adventure support to be more efficient. - **legacy.** Supports 1.7.10-1.12.2. -- **PacketEvents.** Supports 1.8+. Requires [PacketEvents 2.0](https://github.com/retrooper/packetevents/tree/2.0) to be shaded or installed as a plugin. > [!NOTE] > You can add multiple packet adapters, the best one will automatically be picked depending on the server version. diff --git a/implementation/src/main/java/net/megavex/scoreboardlibrary/implementation/PacketAdapterLoader.java b/implementation/src/main/java/net/megavex/scoreboardlibrary/implementation/PacketAdapterLoader.java index d75a717..5f753f6 100644 --- a/implementation/src/main/java/net/megavex/scoreboardlibrary/implementation/PacketAdapterLoader.java +++ b/implementation/src/main/java/net/megavex/scoreboardlibrary/implementation/PacketAdapterLoader.java @@ -9,9 +9,7 @@ import org.jetbrains.annotations.Nullable; import java.lang.reflect.InvocationTargetException; public final class PacketAdapterLoader { - private static final String MODERN = "modern", - LEGACY = "legacy", - PACKET_EVENTS = "packetevents"; + private static final String MODERN = "modern", LEGACY = "legacy"; private PacketAdapterLoader() { } @@ -36,12 +34,7 @@ public final class PacketAdapterLoader { version = version.substring(0, dashIndex); } - Class nmsClass = tryLoadVersion(version); - if (nmsClass != null) { - return nmsClass; - } - - return tryLoadPacketEvents(); + return tryLoadVersion(version); } private static @Nullable Class tryLoadVersion(@NotNull String serverVersion) { @@ -126,20 +119,6 @@ public final class PacketAdapterLoader { } } - private static @Nullable Class tryLoadPacketEvents() { - Class nmsClass = tryLoadImplementationClass(PACKET_EVENTS); - if (nmsClass == null) { - return null; - } - - try { - Class.forName("com.github.retrooper.packetevents.PacketEvents"); - return nmsClass; - } catch (ClassNotFoundException ignored) { - return null; - } - } - private static @Nullable Class tryLoadImplementationClass(@NotNull String name) { try { String path = "net.megavex.scoreboardlibrary.implementation.packetAdapter." + name + ".PacketAdapterProviderImpl"; diff --git a/versions/packetevents/build.gradle.kts b/versions/packetevents/build.gradle.kts index 9d60559..71484e5 100644 --- a/versions/packetevents/build.gradle.kts +++ b/versions/packetevents/build.gradle.kts @@ -2,12 +2,4 @@ plugins { id("net.megavex.scoreboardlibrary.base-conventions") } -repositories { - maven("https://repo.codemc.io/repository/maven-releases/") -} - -dependencies { - compileOnly(project(":scoreboard-library-packet-adapter-base")) - compileOnly(libs.packetEvents) - compileOnly(libs.spigotApi) -} +// packetevents adapter is gone, this module is kept for compatibility diff --git a/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/ObjectivePacketAdapterImpl.java b/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/ObjectivePacketAdapterImpl.java deleted file mode 100644 index f9fe14f..0000000 --- a/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/ObjectivePacketAdapterImpl.java +++ /dev/null @@ -1,161 +0,0 @@ -package net.megavex.scoreboardlibrary.implementation.packetAdapter.packetevents; - -import com.github.retrooper.packetevents.PacketEventsAPI; -import com.github.retrooper.packetevents.manager.server.ServerVersion; -import com.github.retrooper.packetevents.wrapper.PacketWrapper; -import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerDisplayScoreboard; -import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerResetScore; -import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerScoreboardObjective; -import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerUpdateScore; -import net.kyori.adventure.text.Component; -import net.kyori.adventure.translation.GlobalTranslator; -import net.megavex.scoreboardlibrary.api.objective.ObjectiveDisplaySlot; -import net.megavex.scoreboardlibrary.api.objective.ObjectiveRenderType; -import net.megavex.scoreboardlibrary.api.objective.ScoreFormat; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.PacketSender; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.PropertiesPacketType; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.objective.ObjectiveConstants; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.objective.ObjectivePacketAdapter; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.util.LocalePacketUtil; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.Collection; -import java.util.Locale; -import java.util.Optional; - -public class ObjectivePacketAdapterImpl implements ObjectivePacketAdapter { - private final PacketSender> provider; - private final PacketEventsAPI packetEvents; - private final String objectiveName; - private WrapperPlayServerScoreboardObjective removePacket; - - public ObjectivePacketAdapterImpl(@NotNull PacketSender> provider, @NotNull PacketEventsAPI packetEvents, @NotNull String objectiveName) { - this.provider = provider; - this.packetEvents = packetEvents; - this.objectiveName = objectiveName; - } - - @Override - public @NotNull String objectiveName() { - return objectiveName; - } - - @Override - public void display(@NotNull Collection players, @NotNull ObjectiveDisplaySlot slot) { - WrapperPlayServerDisplayScoreboard packet = new WrapperPlayServerDisplayScoreboard(ObjectiveConstants.displaySlotIndex(slot), objectiveName); - provider.sendPacket(players, packet); - } - - @Override - public void sendProperties( - @NotNull Collection players, - @NotNull PropertiesPacketType packetType, - @NotNull Component value, - @NotNull ObjectiveRenderType renderType, - @Nullable ScoreFormat scoreFormat - ) { - LocalePacketUtil.sendLocalePackets( - provider, - players, - locale -> createObjectivePacket(locale, packetType, value, renderType, scoreFormat) - ); - } - - @Override - public void remove(@NotNull Collection players) { - if (removePacket == null) { - removePacket = new WrapperPlayServerScoreboardObjective( - objectiveName, - WrapperPlayServerScoreboardObjective.ObjectiveMode.REMOVE, - null, - null - ); - } - provider.sendPacket(players, removePacket); - } - - @Override - public void sendScore( - @NotNull Collection players, - @NotNull String entry, - int value, - @Nullable Component display, - @Nullable ScoreFormat scoreFormat - ) { - LocalePacketUtil.sendLocalePackets( - provider, - players, - locale -> new WrapperPlayServerUpdateScore( - entry, - WrapperPlayServerUpdateScore.Action.CREATE_OR_UPDATE_ITEM, - objectiveName, - value, - display != null ? GlobalTranslator.render(display, locale) : null, - ScoreFormatConverter.convert(locale, scoreFormat) - ) - ); - } - - @Override - public void removeScore(@NotNull Collection players, @NotNull String entry) { - WrapperPlayServerUpdateScore oldPacket = new WrapperPlayServerUpdateScore( - entry, - WrapperPlayServerUpdateScore.Action.REMOVE_ITEM, - objectiveName, - Optional.empty() - ); - - WrapperPlayServerResetScore newPacket = new WrapperPlayServerResetScore( - entry, - objectiveName - ); - - if (packetEvents.getServerManager().getVersion().isNewerThanOrEquals(ServerVersion.V_1_20_3)) { - provider.sendPacket(players, newPacket); - } else { - provider.sendPacket(players, oldPacket); - } - } - - private WrapperPlayServerScoreboardObjective createObjectivePacket( - @NotNull Locale locale, - @NotNull PropertiesPacketType packetType, - @NotNull Component value, - @NotNull ObjectiveRenderType renderType, - @Nullable ScoreFormat format - ) { - WrapperPlayServerScoreboardObjective.ObjectiveMode peMode; - switch (packetType) { - case CREATE: - peMode = WrapperPlayServerScoreboardObjective.ObjectiveMode.CREATE; - break; - case UPDATE: - peMode = WrapperPlayServerScoreboardObjective.ObjectiveMode.UPDATE; - break; - default: - throw new IllegalStateException(); - } - - WrapperPlayServerScoreboardObjective.RenderType peRenderType; - switch (renderType) { - case INTEGER: - peRenderType = WrapperPlayServerScoreboardObjective.RenderType.INTEGER; - break; - case HEARTS: - peRenderType = WrapperPlayServerScoreboardObjective.RenderType.HEARTS; - break; - default: - throw new IllegalStateException(); - } - - return new WrapperPlayServerScoreboardObjective( - objectiveName, - peMode, - GlobalTranslator.render(value, locale), - peRenderType, - ScoreFormatConverter.convert(locale, format) - ); - } -} diff --git a/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/PacketAdapterProviderImpl.java b/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/PacketAdapterProviderImpl.java deleted file mode 100644 index 98f97bd..0000000 --- a/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/PacketAdapterProviderImpl.java +++ /dev/null @@ -1,56 +0,0 @@ -package net.megavex.scoreboardlibrary.implementation.packetAdapter.packetevents; - -import com.github.retrooper.packetevents.PacketEvents; -import com.github.retrooper.packetevents.PacketEventsAPI; -import com.github.retrooper.packetevents.manager.server.ServerVersion; -import net.megavex.scoreboardlibrary.implementation.commons.LineRenderingStrategy; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.PacketAdapterProvider; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.objective.ObjectivePacketAdapter; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.packetevents.team.TeamsPacketAdapterImpl; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.team.TeamsPacketAdapter; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -@SuppressWarnings("unused") -public class PacketAdapterProviderImpl implements PacketAdapterProvider { - private final PacketEventsAPI packetEvents; - private final PacketEventsSender packetSender; - - public PacketAdapterProviderImpl() { - this.packetEvents = PacketEvents.getAPI(); - if (this.packetEvents == null) { - throw new IllegalStateException("PacketEvents exists in classpath but isn't loaded"); - } - this.packetSender = new PacketEventsSender(this.packetEvents); - } - - @Override - public @NotNull TeamsPacketAdapter createTeamPacketAdapter(@NotNull String teamName) { - return new TeamsPacketAdapterImpl(packetSender, teamName); - } - - @Override - public @NotNull ObjectivePacketAdapter createObjectiveAdapter(@NotNull String objectiveName) { - return new ObjectivePacketAdapterImpl(packetSender, packetEvents, objectiveName); - } - - @Override - public @NotNull LineRenderingStrategy lineRenderingStrategy(@NotNull Player player) { - ServerVersion serverVer = packetEvents.getServerManager().getVersion(); - return serverVer.isNewerThanOrEquals(ServerVersion.V_1_13) ? LineRenderingStrategy.MODERN : LineRenderingStrategy.LEGACY; - - // Waiting for packetevents to fix https://github.com/retrooper/packetevents/issues/1024 - /* - if (serverVer.isOlderThan(ServerVersion.V_1_13)) { - return LineRenderingStrategy.LEGACY; - } - - if (Bukkit.getServer().getPluginManager().isPluginEnabled("ProtocolSupport")) { - return LineRenderingStrategy.MODERN; - } - - ClientVersion clientVer = packetEvents.getPlayerManager().getClientVersion(player); - return clientVer.isNewerThanOrEquals(ClientVersion.V_1_13) ? LineRenderingStrategy.MODERN : LineRenderingStrategy.LEGACY; - */ - } -} diff --git a/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/PacketEventsSender.java b/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/PacketEventsSender.java deleted file mode 100644 index bccc739..0000000 --- a/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/PacketEventsSender.java +++ /dev/null @@ -1,65 +0,0 @@ -package net.megavex.scoreboardlibrary.implementation.packetAdapter.packetevents; - -import com.github.retrooper.packetevents.PacketEventsAPI; -import com.github.retrooper.packetevents.manager.server.ServerVersion; -import com.github.retrooper.packetevents.netty.buffer.ByteBufHelper; -import com.github.retrooper.packetevents.netty.channel.ChannelHelper; -import com.github.retrooper.packetevents.protocol.player.ClientVersion; -import com.github.retrooper.packetevents.protocol.player.User; -import com.github.retrooper.packetevents.wrapper.PacketWrapper; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.PacketSender; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -import java.util.Objects; - -public class PacketEventsSender implements PacketSender> { - private final PacketEventsAPI packetEvents; - - public PacketEventsSender(@NotNull PacketEventsAPI packetEvents) { - this.packetEvents = packetEvents; - } - - //@SuppressWarnings("UnstableApiUsage, deprecation") - @Override - public void sendPacket(Player player, PacketWrapper packet) { - packetEvents.getPlayerManager().sendPacket(player, packet); - - /* - ServerVersion serverVer = packetEvents.getServerManager().getVersion(); - ClientVersion clientVer = packetEvents.getPlayerManager().getClientVersion(player); - if (serverVer.isOlderThan(ServerVersion.V_1_13) || clientVer.isNewerThanOrEquals(ClientVersion.V_1_13)) { - packetEvents.getPlayerManager().sendPacket(player, packet); - return; - } - - // This is a hack to send packets directly skipping plugins such as ViaVersion and ViaRewind - // Based on https://discord.com/channels/721686193061888071/755472595096174873/1193239879560212520 - // (PacketEvents Discord) - - User user = packetEvents.getPlayerManager().getUser(player); - if (user == null) { - return; - } - - Object channel = user.getChannel(); - if (!ChannelHelper.isOpen(channel)) { - return; - } - - String viaEncoder = "via-encoder"; - if (ChannelHelper.getPipelineHandler(channel, viaEncoder) == null) { - packetEvents.getPlayerManager().sendPacket(player, packet); - return; - } - - packet.buffer = ChannelHelper.pooledByteBuf(channel); - - int id = Objects.requireNonNull(packet.getPacketTypeData().getPacketType()).getId(user.getClientVersion()); - ByteBufHelper.writeVarInt(packet.buffer, id); - packet.setServerVersion(clientVer.toServerVersion()); - packet.write(); - ChannelHelper.writeAndFlushInContext(channel, viaEncoder, packet.buffer); - */ - } -} diff --git a/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/ScoreFormatConverter.java b/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/ScoreFormatConverter.java deleted file mode 100644 index 471aa81..0000000 --- a/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/ScoreFormatConverter.java +++ /dev/null @@ -1,31 +0,0 @@ -package net.megavex.scoreboardlibrary.implementation.packetAdapter.packetevents; - -import net.kyori.adventure.translation.GlobalTranslator; -import net.megavex.scoreboardlibrary.api.objective.ScoreFormat; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.Locale; - -import static com.github.retrooper.packetevents.protocol.score.ScoreFormat.*; - -public final class ScoreFormatConverter { - private ScoreFormatConverter() { - } - - public static @Nullable com.github.retrooper.packetevents.protocol.score.ScoreFormat convert(@NotNull Locale locale, @Nullable ScoreFormat format) { - if (format == null) { - return null; - } - - if (format == ScoreFormat.blank()) { - return blankScore(); - } else if (format instanceof ScoreFormat.Styled) { - return styledScore(((ScoreFormat.Styled) format).style()); - } else if (format instanceof ScoreFormat.Fixed) { - return fixedScore(GlobalTranslator.render(((ScoreFormat.Fixed) format).content(), locale)); - } else { - throw new IllegalArgumentException("Invalid score format: " + format); - } - } -} diff --git a/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/team/AbstractTeamDisplayPacketAdapter.java b/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/team/AbstractTeamDisplayPacketAdapter.java deleted file mode 100644 index 50755f5..0000000 --- a/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/team/AbstractTeamDisplayPacketAdapter.java +++ /dev/null @@ -1,61 +0,0 @@ -package net.megavex.scoreboardlibrary.implementation.packetAdapter.packetevents.team; - -import com.github.retrooper.packetevents.wrapper.PacketWrapper; -import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerTeams; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.ImmutableTeamProperties; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.PacketSender; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.PropertiesPacketType; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.team.EntriesPacketType; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.team.TeamDisplayPacketAdapter; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -import java.util.Collection; - -public abstract class AbstractTeamDisplayPacketAdapter implements TeamDisplayPacketAdapter { - protected final PacketSender> sender; - protected final String teamName; - protected final ImmutableTeamProperties properties; - - public AbstractTeamDisplayPacketAdapter(@NotNull PacketSender> sender, @NotNull String teamName, @NotNull ImmutableTeamProperties properties) { - this.sender = sender; - this.teamName = teamName; - this.properties = properties; - } - - @Override - public void sendEntries(@NotNull EntriesPacketType packetType, @NotNull Collection players, @NotNull Collection entries) { - WrapperPlayServerTeams.TeamMode peMode; - switch (packetType) { - case ADD: - peMode = WrapperPlayServerTeams.TeamMode.ADD_ENTITIES; - break; - case REMOVE: - peMode = WrapperPlayServerTeams.TeamMode.REMOVE_ENTITIES; - break; - default: - throw new IllegalStateException(); - } - - sender.sendPacket( - players, - new WrapperPlayServerTeams( - teamName, - peMode, - (WrapperPlayServerTeams.ScoreBoardTeamInfo) null, - entries - ) - ); - } - - protected @NotNull WrapperPlayServerTeams.TeamMode mode(@NotNull PropertiesPacketType packetType) { - switch (packetType) { - case CREATE: - return WrapperPlayServerTeams.TeamMode.CREATE; - case UPDATE: - return WrapperPlayServerTeams.TeamMode.UPDATE; - default: - throw new IllegalStateException(); - } - } -} diff --git a/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/team/AdventureTeamDisplayPacketAdapter.java b/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/team/AdventureTeamDisplayPacketAdapter.java deleted file mode 100644 index 8b3ffc2..0000000 --- a/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/team/AdventureTeamDisplayPacketAdapter.java +++ /dev/null @@ -1,55 +0,0 @@ -package net.megavex.scoreboardlibrary.implementation.packetAdapter.packetevents.team; - -import com.github.retrooper.packetevents.wrapper.PacketWrapper; -import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerTeams; -import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.format.NamedTextColor; -import net.kyori.adventure.translation.GlobalTranslator; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.ImmutableTeamProperties; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.PacketSender; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.PropertiesPacketType; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.util.LocalePacketUtil; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -import java.util.Collection; - -public class AdventureTeamDisplayPacketAdapter extends AbstractTeamDisplayPacketAdapter { - public AdventureTeamDisplayPacketAdapter(@NotNull PacketSender> sender, @NotNull String teamName, @NotNull ImmutableTeamProperties properties) { - super(sender, teamName, properties); - } - - @Override - public void sendProperties(@NotNull PropertiesPacketType packetType, @NotNull Collection players) { - LocalePacketUtil.sendLocalePackets( - sender, - players, - locale -> { - Component displayName = GlobalTranslator.render(properties.displayName(), locale); - Component prefix = GlobalTranslator.render(properties.prefix(), locale); - Component suffix = GlobalTranslator.render(properties.suffix(), locale); - WrapperPlayServerTeams.NameTagVisibility nameTagVisibility = WrapperPlayServerTeams.NameTagVisibility.values()[properties.nameTagVisibility().ordinal()]; - WrapperPlayServerTeams.CollisionRule collisionRule = WrapperPlayServerTeams.CollisionRule.values()[properties.collisionRule().ordinal()]; - NamedTextColor color = properties.playerColor() != null ? properties.playerColor() : NamedTextColor.WHITE; - WrapperPlayServerTeams.OptionData optionData = WrapperPlayServerTeams.OptionData.fromValue((byte) properties.packOptions()); - - WrapperPlayServerTeams.ScoreBoardTeamInfo info = new WrapperPlayServerTeams.ScoreBoardTeamInfo( - displayName, - prefix, - suffix, - nameTagVisibility, - collisionRule, - color, - optionData - ); - - return new WrapperPlayServerTeams( - teamName, - mode(packetType), - info, - properties.syncedEntries() - ); - }); - } -} - diff --git a/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/team/LegacyTeamDisplayPacketAdapter.java b/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/team/LegacyTeamDisplayPacketAdapter.java deleted file mode 100644 index 56d3339..0000000 --- a/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/team/LegacyTeamDisplayPacketAdapter.java +++ /dev/null @@ -1,31 +0,0 @@ -package net.megavex.scoreboardlibrary.implementation.packetAdapter.packetevents.team; - -import com.github.retrooper.packetevents.wrapper.PacketWrapper; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.ImmutableTeamProperties; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.PacketSender; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.PropertiesPacketType; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.util.LocalePacketUtil; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -import java.util.Collection; - -public class LegacyTeamDisplayPacketAdapter extends AbstractTeamDisplayPacketAdapter { - public LegacyTeamDisplayPacketAdapter(@NotNull PacketSender> sender, @NotNull String teamName, @NotNull ImmutableTeamProperties properties) { - super(sender, teamName, properties); - } - - @Override - public void sendProperties(@NotNull PropertiesPacketType packetType, @NotNull Collection players) { - LocalePacketUtil.sendLocalePackets( - sender, - players, - locale -> new WrapperPlayServerTeamsLegacy( - teamName, - properties, - mode(packetType) - ) - ); - } -} - diff --git a/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/team/TeamsPacketAdapterImpl.java b/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/team/TeamsPacketAdapterImpl.java deleted file mode 100644 index 3bc3eca..0000000 --- a/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/team/TeamsPacketAdapterImpl.java +++ /dev/null @@ -1,45 +0,0 @@ -package net.megavex.scoreboardlibrary.implementation.packetAdapter.packetevents.team; - -import com.github.retrooper.packetevents.wrapper.PacketWrapper; -import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerTeams; -import net.kyori.adventure.text.Component; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.ImmutableTeamProperties; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.PacketSender; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.team.TeamDisplayPacketAdapter; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.team.TeamsPacketAdapter; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -public class TeamsPacketAdapterImpl implements TeamsPacketAdapter { - private final PacketSender> sender; - private final String teamName; - private WrapperPlayServerTeams removePacket; - - public TeamsPacketAdapterImpl(PacketSender> sender, String teamName) { - this.sender = sender; - this.teamName = teamName; - } - - @Override - public void removeTeam(@NotNull Iterable players) { - if (removePacket == null) { - removePacket = new WrapperPlayServerTeams( - teamName, - WrapperPlayServerTeams.TeamMode.REMOVE, - (WrapperPlayServerTeams.ScoreBoardTeamInfo) null - ); - } - - sender.sendPacket(players, removePacket); - } - - @Override - public @NotNull TeamDisplayPacketAdapter createTeamDisplayAdapter(@NotNull ImmutableTeamProperties properties) { - return new AdventureTeamDisplayPacketAdapter(sender, teamName, properties); - } - - @Override - public @NotNull TeamDisplayPacketAdapter createLegacyTeamDisplayAdapter(@NotNull ImmutableTeamProperties properties) { - return new LegacyTeamDisplayPacketAdapter(sender, teamName, properties); - } -} diff --git a/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/team/WrapperPlayServerTeamsLegacy.java b/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/team/WrapperPlayServerTeamsLegacy.java deleted file mode 100644 index 8171e8e..0000000 --- a/versions/packetevents/src/main/java/net/megavex/scoreboardlibrary/implementation/packetAdapter/packetevents/team/WrapperPlayServerTeamsLegacy.java +++ /dev/null @@ -1,60 +0,0 @@ -package net.megavex.scoreboardlibrary.implementation.packetAdapter.packetevents.team; - -import com.github.retrooper.packetevents.manager.server.ServerVersion; -import com.github.retrooper.packetevents.protocol.packettype.PacketType; -import com.github.retrooper.packetevents.util.ColorUtil; -import com.github.retrooper.packetevents.wrapper.PacketWrapper; -import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerTeams; -import com.google.common.base.Preconditions; -import net.megavex.scoreboardlibrary.api.team.enums.NameTagVisibility; -import net.megavex.scoreboardlibrary.implementation.packetAdapter.ImmutableTeamProperties; - -public class WrapperPlayServerTeamsLegacy extends PacketWrapper { - private final String teamName; - private final ImmutableTeamProperties properties; - private final WrapperPlayServerTeams.TeamMode teamMode; - - public WrapperPlayServerTeamsLegacy(String teamName, ImmutableTeamProperties properties, WrapperPlayServerTeams.TeamMode teamMode) { - super(PacketType.Play.Server.TEAMS); - this.teamName = teamName; - this.properties = properties; - Preconditions.checkArgument(teamMode == WrapperPlayServerTeams.TeamMode.CREATE || teamMode == WrapperPlayServerTeams.TeamMode.UPDATE); - this.teamMode = teamMode; - } - - @Override - public void write() { - if (serverVersion.isNewerThanOrEquals(ServerVersion.V_1_13)) { - throw new IllegalStateException("Tried to serialize legacy teams packet on 1.13+ server version"); - } - - writeString(teamName, 16); - writeByte(teamMode.ordinal()); - writeString(properties.displayName()); - writeString(properties.prefix()); - writeString(properties.suffix()); - writeByte(properties.packOptions()); - if (serverVersion == ServerVersion.V_1_7_10) { - writeString(NameTagVisibility.ALWAYS.key()); - writeByte(15); - } else { - writeString(properties.nameTagVisibility().key()); - if (serverVersion.isNewerThanOrEquals(ServerVersion.V_1_9)) { - writeString(properties.collisionRule().key()); - } - writeByte(ColorUtil.getId(properties.playerColor())); - } - - if (teamMode == WrapperPlayServerTeams.TeamMode.CREATE) { - if (serverVersion == ServerVersion.V_1_7_10) { - writeShort(properties.syncedEntries().size()); - } else { - writeVarInt(properties.syncedEntries().size()); - } - - for (String entry : properties.syncedEntries()) { - writeString(entry); - } - } - } -}