1- package dev .pgm .community .platform .sportpaper .features ;
2-
3- import static dev .pgm .community .util .Supports .Variant .SPORTPAPER ;
1+ package dev .pgm .community .platform .sportpaper .features .serverlinks ;
42
53import com .viaversion .nbt .tag .Tag ;
64import com .viaversion .viaversion .api .Via ;
1210import com .viaversion .viaversion .api .type .Types ;
1311import com .viaversion .viaversion .libs .gson .JsonParser ;
1412import com .viaversion .viaversion .libs .mcstructs .text .utils .JsonNbtConverter ;
15- import dev .pgm .community .serverlinks .ServerLinksFeature ;
1613import dev .pgm .community .serverlinks .types .ServerLink ;
17- import dev .pgm .community .util .Supports ;
1814import java .util .List ;
1915import net .kyori .adventure .text .Component ;
2016import net .kyori .adventure .text .serializer .gson .GsonComponentSerializer ;
2117import org .bukkit .entity .Player ;
2218
23- @ Supports (SPORTPAPER )
24- public class SpServerLinksPlatform implements ServerLinksFeature .ServerLinksPlatform {
25- private final Protocol <?, ?, ?, ?> serverLinkProtocol = findServerLinkProtocol ();
26- private static final boolean hasVia = hasVia ();
27-
28- private static boolean hasVia () {
29- try {
30- Class .forName ("com.viaversion.viaversion.api.Via" );
31- return true ;
32- } catch (ClassNotFoundException e ) {
33- return false ;
34- }
35- }
19+ public class ViaServerLinks {
20+ private static final Protocol <?, ?, ?, ?> serverLinkProtocol = findServerLinkProtocol ();
3621
37- @ Override
38- public boolean isSupported () {
39- return hasVia ;
40- }
41-
42- @ Override
43- public void sendToPlayer (Player player , List <ServerLink > serverLinks ) {
44- if (hasVia && Via .getAPI ().isInjected (player .getUniqueId ())) {
45- UserConnection userConnection = Via .getAPI ().getConnection (player .getUniqueId ());
46- if (userConnection != null
47- && userConnection
48- .getProtocolInfo ()
49- .protocolVersion ()
50- .newerThanOrEqualTo (ProtocolVersion .v1_21 )) {
51- PacketWrapper serverLinksPacket = createPacket (userConnection , serverLinks );
52- serverLinksPacket .scheduleSend (serverLinkProtocol .getClass ());
53- }
22+ public static void sendToPlayer (Player player , List <ServerLink > serverLinks ) {
23+ if (!Via .getAPI ().isInjected (player .getUniqueId ())) return ;
24+ UserConnection userConnection = Via .getAPI ().getConnection (player .getUniqueId ());
25+ if (userConnection != null
26+ && userConnection
27+ .getProtocolInfo ()
28+ .protocolVersion ()
29+ .newerThanOrEqualTo (ProtocolVersion .v1_21 )) {
30+ PacketWrapper serverLinksPacket = createPacket (userConnection , serverLinks );
31+ serverLinksPacket .scheduleSend (serverLinkProtocol .getClass ());
5432 }
5533 }
5634
57- private PacketWrapper createPacket (UserConnection conn , List <ServerLink > links ) {
35+ private static PacketWrapper createPacket (UserConnection conn , List <ServerLink > links ) {
5836 var packetTypes = serverLinkProtocol .getPacketTypesProvider ().mappedClientboundPacketTypes ();
5937 var packetType = packetTypes .get (State .PLAY ).typeByName ("SERVER_LINKS" );
6038 PacketWrapper packet = PacketWrapper .create (packetType , conn );
@@ -73,12 +51,12 @@ private PacketWrapper createPacket(UserConnection conn, List<ServerLink> links)
7351 return packet ;
7452 }
7553
76- private Tag toViaTag (Component component ) {
54+ private static Tag toViaTag (Component component ) {
7755 return JsonNbtConverter .toNbt (
7856 JsonParser .parseString (GsonComponentSerializer .gson ().serialize (component )));
7957 }
8058
81- private Protocol <?, ?, ?, ?> findServerLinkProtocol () {
59+ private static Protocol <?, ?, ?, ?> findServerLinkProtocol () {
8260 return Via .getManager ()
8361 .getProtocolManager ()
8462 .getProtocol (/* to */ ProtocolVersion .v1_21 , /* from */ ProtocolVersion .v1_20_5 );
0 commit comments