diff --git a/BungeeCord b/BungeeCord
index d9bbdc328..5a1e342e0 160000
--- a/BungeeCord
+++ b/BungeeCord
@@ -1 +1 @@
-Subproject commit d9bbdc3281ab6f9a3f6383febc75f0279d8d7c02
+Subproject commit 5a1e342e0d500bfbab77dcfda24273e971a28b02
diff --git a/BungeeCord-Patches/0007-Fixup-ProtocolConstants.patch b/BungeeCord-Patches/0007-Fixup-ProtocolConstants.patch
index d572c5105..21620c478 100644
--- a/BungeeCord-Patches/0007-Fixup-ProtocolConstants.patch
+++ b/BungeeCord-Patches/0007-Fixup-ProtocolConstants.patch
@@ -1,14 +1,14 @@
-From adedd18803ccda77f946628374b537f459b16010 Mon Sep 17 00:00:00 2001
+From d86bb6401198008a6cc41ab73ebd1f253322ff7c Mon Sep 17 00:00:00 2001
 From: Troy Frew <fuzzy_bot@arenaga.me>
 Date: Tue, 15 Nov 2016 09:07:51 -0500
 Subject: [PATCH] Fixup ProtocolConstants
 
 
 diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/ProtocolConstants.java b/protocol/src/main/java/net/md_5/bungee/protocol/ProtocolConstants.java
-index 46311941..3800141e 100644
+index 7d5e2635..a0dd9be6 100644
 --- a/protocol/src/main/java/net/md_5/bungee/protocol/ProtocolConstants.java
 +++ b/protocol/src/main/java/net/md_5/bungee/protocol/ProtocolConstants.java
-@@ -113,6 +113,16 @@ public class ProtocolConstants
+@@ -114,6 +114,16 @@ public class ProtocolConstants
          SUPPORTED_VERSION_IDS = supportedVersionIds.build();
      }
  
diff --git a/BungeeCord-Patches/0016-Allow-invalid-packet-ids-for-forge-servers.patch b/BungeeCord-Patches/0016-Allow-invalid-packet-ids-for-forge-servers.patch
index 1c7d210f3..1f3d37e43 100644
--- a/BungeeCord-Patches/0016-Allow-invalid-packet-ids-for-forge-servers.patch
+++ b/BungeeCord-Patches/0016-Allow-invalid-packet-ids-for-forge-servers.patch
@@ -1,4 +1,4 @@
-From 88fb3abe3ca17082bc542226a1f52df63517cf67 Mon Sep 17 00:00:00 2001
+From f2b7723b3a39d08901799d3205d6aa93e70f89b3 Mon Sep 17 00:00:00 2001
 From: Techcable <Techcable@techcable.net>
 Date: Thu, 19 May 2016 17:09:22 -0600
 Subject: [PATCH] Allow invalid packet ids for forge servers
@@ -92,18 +92,6 @@ index 7c3e9a29..56e500a1 100644
          bungee.getPluginManager().callEvent( event );
  
          ch.write( BungeeCord.getInstance().registerChannels( user.getPendingConnection().getVersion() ) );
-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 65e942cd..e37d502b 100644
---- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java
-+++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java
-@@ -74,6 +74,7 @@ public final class UserConnection implements ProxiedPlayer
-     private final ProxyServer bungee;
-     @Getter
-     @NonNull
-+    @Getter
-     private final ChannelWrapper ch;
-     @Getter
-     @NonNull
 diff --git a/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap.java b/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap.java
 index 30cc36a4..c033118f 100644
 --- a/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap.java
diff --git a/BungeeCord-Patches/0027-Add-timeout-variant-to-connect-methods.patch b/BungeeCord-Patches/0027-Add-timeout-variant-to-connect-methods.patch
index 6e210069a..3c264c52b 100644
--- a/BungeeCord-Patches/0027-Add-timeout-variant-to-connect-methods.patch
+++ b/BungeeCord-Patches/0027-Add-timeout-variant-to-connect-methods.patch
@@ -1,4 +1,4 @@
-From b624f9224f0de6b440be2830fcf51b2e8cb21c30 Mon Sep 17 00:00:00 2001
+From 964bf7b3cf1b45a82b8ab24689bed4cbd549b968 Mon Sep 17 00:00:00 2001
 From: Ichbinjoe <joe@ibj.io>
 Date: Sat, 16 Jul 2016 20:44:01 -0400
 Subject: [PATCH] Add timeout variant to connect methods
