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:
YHDiamond 2021-01-02 18:51:41 -05:00 committed by GitHub
parent 396d1b6b61
commit 1a08e1104d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 9 deletions

View file

@ -36,14 +36,14 @@ import org.geysermc.connector.network.translators.Translator;
import org.geysermc.connector.network.translators.sound.SoundRegistry; import org.geysermc.connector.network.translators.sound.SoundRegistry;
@Translator(packet = ServerPlaySoundPacket.class) @Translator(packet = ServerPlaySoundPacket.class)
public class JavaPlayerPlaySoundTranslator extends PacketTranslator<ServerPlaySoundPacket> { public class JavaPlaySoundTranslator extends PacketTranslator<ServerPlaySoundPacket> {
@Override @Override
public void translate(ServerPlaySoundPacket packet, GeyserSession session) { public void translate(ServerPlaySoundPacket packet, GeyserSession session) {
String packetSound; String packetSound;
if(packet.getSound() instanceof BuiltinSound) { if (packet.getSound() instanceof BuiltinSound) {
packetSound = ((BuiltinSound) packet.getSound()).getName(); packetSound = ((BuiltinSound) packet.getSound()).getName();
} else if(packet.getSound() instanceof CustomSound) { } else if (packet.getSound() instanceof CustomSound) {
packetSound = ((CustomSound) packet.getSound()).getName(); packetSound = ((CustomSound) packet.getSound()).getName();
} else { } else {
session.getConnector().getLogger().debug("Unknown sound packet, we were unable to map this. " + packet.toString()); session.getConnector().getLogger().debug("Unknown sound packet, we were unable to map this. " + packet.toString());

View file

@ -23,7 +23,7 @@
* @link https://github.com/GeyserMC/Geyser * @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.BuiltinSound;
import com.github.steveice10.mc.protocol.data.game.world.sound.CustomSound; 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; import org.geysermc.connector.network.translators.sound.SoundRegistry;
@Translator(packet = ServerStopSoundPacket.class) @Translator(packet = ServerStopSoundPacket.class)
public class JavaPlayerStopSoundTranslator extends PacketTranslator<ServerStopSoundPacket> { public class JavaStopSoundTranslator extends PacketTranslator<ServerStopSoundPacket> {
@Override @Override
public void translate(ServerStopSoundPacket packet, GeyserSession session) { 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; String packetSound;
if(packet.getSound() instanceof BuiltinSound) { if (packet.getSound() instanceof BuiltinSound) {
packetSound = ((BuiltinSound) packet.getSound()).getName(); packetSound = ((BuiltinSound) packet.getSound()).getName();
} else if(packet.getSound() instanceof CustomSound) { } else if (packet.getSound() instanceof CustomSound) {
packetSound = ((CustomSound) packet.getSound()).getName(); packetSound = ((CustomSound) packet.getSound()).getName();
} else { } else {
session.getConnector().getLogger().debug("Unknown sound packet, we were unable to map this. " + packet.toString()); session.getConnector().getLogger().debug("Unknown sound packet, we were unable to map this. " + packet.toString());
return; return;
} }
SoundRegistry.SoundMapping soundMapping = SoundRegistry.fromJava(packetSound); SoundRegistry.SoundMapping soundMapping = SoundRegistry.fromJava(packetSound.replace("minecraft:", ""));
session.getConnector().getLogger() session.getConnector().getLogger()
.debug("[StopSound] Sound mapping " + packetSound + " -> " .debug("[StopSound] Sound mapping " + packetSound + " -> "
+ soundMapping + (soundMapping == null ? "[not found]" : "") + soundMapping + (soundMapping == null ? "[not found]" : "")
+ " - " + packet.toString()); + " - " + packet.toString());
String playsound; String playsound;
if(soundMapping == null || soundMapping.getPlaysound() == null) { if (soundMapping == null || soundMapping.getPlaysound() == null) {
// no mapping // no mapping
session.getConnector().getLogger() session.getConnector().getLogger()
.debug("[StopSound] Defaulting to sound server gave us."); .debug("[StopSound] Defaulting to sound server gave us.");