summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/minecraft
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/minecraft')
-rw-r--r--src/main/java/net/minecraft/server/ServerConfigurationManagerAbstract.java15
-rw-r--r--src/main/java/net/minecraft/server/World.java2
-rw-r--r--src/main/java/net/minecraft/server/WorldManager.java6
3 files changed, 22 insertions, 1 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;
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index cee4d42c..7b97740c 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -766,7 +766,7 @@ public abstract class World implements IBlockAccess {
while (iterator.hasNext()) {
IWorldAccess iworldaccess = (IWorldAccess) iterator.next();
- iworldaccess.a(s, entity.locX, entity.locY - (double) entity.height, entity.locZ, f, f1);
+ ((WorldManager) iworldaccess).a(s, entity.locX, entity.locY - (double) entity.height, entity.locZ, f, f1, entity); // CraftBukkit - Cast to WorldManager, add sourceentity
}
}
}
diff --git a/src/main/java/net/minecraft/server/WorldManager.java b/src/main/java/net/minecraft/server/WorldManager.java
index e70e5abb..ba67e77d 100644
--- a/src/main/java/net/minecraft/server/WorldManager.java
+++ b/src/main/java/net/minecraft/server/WorldManager.java
@@ -22,6 +22,12 @@ public class WorldManager implements IWorldAccess {
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) {
// 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));