@@ -90,8 +90,22 @@ protected void registerPackets() {
9090
9191 final SoundRewriter <ClientboundPacket1_21_6 > soundRewriter = new SoundRewriter <>(this );
9292 soundRewriter .registerSound1_19_3 (ClientboundPackets1_21_6 .SOUND );
93+ appendClientbound (ClientboundPackets1_21_6 .SOUND , wrapper -> {
94+ wrapper .passthrough (Types .VAR_INT ); // Source
95+ fixSoundSource (wrapper );
96+ });
9397 soundRewriter .registerSound1_19_3 (ClientboundPackets1_21_6 .SOUND_ENTITY );
98+ appendClientbound (ClientboundPackets1_21_6 .SOUND_ENTITY , wrapper -> {
99+ wrapper .passthrough (Types .VAR_INT ); // Source
100+ fixSoundSource (wrapper );
101+ });
94102 soundRewriter .registerStopSound (ClientboundPackets1_21_6 .STOP_SOUND );
103+ appendClientbound (ClientboundPackets1_21_6 .STOP_SOUND , wrapper -> {
104+ final byte flags = wrapper .get (Types .BYTE , 0 );
105+ if ((flags & 0x01 ) != 0 ) {
106+ fixSoundSource (wrapper );
107+ }
108+ });
95109
96110 new StatisticsRewriter <>(this ).register (ClientboundPackets1_21_6 .AWARD_STATS );
97111 new AttributeRewriter <>(this ).register1_21 (ClientboundPackets1_21_6 .UPDATE_ATTRIBUTES );
@@ -238,10 +252,11 @@ public void handleArgument(final PacketWrapper wrapper, final String argumentTyp
238252 cancelClientbound (ClientboundPackets1_21_6 .TRACKED_WAYPOINT );
239253 }
240254
241- private void clearDialog (final PacketWrapper wrapper ) {
242- wrapper .cancel ();
243- final DialogViewProvider provider = Via .getManager ().getProviders ().get (DialogViewProvider .class );
244- provider .closeDialog (wrapper .user ());
255+ private void fixSoundSource (final PacketWrapper wrapper ) {
256+ final int source = wrapper .get (Types .VAR_INT , 0 );
257+ if (source == 10 ) { // New ui source, map to master
258+ wrapper .set (Types .VAR_INT , 0 , 0 );
259+ }
245260 }
246261
247262 private void updateTags (final PacketWrapper wrapper ) {
@@ -275,6 +290,12 @@ private void updateTags(final PacketWrapper wrapper) {
275290 }
276291 }
277292
293+ private void clearDialog (final PacketWrapper wrapper ) {
294+ wrapper .cancel ();
295+ final DialogViewProvider provider = Via .getManager ().getProviders ().get (DialogViewProvider .class );
296+ provider .closeDialog (wrapper .user ());
297+ }
298+
278299 private void storeServerLinks (final PacketWrapper wrapper ) {
279300 final ServerLinks serverLinks = new ServerLinks ();
280301 final int length = wrapper .passthrough (Types .VAR_INT );
0 commit comments