[Bleeding] Check visibility API for sounds. Fixes BUKKIT-3114

With 1.4, entity sound tracking changed for the better.
Our previous method additions can now be removed.
All that's left is checking if the source can be seen
by the recipient of the sound packet. Thanks, Mojang!
This commit is contained in:
mbax 2012-12-18 00:20:23 -05:00 committed by feildmaster
parent d9708d032e
commit 924a46469d
2 changed files with 2 additions and 18 deletions

View File

@ -700,25 +700,15 @@ public abstract class ServerConfigurationManagerAbstract {
} }
public void sendPacketNearby(double d0, double d1, double d2, double d3, int i, Packet packet) { public void sendPacketNearby(double d0, double d1, double d2, double d3, int i, Packet packet) {
this.sendPacketNearby(d0, d1, d2, d3, i, packet, null); // CraftBukkit this.sendPacketNearby((EntityHuman) null, d0, d1, d2, d3, i, packet);
} }
// CraftBukkit start - Add support for entity who caused the packet
public void sendPacketNearby(EntityHuman entityhuman, double d0, double d1, double d2, double d3, int i, Packet packet) { public void sendPacketNearby(EntityHuman entityhuman, double d0, double d1, double d2, double d3, int i, Packet packet) {
this.sendPacketNearby(entityhuman, d0, d1, d2, d3, i, packet, null);
}
public void sendPacketNearby(double d0, double d1, double d2, double d3, int i, Packet packet, Entity sourceentity) {
this.sendPacketNearby(null, d0, d1, d2, d3, i, packet, sourceentity);
}
// CraftBukkit end
public void sendPacketNearby(EntityHuman entityhuman, double d0, double d1, double d2, double d3, int i, Packet packet, Entity sourceentity) { // CraftBukkit - added sourceentity
for (int j = 0; j < this.players.size(); ++j) { for (int j = 0; j < this.players.size(); ++j) {
EntityPlayer entityplayer = (EntityPlayer) this.players.get(j); EntityPlayer entityplayer = (EntityPlayer) this.players.get(j);
// CraftBukkit start - Test if player receiving packet can see the source of the packet // CraftBukkit start - Test if player receiving packet can see the source of the packet
if (sourceentity != null && sourceentity instanceof EntityPlayer && !entityplayer.getBukkitEntity().canSee(((EntityPlayer)sourceentity).getBukkitEntity())) { if (entityhuman != null && entityhuman instanceof EntityPlayer && !entityplayer.getBukkitEntity().canSee(((EntityPlayer) entityhuman).getBukkitEntity())) {
continue; continue;
} }
// CraftBukkit end // CraftBukkit end

View File

@ -22,12 +22,6 @@ public class WorldManager implements IWorldAccess {
this.world.getTracker().untrackEntity(entity); this.world.getTracker().untrackEntity(entity);
} }
// CraftBukkit start - Add source entity for a sound.
public void a(String s, double d0, double d1, double d2, float f, float f1, Entity sourceentity) {
this.server.getServerConfigurationManager().sendPacketNearby(d0, d1, d2, f > 1.0F ? (double) (16.0F * f) : 16.0D, this.world.dimension, new Packet62NamedSoundEffect(s, d0, d1, d2, f, f1), sourceentity);
}
// CraftBukkit end
public void a(String s, double d0, double d1, double d2, float f, float f1) { public void a(String s, double d0, double d1, double d2, float f, float f1) {
// CraftBukkit - this.world.dimension // CraftBukkit - this.world.dimension
this.server.getServerConfigurationManager().sendPacketNearby(d0, d1, d2, f > 1.0F ? (double) (16.0F * f) : 16.0D, this.world.dimension, new Packet62NamedSoundEffect(s, d0, d1, d2, f, f1)); this.server.getServerConfigurationManager().sendPacketNearby(d0, d1, d2, f > 1.0F ? (double) (16.0F * f) : 16.0D, this.world.dimension, new Packet62NamedSoundEffect(s, d0, d1, d2, f, f1));