mirror of
https://github.com/GeyserMC/Geyser.git
synced 2025-12-31 04:36:33 +00:00
Allow connections even if encryption failed to initialize post-1.16.220 (#2147)
This allows Java 16 to still be compatible with Geyser.
This commit is contained in:
@@ -32,7 +32,7 @@
|
||||
<dependency>
|
||||
<groupId>com.github.CloudburstMC.Protocol</groupId>
|
||||
<artifactId>bedrock-v431</artifactId>
|
||||
<version>f8ecf54</version>
|
||||
<version>9947665</version>
|
||||
<scope>compile</scope>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
|
||||
@@ -60,6 +60,8 @@ import java.util.UUID;
|
||||
public class LoginEncryptionUtils {
|
||||
private static final ObjectMapper JSON_MAPPER = new ObjectMapper().disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
|
||||
|
||||
private static boolean HAS_SENT_ENCRYPTION_MESSAGE = false;
|
||||
|
||||
private static boolean validateChainData(JsonNode data) throws Exception {
|
||||
ECPublicKey lastKey = null;
|
||||
boolean validChain = false;
|
||||
@@ -133,7 +135,18 @@ public class LoginEncryptionUtils {
|
||||
session.setClientData(JSON_MAPPER.convertValue(JSON_MAPPER.readTree(clientJwt.getPayload().toBytes()), BedrockClientData.class));
|
||||
|
||||
if (EncryptionUtils.canUseEncryption()) {
|
||||
LoginEncryptionUtils.startEncryptionHandshake(session, identityPublicKey);
|
||||
try {
|
||||
LoginEncryptionUtils.startEncryptionHandshake(session, identityPublicKey);
|
||||
} catch (Throwable e) {
|
||||
// An error can be thrown on older Java 8 versions about an invalid key
|
||||
if (connector.getConfig().isDebugMode()) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
sendEncryptionFailedMessage(connector);
|
||||
}
|
||||
} else {
|
||||
sendEncryptionFailedMessage(connector);
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
session.disconnect("disconnectionScreen.internalError.cantConnect");
|
||||
@@ -155,6 +168,14 @@ public class LoginEncryptionUtils {
|
||||
session.sendUpstreamPacketImmediately(packet);
|
||||
}
|
||||
|
||||
private static void sendEncryptionFailedMessage(GeyserConnector connector) {
|
||||
if (!HAS_SENT_ENCRYPTION_MESSAGE) {
|
||||
connector.getLogger().warning(LanguageUtils.getLocaleStringLog("geyser.network.encryption.line_1"));
|
||||
connector.getLogger().warning(LanguageUtils.getLocaleStringLog("geyser.network.encryption.line_2", "https://geysermc.org/supported_java"));
|
||||
HAS_SENT_ENCRYPTION_MESSAGE = true;
|
||||
}
|
||||
}
|
||||
|
||||
private static final int AUTH_MSA_DETAILS_FORM_ID = 1334;
|
||||
private static final int AUTH_MSA_CODE_FORM_ID = 1335;
|
||||
private static final int AUTH_FORM_ID = 1336;
|
||||
|
||||
Reference in New Issue
Block a user