From 81c4e530e91c45fba9af4a194dd45da668aa04b4 Mon Sep 17 00:00:00 2001 From: Nassim Jahnke Date: Wed, 15 Mar 2023 16:15:21 +0100 Subject: [PATCH] Possibly fix joinlistener on 1.19.4 Spigot --- .../viaversion/bukkit/listeners/JoinListener.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/JoinListener.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/JoinListener.java index 9c22e55f0..2f395ae8f 100644 --- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/JoinListener.java +++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/JoinListener.java @@ -25,6 +25,7 @@ import com.viaversion.viaversion.bukkit.util.NMSUtil; import io.netty.channel.Channel; import java.lang.reflect.Field; import java.lang.reflect.Method; +import java.lang.reflect.Modifier; import java.util.logging.Level; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -48,6 +49,9 @@ public class JoinListener implements Listener { conn = findField(gh.getReturnType(), "PlayerConnection", "ServerGamePacketListenerImpl"); nm = findField(conn.getType(), "NetworkManager", "Connection"); ch = findField(nm.getType(), "Channel"); + if (!Modifier.isPublic(nm.getModifiers())) { + nm.setAccessible(true); + } } catch (NoSuchMethodException | NoSuchFieldException | ClassNotFoundException e) { Via.getPlatform().getLogger().log( Level.WARNING, @@ -64,9 +68,11 @@ public class JoinListener implements Listener { // Loosely search a field with any name, as long as it matches a type name. private static Field findField(Class cl, String... types) throws NoSuchFieldException { for (Field field : cl.getDeclaredFields()) { - for (String type : types) - if (field.getType().getSimpleName().equals(type)) + for (String type : types) { + if (field.getType().getSimpleName().equals(type)) { return field; + } + } } throw new NoSuchFieldException(types[0]); }