Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-22 14:28:09 +01:00
Don't confuse client with sound coordinates outside view distance.
Dieser Commit ist enthalten in:
Ursprung
c7398b9fdf
Commit
594d7cb8c9
@ -544,7 +544,23 @@ public class EntityEnderDragon extends EntityInsentient implements IComplex, IMo
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (this.bB == 1) {
|
if (this.bB == 1) {
|
||||||
this.world.b(1018, (int) this.locX, (int) this.locY, (int) this.locZ, 0);
|
// CraftBukkit start - Use relative location for far away sounds
|
||||||
|
//this.world.b(1018, (int) this.locX, (int) this.locY, (int) this.locZ, 0);
|
||||||
|
int viewDistance = ((WorldServer) this.world).getServer().getViewDistance() * 16;
|
||||||
|
for (EntityPlayer player : (List<EntityPlayer>) this.world.players) {
|
||||||
|
double deltaX = this.locX - player.locX;
|
||||||
|
double deltaZ = this.locZ - player.locZ;
|
||||||
|
double distanceSquared = deltaX * deltaX + deltaZ * deltaZ;
|
||||||
|
if (distanceSquared > viewDistance * viewDistance) {
|
||||||
|
double deltaLength = Math.sqrt(distanceSquared);
|
||||||
|
double relativeX = player.locX + (deltaX / deltaLength) * viewDistance;
|
||||||
|
double relativeZ = player.locZ + (deltaZ / deltaLength) * viewDistance;
|
||||||
|
player.playerConnection.sendPacket(new PacketPlayOutWorldEvent(1018, (int) relativeX, (int) this.locY, (int) relativeZ, 0, true));
|
||||||
|
} else {
|
||||||
|
player.playerConnection.sendPacket(new PacketPlayOutWorldEvent(1018, (int) this.locX, (int) this.locY, (int) this.locZ, 0, true));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// CraftBukkit end
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,7 +63,24 @@ public class EntityLightning extends EntityWeather {
|
|||||||
public void h() {
|
public void h() {
|
||||||
super.h();
|
super.h();
|
||||||
if (this.lifeTicks == 2) {
|
if (this.lifeTicks == 2) {
|
||||||
this.world.makeSound(this.locX, this.locY, this.locZ, "ambient.weather.thunder", 10000.0F, 0.8F + this.random.nextFloat() * 0.2F);
|
// CraftBukkit start - Use relative location for far away sounds
|
||||||
|
//this.world.makeSound(this.locX, this.locY, this.locZ, "ambient.weather.thunder", 10000.0F, 0.8F + this.random.nextFloat() * 0.2F);
|
||||||
|
float pitch = 0.8F + this.random.nextFloat() * 0.2F;
|
||||||
|
int viewDistance = ((WorldServer) this.world).getServer().getViewDistance() * 16;
|
||||||
|
for (EntityPlayer player : (List<EntityPlayer>) this.world.players) {
|
||||||
|
double deltaX = this.locX - player.locX;
|
||||||
|
double deltaZ = this.locZ - player.locZ;
|
||||||
|
double distanceSquared = deltaX * deltaX + deltaZ * deltaZ;
|
||||||
|
if (distanceSquared > viewDistance * viewDistance) {
|
||||||
|
double deltaLength = Math.sqrt(distanceSquared);
|
||||||
|
double relativeX = player.locX + (deltaX / deltaLength) * viewDistance;
|
||||||
|
double relativeZ = player.locZ + (deltaZ / deltaLength) * viewDistance;
|
||||||
|
player.playerConnection.sendPacket(new PacketPlayOutNamedSoundEffect("ambient.weather.thunder", relativeX, this.locY, relativeZ, 10000.0F, pitch));
|
||||||
|
} else {
|
||||||
|
player.playerConnection.sendPacket(new PacketPlayOutNamedSoundEffect("ambient.weather.thunder", this.locX, this.locY, this.locZ, 10000.0F, pitch));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// CraftBukkit end
|
||||||
this.world.makeSound(this.locX, this.locY, this.locZ, "random.explode", 2.0F, 0.5F + this.random.nextFloat() * 0.2F);
|
this.world.makeSound(this.locX, this.locY, this.locZ, "random.explode", 2.0F, 0.5F + this.random.nextFloat() * 0.2F);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,7 +173,23 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
|
|||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
|
|
||||||
this.world.createExplosion(this, this.locX, this.locY + (double) this.getHeadHeight(), this.locZ, 7.0F, false, this.world.getGameRules().getBoolean("mobGriefing"));
|
this.world.createExplosion(this, this.locX, this.locY + (double) this.getHeadHeight(), this.locZ, 7.0F, false, this.world.getGameRules().getBoolean("mobGriefing"));
|
||||||
this.world.b(1013, (int) this.locX, (int) this.locY, (int) this.locZ, 0);
|
// CraftBukkit start - Use relative location for far away sounds
|
||||||
|
//this.world.b(1013, (int) this.locX, (int) this.locY, (int) this.locZ, 0);
|
||||||
|
int viewDistance = ((WorldServer) this.world).getServer().getViewDistance() * 16;
|
||||||
|
for (EntityPlayer player : (List<EntityPlayer>) this.world.players) {
|
||||||
|
double deltaX = this.locX - player.locX;
|
||||||
|
double deltaZ = this.locZ - player.locZ;
|
||||||
|
double distanceSquared = deltaX * deltaX + deltaZ * deltaZ;
|
||||||
|
if (distanceSquared > viewDistance * viewDistance) {
|
||||||
|
double deltaLength = Math.sqrt(distanceSquared);
|
||||||
|
double relativeX = player.locX + (deltaX / deltaLength) * viewDistance;
|
||||||
|
double relativeZ = player.locZ + (deltaZ / deltaLength) * viewDistance;
|
||||||
|
player.playerConnection.sendPacket(new PacketPlayOutWorldEvent(1013, (int) relativeX, (int) this.locY, (int) relativeZ, 0, true));
|
||||||
|
} else {
|
||||||
|
player.playerConnection.sendPacket(new PacketPlayOutWorldEvent(1013, (int) this.locX, (int) this.locY, (int) this.locZ, 0, true));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// CraftBukkit end
|
||||||
}
|
}
|
||||||
|
|
||||||
this.s(i);
|
this.s(i);
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren