Cache block break animation packet
This commit is contained in:
101
sources/src/main/java/net/minecraft/server/WorldManager.java
Normal file
101
sources/src/main/java/net/minecraft/server/WorldManager.java
Normal file
@@ -0,0 +1,101 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
import java.util.Iterator;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class WorldManager implements IWorldAccess {
|
||||
|
||||
private final MinecraftServer a;
|
||||
private final WorldServer world;
|
||||
|
||||
public WorldManager(MinecraftServer minecraftserver, WorldServer worldserver) {
|
||||
this.a = minecraftserver;
|
||||
this.world = worldserver;
|
||||
}
|
||||
|
||||
public void a(int i, boolean flag, double d0, double d1, double d2, double d3, double d4, double d5, int... aint) {}
|
||||
|
||||
public void a(int i, boolean flag, boolean flag1, double d0, double d1, double d2, double d3, double d4, double d5, int... aint) {}
|
||||
|
||||
public void a(Entity entity) {
|
||||
this.world.getTracker().track(entity);
|
||||
if (entity instanceof EntityPlayer) {
|
||||
this.world.worldProvider.a((EntityPlayer) entity);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void b(Entity entity) {
|
||||
this.world.getTracker().untrackEntity(entity);
|
||||
this.world.getScoreboard().a(entity);
|
||||
if (entity instanceof EntityPlayer) {
|
||||
this.world.worldProvider.b((EntityPlayer) entity);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void a(@Nullable EntityHuman entityhuman, SoundEffect soundeffect, SoundCategory soundcategory, double d0, double d1, double d2, float f, float f1) {
|
||||
// CraftBukkit - this.world.dimension, // Paper - this.world.dimension -> this.world
|
||||
this.a.getPlayerList().sendPacketNearby(entityhuman, d0, d1, d2, f > 1.0F ? (double) (16.0F * f) : 16.0D, this.world, new PacketPlayOutNamedSoundEffect(soundeffect, soundcategory, d0, d1, d2, f, f1));
|
||||
}
|
||||
|
||||
public void a(int i, int j, int k, int l, int i1, int j1) {}
|
||||
|
||||
public void a(World world, BlockPosition blockposition, IBlockData iblockdata, IBlockData iblockdata1, int i) {
|
||||
this.world.getPlayerChunkMap().flagDirty(blockposition);
|
||||
}
|
||||
|
||||
public void a(BlockPosition blockposition) {}
|
||||
|
||||
public void a(SoundEffect soundeffect, BlockPosition blockposition) {}
|
||||
|
||||
public void a(EntityHuman entityhuman, int i, BlockPosition blockposition, int j) {
|
||||
// CraftBukkit - this.world.dimension
|
||||
this.a.getPlayerList().sendPacketNearby(entityhuman, (double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ(), 64.0D, this.world, new PacketPlayOutWorldEvent(i, blockposition, j, false));
|
||||
}
|
||||
|
||||
public void a(int i, BlockPosition blockposition, int j) {
|
||||
this.a.getPlayerList().sendAll(new PacketPlayOutWorldEvent(i, blockposition, j, true));
|
||||
}
|
||||
|
||||
public void b(int i, BlockPosition blockposition, int j) {
|
||||
// Iterator iterator = this.a.getPlayerList().v().iterator(); // Paper
|
||||
|
||||
// CraftBukkit start
|
||||
EntityHuman entityhuman = null;
|
||||
Entity entity = world.getEntity(i);
|
||||
if (entity instanceof EntityHuman) entityhuman = (EntityHuman) entity;
|
||||
// CraftBukkit end
|
||||
|
||||
// Paper start
|
||||
java.util.List<? extends EntityHuman> list = entity != null ? entity.world.players : this.a.getPlayerList().v();
|
||||
Iterator<? extends EntityHuman> iterator = list.iterator();
|
||||
PacketPlayOutBlockBreakAnimation packet = null; // NeonPaper - cache packet
|
||||
while (iterator.hasNext()) {
|
||||
EntityHuman human = iterator.next();
|
||||
if (!(human instanceof EntityPlayer)) continue;
|
||||
EntityPlayer entityplayer = (EntityPlayer) human;
|
||||
// Paper end
|
||||
|
||||
if (entityplayer != null && entityplayer.world == this.world && entityplayer.getId() != i) {
|
||||
double d0 = (double) blockposition.getX() - entityplayer.locX;
|
||||
double d1 = (double) blockposition.getY() - entityplayer.locY;
|
||||
double d2 = (double) blockposition.getZ() - entityplayer.locZ;
|
||||
|
||||
// CraftBukkit start
|
||||
if (entityhuman != null && entityhuman instanceof EntityPlayer && !entityplayer.getBukkitEntity().canSee(((EntityPlayer) entityhuman).getBukkitEntity())) {
|
||||
continue;
|
||||
}
|
||||
// CraftBukkit end
|
||||
|
||||
if (d0 * d0 + d1 * d1 + d2 * d2 < 1024.0D) {
|
||||
// NeonPaper start
|
||||
if (packet == null) packet = new PacketPlayOutBlockBreakAnimation(i, blockposition, j);
|
||||
entityplayer.playerConnection.sendPacket(packet);
|
||||
// NeonPaper end
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user