@@ -75,10 +75,10 @@ index c3848b3c..a441a424 100644
       * Connects / transfers this user to the specified connection, gracefully
       * closing the current one. Depending on the implementation, this method
 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 e37d502b..07cfe1d5 100644
+index 65e942cd..87eb9199 100644
 --- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java
 +++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java
-@@ -259,9 +259,20 @@ public final class UserConnection implements ProxiedPlayer
+@@ -258,9 +258,20 @@ public final class UserConnection implements ProxiedPlayer
  
      public void connect(ServerInfo info, final Callback<Boolean> callback, final boolean retry, ServerConnectEvent.Reason reason)
      {
@@ -99,7 +99,7 @@ index e37d502b..07cfe1d5 100644
          if ( callback != null )
          {
              // Convert the Callback<Boolean> to be compatible with Callback<Result> from ServerConnectRequest.
-@@ -355,7 +366,7 @@ public final class UserConnection implements ProxiedPlayer
+@@ -354,7 +365,7 @@ public final class UserConnection implements ProxiedPlayer
                      if ( request.isRetry() && def != null && ( getServer() == null || def != getServer().getInfo() ) )
                      {
                          sendMessage( bungee.getTranslation( "fallback_lobby" ) );
diff --git a/BungeeCord-Patches/0030-Fix-potion-race-condition-on-Forge-1.8.9.patch b/BungeeCord-Patches/0030-Fix-potion-race-condition-on-Forge-1.8.9.patch
index 4a9803f1e..4c2414312 100644
--- a/BungeeCord-Patches/0030-Fix-potion-race-condition-on-Forge-1.8.9.patch
+++ b/BungeeCord-Patches/0030-Fix-potion-race-condition-on-Forge-1.8.9.patch
@@ -1,4 +1,4 @@
-From ce79efbdf45d665fd0f018cae81294db0245c262 Mon Sep 17 00:00:00 2001
+From 42716f7bfd1552c1a7207293614d27d8105833d1 Mon Sep 17 00:00:00 2001
 From: Aaron Hill <aa1ronham@gmail.com>
 Date: Thu, 15 Sep 2016 22:38:37 +0200
 Subject: [PATCH] Fix potion race condition on Forge 1.8.9
@@ -117,7 +117,7 @@ index 00000000..7ed2dc3a
 +    }
 +}
 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 07cfe1d5..c74e44b5 100644
+index 87eb9199..a129dc42 100644
 --- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java
 +++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java
 @@ -1,7 +1,9 @@
@@ -130,8 +130,19 @@ index 07cfe1d5..c74e44b5 100644
  import io.netty.bootstrap.Bootstrap;
  import io.netty.channel.Channel;
  import io.netty.channel.ChannelFuture;
+@@ -125,6 +127,10 @@ public final class UserConnection implements ProxiedPlayer
+     private final Scoreboard serverSentScoreboard = new Scoreboard();
+     @Getter
+     private final Collection<UUID> sentBossBars = new HashSet<>();
++    // Waterfall start
++    @Getter
++    private final Multimap<Integer, Integer> potions = HashMultimap.create();
++    // Waterfall end
+     @Getter
+     @Setter
+     private String lastCommandTabbed;
 diff --git a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java
-index 30fbb0b1..102eb1a8 100644
+index 30fbb0b1..c412bbab 100644
 --- a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java
 +++ b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java
 @@ -737,6 +737,32 @@ public class DownstreamBridge extends PacketHandler
@@ -140,7 +151,7 @@ index 30fbb0b1..102eb1a8 100644
  
 +    // Waterfall start
 +    @Override
-+    public void handle(EntityEffect entityEffect) throws Exception
++    public void handle(net.md_5.bungee.protocol.packet.EntityEffect entityEffect) throws Exception
 +    {
 +        // Don't send any potions when switching between servers (which involves a handshake), which can trigger a race
 +        // condition on the client.
@@ -151,7 +162,7 @@ index 30fbb0b1..102eb1a8 100644
 +    }
 +
 +    @Override
-+    public void handle(EntityRemoveEffect removeEffect) throws Exception
++    public void handle(net.md_5.bungee.protocol.packet.EntityRemoveEffect removeEffect) throws Exception
 +    {
 +        con.getPotions().remove(rewriteEntityId(removeEffect.getEntityId()), removeEffect.getEffectId());
 +    }
diff --git a/BungeeCord-Patches/0034-Use-Log4j2-for-logging-and-TerminalConsoleAppender-f.patch b/BungeeCord-Patches/0034-Use-Log4j2-for-logging-and-TerminalConsoleAppender-f.patch
index d405bfa36..de8dddb5c 100644
--- a/BungeeCord-Patches/0034-Use-Log4j2-for-logging-and-TerminalConsoleAppender-f.patch
+++ b/BungeeCord-Patches/0034-Use-Log4j2-for-logging-and-TerminalConsoleAppender-f.patch
@@ -1,4 +1,4 @@
-From f0bc70621c1957e310e814708854a5674129f7aa Mon Sep 17 00:00:00 2001
+From ceefeced5e361ab808abd4831ce7ff9d45026855 Mon Sep 17 00:00:00 2001
 From: Minecrell <minecrell@minecrell.net>
 Date: Fri, 22 Sep 2017 12:46:47 +0200
 Subject: [PATCH] Use Log4j2 for logging and TerminalConsoleAppender for
@@ -39,7 +39,7 @@ index 07d49112..672a813d 100644
      </build>
 diff --git a/log4j/pom.xml b/log4j/pom.xml
 new file mode 100644
-index 00000000..1cc7936e
+index 00000000..f9a169cc
 --- /dev/null
 +++ b/log4j/pom.xml
 @@ -0,0 +1,48 @@
@@ -50,13 +50,13 @@ index 00000000..1cc7936e
 +    <parent>
 +        <groupId>io.github.waterfallmc</groupId>
 +        <artifactId>waterfall-parent</artifactId>
-+        <version>1.20-R0.1-SNAPSHOT</version>
++        <version>1.20-R0.2-SNAPSHOT</version>
 +        <relativePath>../pom.xml</relativePath>
 +    </parent>
 +
 +    <groupId>io.github.waterfallmc</groupId>
 +    <artifactId>waterfall-log4j</artifactId>
-+    <version>1.20-R0.1-SNAPSHOT</version>
++    <version>1.20-R0.2-SNAPSHOT</version>
 +    <packaging>jar</packaging>
 +
 +    <name>Waterfall-Log4J</name>
diff --git a/BungeeCord-Patches/0044-Provide-an-option-to-disable-entity-metadata-rewriti.patch b/BungeeCord-Patches/0044-Provide-an-option-to-disable-entity-metadata-rewriti.patch
index de6f19c78..4ade1fd3e 100644
--- a/BungeeCord-Patches/0044-Provide-an-option-to-disable-entity-metadata-rewriti.patch
+++ b/BungeeCord-Patches/0044-Provide-an-option-to-disable-entity-metadata-rewriti.patch
@@ -1,4 +1,4 @@
-From 3be2c70b1860141a74772aa85bdbfb6c91b7d1f2 Mon Sep 17 00:00:00 2001
+From 8525fdb1e67b91ffd9d11342c505ecf351a29619 Mon Sep 17 00:00:00 2001
 From: Shane Freeder <theboyetronic@gmail.com>
 Date: Mon, 14 Jan 2019 03:35:21 +0000
 Subject: [PATCH] Provide an option to disable entity metadata rewriting
@@ -57,7 +57,7 @@ index 4ff8da6d..e860214f 100644
 +    }
  }
 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 2624dd37..c3268cbe 100644
