From 47d451362bc728b97f22ad07af475f58a1bb8443 Mon Sep 17 00:00:00 2001 From: cirsius Date: Wed, 11 Feb 2026 05:33:20 -0600 Subject: [PATCH] fix NullPointerException when geyser dispatches ProxyPingEvent with a null virtual host --- .../bungee/OriginBlacklistBungee.java | 9 ++++++--- .../velocity/OriginBlacklistVelocity.java | 16 +++++++++------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/main/java/xyz/webmc/originblacklist/bungee/OriginBlacklistBungee.java b/src/main/java/xyz/webmc/originblacklist/bungee/OriginBlacklistBungee.java index 978334f..954f522 100644 --- a/src/main/java/xyz/webmc/originblacklist/bungee/OriginBlacklistBungee.java +++ b/src/main/java/xyz/webmc/originblacklist/bungee/OriginBlacklistBungee.java @@ -94,8 +94,9 @@ public final void onJavaLogin(final PostLoginEvent event) { final PendingConnection conn = event.getPlayer().getPendingConnection(); final InetSocketAddress vhost = conn.getVirtualHost(); final ProxiedPlayer aPlayer = event.getPlayer(); + final String origin = vhost != null ? vhost.getHostString() + vhost.getPort() : OriginBlacklist.UNKNOWN_STR; final OPlayer bPlayer = new OPlayer(null, aPlayer.getName(), aPlayer.getUniqueId(), - aPlayer.getAddress().toString(), aPlayer.getClientBrand(), vhost.getHostString() + vhost.getPort(), + aPlayer.getAddress().toString(), aPlayer.getClientBrand(), origin, conn.getVersion()); this.blacklist.handleLogin(new OriginBlacklistLoginEvent(null, event, EnumConnectionType.JAVA, bPlayer)); } @@ -104,8 +105,9 @@ public final void onJavaLogin(final PostLoginEvent event) { public final void onJavaHandshake(final PreLoginEvent event) { final PendingConnection conn = event.getConnection(); final InetSocketAddress vhost = conn.getVirtualHost(); + final String origin = vhost != null ? vhost.getHostString() + vhost.getPort() : OriginBlacklist.UNKNOWN_STR; final OPlayer player = new OPlayer(null, null, null, conn.getAddress().toString(), OriginBlacklist.UNKNOWN_STR, - vhost.getHostString() + vhost.getPort(), conn.getVersion()); + origin, conn.getVersion()); this.blacklist.handleLogin(new OriginBlacklistLoginEvent(null, event, EnumConnectionType.JAVA, player)); } @@ -113,8 +115,9 @@ public final void onJavaHandshake(final PreLoginEvent event) { public final void onJavaMOTD(final ProxyPingEvent event) { final PendingConnection conn = event.getConnection(); final InetSocketAddress vhost = conn.getVirtualHost(); + final String origin = vhost != null ? vhost.getHostString() + vhost.getPort() : OriginBlacklist.UNKNOWN_STR; final OPlayer player = new OPlayer(null, null, null, conn.getAddress().toString(), null, - vhost.getHostString() + vhost.getPort(), -1); + origin, -1); this.blacklist.handleMOTD(new OriginBlacklistMOTDEvent(null, event, EnumConnectionType.JAVA, player)); } diff --git a/src/main/java/xyz/webmc/originblacklist/velocity/OriginBlacklistVelocity.java b/src/main/java/xyz/webmc/originblacklist/velocity/OriginBlacklistVelocity.java index 787abd2..e77208a 100644 --- a/src/main/java/xyz/webmc/originblacklist/velocity/OriginBlacklistVelocity.java +++ b/src/main/java/xyz/webmc/originblacklist/velocity/OriginBlacklistVelocity.java @@ -108,19 +108,21 @@ public final void onEaglerMOTD(final EaglercraftMOTDEvent event) { @Subscribe(order = PostOrder.FIRST) public final void onJavaLogin(final PreLoginEvent event) { final InboundConnection conn = event.getConnection(); - final InetSocketAddress vhost = conn.getVirtualHost().orElseThrow(); + final InetSocketAddress vhost = conn.getVirtualHost().orElse(null); + final String origin = vhost != null ? vhost.getHostString() + vhost.getPort() : OriginBlacklist.UNKNOWN_STR; final OPlayer player = new OPlayer(null, event.getUsername(), event.getUniqueId(), - conn.getRemoteAddress().toString(), OriginBlacklist.UNKNOWN_STR, vhost.getHostString() + vhost.getPort(), + conn.getRemoteAddress().toString(), OriginBlacklist.UNKNOWN_STR, origin, conn.getProtocolVersion().getProtocol()); this.blacklist.handleLogin(new OriginBlacklistLoginEvent(null, event, EnumConnectionType.JAVA, player)); } @Subscribe(order = PostOrder.FIRST) public final void onJavaHandshake(final PlayerClientBrandEvent event) { - final InetSocketAddress vhost = event.getPlayer().getVirtualHost().orElseThrow(); + final InetSocketAddress vhost = event.getPlayer().getVirtualHost().orElse(null); + final String origin = vhost != null ? vhost.getHostString() + vhost.getPort() : OriginBlacklist.UNKNOWN_STR; final Player aPlayer = event.getPlayer(); final OPlayer bPlayer = new OPlayer(null, aPlayer.getUsername(), aPlayer.getUniqueId(), - aPlayer.getRemoteAddress().getAddress().toString(), event.getBrand(), vhost.getHostString() + vhost.getPort(), + aPlayer.getRemoteAddress().getAddress().toString(), event.getBrand(), origin, event.getPlayer().getProtocolVersion().getProtocol()); this.blacklist.handleLogin(new OriginBlacklistLoginEvent(null, event, EnumConnectionType.JAVA, bPlayer)); } @@ -128,10 +130,10 @@ public final void onJavaHandshake(final PlayerClientBrandEvent event) { @Subscribe(order = PostOrder.LAST) public final void onJavaMOTD(final ProxyPingEvent event) { final InboundConnection conn = event.getConnection(); - final InetSocketAddress vhost = conn.getVirtualHost().orElseThrow(); + final InetSocketAddress vhost = conn.getVirtualHost().orElse(null); + final String origin = vhost != null ? vhost.getHostString() + vhost.getPort() : OriginBlacklist.UNKNOWN_STR; final OPlayer player = new OPlayer(null, null, null, conn.getRemoteAddress().getHostString(), - vhost.getHostString() + vhost.getPort(), - null, -1); + null, origin, -1); this.blacklist.handleMOTD(new OriginBlacklistMOTDEvent(null, event, EnumConnectionType.JAVA, player)); }