From 5d520837b1a8d3c58a518eded06e5f897cc0e26d Mon Sep 17 00:00:00 2001 From: "Luis C.M" <42545778+c0508383@users.noreply.github.com> Date: Wed, 21 Dec 2022 19:07:19 -0600 Subject: [PATCH] Implemented a way to play ISound(s) to players without using a sound ID. --- src/api | 2 +- src/main/java/noppes/npcs/NoppesUtilPlayer.java | 7 +++++++ src/main/java/noppes/npcs/NoppesUtilServer.java | 7 +++++++ src/main/java/noppes/npcs/client/PacketHandlerClient.java | 5 +++++ .../npcs/client/controllers/ScriptSoundController.java | 5 +++++ src/main/java/noppes/npcs/constants/EnumPacketClient.java | 1 + src/main/java/noppes/npcs/scripted/NpcAPI.java | 4 ++++ .../java/noppes/npcs/scripted/entity/ScriptPlayer.java | 4 ++++ 8 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/api b/src/api index 3e537043d..4d7dbb011 160000 --- a/src/api +++ b/src/api @@ -1 +1 @@ -Subproject commit 3e537043dc96fb3a7dd689a492fca7eb62cc1894 +Subproject commit 4d7dbb0114ba0ad1b9654cf772249394f0027aca diff --git a/src/main/java/noppes/npcs/NoppesUtilPlayer.java b/src/main/java/noppes/npcs/NoppesUtilPlayer.java index 77986ea94..3de2d457e 100644 --- a/src/main/java/noppes/npcs/NoppesUtilPlayer.java +++ b/src/main/java/noppes/npcs/NoppesUtilPlayer.java @@ -505,6 +505,13 @@ public class NoppesUtilPlayer { } } + public static void playSoundTo(EntityPlayerMP player, ScriptSound sound) { + NBTTagCompound compound = sound.writeToNBT(); + if (sound.sourceEntity == null || player.worldObj.provider.dimensionId == sound.sourceEntity.getDimension()) { + Server.sendData(player, EnumPacketClient.PLAY_SOUND_TO_NO_ID, compound); + } + } + public static void stopSoundFor(EntityPlayerMP player, int id) { Server.sendData(player, EnumPacketClient.STOP_SOUND_FOR, id); } diff --git a/src/main/java/noppes/npcs/NoppesUtilServer.java b/src/main/java/noppes/npcs/NoppesUtilServer.java index 908d97d73..55cbb7195 100644 --- a/src/main/java/noppes/npcs/NoppesUtilServer.java +++ b/src/main/java/noppes/npcs/NoppesUtilServer.java @@ -336,6 +336,13 @@ public class NoppesUtilServer { } } + public static void playSound(ScriptSound sound) { + List list = MinecraftServer.getServer().getConfigurationManager().playerEntityList; + for (EntityPlayer player : list) { + NoppesUtilPlayer.playSoundTo((EntityPlayerMP) player, sound); + } + } + public static void stopSound(int id) { List list = MinecraftServer.getServer().getConfigurationManager().playerEntityList; for (EntityPlayer player : list) { diff --git a/src/main/java/noppes/npcs/client/PacketHandlerClient.java b/src/main/java/noppes/npcs/client/PacketHandlerClient.java index 006977b35..b3c1d2627 100644 --- a/src/main/java/noppes/npcs/client/PacketHandlerClient.java +++ b/src/main/java/noppes/npcs/client/PacketHandlerClient.java @@ -314,6 +314,11 @@ public class PacketHandlerClient extends PacketHandlerServer{ ScriptSoundController.Instance.playSound(id,sound); } + else if(type == EnumPacketClient.PLAY_SOUND_TO_NO_ID) { + NBTTagCompound compound = Server.readNBT(buffer); + ScriptClientSound sound = ScriptClientSound.fromScriptSound(compound, player.worldObj); + ScriptSoundController.Instance.playSound(sound); + } else if(type == EnumPacketClient.STOP_SOUND_FOR) { int id = buffer.readInt(); ScriptSoundController.Instance.stopSound(id); diff --git a/src/main/java/noppes/npcs/client/controllers/ScriptSoundController.java b/src/main/java/noppes/npcs/client/controllers/ScriptSoundController.java index 2b8d6324b..cbea249b0 100644 --- a/src/main/java/noppes/npcs/client/controllers/ScriptSoundController.java +++ b/src/main/java/noppes/npcs/client/controllers/ScriptSoundController.java @@ -35,6 +35,11 @@ public class ScriptSoundController { soundHandler.playSound(sound); } + public void playSound(ScriptClientSound sound) { + SoundHandler soundHandler = Minecraft.getMinecraft().getSoundHandler(); + soundHandler.playSound(sound); + } + public void stopSound(int id) { SoundHandler soundHandler = Minecraft.getMinecraft().getSoundHandler(); if (sounds.containsKey(id)) { diff --git a/src/main/java/noppes/npcs/constants/EnumPacketClient.java b/src/main/java/noppes/npcs/constants/EnumPacketClient.java index c4ce35b9f..1f6d16c59 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketClient.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketClient.java @@ -42,6 +42,7 @@ public enum EnumPacketClient { OVERLAY_QUEST_TRACKING, DISABLE_MOUSE_INPUT, PLAY_SOUND_TO, + PLAY_SOUND_TO_NO_ID, STOP_SOUND_FOR, PAUSE_SOUNDS, CONTINUE_SOUNDS, diff --git a/src/main/java/noppes/npcs/scripted/NpcAPI.java b/src/main/java/noppes/npcs/scripted/NpcAPI.java index d0e7032fa..3c22a49a7 100644 --- a/src/main/java/noppes/npcs/scripted/NpcAPI.java +++ b/src/main/java/noppes/npcs/scripted/NpcAPI.java @@ -491,6 +491,10 @@ public class NpcAPI extends AbstractNpcAPI { NoppesUtilServer.playSound(id, (ScriptSound) sound); } + public void playSound(ISound sound) { + NoppesUtilServer.playSound((ScriptSound) sound); + } + public void stopSound(int id) { NoppesUtilServer.stopSound(id); } diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java index a759a6c17..7a43b0d1f 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java @@ -590,6 +590,10 @@ public class ScriptPlayer extends ScriptLivingBase NoppesUtilPlayer.playSoundTo(player, id, (ScriptSound) sound); } + public void playSound(ISound sound) { + NoppesUtilPlayer.playSoundTo(player, (ScriptSound) sound); + } + public void stopSound(int id) { NoppesUtilPlayer.stopSoundFor(player, id); }