diff options
author | mbax <matt@phozop.net> | 2012-09-10 20:42:26 -0400 |
---|---|---|
committer | EvilSeph <evilseph@gmail.com> | 2012-09-14 01:53:42 -0400 |
commit | 4b1f6aff3f2a4a85bea4cca2e92e8164187bfb7a (patch) | |
tree | 01103ed4bfb89afc609488e33f3b0c6574f5dc80 /src/main/java/net/minecraft/server/ServerConfigurationManagerAbstract.java | |
parent | 349cb0bba61c82e1adc6afc32c1ff8efc375c68a (diff) | |
download | craftbukkit-4b1f6aff3f2a4a85bea4cca2e92e8164187bfb7a.tar craftbukkit-4b1f6aff3f2a4a85bea4cca2e92e8164187bfb7a.tar.gz craftbukkit-4b1f6aff3f2a4a85bea4cca2e92e8164187bfb7a.tar.lz craftbukkit-4b1f6aff3f2a4a85bea4cca2e92e8164187bfb7a.tar.xz craftbukkit-4b1f6aff3f2a4a85bea4cca2e92e8164187bfb7a.zip |
[Bleeding] Check visibility API for sounds. Fixes BUKKIT-2210
This implementation of a visibility API check for sounds
was created by adding extra methods carrying the source entity
in WorldManager and ServerConfigurationManagerAbstract and
adding a test for canSee in the SCMA sendPacketNearby method.
This approach involves no logic copying, just method addition.
I opted to cast to WorldManager as:
1) IWorldAccess is not in CraftBukkit at the moment
2) There is no other IWorldAccess implemented in CraftBukkit,
nor is there likely to be one soon. If that day comes, easy fix.
Diffstat (limited to 'src/main/java/net/minecraft/server/ServerConfigurationManagerAbstract.java')
-rw-r--r-- | src/main/java/net/minecraft/server/ServerConfigurationManagerAbstract.java | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/main/java/net/minecraft/server/ServerConfigurationManagerAbstract.java b/src/main/java/net/minecraft/server/ServerConfigurationManagerAbstract.java index aa9c317a..c3aa44a1 100644 --- a/src/main/java/net/minecraft/server/ServerConfigurationManagerAbstract.java +++ b/src/main/java/net/minecraft/server/ServerConfigurationManagerAbstract.java @@ -601,12 +601,27 @@ public abstract class ServerConfigurationManagerAbstract { 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) { + 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 Iterator iterator = this.players.iterator(); while (iterator.hasNext()) { EntityPlayer entityplayer = (EntityPlayer) iterator.next(); + // 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())) { + continue; + } + // CraftBukkit end if (entityplayer != entityhuman && entityplayer.dimension == i) { double d4 = d0 - entityplayer.locX; double d5 = d1 - entityplayer.locY; |