+index 2624dd37..55218447 100644
 --- a/proxy/src/main/java/net/md_5/bungee/ServerConnector.java
 +++ b/proxy/src/main/java/net/md_5/bungee/ServerConnector.java
 @@ -255,7 +255,7 @@ public class ServerConnector extends PacketHandler
@@ -85,7 +85,7 @@ index 2624dd37..c3268cbe 100644
              serverScoreboard.clear();
  
              for ( UUID bossbar : user.getSentBossBars() )
-@@ -340,13 +342,33 @@ public class ServerConnector extends PacketHandler
+@@ -340,13 +342,34 @@ public class ServerConnector extends PacketHandler
              }
  
              user.setDimensionChange( true );
@@ -105,15 +105,16 @@ index 2624dd37..c3268cbe 100644
 +                // Only send if we are not in the same dimension
 +                if ( login.getDimension() != user.getDimension() ) // Waterfall - defer
 +                {
-+                    user.unsafe().sendPacket( new Respawn( (Integer) user.getDimension() >= 0 ? -1 : 0, login.getWorldName(), login.getSeed(), login.getDifficulty(), login.getGameMode(), login.getPreviousGameMode(), login.getLevelType(), login.isDebug(), login.isFlat(), false, login.getDeathLocation(), login.getPortalCooldown() ) );
++                    user.unsafe().sendPacket( new Respawn( (Integer) user.getDimension() >= 0 ? -1 : 0, login.getWorldName(), login.getSeed(), login.getDifficulty(), login.getGameMode(), login.getPreviousGameMode(), login.getLevelType(), login.isDebug(), login.isFlat(), (byte) 0, login.getDeathLocation(), login.getPortalCooldown() ) );
 +                }
 +                Login modLogin = new Login( login.getEntityId(), login.isHardcore(), login.getGameMode(), login.getPreviousGameMode(), login.getWorldNames(), login.getDimensions(), login.getDimension(), login.getWorldName(), login.getSeed(), login.getDifficulty(),
-+                        (byte) user.getPendingConnection().getListener().getTabListSize(), login.getLevelType(), login.getViewDistance(), login.getSimulationDistance(), login.isReducedDebugInfo(), login.isNormalRespawn(), login.isDebug(), login.isFlat(), login.getDeathLocation(), login.getPortalCooldown() );
++                        (byte) user.getPendingConnection().getListener().getTabListSize(), login.getLevelType(), login.getViewDistance(), login.getSimulationDistance(), login.isReducedDebugInfo(), login.isNormalRespawn(), login.isLimitedCrafting(), login.isDebug(), login.isFlat(), login.getDeathLocation(),
++                        login.getPortalCooldown() );
 +                user.unsafe().sendPacket(modLogin);
 +                // Only send if we're in the same dimension
 +                if ( login.getDimension() == user.getDimension() ) // Waterfall - defer
 +                {
-+                    user.unsafe().sendPacket( new Respawn( (Integer) login.getDimension() >= 0 ? -1 : 0, login.getWorldName(), login.getSeed(), login.getDifficulty(), login.getGameMode(), login.getPreviousGameMode(), login.getLevelType(), login.isDebug(), login.isFlat(), false, login.getDeathLocation(), login.getPortalCooldown() ) );
++                    user.unsafe().sendPacket( new Respawn( (Integer) login.getDimension() >= 0 ? -1 : 0, login.getWorldName(), login.getSeed(), login.getDifficulty(), login.getGameMode(), login.getPreviousGameMode(), login.getLevelType(), login.isDebug(), login.isFlat(), (byte) 0, login.getDeathLocation(), login.getPortalCooldown() ) );
 +                }
 +            }
 +            // Waterfall end
