3131public class FabricParticleApiFixPacketHandler extends PacketHandler {
3232
3333 private static final String REGISTER_CHANNEL = "minecraft:register" ;
34+ private static final String UNREGISTER_CHANNEL = "minecraft:unregister" ;
3435
3536 public FabricParticleApiFixPacketHandler (ProxyConnection proxyConnection ) {
3637 super (proxyConnection );
@@ -39,13 +40,14 @@ public FabricParticleApiFixPacketHandler(ProxyConnection proxyConnection) {
3940 @ Override
4041 public boolean handleC2P (Packet packet , List <ChannelFutureListener > listeners ) throws Exception {
4142 if (packet instanceof C2SCustomPayloadPacket customPayloadPacket ) {
42- if (Key .namespaced (customPayloadPacket .channel ).equals (REGISTER_CHANNEL )) {
43- final List <String > channelsToRegister = Lists .newArrayList (new String (customPayloadPacket .data , StandardCharsets .UTF_8 ).split ("\0 " ));
44- if (channelsToRegister .remove ("fabric:extended_block_state_particle_effect_sync" )) {
45- if (channelsToRegister .isEmpty ()) {
46- return false ; // Cancel packet
43+ final String channel = Key .namespaced (customPayloadPacket .channel );
44+ if (channel .equals (REGISTER_CHANNEL ) || channel .equals (UNREGISTER_CHANNEL )) {
45+ final List <String > channels = Lists .newArrayList (new String (customPayloadPacket .data , StandardCharsets .UTF_8 ).split ("\0 " ));
46+ if (channels .remove ("fabric:extended_block_state_particle_effect_sync" )) {
47+ if (!channels .isEmpty ()) {
48+ customPayloadPacket .data = String .join ("\0 " , channels ).getBytes (StandardCharsets .UTF_8 );
4749 } else {
48- customPayloadPacket . data = String . join ( " \0 " , channelsToRegister ). getBytes ( StandardCharsets . UTF_8 );
50+ return false ; // Cancel packet
4951 }
5052 }
5153 }
0 commit comments