Waterfall/BungeeCord-Patches/0032-Fix-some-forge-plugin-...

60 lines
2.8 KiB
Diff

From 41dec9006eb4326433c948bfbdb271e353d066b2 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 77d18e6d..d254b84e 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.44.0