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;
|
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());
|
|
@ -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.");
|
Loading…
Reference in a new issue