diff --git a/bukkit/pom.xml b/bukkit/pom.xml
index 824a0af2..6660b0a5 100644
--- a/bukkit/pom.xml
+++ b/bukkit/pom.xml
@@ -233,11 +233,7 @@
provided
- io.netty
- *
-
-
- org.geysermc.cumulus
+ *
*
@@ -263,6 +259,12 @@
api
${geyser.version}
provided
+
+
+ *
+ *
+
+
diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/protocollib/ProtocolLibListener.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/protocollib/ProtocolLibListener.java
index 85645720..122f5027 100644
--- a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/protocollib/ProtocolLibListener.java
+++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/protocollib/ProtocolLibListener.java
@@ -179,7 +179,8 @@ public class ProtocolLibListener extends PacketAdapter {
private boolean verifyNonce(Player sender, PacketContainer packet,
ClientPublicKey clientPublicKey, byte[] expectedToken) {
try {
- if (MinecraftVersion.atOrAbove(new MinecraftVersion(1, 19, 0))) {
+ if (MinecraftVersion.atOrAbove(new MinecraftVersion(1, 19, 0))
+ && !MinecraftVersion.atOrAbove(new MinecraftVersion(1, 19, 3))) {
Either either = packet.getSpecificModifier(Either.class).read(0);
if (clientPublicKey == null) {
Optional left = either.left();
@@ -222,27 +223,34 @@ public class ProtocolLibListener extends PacketAdapter {
plugin.removeSession(player.getAddress());
PacketContainer packet = packetEvent.getPacket();
- val profileKey = packet.getOptionals(BukkitConverters.getWrappedPublicKeyDataConverter())
- .optionRead(0);
+ Optional clientKey = Optional.empty();
+ if (MinecraftVersion.atOrAbove(new MinecraftVersion(1, 19, 3))) {
+ // public key sent separate
+ clientKey = Optional.empty();
+ } else {
+ val profileKey = packet.getOptionals(BukkitConverters.getWrappedPublicKeyDataConverter())
+ .optionRead(0);
- val clientKey = profileKey.flatMap(Function.identity()).flatMap(data -> {
- Instant expires = data.getExpireTime();
- PublicKey key = data.getKey();
- byte[] signature = data.getSignature();
- return Optional.of(ClientPublicKey.of(expires, key, signature));
- });
+ clientKey = profileKey.flatMap(Function.identity()).flatMap(data -> {
+ Instant expires = data.getExpireTime();
+ PublicKey key = data.getKey();
+ byte[] signature = data.getSignature();
+ return Optional.of(ClientPublicKey.of(expires, key, signature));
+ });
- // start reading from index 1, because 0 is already used by the public key
- Optional sessionUUID = packet.getOptionals(Converters.passthrough(UUID.class)).readSafely(1);
- if (verifyClientKeys && sessionUUID.isPresent() && clientKey.isPresent()
- && verifyPublicKey(clientKey.get(), sessionUUID.get())) {
- // missing or incorrect
- // expired always not allowed
- player.kickPlayer(plugin.getCore().getMessage("invalid-public-key"));
- plugin.getLog().warn("Invalid public key from player {}", username);
- return;
+ // start reading from index 1, because 0 is already used by the public key
+ Optional sessionUUID = packet.getOptionals(Converters.passthrough(UUID.class)).readSafely(1);
+ if (verifyClientKeys && sessionUUID.isPresent() && clientKey.isPresent()
+ && verifyPublicKey(clientKey.get(), sessionUUID.get())) {
+ // missing or incorrect
+ // expired always not allowed
+ player.kickPlayer(plugin.getCore().getMessage("invalid-public-key"));
+ plugin.getLog().warn("Invalid public key from player {}", username);
+ return;
+ }
}
+
plugin.getLog().trace("GameProfile {} with {} connecting", sessionKey, username);
packetEvent.getAsyncMarker().incrementProcessingDelay();
diff --git a/bungee/pom.xml b/bungee/pom.xml
index 40f605c9..b66ad319 100644
--- a/bungee/pom.xml
+++ b/bungee/pom.xml
@@ -174,11 +174,7 @@
provided
- io.netty
- *
-
-
- org.geysermc.cumulus
+ *
*
@@ -204,6 +200,12 @@
api
${geyser.version}
provided
+
+
+ *
+ *
+
+
diff --git a/core/pom.xml b/core/pom.xml
index edfee70b..8d562371 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -85,7 +85,7 @@
org.slf4j
slf4j-jdk14
- 2.0.0
+ 2.0.6
@@ -109,11 +109,7 @@
provided
- io.netty
- *
-
-
- org.geysermc.cumulus
+ *
*
@@ -139,6 +135,12 @@
api
${geyser.version}
provided
+
+
+ *
+ *
+
+