From fad350c8118326e9914d6854819b594baa0781e0 Mon Sep 17 00:00:00 2001 From: Nassim Jahnke Date: Thu, 3 Nov 2022 18:30:59 +0100 Subject: [PATCH] Small refactoring --- .../bukkit/compat/ProtocolSupportCompat.java | 38 +++++++++---------- .../ProtocolSupportConnectionListener.java | 7 +--- .../bukkit/platform/BukkitViaLoader.java | 2 +- .../viaversion/bukkit/util/NMSUtil.java | 4 -- .../packets/EntityPackets.java | 11 +----- 5 files changed, 22 insertions(+), 40 deletions(-) diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/compat/ProtocolSupportCompat.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/compat/ProtocolSupportCompat.java index 67100ecd4..e47a634fc 100644 --- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/compat/ProtocolSupportCompat.java +++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/compat/ProtocolSupportCompat.java @@ -30,24 +30,22 @@ import java.util.logging.Level; public final class ProtocolSupportCompat { public static void registerPSConnectListener(ViaVersionPlugin plugin) { - if (isMultiplatformPS()) { - Via.getPlatform().getLogger().info("Registering ProtocolSupport compat connection listener"); - try { - //noinspection unchecked - Class connectionOpenEvent = (Class) Class.forName("protocolsupport.api.events.ConnectionOpenEvent"); - Bukkit.getPluginManager().registerEvent(connectionOpenEvent, new Listener() { - }, EventPriority.HIGH, (listener, event) -> { - try { - Object connection = event.getClass().getMethod("getConnection").invoke(event); - ProtocolSupportConnectionListener connectListener = new ProtocolSupportConnectionListener(connection); - ProtocolSupportConnectionListener.ADD_PACKET_LISTENER_METHOD.invoke(connection, connectListener); - } catch (Exception e) { - Via.getPlatform().getLogger().log(Level.WARNING, "Error when handling ProtocolSupport event", e); - } - }, plugin); - } catch (Exception e) { - Via.getPlatform().getLogger().log(Level.WARNING, "Unable to register ProtocolSupport listener", e); - } + Via.getPlatform().getLogger().info("Registering ProtocolSupport compat connection listener"); + try { + //noinspection unchecked + Class connectionOpenEvent = (Class) Class.forName("protocolsupport.api.events.ConnectionOpenEvent"); + Bukkit.getPluginManager().registerEvent(connectionOpenEvent, new Listener() { + }, EventPriority.HIGH, (listener, event) -> { + try { + Object connection = event.getClass().getMethod("getConnection").invoke(event); + ProtocolSupportConnectionListener connectListener = new ProtocolSupportConnectionListener(connection); + ProtocolSupportConnectionListener.ADD_PACKET_LISTENER_METHOD.invoke(connection, connectListener); + } catch (ReflectiveOperationException e) { + Via.getPlatform().getLogger().log(Level.WARNING, "Error when handling ProtocolSupport event", e); + } + }, plugin); + } catch (ClassNotFoundException e) { + Via.getPlatform().getLogger().log(Level.WARNING, "Unable to register ProtocolSupport listener", e); } } @@ -60,7 +58,7 @@ public final class ProtocolSupportCompat { } } - public static HandshakeProtocolType handshakeVersionMethod() { + static HandshakeProtocolType handshakeVersionMethod() { Class clazz = null; // Check for the mapped method try { @@ -88,7 +86,7 @@ public final class ProtocolSupportCompat { } } - public enum HandshakeProtocolType { + enum HandshakeProtocolType { MAPPED("getProtocolVersion"), OBFUSCATED_B("b"), diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/compat/ProtocolSupportConnectionListener.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/compat/ProtocolSupportConnectionListener.java index 2dada8e77..2c37784df 100644 --- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/compat/ProtocolSupportConnectionListener.java +++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/compat/ProtocolSupportConnectionListener.java @@ -70,12 +70,7 @@ final class ProtocolSupportConnectionListener extends Connection.PacketListener // Check if we are getting handshake packet. if (HANDSHAKE_PACKET_CLASS.isInstance(event.getPacket()) && GET_VERSION_METHOD.invoke(connection) == PROTOCOL_VERSION_MINECRAFT_FUTURE) { final Object packet = event.getPacket(); - final int protocolVersion; - try { - protocolVersion = (int) HANDSHAKE_PACKET_CLASS.getDeclaredMethod(ProtocolSupportCompat.handshakeVersionMethod().methodName()).invoke(packet); - } catch (final ReflectiveOperationException e) { - throw new RuntimeException(e); - } + final int protocolVersion = (int) HANDSHAKE_PACKET_CLASS.getDeclaredMethod(ProtocolSupportCompat.handshakeVersionMethod().methodName()).invoke(packet); // ViaVersion has at this point already spoofed the connectionversion. (Since it is higher up the pipeline) // If via has put the protoVersion to the server we can spoof ProtocolSupport's version. diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaLoader.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaLoader.java index 03ae1f0c4..6b9f06536 100644 --- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaLoader.java +++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaLoader.java @@ -88,7 +88,7 @@ public class BukkitViaLoader implements ViaPlatformLoader { final ViaVersionPlugin plugin = (ViaVersionPlugin) Bukkit.getPluginManager().getPlugin("ViaVersion"); // Add ProtocolSupport ConnectListener if necessary. - if (plugin.isProtocolSupport()) { + if (plugin.isProtocolSupport() && ProtocolSupportCompat.isMultiplatformPS()) { ProtocolSupportCompat.registerPSConnectListener(plugin); } diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/util/NMSUtil.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/util/NMSUtil.java index f38434403..09689dc73 100644 --- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/util/NMSUtil.java +++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/util/NMSUtil.java @@ -53,10 +53,6 @@ public class NMSUtil { return Class.forName(BASE + "." + className); } - public static String getVersion() { - return BASE.substring(BASE.lastIndexOf('.') + 1); - } - /** * @return true if debug=true is set in the server.properties (added by CB) */ diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/packets/EntityPackets.java index db2f6437a..d9f02126e 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/packets/EntityPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/packets/EntityPackets.java @@ -18,7 +18,6 @@ package com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.packets; import com.google.gson.JsonElement; -import com.viaversion.viaversion.api.minecraft.ProfileKey; import com.viaversion.viaversion.api.minecraft.entities.Entity1_19_3Types; import com.viaversion.viaversion.api.minecraft.entities.EntityType; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; @@ -125,15 +124,9 @@ public final class EntityPackets extends EntityRewriter final int gamemode = wrapper.read(Type.VAR_INT); final int ping = wrapper.read(Type.VAR_INT); final JsonElement displayName = wrapper.read(Type.OPTIONAL_COMPONENT); - final ProfileKey profileKey = wrapper.read(Type.OPTIONAL_PROFILE_KEY); - if (profileKey != null) { - wrapper.write(Type.BOOLEAN, true); - wrapper.write(Type.UUID, UUID.randomUUID()); - wrapper.write(Type.PROFILE_KEY, profileKey); - } else { - wrapper.write(Type.BOOLEAN, false); - } + wrapper.read(Type.OPTIONAL_PROFILE_KEY); + wrapper.write(Type.BOOLEAN, false); // No chat session data wrapper.write(Type.VAR_INT, gamemode); wrapper.write(Type.BOOLEAN, true); // Also update listed wrapper.write(Type.VAR_INT, ping);