From cbdc90231676387b6c3800d30b8214b6f38d4489 Mon Sep 17 00:00:00 2001 From: BoomEaro <21033866+BoomEaro@users.noreply.github.com> Date: Mon, 3 Apr 2023 13:06:03 +0300 Subject: [PATCH] Always slice until entity rewrite is being used in MinecraftDecoder --- ...il-entity-rewrite-is-being-used-in-M.patch | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 BungeeCord-Patches/0067-Always-slice-until-entity-rewrite-is-being-used-in-M.patch diff --git a/BungeeCord-Patches/0067-Always-slice-until-entity-rewrite-is-being-used-in-M.patch b/BungeeCord-Patches/0067-Always-slice-until-entity-rewrite-is-being-used-in-M.patch new file mode 100644 index 0000000..10bb617 --- /dev/null +++ b/BungeeCord-Patches/0067-Always-slice-until-entity-rewrite-is-being-used-in-M.patch @@ -0,0 +1,57 @@ +From fa7dcf4b0fa0b5aaf20c9071b547699ae43ab530 Mon Sep 17 00:00:00 2001 +From: BoomEaro <21033866+BoomEaro@users.noreply.github.com> +Date: Mon, 3 Apr 2023 13:03:53 +0300 +Subject: [PATCH] Always slice until entity rewrite is being used in + MinecraftDecoder + + +diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java b/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java +index ac83e325..b6950ff1 100644 +--- a/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java ++++ b/protocol/src/main/java/net/md_5/bungee/protocol/MinecraftDecoder.java +@@ -20,6 +20,8 @@ public class MinecraftDecoder extends MessageToMessageDecoder + private int protocolVersion; + @Setter + private boolean supportsForge = false; ++ @Setter ++ private boolean slice = true; // Waterfall + + public MinecraftDecoder(Protocol protocol, boolean server, int protocolVersion) { + this.protocol = protocol; +@@ -38,7 +40,7 @@ public class MinecraftDecoder extends MessageToMessageDecoder + } + + Protocol.DirectionData prot = ( server ) ? protocol.TO_SERVER : protocol.TO_CLIENT; +- ByteBuf slice = in.copy(); // Can't slice this one due to EntityMap :( ++ ByteBuf slice = ( this.slice ? in.retainedSlice() : in.copy() ); // Waterfall + + Object packetTypeInfo = null; + try +diff --git a/proxy/src/main/java/net/md_5/bungee/ServerConnector.java b/proxy/src/main/java/net/md_5/bungee/ServerConnector.java +index 8181d76b..1e05104e 100644 +--- a/proxy/src/main/java/net/md_5/bungee/ServerConnector.java ++++ b/proxy/src/main/java/net/md_5/bungee/ServerConnector.java +@@ -385,6 +385,7 @@ public class ServerConnector extends PacketHandler + ServerInfo from = ( user.getServer() == null ) ? null : user.getServer().getInfo(); + user.setServer( server ); + ch.getHandle().pipeline().get( HandlerBoss.class ).setHandler( new DownstreamBridge( bungee, user, server ) ); ++ ch.getHandle().pipeline().get( MinecraftDecoder.class ).setSlice( user.isDisableEntityMetadataRewrite() ); // Waterfall: Change decoder mode for downstream connection + + bungee.getPluginManager().callEvent( new ServerSwitchEvent( user, from ) ); + +diff --git a/proxy/src/main/java/net/md_5/bungee/UserConnection.java b/proxy/src/main/java/net/md_5/bungee/UserConnection.java +index cf82c182..e3df5c82 100644 +--- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java ++++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java +@@ -158,6 +158,8 @@ public final class UserConnection implements ProxiedPlayer + { + this.entityRewrite = EntityMap.getEntityMap( getPendingConnection().getVersion() ); + ++ ch.getHandle().pipeline().get( MinecraftDecoder.class ).setSlice( isDisableEntityMetadataRewrite() ); // Waterfall: Change decoder mode for upstream connection ++ + this.displayName = name; + + tabListHandler = new ServerUnique( this ); +-- +2.33.0.windows.2 +