diff --git a/src/main/java/me/steinborn/krypton/mixin/shared/network/pipeline/compression/ClientConnectionMixin.java b/src/main/java/me/steinborn/krypton/mixin/shared/network/pipeline/compression/ClientConnectionMixin.java index 76c2637..324e051 100644 --- a/src/main/java/me/steinborn/krypton/mixin/shared/network/pipeline/compression/ClientConnectionMixin.java +++ b/src/main/java/me/steinborn/krypton/mixin/shared/network/pipeline/compression/ClientConnectionMixin.java @@ -3,6 +3,7 @@ import com.velocitypowered.natives.compression.VelocityCompressor; import com.velocitypowered.natives.util.Natives; import io.netty.channel.Channel; +import me.steinborn.krypton.mod.shared.misc.KryptonPipelineEvent; import me.steinborn.krypton.mod.shared.network.compression.MinecraftCompressDecoder; import me.steinborn.krypton.mod.shared.network.compression.MinecraftCompressEncoder; import net.minecraft.network.ClientConnection; @@ -46,6 +47,8 @@ public void setCompressionThreshold(int compressionThreshold, boolean validate, if (isKryptonOrVanillaCompressor(this.channel.pipeline().get("compress"))) { this.channel.pipeline().remove("compress"); } + + this.channel.pipeline().fireUserEventTriggered(KryptonPipelineEvent.COMPRESSION_DISABLED); } else { MinecraftCompressDecoder decoder = (MinecraftCompressDecoder) channel.pipeline() .get("decompress"); @@ -54,6 +57,8 @@ public void setCompressionThreshold(int compressionThreshold, boolean validate, if (decoder != null && encoder != null) { decoder.setThreshold(compressionThreshold); encoder.setThreshold(compressionThreshold); + + this.channel.pipeline().fireUserEventTriggered(KryptonPipelineEvent.COMPRESSION_THRESHOLD_UPDATED); } else { VelocityCompressor compressor = Natives.compress.get().create(4); @@ -62,9 +67,10 @@ public void setCompressionThreshold(int compressionThreshold, boolean validate, channel.pipeline().addBefore("decoder", "decompress", decoder); channel.pipeline().addBefore("encoder", "compress", encoder); + + this.channel.pipeline().fireUserEventTriggered(KryptonPipelineEvent.COMPRESSION_ENABLED); } } - this.handleViaCompression(); ci.cancel(); diff --git a/src/main/java/me/steinborn/krypton/mixin/shared/network/pipeline/encryption/ClientConnectionMixin.java b/src/main/java/me/steinborn/krypton/mixin/shared/network/pipeline/encryption/ClientConnectionMixin.java index b88425e..3ac16bf 100644 --- a/src/main/java/me/steinborn/krypton/mixin/shared/network/pipeline/encryption/ClientConnectionMixin.java +++ b/src/main/java/me/steinborn/krypton/mixin/shared/network/pipeline/encryption/ClientConnectionMixin.java @@ -3,6 +3,7 @@ import com.velocitypowered.natives.encryption.VelocityCipher; import com.velocitypowered.natives.util.Natives; import io.netty.channel.Channel; +import me.steinborn.krypton.mod.shared.misc.KryptonPipelineEvent; import me.steinborn.krypton.mod.shared.network.ClientConnectionEncryptionExtension; import me.steinborn.krypton.mod.shared.network.pipeline.MinecraftCipherDecoder; import me.steinborn.krypton.mod.shared.network.pipeline.MinecraftCipherEncoder; @@ -27,6 +28,8 @@ public void setupEncryption(SecretKey key) throws GeneralSecurityException { this.encrypted = true; this.channel.pipeline().addBefore("splitter", "decrypt", new MinecraftCipherDecoder(decryption)); this.channel.pipeline().addBefore("prepender", "encrypt", new MinecraftCipherEncoder(encryption)); + + this.channel.pipeline().fireUserEventTriggered(KryptonPipelineEvent.ENCRYPTION_ENABLED); } } } diff --git a/src/main/java/me/steinborn/krypton/mod/shared/misc/KryptonPipelineEvent.java b/src/main/java/me/steinborn/krypton/mod/shared/misc/KryptonPipelineEvent.java new file mode 100644 index 0000000..04a493f --- /dev/null +++ b/src/main/java/me/steinborn/krypton/mod/shared/misc/KryptonPipelineEvent.java @@ -0,0 +1,8 @@ +package me.steinborn.krypton.mod.shared.misc; + +public enum KryptonPipelineEvent { + COMPRESSION_ENABLED, + COMPRESSION_THRESHOLD_UPDATED, + COMPRESSION_DISABLED, + ENCRYPTION_ENABLED, +}