2121
2222package com .viaversion .viafabricplus .protocoltranslator .protocol ;
2323
24+ import com .google .common .collect .Lists ;
2425import com .viaversion .viafabricplus .features .entity .metadata_handling .WolfHealthTracker1_14_4 ;
2526import com .viaversion .viafabricplus .protocoltranslator .ProtocolTranslator ;
2627import com .viaversion .viafabricplus .protocoltranslator .protocol .storage .BedrockJoinGameTracker ;
4142import com .viaversion .viaversion .protocols .v1_21_7to1_21_9 .packet .ServerboundPacket1_21_9 ;
4243import com .viaversion .viaversion .protocols .v1_21_9to1_21_11 .packet .ClientboundPacket1_21_11 ;
4344import com .viaversion .viaversion .protocols .v1_21_9to1_21_11 .packet .ClientboundPackets1_21_11 ;
45+ import com .viaversion .viaversion .util .Key ;
46+ import java .nio .charset .StandardCharsets ;
47+ import java .util .List ;
4448import net .raphimc .viabedrock .api .BedrockProtocolVersion ;
4549import net .raphimc .vialegacy .api .LegacyProtocolVersion ;
4650import net .raphimc .vialegacy .protocol .beta .b1_8_0_1tor1_0_0_1 .types .Typesb1_8_0_1 ;
@@ -58,6 +62,25 @@ public ViaFabricPlusProtocol() {
5862 super (ClientboundPacket1_21_11 .class , ClientboundPacket1_21_11 .class , ServerboundPacket1_21_9 .class , ServerboundPacket1_21_9 .class );
5963 }
6064
65+ @ Override
66+ protected void registerPackets () {
67+ this .registerServerbound (ServerboundConfigurationPackets1_21_9 .CUSTOM_PAYLOAD , wrapper -> {
68+ if (wrapper .user ().getProtocolInfo ().serverProtocolVersion ().newerThanOrEqualTo (ProtocolVersion .v1_21_5 )) {
69+ final String channel = Key .namespaced (wrapper .passthrough (Types .STRING ));
70+ if (channel .equals ("minecraft:register" ) || channel .equals ("minecraft:unregister" )) {
71+ final List <String > channels = Lists .newArrayList (new String (wrapper .passthrough (Types .SERVERBOUND_CUSTOM_PAYLOAD_DATA ), StandardCharsets .UTF_8 ).split ("\0 " ));
72+ if (channels .remove ("fabric:extended_block_state_particle_effect_sync" )) {
73+ if (!channels .isEmpty ()) {
74+ wrapper .set (Types .SERVERBOUND_CUSTOM_PAYLOAD_DATA , 0 , String .join ("\0 " , channels ).getBytes (StandardCharsets .UTF_8 ));
75+ } else {
76+ wrapper .cancel ();
77+ }
78+ }
79+ }
80+ }
81+ });
82+ }
83+
6184 @ Override
6285 public void init (UserConnection connection ) {
6386 super .init (connection );
0 commit comments