mbax 924a46469d [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!
2012-12-18 19:02:20 -06:00

72 lines
2.8 KiB
Java

package net.minecraft.server;
import java.util.Iterator;
public class WorldManager implements IWorldAccess {
private MinecraftServer server;
public WorldServer world; // CraftBukkit - private -> public
public WorldManager(MinecraftServer minecraftserver, WorldServer worldserver) {
this.server = minecraftserver;
this.world = worldserver;
}
public void a(String s, double d0, double d1, double d2, double d3, double d4, double d5) {}
public void a(Entity entity) {
this.world.getTracker().track(entity);
}
public void b(Entity entity) {
this.world.getTracker().untrackEntity(entity);
}
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));
}
public void a(EntityHuman entityhuman, String s, double d0, double d1, double d2, float f, float f1) {
// CraftBukkit - this.world.dimension
this.server.getServerConfigurationManager().sendPacketNearby(entityhuman, d0, d1, d2, f > 1.0F ? (double) (16.0F * f) : 16.0D, this.world.dimension, new Packet62NamedSoundEffect(s, d0, d1, d2, f, f1));
}
public void a(int i, int j, int k, int l, int i1, int j1) {}
public void a(int i, int j, int k) {
this.world.getPlayerManager().flagDirty(i, j, k);
}
public void b(int i, int j, int k) {}
public void a(String s, int i, int j, int k) {}
public void a(EntityHuman entityhuman, int i, int j, int k, int l, int i1) {
// CraftBukkit - this.world.dimension
this.server.getServerConfigurationManager().sendPacketNearby(entityhuman, (double) j, (double) k, (double) l, 64.0D, this.world.dimension, new Packet61WorldEvent(i, j, k, l, i1, false));
}
public void a(int i, int j, int k, int l, int i1) {
this.server.getServerConfigurationManager().sendAll(new Packet61WorldEvent(i, j, k, l, i1, true));
}
public void b(int i, int j, int k, int l, int i1) {
Iterator iterator = this.server.getServerConfigurationManager().players.iterator();
while (iterator.hasNext()) {
EntityPlayer entityplayer = (EntityPlayer) iterator.next();
if (entityplayer != null && entityplayer.world == this.world && entityplayer.id != i) {
double d0 = (double) j - entityplayer.locX;
double d1 = (double) k - entityplayer.locY;
double d2 = (double) l - entityplayer.locZ;
if (d0 * d0 + d1 * d1 + d2 * d2 < 1024.0D) {
entityplayer.netServerHandler.sendPacket(new Packet55BlockBreakAnimation(i, j, k, l, i1));
}
}
}
}
}