@@ -121,10 +122,10 @@ index 2624dd37..c3268cbe 100644
                      (byte) 0, login.getDeathLocation(), login.getPortalCooldown() ) );
              if ( user.getPendingConnection().getVersion() >= ProtocolConstants.MINECRAFT_1_14 )
 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 c74e44b5..9e933b1d 100644
+index a129dc42..fe6eab9b 100644
 --- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java
 +++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java
-@@ -775,4 +775,10 @@ public final class UserConnection implements ProxiedPlayer
+@@ -778,4 +778,10 @@ public final class UserConnection implements ProxiedPlayer
      {
          return serverSentScoreboard;
      }
@@ -136,12 +137,12 @@ index c74e44b5..9e933b1d 100644
 +    // Waterfall end
  }
 diff --git a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java
-index 102eb1a8..a2995c60 100644
+index c412bbab..5966469b 100644
 --- a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java
 +++ b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java
 @@ -741,6 +741,7 @@ public class DownstreamBridge extends PacketHandler
      @Override
-     public void handle(EntityEffect entityEffect) throws Exception
+     public void handle(net.md_5.bungee.protocol.packet.EntityEffect entityEffect) throws Exception
      {
 +        if (con.isDisableEntityMetadataRewrite()) return; // Waterfall
          // Don't send any potions when switching between servers (which involves a handshake), which can trigger a race
@@ -149,7 +150,7 @@ index 102eb1a8..a2995c60 100644
          if (this.con.getForgeClientHandler().isForgeUser() && !this.con.getForgeClientHandler().isHandshakeComplete()) {
 @@ -752,6 +753,7 @@ public class DownstreamBridge extends PacketHandler
      @Override
-     public void handle(EntityRemoveEffect removeEffect) throws Exception
+     public void handle(net.md_5.bungee.protocol.packet.EntityRemoveEffect removeEffect) throws Exception
      {
 +        if (con.isDisableEntityMetadataRewrite()) return; // Waterfall
          con.getPotions().remove(rewriteEntityId(removeEffect.getEntityId()), removeEffect.getEffectId());
diff --git a/BungeeCord-Patches/0058-ServerConnectRequest-sendFeedback.patch b/BungeeCord-Patches/0058-ServerConnectRequest-sendFeedback.patch
index aedb10109..ff0e92549 100644
--- a/BungeeCord-Patches/0058-ServerConnectRequest-sendFeedback.patch
+++ b/BungeeCord-Patches/0058-ServerConnectRequest-sendFeedback.patch
@@ -1,4 +1,4 @@
-From f5ddca96ef3353bc21ba8b63b1be12437c0e8424 Mon Sep 17 00:00:00 2001
+From cf604e1b03d62a3c0914712ed056c9fb538c3de0 Mon Sep 17 00:00:00 2001
 From: Shane Freeder <theboyetronic@gmail.com>
 Date: Fri, 16 Apr 2021 06:29:28 +0100
 Subject: [PATCH] ServerConnectRequest#sendFeedback
@@ -31,10 +31,10 @@ index c81b0a4e..d21370be 100644
      }
  }
 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 9e933b1d..1a7fa00e 100644
+index fe6eab9b..fc8df2b8 100644
 --- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java
 +++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java
-@@ -268,12 +268,16 @@ public final class UserConnection implements ProxiedPlayer
+@@ -271,12 +271,16 @@ public final class UserConnection implements ProxiedPlayer
          connect(info, callback, retry, ServerConnectEvent.Reason.PLUGIN, timeout);
      }
  
