Compare commits

...

5 Commits

Author SHA1 Message Date
A248 58c189cc5c
Merge d0f2af6a2f into e20fec199f 2024-04-27 16:25:26 +08:00
Shane Freeder e20fec199f
Updated Upstream (BungeeCord)
Upstream has released updates that appear 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:
336333ac #3665: Small improvements to TranslatableComponent
d110f662 #3669: Bump org.apache.maven.plugins:maven-shade-plugin from 3.5.2 to 3.5.3
2024-04-25 21:00:45 +01:00
Shane Freeder 86c4420d6d
Updated Upstream (BungeeCord)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Do note that OSX natives are now compiled for Apple Silicon, Long Live ARM

BungeeCord Changes:
6f70b15e Minecraft 1.20.5 support
b30499e2 #3667: Bump org.apache.maven.plugins:maven-jar-plugin from 3.4.0 to 3.4.1
5079181c Minecraft 1.20.5-rc3 support
ee02d98c Minecraft 1.20.5-rc2 support
c7ff3b8a #3654: Update year in README.md
de60af0d #3659: Cleanup command packets for 1.20.5
a9218a7a #3660: Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.3 to 3.2.4
67c65e04 #3658: Minecraft 1.20.5-rc1 support
1be25b6c #3656: Improve online mode support where IP forwarding is disabled
8525b449 Minecraft 1.20.5-pre3 support
1fca510a #3655: Fix 1.20.5-pre1 view distance packet ID
33841852 #3652: Bump org.apache.maven.plugins:maven-jar-plugin from 3.3.0 to 3.4.0
3075d2c1 #3651: Bump io.netty:netty-bom from 4.1.108.Final to 4.1.109.Final
bc528d5d Update native libraries
25cf8d68 #3617: Don't go further if connection is disconnected during handshake event
17e23d5c #3628: Convert PostLoginEvent to AsyncEvent and expose target server
d6c5197c #3599: Bump com.mysql:mysql-connector-j from 8.2.0 to 8.3.0
dd96f0f8 #3647: Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.2 to 3.2.3
8a9501ff Minecraft 1.20.5-pre1 support
2024-04-23 19:11:16 +01:00
Shane Freeder 483d6eef7d
Updated Upstream (BungeeCord) (#850)
Upstream has released updates that appear 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:
5e25c63c #3646: Add experimental io_uring support
bd963501 #3644: Bump org.apache.maven.plugins:maven-source-plugin from 3.3.0 to 3.3.1
da795a70 Minecraft 24w14a support
2024-04-23 18:15:23 +01:00
A248 d0f2af6a2f
Proof methods in Plugin, PluginManager against concurrent access 2023-08-21 14:13:27 -05:00
26 changed files with 1077 additions and 1273 deletions

@ -1 +1 @@
Subproject commit 84d0ea73fa84b0a60204bd84fb34f75b993c6494
Subproject commit 336333acb1e6140556271545c71f784083559dcc

View File

@ -1,4 +1,4 @@
From be89fec835ee9a14d22f1bb7ae33a36e887258fa Mon Sep 17 00:00:00 2001
From 089ceef7ec58a1d92d51e215efff4dd22c296b4e Mon Sep 17 00:00:00 2001
From: Tux <write@imaginarycode.com>
Date: Thu, 19 May 2016 19:33:31 +0200
Subject: [PATCH] POM Changes
@ -514,7 +514,7 @@ index 56d505ab..f7bae2fe 100644
<dependencies>
<dependency>
diff --git a/pom.xml b/pom.xml
index 5d52cc90..87ab1b76 100644
index 5ceacdd8..a19d10da 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,18 +3,18 @@
@ -700,7 +700,7 @@ index 6f5acbc2..db62c340 100644
<scope>compile</scope>
</dependency>
diff --git a/proxy/pom.xml b/proxy/pom.xml
index cd90feeb..d8aae8fa 100644
index 574e36c9..63bc0b32 100644
--- a/proxy/pom.xml
+++ b/proxy/pom.xml
@@ -4,18 +4,18 @@
@ -727,8 +727,8 @@ index cd90feeb..d8aae8fa 100644
<description>Proxy component of the Elastic Portal Suite</description>
<properties>
@@ -52,38 +52,38 @@
<scope>compile</scope>
@@ -64,38 +64,38 @@
<classifier>linux-aarch_64</classifier>
</dependency>
<dependency>
- <groupId>net.md-5</groupId>

View File

@ -1,14 +1,14 @@
From 42086afe5cb8e7ec279421c3caf74fdf0ebbc413 Mon Sep 17 00:00:00 2001
From 9e23f15ddcedd1ddda23827e564ecd3058687010 Mon Sep 17 00:00:00 2001
From: Mark Vainomaa <mikroskeem@mikroskeem.eu>
Date: Wed, 18 Jul 2018 20:23:03 +0300
Subject: [PATCH] Copy license files into jar
diff --git a/proxy/pom.xml b/proxy/pom.xml
index d1c4570d..fe1506e4 100644
index 63bc0b32..a70f8c5c 100644
--- a/proxy/pom.xml
+++ b/proxy/pom.xml
@@ -119,4 +119,26 @@
@@ -131,4 +131,26 @@
<scope>runtime</scope>
</dependency>
</dependencies>
@ -36,5 +36,5 @@ index d1c4570d..fe1506e4 100644
+ <!-- Waterfall end -->
</project>
--
2.43.0
2.44.0

View File

@ -1,14 +1,14 @@
From a7831360e8f8300b9aa7d3f340b609991a8f6150 Mon Sep 17 00:00:00 2001
From a711f758f121225516b930a37d60a995354ace22 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 fdfa1480..e158a2d3 100644
index 40045b77..c6ad1f54 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
@@ -117,6 +117,16 @@ public class ProtocolConstants
@@ -118,6 +118,16 @@ public class ProtocolConstants
SUPPORTED_VERSION_IDS = supportedVersionIds.build();
}
@ -26,5 +26,5 @@ index fdfa1480..e158a2d3 100644
{
--
2.43.0.windows.1
2.44.0

View File

@ -1,4 +1,4 @@
From 0cdb5fce7e1e629416846d4493d8eee5458b1263 Mon Sep 17 00:00:00 2001
From 399142c001df2d50e1cba9eee822388bc39b12ab Mon Sep 17 00:00:00 2001
From: Techcable <Techcable@techcable.net>
Date: Tue, 3 May 2016 20:31:52 -0700
Subject: [PATCH] Don't access a ByteBuf's underlying array
@ -43,7 +43,7 @@ index 70b292f0..91f71c09 100644
* Allow this packet to be sent as an "extended" packet.
*/
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 47e06dcd..c60c7dd7 100644
index abdbfd1d..04bd6778 100644
--- a/proxy/src/main/java/net/md_5/bungee/ServerConnector.java
+++ b/proxy/src/main/java/net/md_5/bungee/ServerConnector.java
@@ -277,7 +277,7 @@ public class ServerConnector extends PacketHandler
@ -56,7 +56,7 @@ index 47e06dcd..c60c7dd7 100644
}
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 27737d1b..b7856d92 100644
index 4684bfd8..63be43eb 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
@@ -313,7 +313,7 @@ public class DownstreamBridge extends PacketHandler
@ -69,10 +69,10 @@ index 27737d1b..b7856d92 100644
// changes in the packet are ignored so we need to send it manually
con.unsafe().sendPacket( pluginMessage );
diff --git a/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java b/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java
index 5b9c35d1..2d6885a9 100644
index 25f045be..544d34ed 100644
--- a/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java
+++ b/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java
@@ -50,7 +50,7 @@ import net.md_5.bungee.protocol.Varint21LengthFieldPrepender;
@@ -55,7 +55,7 @@ import net.md_5.bungee.protocol.Varint21LengthFieldPrepender;
public class PipelineUtils
{
@ -82,5 +82,5 @@ index 5b9c35d1..2d6885a9 100644
{
@Override
--
2.43.0.windows.1
2.44.0

View File

@ -1,4 +1,4 @@
From 3916ceec65caec4aaa4f049a5477856ccb69274a Mon Sep 17 00:00:00 2001
From 064c9dfefd11db8d743f61ab3a4003dca63f3f7b Mon Sep 17 00:00:00 2001
From: Techcable <Techcable@outlook.com>
Date: Mon, 14 Mar 2016 15:40:44 -0700
Subject: [PATCH] Optimize uuid conversions
@ -250,10 +250,10 @@ index e582808f..29cd91dd 100644
}
diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
index d9247fb2..43fb3208 100644
index 1d9a9ee5..616adcf1 100644
--- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
+++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
@@ -788,7 +788,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection
@@ -806,7 +806,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection
@Override
public String getUUID()
{
@ -263,5 +263,5 @@ index d9247fb2..43fb3208 100644
@Override
--
2.43.0.windows.1
2.44.0

View File

@ -1,4 +1,4 @@
From 191e3b8b67359f39bac4d62ee57796eb1e793ce3 Mon Sep 17 00:00:00 2001
From 8b98ff8d43ae4244bb9700d76f6d8b02270bc6fd Mon Sep 17 00:00:00 2001
From: Harry <me@harry5573.uk>
Date: Sun, 24 Jan 2016 15:13:29 -0700
Subject: [PATCH] Enable TCP_NODELAY.
@ -6,10 +6,10 @@ Subject: [PATCH] Enable TCP_NODELAY.
This is enabled by default on CraftBukkit/Spigot >= 1.8 and may help with network performance.
diff --git a/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java b/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java
index 2d6885a9..3f30da0c 100644
index 544d34ed..6a0d3351 100644
--- a/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java
+++ b/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java
@@ -174,6 +174,7 @@ public class PipelineUtils
@@ -195,6 +195,7 @@ public class PipelineUtils
{
// IP_TOS is not supported (Windows XP / Windows Server 2003)
}
@ -18,5 +18,5 @@ index 2d6885a9..3f30da0c 100644
ch.config().setWriteBufferWaterMark( MARK );
--
2.43.0
2.44.0

View File

@ -1,4 +1,4 @@
From 702afc4df45926f3d96841ffb908f3b85cb2d3f0 Mon Sep 17 00:00:00 2001
From ea36c5dc9f008d20bbef476f4af4f0ce9301aed0 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
@ -37,10 +37,10 @@ index d79d5e5c..250e7620 100644
{
packet.read( in, protocol, prot.getDirection(), protocolVersion );
diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java b/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java
index cb5c30d5..a8a91955 100644
index 2271a2e5..d932b696 100644
--- a/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java
+++ b/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java
@@ -861,14 +861,23 @@ public enum Protocol
@@ -862,14 +862,23 @@ public enum Protocol
return protocol;
}
@ -66,7 +66,7 @@ index cb5c30d5..a8a91955 100644
throw new BadPacketException( "Packet with id " + id + " outside of range" );
}
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 37f86325..1b7395ad 100644
index 7a211f1b..a25a493e 100644
--- a/proxy/src/main/java/net/md_5/bungee/ServerConnector.java
+++ b/proxy/src/main/java/net/md_5/bungee/ServerConnector.java
@@ -234,6 +234,12 @@ public class ServerConnector extends PacketHandler

View File

@ -1,4 +1,4 @@
From f3c9d4d4def15946b7de244db86dd3d41e6b8c00 Mon Sep 17 00:00:00 2001
From d5eaa35359d90f611f6450fb6ee12014e0a13921 Mon Sep 17 00:00:00 2001
From: Janmm14 <computerjanimaus@yahoo.de>
Date: Sat, 12 Dec 2015 23:43:30 +0100
Subject: [PATCH] Improve server list ping logging
@ -7,7 +7,7 @@ This functionality of this patch was adopted upstream, however, this
patch remains for a few misc improvements around here
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 1b7395ad..e670a57a 100644
index a25a493e..63920e7e 100644
--- a/proxy/src/main/java/net/md_5/bungee/ServerConnector.java
+++ b/proxy/src/main/java/net/md_5/bungee/ServerConnector.java
@@ -522,6 +522,6 @@ public class ServerConnector extends PacketHandler
@ -31,10 +31,10 @@ index d408840d..cd3ed518 100644
}
}
diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
index 43fb3208..4325fe23 100644
index 616adcf1..0fbe8b0d 100644
--- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
+++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
@@ -794,20 +794,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection
@@ -812,20 +812,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection
@Override
public String toString()
{
@ -57,7 +57,7 @@ index 43fb3208..4325fe23 100644
@Override
diff --git a/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java b/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java
index 050cc29b..740c90ec 100644
index bfd5cb5f..2dafa4d9 100644
--- a/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java
+++ b/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java
@@ -396,6 +396,6 @@ public class UpstreamBridge extends PacketHandler

View File

@ -1,4 +1,4 @@
From 10ab9f8cff10028bd518507ce3a122897f32d202 Mon Sep 17 00:00:00 2001
From 34c7d23c344f60184778406b573dfaa6209be1a9 Mon Sep 17 00:00:00 2001
From: Techcable <Techcable@outlook.com>
Date: Sun, 7 Feb 2016 00:01:19 -0700
Subject: [PATCH] Add a property to accept invalid ping packets
@ -9,10 +9,10 @@ You can enable it by setting '-Dwaterfall.acceptInvalidPackets=true' at the comm
Fixes #23
diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
index 4325fe23..b7dd5fe3 100644
index 0fbe8b0d..deb9fef3 100644
--- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
+++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
@@ -323,10 +323,14 @@ public class InitialHandler extends PacketHandler implements PendingConnection
@@ -325,10 +325,14 @@ public class InitialHandler extends PacketHandler implements PendingConnection
thisState = State.PING;
}
@ -29,5 +29,5 @@ index 4325fe23..b7dd5fe3 100644
disconnect( "" );
}
--
2.43.0.windows.1
2.44.0

