Waterfall/BungeeCord-Patches/0036-Fix-some-forge-plugin-message-packets-not-being-forw.patch
Shane Freeder 337ca7f887
Updated Upstream (BungeeCord)
Upstream has released updates that appears to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

BungeeCord Changes:
70038c91 Revert "#2714: Remove unnecessary throws in ServerConnector"
39ef20b2 #2716: Don't attempt to send kick packet during handshake phase
74a6aa32 #2714: Remove unnecessary throws in ServerConnector
c7984070 Misc dependency update
2019-12-05 11:53:03 +00:00

60 lines
2.8 KiB
Diff

From 2a7ba258faff6dedbaab0c2dbc5ce1aec78d7339 Mon Sep 17 00:00:00 2001
From: Daniel Naylor <git@drnaylor.co.uk>
Date: Mon, 17 Jul 2017 20:24:17 +0100
Subject: [PATCH] Fix some forge plugin message packets not being forwarded
correctly
This fixes #155, see SpongePowered/SpongeForge#1507
diff --git a/proxy/src/main/java/net/md_5/bungee/forge/ForgeClientHandshakeState.java b/proxy/src/main/java/net/md_5/bungee/forge/ForgeClientHandshakeState.java
index 52429265..5e02f8c8 100644
--- a/proxy/src/main/java/net/md_5/bungee/forge/ForgeClientHandshakeState.java
+++ b/proxy/src/main/java/net/md_5/bungee/forge/ForgeClientHandshakeState.java
@@ -171,7 +171,8 @@ enum ForgeClientHandshakeState implements IForgeClientPacketHandler<ForgeClientH
public ForgeClientHandshakeState handle(PluginMessage message, UserConnection con)
{
// Ack.
- if ( message.getData()[0] == -1 )
+ if (( message.getTag().equals( ForgeConstants.FML_HANDSHAKE_TAG ) && message.getData()[0] == -1 )
+ || message.getTag().equals( ForgeConstants.FORGE_REGISTER ))
{
ForgeLogger.logClient( ForgeLogger.LogDirection.RECEIVED, this.name(), message );
con.unsafe().sendPacket( message );
@@ -187,7 +188,7 @@ enum ForgeClientHandshakeState implements IForgeClientPacketHandler<ForgeClientH
}
},
/**
- * Handshake has been completed. Ignores any future handshake packets.
+ * Handshake has been completed. Ignores any future handshake packets, but not any FORGE packets.
*/
DONE
{
@@ -196,6 +197,11 @@ enum ForgeClientHandshakeState implements IForgeClientPacketHandler<ForgeClientH
public ForgeClientHandshakeState handle(PluginMessage message, UserConnection con)
{
ForgeLogger.logClient( ForgeLogger.LogDirection.RECEIVED, this.name(), message );
+ if ( message.getTag().equals( ForgeConstants.FORGE_REGISTER ))
+ {
+ con.unsafe().sendPacket( message );
+ }
+
return this;
}
diff --git a/proxy/src/main/java/net/md_5/bungee/forge/ForgeServerHandler.java b/proxy/src/main/java/net/md_5/bungee/forge/ForgeServerHandler.java
index 7166d061..b5b9ec70 100644
--- a/proxy/src/main/java/net/md_5/bungee/forge/ForgeServerHandler.java
+++ b/proxy/src/main/java/net/md_5/bungee/forge/ForgeServerHandler.java
@@ -50,7 +50,7 @@ public class ForgeServerHandler
ForgeServerHandshakeState prevState = state;
packetQueue.add( message );
state = state.send( message, con );
- if ( state != prevState ) // send packets
+ if ( state == ForgeServerHandshakeState.DONE || state != prevState ) // send packets
{
synchronized ( packetQueue )
{
--
2.24.0