@@ -53,7 +53,7 @@ index 9e933b1d..1a7fa00e 100644
          builder.connectTimeout(timeout); // Waterfall
          if ( callback != null )
          {
-@@ -321,7 +325,7 @@ public final class UserConnection implements ProxiedPlayer
+@@ -324,7 +328,7 @@ public final class UserConnection implements ProxiedPlayer
                  callback.done( ServerConnectRequest.Result.ALREADY_CONNECTED, null );
              }
  
@@ -62,7 +62,7 @@ index 9e933b1d..1a7fa00e 100644
              return;
          }
          if ( pendingConnects.contains( target ) )
-@@ -331,7 +335,7 @@ public final class UserConnection implements ProxiedPlayer
+@@ -334,7 +338,7 @@ public final class UserConnection implements ProxiedPlayer
                  callback.done( ServerConnectRequest.Result.ALREADY_CONNECTING, null );
              }
  
@@ -71,7 +71,7 @@ index 9e933b1d..1a7fa00e 100644
              return;
          }
  
-@@ -367,14 +371,14 @@ public final class UserConnection implements ProxiedPlayer
+@@ -370,14 +374,14 @@ public final class UserConnection implements ProxiedPlayer
                      ServerInfo def = updateAndGetNextServer( target );
                      if ( request.isRetry() && def != null && ( getServer() == null || def != getServer().getInfo() ) )
                      {
diff --git a/BungeeCord-Patches/0059-Don-t-send-exceptions-to-the-client-during-kicks-etc.patch b/BungeeCord-Patches/0059-Don-t-send-exceptions-to-the-client-during-kicks-etc.patch
index 14825caa9..1dc62aa3d 100644
--- a/BungeeCord-Patches/0059-Don-t-send-exceptions-to-the-client-during-kicks-etc.patch
+++ b/BungeeCord-Patches/0059-Don-t-send-exceptions-to-the-client-during-kicks-etc.patch
@@ -1,4 +1,4 @@
-From 49d8d065ef2a1f7a7b885b204ba6676a8f2c826e Mon Sep 17 00:00:00 2001
+From e1c30dc6d176143f1f51a9e48636125f45ecb957 Mon Sep 17 00:00:00 2001
 From: Shane Freeder <theboyetronic@gmail.com>
 Date: Tue, 22 Mar 2022 14:56:44 +0000
 Subject: [PATCH] Don't send exceptions to the client during kicks, etc
@@ -13,10 +13,10 @@ allows for retaining much of the overall context here, i.e. who
 was this exception assocated with?
 
 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 1a7fa00e..5c4d7e54 100644
+index fc8df2b8..fb08c080 100644
 --- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java
 +++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java
-@@ -399,7 +399,8 @@ public final class UserConnection implements ProxiedPlayer
+@@ -402,7 +402,8 @@ public final class UserConnection implements ProxiedPlayer
  
      private String connectionFailMessage(Throwable cause)
      {
diff --git a/BungeeCord-Patches/0064-Replace-reflection-inside-netty-with-ChannelFactory.patch b/BungeeCord-Patches/0064-Replace-reflection-inside-netty-with-ChannelFactory.patch
index c9d9a5677..9960f0eed 100644
--- a/BungeeCord-Patches/0064-Replace-reflection-inside-netty-with-ChannelFactory.patch
+++ b/BungeeCord-Patches/0064-Replace-reflection-inside-netty-with-ChannelFactory.patch
@@ -1,4 +1,4 @@
-From 30382255e40088804060b9e07047a89d149ef381 Mon Sep 17 00:00:00 2001
+From 1dc384718469865083289a3c4239082c5a68f9ce Mon Sep 17 00:00:00 2001
 From: Janmm14 <gitconfig1@janmm14.de>
 Date: Mon, 21 Jun 2021 23:43:39 +0200
 Subject: [PATCH] Replace reflection inside netty with ChannelFactory.
@@ -32,10 +32,10 @@ index 377df7ec..8f531f85 100644
                  .handler( PipelineUtils.BASE_SERVERSIDE )
                  .option( ChannelOption.CONNECT_TIMEOUT_MILLIS, BungeeCord.getInstance().getConfig().getRemotePingTimeout() )
 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 5c4d7e54..7d3f079f 100644
+index fb08c080..96f4d017 100644
 --- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java
 +++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java
-@@ -384,7 +384,7 @@ public final class UserConnection implements ProxiedPlayer
+@@ -387,7 +387,7 @@ public final class UserConnection implements ProxiedPlayer
              }
          };
          Bootstrap b = new Bootstrap()