View File

@ -1,4 +1,4 @@
From 96ff42638e839e92b966aaa95a50f8ee81cd16ea Mon Sep 17 00:00:00 2001
From f8b0691ca00ae4968acfacbc9d4a86ec2e078d88 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
@ -233,7 +233,7 @@ index 00000000..cfd039cd
+ </Loggers>
+</Configuration>
diff --git a/pom.xml b/pom.xml
index 87ab1b76..f8491614 100644
index a19d10da..715d3e11 100644
--- a/pom.xml
+++ b/pom.xml
@@ -48,12 +48,13 @@
@ -253,10 +253,10 @@ index 87ab1b76..f8491614 100644
</modules>
diff --git a/proxy/pom.xml b/proxy/pom.xml
index 1d2b4ec9..15887222 100644
index 216e894e..95703fee 100644
--- a/proxy/pom.xml
+++ b/proxy/pom.xml
@@ -71,7 +71,7 @@
@@ -83,7 +83,7 @@
</dependency>
<dependency>
<groupId>io.github.waterfallmc</groupId>
@ -265,7 +265,7 @@ index 1d2b4ec9..15887222 100644
<version>${project.version}</version>
<scope>compile</scope>
</dependency>
@@ -93,12 +93,13 @@
@@ -105,12 +105,13 @@
<version>${project.version}</version>
<scope>compile</scope>
</dependency>
@ -280,7 +280,7 @@ index 1d2b4ec9..15887222 100644
<dependency>
<groupId>net.sf.jopt-simple</groupId>
<artifactId>jopt-simple</artifactId>
@@ -130,6 +131,35 @@
@@ -142,6 +143,35 @@
<version>1.9.18</version>
<scope>runtime</scope>
</dependency>

