From 3547fab228aefe556be948d8a4e650870a526cb5 Mon Sep 17 00:00:00 2001 From: chris Date: Tue, 3 Oct 2023 17:15:30 +0200 Subject: [PATCH] Fix: Bedrock clients timing out due to present Java resource packs (#4176) * fix: auto deny Java edition resource packs * 1.20.2 bump on Fabric * bump mcpl * Bump required min version in the fabric.mod.json file --- .../fabric/src/main/resources/fabric.mod.json | 2 +- .../JavaClientboundResourcePacksPacket.java | 43 +++++++++++++++++++ gradle/libs.versions.toml | 6 +-- 3 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaClientboundResourcePacksPacket.java diff --git a/bootstrap/fabric/src/main/resources/fabric.mod.json b/bootstrap/fabric/src/main/resources/fabric.mod.json index 4c442017a..f401e8f23 100644 --- a/bootstrap/fabric/src/main/resources/fabric.mod.json +++ b/bootstrap/fabric/src/main/resources/fabric.mod.json @@ -25,7 +25,7 @@ "depends": { "fabricloader": ">=0.14.21", "fabric": "*", - "minecraft": ">=1.20", + "minecraft": ">=1.20.2", "fabric-permissions-api-v0": "*" } } diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaClientboundResourcePacksPacket.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaClientboundResourcePacksPacket.java new file mode 100644 index 000000000..017502280 --- /dev/null +++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaClientboundResourcePacksPacket.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @author GeyserMC + * @link https://github.com/GeyserMC/Geyser + */ + +package org.geysermc.geyser.translator.protocol.java; + +import com.github.steveice10.mc.protocol.data.game.ResourcePackStatus; +import com.github.steveice10.mc.protocol.packet.common.clientbound.ClientboundResourcePackPacket; +import com.github.steveice10.mc.protocol.packet.common.serverbound.ServerboundResourcePackPacket; +import org.geysermc.geyser.session.GeyserSession; +import org.geysermc.geyser.translator.protocol.PacketTranslator; +import org.geysermc.geyser.translator.protocol.Translator; + +@Translator(packet = ClientboundResourcePackPacket.class) +public class JavaClientboundResourcePacksPacket extends PacketTranslator { + + @Override + public void translate(GeyserSession session, ClientboundResourcePackPacket packet) { + // We need to "answer" this to avoid timeout issues related to resource packs + session.sendDownstreamPacket(new ServerboundResourcePackPacket(ResourcePackStatus.DECLINED)); + } +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 46106f490..579f9de31 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -14,7 +14,7 @@ protocol-connection = "3.0.0.Beta1-20230908.171156-105" raknet = "1.0.0.CR1-20230703.195238-9" blockstateupdater="1.20.30-20230918.203831-4" mcauthlib = "d9d773e" -mcprotocollib = "1.20.2-1-20231001.201013-5" +mcprotocollib = "1.20.2-1-20231003.141424-6" adventure = "4.14.0" adventure-platform = "4.3.0" junit = "5.9.2" @@ -28,9 +28,9 @@ adapters = "1.10-SNAPSHOT" commodore = "2.2" bungeecord = "a7c6ede" velocity = "3.1.1" -fabric-minecraft = "1.20" +fabric-minecraft = "1.20.2" fabric-loader = "0.14.21" -fabric-api = "0.83.0+1.20" +fabric-api = "0.89.0+1.20.2" [libraries] base-api = { group = "org.geysermc.api", name = "base-api", version.ref = "base-api" }