Skip to content

Commit 8d859e6

Browse files
committed
refactor: move via stuff out to a separate class
Avoids blowing things up when ViaVersion isn't present. Signed-off-by: TTtie <me@tttie.cz>
1 parent 13a2515 commit 8d859e6

File tree

3 files changed

+52
-39
lines changed

3 files changed

+52
-39
lines changed

platform/platform-modern/src/main/java/dev/pgm/community/platform/modern/feature/ModernServerLinksPlatform.java renamed to platform/platform-modern/src/main/java/dev/pgm/community/platform/modern/feature/serverlinks/ModernServerLinksPlatform.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package dev.pgm.community.platform.modern.feature;
1+
package dev.pgm.community.platform.modern.feature.serverlinks;
22

33
import static dev.pgm.community.util.Supports.Variant.PAPER;
44

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package dev.pgm.community.platform.sportpaper.features.serverlinks;
2+
3+
import static dev.pgm.community.util.Supports.Variant.SPORTPAPER;
4+
5+
import dev.pgm.community.serverlinks.ServerLinksFeature;
6+
import dev.pgm.community.serverlinks.types.ServerLink;
7+
import dev.pgm.community.util.Supports;
8+
import java.util.List;
9+
import org.bukkit.entity.Player;
10+
11+
@Supports(SPORTPAPER)
12+
public class SpServerLinksPlatform implements ServerLinksFeature.ServerLinksPlatform {
13+
private static final boolean HAS_VIA = hasVia();
14+
15+
private static boolean hasVia() {
16+
try {
17+
Class.forName("com.viaversion.viaversion.api.Via");
18+
return true;
19+
} catch (ClassNotFoundException e) {
20+
return false;
21+
}
22+
}
23+
24+
@Override
25+
public boolean isSupported() {
26+
return HAS_VIA;
27+
}
28+
29+
@Override
30+
public void sendToPlayer(Player player, List<ServerLink> serverLinks) {
31+
if (HAS_VIA) {
32+
ViaServerLinks.sendToPlayer(player, serverLinks);
33+
}
34+
}
35+
}

platform/platform-sportpaper/src/main/java/dev/pgm/community/platform/sportpaper/features/SpServerLinksPlatform.java renamed to platform/platform-sportpaper/src/main/java/dev/pgm/community/platform/sportpaper/features/serverlinks/ViaServerLinks.java

Lines changed: 16 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
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

53
import com.viaversion.nbt.tag.Tag;
64
import com.viaversion.viaversion.api.Via;
@@ -12,49 +10,29 @@
1210
import com.viaversion.viaversion.api.type.Types;
1311
import com.viaversion.viaversion.libs.gson.JsonParser;
1412
import com.viaversion.viaversion.libs.mcstructs.text.utils.JsonNbtConverter;
15-
import dev.pgm.community.serverlinks.ServerLinksFeature;
1613
import dev.pgm.community.serverlinks.types.ServerLink;
17-
import dev.pgm.community.util.Supports;
1814
import java.util.List;
1915
import net.kyori.adventure.text.Component;
2016
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
2117
import 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

Comments
 (0)