#3846, #3847: Handle packet bundles

This commit is contained in:
Outfluencer 2025-06-08 11:07:20 +10:00 committed by md_5
parent 70fa02f3a4
commit 2b9808cd13
No known key found for this signature in database
GPG Key ID: E8E901AC7C617C11
6 changed files with 61 additions and 1 deletions

View File

@ -1,6 +1,7 @@
package net.md_5.bungee.protocol;
import net.md_5.bungee.protocol.packet.BossBar;
import net.md_5.bungee.protocol.packet.BundleDelimiter;
import net.md_5.bungee.protocol.packet.Chat;
import net.md_5.bungee.protocol.packet.ClearDialog;
import net.md_5.bungee.protocol.packet.ClearTitles;
@ -293,4 +294,8 @@ public abstract class AbstractPacketHandler
public void handle(CustomClickAction customClickAction) throws Exception
{
}
public void handle(BundleDelimiter bundleDelimiter) throws Exception
{
}
}

View File

@ -10,6 +10,7 @@ import java.util.function.Supplier;
import lombok.Data;
import lombok.Getter;
import net.md_5.bungee.protocol.packet.BossBar;
import net.md_5.bungee.protocol.packet.BundleDelimiter;
import net.md_5.bungee.protocol.packet.Chat;
import net.md_5.bungee.protocol.packet.ClearDialog;
import net.md_5.bungee.protocol.packet.ClearTitles;
@ -85,6 +86,11 @@ public enum Protocol
{
{
TO_CLIENT.registerPacket(
BundleDelimiter.class,
BundleDelimiter::new,
map( ProtocolConstants.MINECRAFT_1_19_4, 0x00 )
);
TO_CLIENT.registerPacket(
KeepAlive.class,
KeepAlive::new,

View File

@ -0,0 +1,29 @@
package net.md_5.bungee.protocol.packet;
import io.netty.buffer.ByteBuf;
import lombok.Data;
import lombok.EqualsAndHashCode;
import net.md_5.bungee.protocol.AbstractPacketHandler;
import net.md_5.bungee.protocol.DefinedPacket;
@Data
@EqualsAndHashCode(callSuper = false)
public class BundleDelimiter extends DefinedPacket
{
@Override
public void read(ByteBuf buf)
{
}
@Override
public void write(ByteBuf buf)
{
}
@Override
public void handle(AbstractPacketHandler handler) throws Exception
{
handler.handle( this );
}
}

View File

@ -39,6 +39,7 @@ import net.md_5.bungee.protocol.Either;
import net.md_5.bungee.protocol.PacketWrapper;
import net.md_5.bungee.protocol.Protocol;
import net.md_5.bungee.protocol.ProtocolConstants;
import net.md_5.bungee.protocol.packet.BundleDelimiter;
import net.md_5.bungee.protocol.packet.CookieRequest;
import net.md_5.bungee.protocol.packet.CookieResponse;
import net.md_5.bungee.protocol.packet.EncryptionRequest;
@ -369,9 +370,13 @@ public class ServerConnector extends PacketHandler
{
if ( user.getServer() != null )
{
// Begin config mode
if ( user.getCh().getEncodeProtocol() != Protocol.CONFIGURATION )
{
if ( user.isBundling() )
{
user.toggleBundling();
user.unsafe().sendPacket( new BundleDelimiter() );
}
user.unsafe().sendPacket( new StartConfiguration() );
}
} else

View File

@ -114,6 +114,14 @@ public final class UserConnection implements ProxiedPlayer
// Used for trying multiple servers in order
@Setter
private Queue<String> serverJoinQueue;
@Getter
@Setter
private boolean bundling;
public void toggleBundling()
{
bundling = !bundling;
}
/*========================================================================*/
private final Collection<String> groups = new CaseInsensitiveSet();
private final Collection<String> permissions = new CaseInsensitiveSet();

View File

@ -54,6 +54,7 @@ import net.md_5.bungee.protocol.PacketWrapper;
import net.md_5.bungee.protocol.Protocol;
import net.md_5.bungee.protocol.ProtocolConstants;
import net.md_5.bungee.protocol.packet.BossBar;
import net.md_5.bungee.protocol.packet.BundleDelimiter;
import net.md_5.bungee.protocol.packet.Commands;
import net.md_5.bungee.protocol.packet.FinishConfiguration;
import net.md_5.bungee.protocol.packet.KeepAlive;
@ -812,6 +813,12 @@ public class DownstreamBridge extends PacketHandler
throw CancelSendSignal.INSTANCE;
}
@Override
public void handle(BundleDelimiter bundleDelimiter) throws Exception
{
con.toggleBundling();
}
@Override
public String toString()
{