View File

@ -1,4 +1,4 @@
From 6568f09ce8c2d9ad4743de43363784c40c3bce11 Mon Sep 17 00:00:00 2001
From d45c224f7f456f0df39e9dea42d026fed59fcd77 Mon Sep 17 00:00:00 2001
From: phenomax <phenomax@revayd.net>
Date: Thu, 10 Aug 2017 18:41:17 +0200
Subject: [PATCH] Providing access to the player's LoginResult on LoginEvent
@ -51,10 +51,10 @@ similarity index 100%
rename from proxy/src/main/java/net/md_5/bungee/connection/LoginResult.java
rename to api/src/main/java/net/md_5/bungee/connection/LoginResult.java
diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
index b7dd5fe3..5fd26bf1 100644
index deb9fef3..05261ccf 100644
--- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
+++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
@@ -644,7 +644,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection
@@ -653,7 +653,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection
};
// fire login event

View File

@ -1,4 +1,4 @@
From a3bcb041e962b0aa7a546f475a52fb12ab6403f4 Mon Sep 17 00:00:00 2001
From 34ee64660bf849e84b516b691fde2772ff3f758e Mon Sep 17 00:00:00 2001
From: Gabriele C <sgdc3.mail@gmail.com>
Date: Thu, 8 Feb 2018 19:10:52 +0100
Subject: [PATCH] Optionally log InitialHandler connections
@ -61,10 +61,10 @@ index ef44d334..4ff8da6d 100644
public String getGameVersion() {
return gameVersion;
diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
index 5fd26bf1..ccc80506 100644
index 05261ccf..fcd973e5 100644
--- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
+++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
@@ -380,7 +380,10 @@ public class InitialHandler extends PacketHandler implements PendingConnection
@@ -388,7 +388,10 @@ public class InitialHandler extends PacketHandler implements PendingConnection
case 3:
transferred = handshake.getRequestedProtocol() == 3;
// Login

View File

@ -1,4 +1,4 @@
From 205d40bd64875c6ae94ce8c9e9c66ddfc13c6089 Mon Sep 17 00:00:00 2001
From 3eb3ba0ef9ff74b095ea44a1385af0b3a5a71293 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 307a417b..43d13e36 100644
index e10f33ad..c0c523e3 100644
--- a/proxy/src/main/java/net/md_5/bungee/ServerConnector.java
+++ b/proxy/src/main/java/net/md_5/bungee/ServerConnector.java
@@ -264,7 +264,8 @@ public class ServerConnector extends PacketHandler
@ -123,10 +123,10 @@ index 307a417b..43d13e36 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 86223e17..ee527938 100644
index d15f2bcc..b8762fc0 100644
--- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java
+++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java
@@ -816,4 +816,9 @@ public final class UserConnection implements ProxiedPlayer
@@ -821,4 +821,9 @@ public final class UserConnection implements ProxiedPlayer
unsafe().sendPacket( new Transfer( host, port ) );
}

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
From 6813e1365f919ea61338f6201b3ff516ec958752 Mon Sep 17 00:00:00 2001
From 9abe9adf843bb142e7ff2d5888f49d89ed08367a Mon Sep 17 00:00:00 2001
From: Shane Freeder <theboyetronic@gmail.com>
Date: Mon, 25 Nov 2019 19:54:06 +0000
Subject: [PATCH] Speed up some common exceptions
@ -172,7 +172,7 @@ index 237955ab..d0bd4d75 100644
+ // Waterfall end
}
diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
index ccc80506..d8d65093 100644
index fcd973e5..473edd76 100644
--- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
+++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
@@ -21,6 +21,8 @@ import javax.crypto.SecretKey;
@ -184,7 +184,7 @@ index ccc80506..d8d65093 100644
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.ToString;
@@ -502,6 +504,14 @@ public class InitialHandler extends PacketHandler implements PendingConnection
@@ -510,6 +512,14 @@ public class InitialHandler extends PacketHandler implements PendingConnection
Preconditions.checkState( EncryptionUtil.check( loginRequest.getPublicKey(), encryptResponse, request ), "Invalid verification" );
SecretKey sharedKey = EncryptionUtil.getSecret( encryptResponse, request );

