forked from GeyserMC/Geyser
		
	Fix stopsound bug (#1771)
* Fix stopsound not working bug * removed extra imports * Update JavaPlayerStopSoundTranslator.java * Update JavaPlayerStopSoundTranslator.java * Update JavaPlayerStopSoundTranslator.java * Fix packet names and fix specific sounds not stopping Co-authored-by: YHDiamond <47502993+yehudahrrs@users.noreply.github.com> Co-authored-by: Camotoy <20743703+Camotoy@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									396d1b6b61
								
							
						
					
					
						commit
						1a08e1104d
					
				
					 2 changed files with 18 additions and 9 deletions
				
			
		| 
						 | 
				
			
			@ -36,14 +36,14 @@ import org.geysermc.connector.network.translators.Translator;
 | 
			
		|||
import org.geysermc.connector.network.translators.sound.SoundRegistry;
 | 
			
		||||
 | 
			
		||||
@Translator(packet = ServerPlaySoundPacket.class)
 | 
			
		||||
public class JavaPlayerPlaySoundTranslator extends PacketTranslator<ServerPlaySoundPacket> {
 | 
			
		||||
public class JavaPlaySoundTranslator extends PacketTranslator<ServerPlaySoundPacket> {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void translate(ServerPlaySoundPacket packet, GeyserSession session) {
 | 
			
		||||
        String packetSound;
 | 
			
		||||
        if(packet.getSound() instanceof BuiltinSound) {
 | 
			
		||||
        if (packet.getSound() instanceof BuiltinSound) {
 | 
			
		||||
            packetSound = ((BuiltinSound) packet.getSound()).getName();
 | 
			
		||||
        } else if(packet.getSound() instanceof CustomSound) {
 | 
			
		||||
        } else if (packet.getSound() instanceof CustomSound) {
 | 
			
		||||
            packetSound = ((CustomSound) packet.getSound()).getName();
 | 
			
		||||
        } else {
 | 
			
		||||
            session.getConnector().getLogger().debug("Unknown sound packet, we were unable to map this. " + packet.toString());
 | 
			
		||||
| 
						 | 
				
			
			@ -23,7 +23,7 @@
 | 
			
		|||
 * @link https://github.com/GeyserMC/Geyser
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package org.geysermc.connector.network.translators.java.entity.player;
 | 
			
		||||
package org.geysermc.connector.network.translators.java.world;
 | 
			
		||||
 | 
			
		||||
import com.github.steveice10.mc.protocol.data.game.world.sound.BuiltinSound;
 | 
			
		||||
import com.github.steveice10.mc.protocol.data.game.world.sound.CustomSound;
 | 
			
		||||
| 
						 | 
				
			
			@ -35,26 +35,35 @@ import org.geysermc.connector.network.translators.Translator;
 | 
			
		|||
import org.geysermc.connector.network.translators.sound.SoundRegistry;
 | 
			
		||||
 | 
			
		||||
@Translator(packet = ServerStopSoundPacket.class)
 | 
			
		||||
public class JavaPlayerStopSoundTranslator extends PacketTranslator<ServerStopSoundPacket> {
 | 
			
		||||
public class JavaStopSoundTranslator extends PacketTranslator<ServerStopSoundPacket> {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void translate(ServerStopSoundPacket packet, GeyserSession session) {
 | 
			
		||||
        // Runs if all sounds are stopped
 | 
			
		||||
        if (packet.getSound() == null) {
 | 
			
		||||
            StopSoundPacket stopPacket = new StopSoundPacket();
 | 
			
		||||
            stopPacket.setStoppingAllSound(true);
 | 
			
		||||
            stopPacket.setSoundName("");
 | 
			
		||||
            session.sendUpstreamPacket(stopPacket);
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        String packetSound;
 | 
			
		||||
        if(packet.getSound() instanceof BuiltinSound) {
 | 
			
		||||
        if (packet.getSound() instanceof BuiltinSound) {
 | 
			
		||||
            packetSound = ((BuiltinSound) packet.getSound()).getName();
 | 
			
		||||
        } else if(packet.getSound() instanceof CustomSound) {
 | 
			
		||||
        } else if (packet.getSound() instanceof CustomSound) {
 | 
			
		||||
            packetSound = ((CustomSound) packet.getSound()).getName();
 | 
			
		||||
        } else {
 | 
			
		||||
            session.getConnector().getLogger().debug("Unknown sound packet, we were unable to map this. " + packet.toString());
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        SoundRegistry.SoundMapping soundMapping = SoundRegistry.fromJava(packetSound);
 | 
			
		||||
        SoundRegistry.SoundMapping soundMapping = SoundRegistry.fromJava(packetSound.replace("minecraft:", ""));
 | 
			
		||||
        session.getConnector().getLogger()
 | 
			
		||||
                .debug("[StopSound] Sound mapping " + packetSound + " -> "
 | 
			
		||||
                        + soundMapping + (soundMapping == null ? "[not found]" : "")
 | 
			
		||||
                        + " - " + packet.toString());
 | 
			
		||||
        String playsound;
 | 
			
		||||
        if(soundMapping == null || soundMapping.getPlaysound() == null) {
 | 
			
		||||
        if (soundMapping == null || soundMapping.getPlaysound() == null) {
 | 
			
		||||
            // no mapping
 | 
			
		||||
            session.getConnector().getLogger()
 | 
			
		||||
                    .debug("[StopSound] Defaulting to sound server gave us.");
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue