diff --git a/common/src/main/java/us/myles/ViaVersion/AbstractViaConfig.java b/common/src/main/java/us/myles/ViaVersion/AbstractViaConfig.java index aeafd47eb..df0b09adf 100644 --- a/common/src/main/java/us/myles/ViaVersion/AbstractViaConfig.java +++ b/common/src/main/java/us/myles/ViaVersion/AbstractViaConfig.java @@ -55,6 +55,7 @@ public abstract class AbstractViaConfig extends Config implements ViaVersionConf private boolean healthNaNFix; private boolean instantRespawn; private boolean ignoreLongChannelNames; + private boolean forcedUse1_17ResourcePack; protected AbstractViaConfig(File configFile) { super(configFile); @@ -113,6 +114,7 @@ public abstract class AbstractViaConfig extends Config implements ViaVersionConf healthNaNFix = getBoolean("fix-1_14-health-nan", true); 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); } @Override @@ -376,4 +378,9 @@ public abstract class AbstractViaConfig extends Config implements ViaVersionConf public boolean isIgnoreLong1_16ChannelNames() { return ignoreLongChannelNames; } + + @Override + public boolean isForcedUse1_17ResourcePack() { + return forcedUse1_17ResourcePack; + } } diff --git a/common/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java b/common/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java index fe6818daa..64ecc02a5 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java +++ b/common/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java @@ -366,4 +366,11 @@ public interface ViaVersionConfig { * @return true if enabled */ boolean isIgnoreLong1_16ChannelNames(); + + /** + * Force 1.17+ client to accept the server resource pack. + * + * @return true if enabled + */ + boolean isForcedUse1_17ResourcePack(); } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_17to1_16_4/Protocol1_17To1_16_4.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_17to1_16_4/Protocol1_17To1_16_4.java index 2555d647b..54161c716 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_17to1_16_4/Protocol1_17To1_16_4.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_17to1_16_4/Protocol1_17To1_16_4.java @@ -1,6 +1,7 @@ package us.myles.ViaVersion.protocols.protocol1_17to1_16_4; import org.jetbrains.annotations.Nullable; +import us.myles.ViaVersion.api.Via; import us.myles.ViaVersion.api.data.MappingData; import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.protocol.ClientboundPacketType; @@ -81,7 +82,7 @@ public class Protocol1_17To1_16_4 extends Protocol { wrapper.passthrough(Type.STRING); wrapper.passthrough(Type.STRING); - wrapper.write(Type.BOOLEAN, false); // Required + wrapper.write(Type.BOOLEAN, Via.getConfig().isForcedUse1_17ResourcePack()); // Required }); } }); diff --git a/common/src/main/resources/assets/viaversion/config.yml b/common/src/main/resources/assets/viaversion/config.yml index be25b4df2..82f41e6ec 100644 --- a/common/src/main/resources/assets/viaversion/config.yml +++ b/common/src/main/resources/assets/viaversion/config.yml @@ -151,6 +151,9 @@ vine-climb-fix: false # CraftBukkit had this limit hardcoded until 1.16, so we have to assume any server/proxy might have this arbitrary check present. 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 +# #----------------------------------------------------------# # 1.9+ CLIENTS ON 1.8 SERVERS OPTIONS # #----------------------------------------------------------#