From 161ab5edc67e0cb73a7f2a496b0b957da04e8fbb Mon Sep 17 00:00:00 2001 From: feildmaster Date: Tue, 21 Aug 2012 17:23:17 -0500 Subject: Implement API for Sound, and playing the sounds for Worlds and Players. Adds BUKKIT-1430, BUKKIT-1226 and BUKKIT-2019 --- src/main/java/org/bukkit/craftbukkit/CraftWorld.java | 11 +++++++++++ src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java | 11 +++++++++++ 2 files changed, 22 insertions(+) (limited to 'src/main/java') diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java index 0f788626..33db5ceb 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -41,6 +41,7 @@ import org.bukkit.World; import org.bukkit.block.Biome; import org.bukkit.generator.BlockPopulator; import org.bukkit.Difficulty; +import org.bukkit.Sound; import org.bukkit.craftbukkit.block.CraftBlock; import org.bukkit.craftbukkit.inventory.CraftItemStack; import org.bukkit.plugin.messaging.StandardMessenger; @@ -1161,4 +1162,14 @@ public class CraftWorld implements World { public void setWaterAnimalSpawnLimit(int limit) { waterAnimalSpawn = limit; } + + public void playSound(Location loc, Sound sound, float volume, float pitch) { + if (loc == null || sound == null) return; + + double x = loc.getX(); + double y = loc.getY(); + double z = loc.getZ(); + + getHandle().makeSound(x, y, z, sound.getSound(), volume, pitch); + } } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java index bb7e5069..50c6875c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -250,6 +250,17 @@ public class CraftPlayer extends CraftHumanEntity implements Player { getHandle().netServerHandler.sendPacket(new Packet54PlayNoteBlock(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), id, instrument.getType(), note.getId())); } + public void playSound(Location loc, Sound sound, float volume, float pitch) { + if (loc == null || sound == null || getHandle().netServerHandler == null) return; + + double x = loc.getBlockX() + 0.5; + double y = loc.getBlockY() + 0.5; + double z = loc.getBlockZ() + 0.5; + + Packet62NamedSoundEffect packet = new Packet62NamedSoundEffect(sound.getSound(), x, y, z, volume, pitch); + getHandle().netServerHandler.sendPacket(packet); + } + public void playEffect(Location loc, Effect effect, int data) { if (getHandle().netServerHandler == null) return; -- cgit v1.2.3