From 14cd568e46a6110c7016524b88d9a7873c40f02a Mon Sep 17 00:00:00 2001 From: LemonCaramel Date: Mon, 21 Jun 2021 21:55:49 +0900 Subject: [PATCH] Add Resource pack prompt message option (1.17+) (#2544) --- .../api/configuration/ViaVersionConfig.java | 8 ++++++++ .../viaversion/configuration/AbstractViaConfig.java | 8 ++++++++ .../protocol1_17to1_16_4/Protocol1_17To1_16_4.java | 2 +- .../java/com/viaversion/viaversion/util/Config.java | 12 ++++++++++++ .../src/main/resources/assets/viaversion/config.yml | 2 ++ 5 files changed, 31 insertions(+), 1 deletion(-) diff --git a/api/src/main/java/com/viaversion/viaversion/api/configuration/ViaVersionConfig.java b/api/src/main/java/com/viaversion/viaversion/api/configuration/ViaVersionConfig.java index 801b07a48..f4f2a5668 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/configuration/ViaVersionConfig.java +++ b/api/src/main/java/com/viaversion/viaversion/api/configuration/ViaVersionConfig.java @@ -22,6 +22,7 @@ */ package com.viaversion.viaversion.api.configuration; +import com.google.gson.JsonElement; import it.unimi.dsi.fastutil.ints.IntSet; public interface ViaVersionConfig { @@ -414,4 +415,11 @@ public interface ViaVersionConfig { * @return true if enabled */ boolean isForcedUse1_17ResourcePack(); + + /** + * Get the message that is sent when a user displays a resource pack prompt. + * + * @return cached serialized component + */ + JsonElement get1_17ResourcePackPrompt(); } diff --git a/common/src/main/java/com/viaversion/viaversion/configuration/AbstractViaConfig.java b/common/src/main/java/com/viaversion/viaversion/configuration/AbstractViaConfig.java index b704bd689..f4a76d02a 100644 --- a/common/src/main/java/com/viaversion/viaversion/configuration/AbstractViaConfig.java +++ b/common/src/main/java/com/viaversion/viaversion/configuration/AbstractViaConfig.java @@ -17,6 +17,7 @@ */ package com.viaversion.viaversion.configuration; +import com.google.gson.JsonElement; import com.viaversion.viaversion.api.configuration.ViaVersionConfig; import com.viaversion.viaversion.util.Config; import it.unimi.dsi.fastutil.ints.IntOpenHashSet; @@ -75,6 +76,7 @@ public abstract class AbstractViaConfig extends Config implements ViaVersionConf private boolean instantRespawn; private boolean ignoreLongChannelNames; private boolean forcedUse1_17ResourcePack; + private JsonElement resourcePack1_17PromptMessage; protected AbstractViaConfig(File configFile) { super(configFile); @@ -136,6 +138,7 @@ public abstract class AbstractViaConfig extends Config implements ViaVersionConf instantRespawn = getBoolean("use-1_15-instant-respawn", false); ignoreLongChannelNames = getBoolean("ignore-long-1_16-channel-names", true); forcedUse1_17ResourcePack = getBoolean("forced-use-1_17-resource-pack", false); + resourcePack1_17PromptMessage = getSerializedComponent("resource-pack-1_17-prompt"); } @Override @@ -414,4 +417,9 @@ public abstract class AbstractViaConfig extends Config implements ViaVersionConf public boolean isForcedUse1_17ResourcePack() { return forcedUse1_17ResourcePack; } + + @Override + public JsonElement get1_17ResourcePackPrompt() { + return resourcePack1_17PromptMessage; + } } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/Protocol1_17To1_16_4.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/Protocol1_17To1_16_4.java index 5abb2a8b3..6b96ad3f9 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/Protocol1_17To1_16_4.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/Protocol1_17To1_16_4.java @@ -102,7 +102,7 @@ public final class Protocol1_17To1_16_4 extends AbstractProtocol(); } } + + public @Nullable JsonElement getSerializedComponent(String key) { + final Object o = this.config.get(key); + if (o != null && !((String) o).isEmpty()) { + return GsonComponentSerializer.gson().serializeToTree(LegacyComponentSerializer.legacySection().deserialize((String) o)); + } else { + return null; + } + } } diff --git a/common/src/main/resources/assets/viaversion/config.yml b/common/src/main/resources/assets/viaversion/config.yml index a4869da2c..593117d2d 100644 --- a/common/src/main/resources/assets/viaversion/config.yml +++ b/common/src/main/resources/assets/viaversion/config.yml @@ -153,6 +153,8 @@ ignore-long-1_16-channel-names: true # # Force 1.17+ client to accept the server resource pack; they will automatically disconnect if they decline. forced-use-1_17-resource-pack: false +# The message to be displayed at the prompt when the 1.17+ client receives the server resource pack. +resource-pack-1_17-prompt: '' # #----------------------------------------------------------# # 1.9+ CLIENTS ON 1.8 SERVERS OPTIONS #