Skip to content

Commit 5d4dcfc

Browse files
authored
Fix Fabric particle api issue (#1028)
Fixes ViaVersion/ViaFabric#428
1 parent 4098227 commit 5d4dcfc

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

src/main/java/com/viaversion/viafabricplus/protocoltranslator/protocol/ViaFabricPlusProtocol.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
package com.viaversion.viafabricplus.protocoltranslator.protocol;
2323

24+
import com.google.common.collect.Lists;
2425
import com.viaversion.viafabricplus.features.entity.metadata_handling.WolfHealthTracker1_14_4;
2526
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
2627
import com.viaversion.viafabricplus.protocoltranslator.protocol.storage.BedrockJoinGameTracker;
@@ -41,6 +42,9 @@
4142
import com.viaversion.viaversion.protocols.v1_21_7to1_21_9.packet.ServerboundPacket1_21_9;
4243
import com.viaversion.viaversion.protocols.v1_21_9to1_21_11.packet.ClientboundPacket1_21_11;
4344
import 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;
4448
import net.raphimc.viabedrock.api.BedrockProtocolVersion;
4549
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
4650
import 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

Comments
 (0)