View File

@ -1,4 +1,4 @@
From 838b44a67a3b27848d8185e5114e2dc9f8067afc Mon Sep 17 00:00:00 2001
From bf64d9cf56589f4dc98386425c290d03b14837fc Mon Sep 17 00:00:00 2001
From: Shane Freeder <theboyetronic@gmail.com>
Date: Mon, 2 Dec 2019 11:35:17 +0000
Subject: [PATCH] ConnectionInitEvent
@ -67,7 +67,7 @@ index 00000000..6e79675f
+ }
+}
diff --git a/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java b/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java
index 3f30da0c..af65e192 100644
index 6a0d3351..3b157d79 100644
--- a/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java
+++ b/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java
@@ -1,6 +1,7 @@
@ -78,7 +78,7 @@ index 3f30da0c..af65e192 100644
import io.netty.buffer.PooledByteBufAllocator;
import io.netty.channel.Channel;
import io.netty.channel.ChannelException;
@@ -63,7 +64,6 @@ public class PipelineUtils
@@ -68,7 +69,6 @@ public class PipelineUtils
ch.close();
return;
}
@ -86,7 +86,7 @@ index 3f30da0c..af65e192 100644
ListenerInfo listener = ch.attr( LISTENER ).get();
if ( BungeeCord.getInstance().getPluginManager().callEvent( new ClientConnectEvent( remoteAddress, listener ) ).isCancelled() )
@@ -72,7 +72,21 @@ public class PipelineUtils
@@ -77,7 +77,21 @@ public class PipelineUtils
return;
}
@ -108,7 +108,7 @@ index 3f30da0c..af65e192 100644
ch.pipeline().addBefore( FRAME_DECODER, LEGACY_DECODER, new LegacyDecoder() );
ch.pipeline().addAfter( FRAME_DECODER, PACKET_DECODER, new MinecraftDecoder( Protocol.HANDSHAKE, true, ProxyServer.getInstance().getProtocolVersion() ) );
ch.pipeline().addAfter( FRAME_PREPENDER, PACKET_ENCODER, new MinecraftEncoder( Protocol.HANDSHAKE, true, ProxyServer.getInstance().getProtocolVersion() ) );
@@ -83,6 +97,9 @@ public class PipelineUtils
@@ -88,6 +102,9 @@ public class PipelineUtils
{
ch.pipeline().addFirst( new HAProxyMessageDecoder() );
}

