Use player as point of reference for min volume. Fixes BUKKIT-4640

When the minimum volume is being used because the distance is over a
threshold, the unit vector delta should be added to the player's
location, instead of where the command specified location.

This change makes the player's location the point of reference for
playing sounds when distance to volume scale is lower than minimum
specified volume.
This commit is contained in:
Wesley Wolfe 2013-08-03 18:26:31 -05:00
parent 0971807a34
commit 6a779790eb

View File

@ -74,10 +74,10 @@ public class PlaySoundCommand extends VanillaCommand {
final double delta = Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ) / 2.0D; final double delta = Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ) / 2.0D;
if (delta > 0.0D) { if (delta > 0.0D) {
soundLocation.add(deltaX / delta, deltaY / delta, deltaZ / delta); location.add(deltaX / delta, deltaY / delta, deltaZ / delta);
} }
player.playSound(soundLocation, soundArg, (float) minimumVolume, (float) pitch); player.playSound(location, soundArg, (float) minimumVolume, (float) pitch);
} else { } else {
player.playSound(soundLocation, soundArg, (float) volume, (float) pitch); player.playSound(soundLocation, soundArg, (float) volume, (float) pitch);
} }