diff --git a/BungeeCord-Patches/0066-fixup-Use-Log4j2-for-logging-and-TerminalConsoleAppe.patch b/BungeeCord-Patches/0066-fixup-Use-Log4j2-for-logging-and-TerminalConsoleAppe.patch
deleted file mode 100644
index 1f642a924..000000000
--- a/BungeeCord-Patches/0066-fixup-Use-Log4j2-for-logging-and-TerminalConsoleAppe.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 1665cd2d7da859434abba8d8fd5e7370c98b9150 Mon Sep 17 00:00:00 2001
-From: Shane Freeder <theboyetronic@gmail.com>
-Date: Thu, 21 Sep 2023 10:51:51 +0100
-Subject: [PATCH] fixup! Use Log4j2 for logging and TerminalConsoleAppender for
- console
-
-
-diff --git a/log4j/pom.xml b/log4j/pom.xml
-index e83b2f21..6d20191e 100644
---- a/log4j/pom.xml
-+++ b/log4j/pom.xml
-@@ -5,13 +5,13 @@
-     <parent>
-         <groupId>io.github.waterfallmc</groupId>
-         <artifactId>waterfall-parent</artifactId>
--        <version>1.20-R0.1-SNAPSHOT</version>
-+        <version>1.20-R0.2-SNAPSHOT</version>
-         <relativePath>../pom.xml</relativePath>
-     </parent>
- 
-     <groupId>io.github.waterfallmc</groupId>
-     <artifactId>waterfall-log4j</artifactId>
--    <version>1.20-R0.1-SNAPSHOT</version>
-+    <version>1.20-R0.2-SNAPSHOT</version>
-     <packaging>jar</packaging>
- 
-     <name>Waterfall-Log4J</name>
--- 
-2.42.0
-
diff --git a/BungeeCord-Patches/0067-fixup-Allow-invalid-packet-ids-for-forge-servers.patch b/BungeeCord-Patches/0067-fixup-Allow-invalid-packet-ids-for-forge-servers.patch
deleted file mode 100644
index 874e0abd0..000000000
--- a/BungeeCord-Patches/0067-fixup-Allow-invalid-packet-ids-for-forge-servers.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-From 9dc8d90d5610ef148ac47df05d173ae3d749950e Mon Sep 17 00:00:00 2001
-From: Shane Freeder <theboyetronic@gmail.com>
-Date: Thu, 21 Sep 2023 10:54:16 +0100
-Subject: [PATCH] fixup! Allow invalid packet ids for forge servers
-
-
-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 7d3f079f..4936001c 100644
---- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java
-+++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java
-@@ -76,7 +76,6 @@ public final class UserConnection implements ProxiedPlayer
-     private final ProxyServer bungee;
-     @Getter
-     @NonNull
--    @Getter
-     private final ChannelWrapper ch;
-     @Getter
-     @NonNull
--- 
-2.42.0
-
diff --git a/BungeeCord-Patches/0068-fixup-Fix-potion-race-condition-on-Forge-1.8.9.patch b/BungeeCord-Patches/0068-fixup-Fix-potion-race-condition-on-Forge-1.8.9.patch
deleted file mode 100644
index 5140f98a9..000000000
--- a/BungeeCord-Patches/0068-fixup-Fix-potion-race-condition-on-Forge-1.8.9.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 658a0d875f9b5dd28a442ae83e42db2cb9456da6 Mon Sep 17 00:00:00 2001
-From: Shane Freeder <theboyetronic@gmail.com>
-Date: Thu, 21 Sep 2023 11:02:43 +0100
-Subject: [PATCH] fixup! Fix potion race condition on Forge 1.8.9
-
-
-diff --git a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java
-index 485af04f..76acae0e 100644
---- a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java
-+++ b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java
-@@ -745,7 +745,7 @@ public class DownstreamBridge extends PacketHandler
- 
-     // Waterfall start
-     @Override
--    public void handle(EntityEffect entityEffect) throws Exception
-+    public void handle(net.md_5.bungee.protocol.packet.EntityEffect entityEffect) throws Exception
-     {
-         if (con.isDisableEntityMetadataRewrite()) return; // Waterfall
-         // Don't send any potions when switching between servers (which involves a handshake), which can trigger a race
-@@ -757,7 +757,7 @@ public class DownstreamBridge extends PacketHandler
-     }
- 
-     @Override
--    public void handle(EntityRemoveEffect removeEffect) throws Exception
-+    public void handle(net.md_5.bungee.protocol.packet.EntityRemoveEffect removeEffect) throws Exception
-     {
-         if (con.isDisableEntityMetadataRewrite()) return; // Waterfall
-         con.getPotions().remove(rewriteEntityId(removeEffect.getEntityId()), removeEffect.getEffectId());
--- 
-2.42.0
-
diff --git a/BungeeCord-Patches/0069-fixup-Fix-potion-race-condition-on-Forge-1.8.9.patch b/BungeeCord-Patches/0069-fixup-Fix-potion-race-condition-on-Forge-1.8.9.patch
deleted file mode 100644
index 2dd0c8787..000000000
--- a/BungeeCord-Patches/0069-fixup-Fix-potion-race-condition-on-Forge-1.8.9.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 68aa24164c2487820bc4e4dcb14117f62e04c775 Mon Sep 17 00:00:00 2001
-From: Shane Freeder <theboyetronic@gmail.com>
-Date: Thu, 21 Sep 2023 11:04:15 +0100
-Subject: [PATCH] fixup! Fix potion race condition on Forge 1.8.9
-
-
-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 4936001c..96f4d017 100644
---- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java
-+++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java
-@@ -127,6 +127,10 @@ public final class UserConnection implements ProxiedPlayer
-     private final Scoreboard serverSentScoreboard = new Scoreboard();
-     @Getter
-     private final Collection<UUID> sentBossBars = new HashSet<>();
-+    // Waterfall start
-+    @Getter
-+    private final Multimap<Integer, Integer> potions = HashMultimap.create();
-+    // Waterfall end
-     @Getter
-     @Setter
-     private String lastCommandTabbed;
--- 
-2.42.0
-
diff --git a/BungeeCord-Patches/0070-fixup-Provide-an-option-to-disable-entity-metadata-r.patch b/BungeeCord-Patches/0070-fixup-Provide-an-option-to-disable-entity-metadata-r.patch
deleted file mode 100644
index 81d8e1a66..000000000
--- a/BungeeCord-Patches/0070-fixup-Provide-an-option-to-disable-entity-metadata-r.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 664f46a96cc150e5c1790404ce6f3dce361d355f Mon Sep 17 00:00:00 2001
-From: Shane Freeder <theboyetronic@gmail.com>
-Date: Thu, 21 Sep 2023 11:17:49 +0100
-Subject: [PATCH] fixup! Provide an option to disable entity metadata rewriting
-
-
-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 c3268cbe..f9f6d3fc 100644
---- a/proxy/src/main/java/net/md_5/bungee/ServerConnector.java
-+++ b/proxy/src/main/java/net/md_5/bungee/ServerConnector.java
-@@ -360,7 +360,8 @@ public class ServerConnector extends PacketHandler
-                     user.unsafe().sendPacket( new Respawn( (Integer) user.getDimension() >= 0 ? -1 : 0, login.getWorldName(), login.getSeed(), login.getDifficulty(), login.getGameMode(), login.getPreviousGameMode(), login.getLevelType(), login.isDebug(), login.isFlat(), false, login.getDeathLocation(), login.getPortalCooldown() ) );
-                 }
-                 Login modLogin = new Login( login.getEntityId(), login.isHardcore(), login.getGameMode(), login.getPreviousGameMode(), login.getWorldNames(), login.getDimensions(), login.getDimension(), login.getWorldName(), login.getSeed(), login.getDifficulty(),
--                        (byte) user.getPendingConnection().getListener().getTabListSize(), login.getLevelType(), login.getViewDistance(), login.getSimulationDistance(), login.isReducedDebugInfo(), login.isNormalRespawn(), login.isDebug(), login.isFlat(), login.getDeathLocation(), login.getPortalCooldown() );
-+                        (byte) user.getPendingConnection().getListener().getTabListSize(), login.getLevelType(), login.getViewDistance(), login.getSimulationDistance(), login.isReducedDebugInfo(), login.isNormalRespawn(), login.isLimitedCrafting(), login.isDebug(), login.isFlat(), login.getDeathLocation(),
-+                        login.getPortalCooldown() );
-                 user.unsafe().sendPacket(modLogin);
-                 // Only send if we're in the same dimension
-                 if ( login.getDimension() == user.getDimension() ) // Waterfall - defer
--- 
-2.42.0
-
diff --git a/BungeeCord-Patches/0071-fixup-Provide-an-option-to-disable-entity-metadata-r.patch b/BungeeCord-Patches/0071-fixup-Provide-an-option-to-disable-entity-metadata-r.patch
deleted file mode 100644
index 73201720a..000000000
--- a/BungeeCord-Patches/0071-fixup-Provide-an-option-to-disable-entity-metadata-r.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From e842f41a2be52657911f9a4e35b7a84d9084e92d Mon Sep 17 00:00:00 2001
-From: Shane Freeder <theboyetronic@gmail.com>
-Date: Thu, 21 Sep 2023 11:31:06 +0100
-Subject: [PATCH] fixup! Provide an option to disable entity metadata rewriting
-
-
-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 f9f6d3fc..55218447 100644
---- a/proxy/src/main/java/net/md_5/bungee/ServerConnector.java
-+++ b/proxy/src/main/java/net/md_5/bungee/ServerConnector.java
-@@ -357,7 +357,7 @@ public class ServerConnector extends PacketHandler
-                 // Only send if we are not in the same dimension
-                 if ( login.getDimension() != user.getDimension() ) // Waterfall - defer
-                 {
--                    user.unsafe().sendPacket( new Respawn( (Integer) user.getDimension() >= 0 ? -1 : 0, login.getWorldName(), login.getSeed(), login.getDifficulty(), login.getGameMode(), login.getPreviousGameMode(), login.getLevelType(), login.isDebug(), login.isFlat(), false, login.getDeathLocation(), login.getPortalCooldown() ) );
-+                    user.unsafe().sendPacket( new Respawn( (Integer) user.getDimension() >= 0 ? -1 : 0, login.getWorldName(), login.getSeed(), login.getDifficulty(), login.getGameMode(), login.getPreviousGameMode(), login.getLevelType(), login.isDebug(), login.isFlat(), (byte) 0, login.getDeathLocation(), login.getPortalCooldown() ) );
-                 }
-                 Login modLogin = new Login( login.getEntityId(), login.isHardcore(), login.getGameMode(), login.getPreviousGameMode(), login.getWorldNames(), login.getDimensions(), login.getDimension(), login.getWorldName(), login.getSeed(), login.getDifficulty(),
-                         (byte) user.getPendingConnection().getListener().getTabListSize(), login.getLevelType(), login.getViewDistance(), login.getSimulationDistance(), login.isReducedDebugInfo(), login.isNormalRespawn(), login.isLimitedCrafting(), login.isDebug(), login.isFlat(), login.getDeathLocation(),
-@@ -366,7 +366,7 @@ public class ServerConnector extends PacketHandler
-                 // Only send if we're in the same dimension
-                 if ( login.getDimension() == user.getDimension() ) // Waterfall - defer
-                 {
--                    user.unsafe().sendPacket( new Respawn( (Integer) login.getDimension() >= 0 ? -1 : 0, login.getWorldName(), login.getSeed(), login.getDifficulty(), login.getGameMode(), login.getPreviousGameMode(), login.getLevelType(), login.isDebug(), login.isFlat(), false, login.getDeathLocation(), login.getPortalCooldown() ) );
-+                    user.unsafe().sendPacket( new Respawn( (Integer) login.getDimension() >= 0 ? -1 : 0, login.getWorldName(), login.getSeed(), login.getDifficulty(), login.getGameMode(), login.getPreviousGameMode(), login.getLevelType(), login.isDebug(), login.isFlat(), (byte) 0, login.getDeathLocation(), login.getPortalCooldown() ) );
-                 }
-             }
-             // Waterfall end
--- 
-2.42.0
-