View File

@ -1,11 +1,11 @@
From f1aae6c964dfc1b53891c412dbf2073e48f4ef36 Mon Sep 17 00:00:00 2001
From 0e7f030c8314b7ca0176021eb3cb8dc85ac60832 Mon Sep 17 00:00:00 2001
From: theminecoder <theminecoder.dev@gmail.com>
Date: Sun, 19 Jul 2020 10:18:23 +1000
Subject: [PATCH] Add auth url option
diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
index d8d65093..ffb078d6 100644
index 473edd76..d095e5f9 100644
--- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
+++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
@@ -83,6 +83,8 @@ import net.md_5.bungee.util.QuietException;
@ -17,7 +17,7 @@ index d8d65093..ffb078d6 100644
private final BungeeCord bungee;
private ChannelWrapper ch;
@Getter
@@ -530,7 +532,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection
@@ -538,7 +540,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection
String encodedHash = URLEncoder.encode( new BigInteger( sha.digest() ).toString( 16 ), "UTF-8" );
String preventProxy = ( BungeeCord.getInstance().config.isPreventProxyConnections() && getSocketAddress() instanceof InetSocketAddress ) ? "&ip=" + URLEncoder.encode( getAddress().getAddress().getHostAddress(), "UTF-8" ) : "";

View File

@ -1,4 +1,4 @@
From 8eda531051300bfd546f283c371ea52d863e800f Mon Sep 17 00:00:00 2001
From 6603022d84bbaf4302d6e65fe79282924cbe8679 Mon Sep 17 00:00:00 2001
From: FivePB <admin@fivepb.me>
Date: Tue, 16 Nov 2021 21:15:32 +0100
Subject: [PATCH] Configurable plugin messaging limits
@ -83,10 +83,10 @@ index b88e3c8a..da0efa36 100644
+ }
}
diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
index ffb078d6..bb9063f6 100644
index d095e5f9..864cb119 100644
--- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
+++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
@@ -830,9 +830,10 @@ public class InitialHandler extends PacketHandler implements PendingConnection
@@ -848,9 +848,10 @@ public class InitialHandler extends PacketHandler implements PendingConnection
for ( String id : content.split( "\0" ) )
{

View File

@ -1,14 +1,14 @@
From f97fb438b8ac483a526e36da5af9728bbb306b20 Mon Sep 17 00:00:00 2001
From 91ba8610d491e730d73485443773c8a24024a4d0 Mon Sep 17 00:00:00 2001
From: Shane Freeder <theboyetronic@gmail.com>
Date: Sun, 8 May 2022 12:04:30 +0100
Subject: [PATCH] Improve login state transition
diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
index bb9063f6..f5959b66 100644
index 864cb119..6344462c 100644
--- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
+++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
@@ -504,6 +504,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection
@@ -512,6 +512,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection
{
Preconditions.checkState( thisState == State.ENCRYPT, "Not expecting ENCRYPT" );
Preconditions.checkState( EncryptionUtil.check( loginRequest.getPublicKey(), encryptResponse, request ), "Invalid verification" );
@ -16,7 +16,7 @@ index bb9063f6..f5959b66 100644
SecretKey sharedKey = EncryptionUtil.getSecret( encryptResponse, request );
// Waterfall start
@@ -558,7 +559,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection
@@ -566,7 +567,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection
}
}
};

View File

@ -1,4 +1,4 @@
From 788bf1c83bc29931fa2205fe3c804b0e8a3a59ba Mon Sep 17 00:00:00 2001
From f9ca58d3ac570d6f371413fbb3536c881480418e Mon Sep 17 00:00:00 2001
From: Shane Freeder <theboyetronic@gmail.com>
Date: Sun, 12 Jun 2022 06:45:54 +0100
Subject: [PATCH] Add protocol version to packet not found message
@ -6,7 +6,7 @@ Subject: [PATCH] Add protocol version to packet not found message
Also avoids a double get, but, this is probably trivial
diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java b/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java
index a8a91955..414d4578 100644
index d932b696..7a29eb0d 100644
--- a/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java
+++ b/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java
@@ -2,6 +2,8 @@ package net.md_5.bungee.protocol;
@ -18,7 +18,7 @@ index a8a91955..414d4578 100644
import gnu.trove.map.TIntObjectMap;
import gnu.trove.map.TObjectIntMap;
import gnu.trove.map.hash.TIntObjectHashMap;
@@ -942,9 +944,12 @@ public enum Protocol
@@ -943,9 +945,12 @@ public enum Protocol
{
throw new BadPacketException( "Unsupported protocol version" );
}

View File

@ -1,4 +1,4 @@
From b8e82d2bdf3c1b23c0338fc239357eb7dc626f1f Mon Sep 17 00:00:00 2001
From 1c5029315edd50653076483bba5e7e406fe07848 Mon Sep 17 00:00:00 2001
From: Aurora <aurora@relanet.eu>
Date: Mon, 18 Jul 2022 15:56:05 +0200
Subject: [PATCH] Add message for outdated clients that don't support secure
@ -8,10 +8,10 @@ Clients before 1.19 don't support secure profiles, but since secure profiles is
things checked those outdated clients didn't get a useful message telling them to update.
diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
index f5959b66..72d48c72 100644
index 6344462c..d58caade 100644
--- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
+++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
@@ -427,6 +427,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection
@@ -435,6 +435,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection
if ( BungeeCord.getInstance().config.isEnforceSecureProfile() && getVersion() < ProtocolConstants.MINECRAFT_1_19_3 )
{

View File

@ -1,4 +1,4 @@
From 25abd4454ef1e0caeeaad0e21866e8612528d916 Mon Sep 17 00:00:00 2001
From 429d77cd283c12f043fb0da276a0a3856aa31ab2 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.
@ -69,7 +69,7 @@ index 37337429..c3683c30 100644
}
// Waterfall End
diff --git a/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java b/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java
index af65e192..6a045d16 100644
index 3b157d79..52c308f7 100644
--- a/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java
+++ b/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java
@@ -5,6 +5,7 @@ import io.github.waterfallmc.waterfall.event.ConnectionInitEvent;
@ -80,10 +80,10 @@ index af65e192..6a045d16 100644
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelOption;
import io.netty.channel.EventLoopGroup;
@@ -119,6 +120,12 @@ public class PipelineUtils
public static final String LEGACY_KICKER = "legacy-kick";
@@ -125,6 +126,12 @@ public class PipelineUtils
private static boolean epoll;
private static boolean io_uring;
+ // Waterfall start: netty reflection -> factory
+ private static final ChannelFactory<? extends ServerChannel> serverChannelFactory;
+ private static final ChannelFactory<? extends ServerChannel> serverChannelDomainFactory;
@ -93,21 +93,21 @@ index af65e192..6a045d16 100644
static
{
@@ -134,6 +141,12 @@ public class PipelineUtils
ProxyServer.getInstance().getLogger().log( Level.WARNING, "Epoll is not working, falling back to NIO: {0}", Util.exception( Epoll.unavailabilityCause() ) );
@@ -155,6 +162,12 @@ public class PipelineUtils
}
}
}
+ // Waterfall start: netty reflection -> factory
+ serverChannelFactory = epoll ? EpollServerSocketChannel::new : NioServerSocketChannel::new;
+ serverChannelDomainFactory = epoll ? EpollServerDomainSocketChannel::new : null;
+ channelFactory = epoll ? EpollSocketChannel::new : NioSocketChannel::new;
+ channelDomainFactory = epoll ? EpollDomainSocketChannel::new : null;
+ serverChannelFactory = io_uring ? IOUringServerSocketChannel::new : epoll ? EpollServerSocketChannel::new : NioServerSocketChannel::new;
+ serverChannelDomainFactory = io_uring ? IOUringServerSocketChannel::new : epoll ? EpollServerDomainSocketChannel::new : null;
+ channelFactory = io_uring ? IOUringSocketChannel::new : epoll ? EpollSocketChannel::new : NioSocketChannel::new;
+ channelDomainFactory = io_uring ? IOUringSocketChannel::new : epoll ? EpollDomainSocketChannel::new : null;
+ // Waterfall end
}
public static EventLoopGroup newEventLoopGroup(int threads, ThreadFactory factory)
@@ -165,6 +178,34 @@ public class PipelineUtils
return epoll ? EpollSocketChannel.class : NioSocketChannel.class;
@@ -186,6 +199,34 @@ public class PipelineUtils
return io_uring ? IOUringSocketChannel.class : epoll ? EpollSocketChannel.class : NioSocketChannel.class;
}
+ // Waterfall start: netty reflection -> factory
@ -140,7 +140,7 @@ index af65e192..6a045d16 100644
+
public static Class<? extends DatagramChannel> getDatagramChannel()
{
return epoll ? EpollDatagramChannel.class : NioDatagramChannel.class;
return io_uring ? IOUringDatagramChannel.class : epoll ? EpollDatagramChannel.class : NioDatagramChannel.class;
--
2.44.0

View File

@ -1,14 +1,14 @@
From de091e83ba1da7002ffd7b951231c69da7a4ec7c Mon Sep 17 00:00:00 2001
From 52469c9e7dbe741742c9504d69ccfc7e3e90a4f5 Mon Sep 17 00:00:00 2001
From: Shane Freeder <theboyetronic@gmail.com>
Date: Fri, 21 Apr 2023 15:32:33 +0100
Subject: [PATCH] reduce log spam from clients registeirng too many channels
diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
index 72d48c72..0b5bee55 100644
index d58caade..f28576f6 100644
--- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
+++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
@@ -186,7 +186,17 @@ public class InitialHandler extends PacketHandler implements PendingConnection
@@ -188,7 +188,17 @@ public class InitialHandler extends PacketHandler implements PendingConnection
@Override
public void handle(PluginMessage pluginMessage) throws Exception
{

View File

@ -1,11 +1,11 @@
From 3b82a10c1ff1eacc4d4fa7d7fe16496c570c5662 Mon Sep 17 00:00:00 2001
From a1cd3244c064607b5bc98a9ea9fb5b6ed244c852 Mon Sep 17 00:00:00 2001
From: Shane Freeder <theboyetronic@gmail.com>
Date: Sun, 15 Oct 2023 00:36:38 +0100
Subject: [PATCH] Prevent proxy commands from breaking the chat chain system
diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/AbstractPacketHandler.java b/protocol/src/main/java/net/md_5/bungee/protocol/AbstractPacketHandler.java
index 14ad2e71..fe6c7339 100644
index 33b246bc..7f5935c3 100644
--- a/protocol/src/main/java/net/md_5/bungee/protocol/AbstractPacketHandler.java
+++ b/protocol/src/main/java/net/md_5/bungee/protocol/AbstractPacketHandler.java
@@ -277,5 +277,9 @@ public abstract class AbstractPacketHandler
@ -19,10 +19,10 @@ index 14ad2e71..fe6c7339 100644
// Waterfall end
}
diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java b/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java
index 414d4578..3a69fced 100644
index 7a29eb0d..67e0f085 100644
--- a/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java
+++ b/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java
@@ -545,6 +545,13 @@ public enum Protocol
@@ -546,6 +546,13 @@ public enum Protocol
map( ProtocolConstants.MINECRAFT_1_19_1, 0x05 ),
map( ProtocolConstants.MINECRAFT_1_20_5, 0x06 )
);
@ -76,10 +76,10 @@ index 00000000..08ecf2a3
+ }
+}
diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/packet/ClientCommand.java b/protocol/src/main/java/net/md_5/bungee/protocol/packet/ClientCommand.java
index fb53ba74..f8e2db8d 100644
index 887ff29f..d4700090 100644
--- a/protocol/src/main/java/net/md_5/bungee/protocol/packet/ClientCommand.java
+++ b/protocol/src/main/java/net/md_5/bungee/protocol/packet/ClientCommand.java
@@ -118,4 +118,9 @@ public class ClientCommand extends DefinedPacket
@@ -108,4 +108,9 @@ public class ClientCommand extends DefinedPacket
{
handler.handle( this );
}
@ -90,7 +90,7 @@ index fb53ba74..f8e2db8d 100644
+ }
}
diff --git a/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java b/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java
index 740c90ec..134a843f 100644
index 2dafa4d9..b482fe2e 100644
--- a/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java
+++ b/proxy/src/main/java/net/md_5/bungee/connection/UpstreamBridge.java
@@ -196,16 +196,22 @@ public class UpstreamBridge extends PacketHandler
@ -98,27 +98,27 @@ index 740c90ec..134a843f 100644
public void handle(ClientCommand command) throws Exception
{
- handleChat( "/" + command.getCommand() );
+ handleChat( "/" + command.getCommand(), command, null ); // Waterfall
+ handleChat( "/" + command.getCommand(), command );
}
@Override
public void handle(ClientCommandSigned command) throws Exception
public void handle(UnsignedClientCommand command) throws Exception
{
- handleChat( "/" + command.getCommand() );
+ handleChat( "/" + command.getCommand(), null, command ); // Waterfall
+ handleChat( "/" + command.getCommand(), null); // Waterfall
}
private String handleChat(String message)
+ {
+ // Waterfall start
+ return handleChat(message, null, null);
+ return handleChat(message, null);
+ }
+ private String handleChat(String message, @javax.annotation.Nullable ClientCommand clientCommand, @javax.annotation.Nullable ClientCommandSigned clientCommandSigned)
+ private String handleChat(String message, @javax.annotation.Nullable ClientCommand clientCommand)
+ // Waterfall end
{
for ( int index = 0, length = message.length(); index < length; index++ )
{
@@ -224,7 +230,18 @@ public class UpstreamBridge extends PacketHandler
@@ -224,7 +230,13 @@ public class UpstreamBridge extends PacketHandler
if ( !chatEvent.isCommand() || !bungee.getPluginManager().dispatchCommand( con, message.substring( 1 ) ) )
{
return message;
@ -126,11 +126,6 @@ index 740c90ec..134a843f 100644
+ } else if (clientCommand != null && clientCommand.isSigned() && clientCommand.getSeenMessages() != null) {
+ if (con.getPendingConnection().getVersion() >= ProtocolConstants.MINECRAFT_1_19_3) {
+ con.getServer().unsafe().sendPacket(new net.md_5.bungee.protocol.packet.ClientChatAcknowledgement(clientCommand.getSeenMessages().getOffset()));
+ }
+ // and then for the new one
+ } else if (clientCommandSigned != null) {
+ if (con.getPendingConnection().getVersion() >= ProtocolConstants.MINECRAFT_1_20_5) {
+ con.getServer().unsafe().sendPacket(new net.md_5.bungee.protocol.packet.ClientChatAcknowledgement(clientCommandSigned.getSeenMessages().getOffset()));
+ }
}
+ // Waterfall end

View File

@ -0,0 +1,179 @@
From 076e7a2e1a2f118de921b5843e3baa4a75cadbbc Mon Sep 17 00:00:00 2001
From: A248 <theanandbeh@gmail.com>
Date: Mon, 21 Aug 2023 13:38:03 -0500
Subject: [PATCH] Proof methods in Plugin, PluginManager against concurrent
access
diff --git a/api/src/main/java/net/md_5/bungee/api/plugin/Plugin.java b/api/src/main/java/net/md_5/bungee/api/plugin/Plugin.java
index 3d1e9a3a..b4d2dd51 100644
--- a/api/src/main/java/net/md_5/bungee/api/plugin/Plugin.java
+++ b/api/src/main/java/net/md_5/bungee/api/plugin/Plugin.java
@@ -113,17 +113,29 @@ public class Plugin
}
//
- private ExecutorService service;
+ private volatile ExecutorService service; // Waterfall - mark volatile
@Deprecated
public ExecutorService getExecutorService()
{
+ // Waterfall start - synchronize
+ ExecutorService service = this.service;
if ( service == null )
{
- String name = ( getDescription() == null ) ? "unknown" : getDescription().getName();
- service = Executors.newCachedThreadPool( new ThreadFactoryBuilder().setNameFormat( name + " Pool Thread #%1$d" )
- .setThreadFactory( new GroupedThreadFactory( this, name ) ).build() );
+ synchronized ( this )
+ {
+ service = this.service;
+ if ( service == null )
+ {
+ String name = ( getDescription() == null ) ? "unknown" : getDescription().getName();
+ service = Executors
+ .newCachedThreadPool( new ThreadFactoryBuilder().setNameFormat( name + " Pool Thread #%1$d" )
+ .setThreadFactory( new GroupedThreadFactory( this, name ) ).build() );
+ this.service = service;
+ }
+ }
}
+ // Waterfall end
return service;
}
//
diff --git a/api/src/main/java/net/md_5/bungee/api/plugin/PluginManager.java b/api/src/main/java/net/md_5/bungee/api/plugin/PluginManager.java
index 1ba5b249..f858e281 100644
--- a/api/src/main/java/net/md_5/bungee/api/plugin/PluginManager.java
+++ b/api/src/main/java/net/md_5/bungee/api/plugin/PluginManager.java
@@ -60,7 +60,7 @@ public final class PluginManager
private final Map<String, Plugin> plugins = new LinkedHashMap<>();
private final MutableGraph<String> dependencyGraph = GraphBuilder.directed().build();
private final LibraryLoader libraryLoader;
- private final Map<String, Command> commandMap = new HashMap<>();
+ private final Map<String, Command> commandMap = new java.util.concurrent.ConcurrentHashMap<>(); // Waterfall - thread safe
private Map<String, PluginDescription> toLoad = new HashMap<>();
private final Multimap<Plugin, Command> commandsByPlugin = ArrayListMultimap.create();
private final Multimap<Plugin, Listener> listenersByPlugin = ArrayListMultimap.create();
@@ -99,12 +99,14 @@ public final class PluginManager
*/
public void registerCommand(Plugin plugin, Command command)
{
+ synchronized ( commandsByPlugin ) { // Waterfall - synchronize mutation
commandMap.put( command.getName().toLowerCase( Locale.ROOT ), command );
for ( String alias : command.getAliases() )
{
commandMap.put( alias.toLowerCase( Locale.ROOT ), command );
}
commandsByPlugin.put( plugin, command );
+ } // Waterfall
}
/**
@@ -114,8 +116,12 @@ public final class PluginManager
*/
public void unregisterCommand(Command command)
{
- while ( commandMap.values().remove( command ) );
- commandsByPlugin.values().remove( command );
+ // Waterfall start - synchronize mutation
+ synchronized ( commandsByPlugin ) {
+ while ( commandMap.values().remove( command ) );
+ commandsByPlugin.values().remove( command );
+ }
+ // Waterfall end
}
/**
@@ -125,12 +131,14 @@ public final class PluginManager
*/
public void unregisterCommands(Plugin plugin)
{
+ synchronized ( commandsByPlugin ) { // Waterfall - synchronize mutation
for ( Iterator<Command> it = commandsByPlugin.get( plugin ).iterator(); it.hasNext(); )
{
Command command = it.next();
while ( commandMap.values().remove( command ) );
it.remove();
}
+ } // Waterfall
}
private Command getCommandIfEnabled(String commandName, CommandSender sender)
@@ -278,7 +286,7 @@ public final class PluginManager
*/
public Collection<Plugin> getPlugins()
{
- return plugins.values();
+ synchronized ( plugins ) { return new java.util.ArrayList<>( plugins.values() ); } // Waterfall - synchronize
}
/**
@@ -289,7 +297,7 @@ public final class PluginManager
*/
public Plugin getPlugin(String name)
{
- return plugins.get( name );
+ synchronized ( plugins ) { return plugins.get( name ); } // Waterfall - synchronize
}
public void loadPlugins()
@@ -395,7 +403,7 @@ public final class PluginManager
Class<?> main = loader.loadClass( plugin.getMain() );
Plugin clazz = (Plugin) main.getDeclaredConstructor().newInstance();
- plugins.put( plugin.getName(), clazz );
+ synchronized ( plugins ) { plugins.put( plugin.getName(), clazz ); } // Waterfall - synchronize
clazz.onLoad();
ProxyServer.getInstance().getLogger().log( Level.INFO, "Loaded plugin {0} version {1} by {2}", new Object[]
{
@@ -501,8 +509,13 @@ public final class PluginManager
Preconditions.checkArgument( !method.isAnnotationPresent( Subscribe.class ),
"Listener %s has registered using deprecated subscribe annotation! Please update to @EventHandler.", listener );
}
- eventBus.register( listener );
- listenersByPlugin.put( plugin, listener );
+ // Waterfall start - synchronize mutation
+ synchronized ( listenersByPlugin )
+ {
+ eventBus.register( listener );
+ listenersByPlugin.put( plugin, listener );
+ }
+ // Waterfall end
}
/**
@@ -512,8 +525,13 @@ public final class PluginManager
*/
public void unregisterListener(Listener listener)
{
- eventBus.unregister( listener );
- listenersByPlugin.values().remove( listener );
+ // Waterfall start - synchronize mutation
+ synchronized ( listenersByPlugin )
+ {
+ eventBus.unregister( listener );
+ listenersByPlugin.values().remove( listener );
+ }
+ // Waterfall end
}
/**
@@ -523,11 +541,13 @@ public final class PluginManager
*/
public void unregisterListeners(Plugin plugin)
{
+ synchronized ( listenersByPlugin ) { // Waterfall - synchronize mutation
for ( Iterator<Listener> it = listenersByPlugin.get( plugin ).iterator(); it.hasNext(); )
{
eventBus.unregister( it.next() );
it.remove();
}
+ } // Waterfall
}
/**
--
2.30.2