diff options
Diffstat (limited to 'src/main/java/net/minecraft')
3 files changed, 34 insertions, 8 deletions
diff --git a/src/main/java/net/minecraft/server/EntityTracker.java b/src/main/java/net/minecraft/server/EntityTracker.java index 89eba263..93f95983 100644 --- a/src/main/java/net/minecraft/server/EntityTracker.java +++ b/src/main/java/net/minecraft/server/EntityTracker.java @@ -8,7 +8,7 @@ import java.util.Set; public class EntityTracker { private Set a = new HashSet(); - private IntHashMap trackedEntities = new IntHashMap(); + public IntHashMap trackedEntities = new IntHashMap(); // CraftBukkit - private -> public private MinecraftServer c; private int d; private World world; // CraftBukkit - change type diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java index caef4df7..6ccf0189 100644 --- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java +++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java @@ -187,6 +187,14 @@ public class EntityTrackerEntry { if (d0 >= (double) (-this.b) && d0 <= (double) this.b && d1 >= (double) (-this.b) && d1 <= (double) this.b) { if (!this.trackedPlayers.contains(entityplayer)) { + // CraftBukkit start + if (tracker instanceof EntityPlayer) { + org.bukkit.entity.Player player = ((EntityPlayer) tracker).getBukkitEntity(); + if (!entityplayer.getBukkitEntity().canSee(player)) { + return; + } + } + // CraftBukkit end this.trackedPlayers.add(entityplayer); entityplayer.netServerHandler.sendPacket(this.b()); if (this.isMoving) { diff --git a/src/main/java/net/minecraft/server/ServerConfigurationManager.java b/src/main/java/net/minecraft/server/ServerConfigurationManager.java index 271fb035..3cea43f1 100644 --- a/src/main/java/net/minecraft/server/ServerConfigurationManager.java +++ b/src/main/java/net/minecraft/server/ServerConfigurationManager.java @@ -111,10 +111,8 @@ public class ServerConfigurationManager { } public void c(EntityPlayer entityplayer) { - // CraftBukkit start - cserver.detectListNameConflict(entityplayer); - this.sendAll(new Packet201PlayerInfo(entityplayer.listName, true, 1000)); - // CraftBukkit end + cserver.detectListNameConflict(entityplayer); // CraftBukkit + //this.sendAll(new Packet201PlayerInfo(entityplayer.name, true, 1000)); // CraftBukkit - replaced with loop below this.players.add(entityplayer); WorldServer worldserver = this.server.getWorldServer(entityplayer.dimension); @@ -142,11 +140,24 @@ public class ServerConfigurationManager { worldserver.addEntity(entityplayer); this.getPlayerManager(entityplayer.dimension).addPlayer(entityplayer); + // CraftBukkit start - sendAll above replaced with this loop + Packet201PlayerInfo packet = new Packet201PlayerInfo(entityplayer.listName, true, 1000); + for (int i = 0; i < this.players.size(); ++i) { + EntityPlayer entityplayer1 = (EntityPlayer) this.players.get(i); + + if (entityplayer1.getBukkitEntity().canSee(entityplayer.getBukkitEntity())) { + entityplayer1.netServerHandler.sendPacket(packet); + } + } + // CraftBukkit end + for (int i = 0; i < this.players.size(); ++i) { EntityPlayer entityplayer1 = (EntityPlayer) this.players.get(i); // CraftBukkit start - .name -> .listName - entityplayer.netServerHandler.sendPacket(new Packet201PlayerInfo(entityplayer1.listName, true, entityplayer1.ping)); + if (entityplayer.getBukkitEntity().canSee(entityplayer1.getBukkitEntity())) { + entityplayer.netServerHandler.sendPacket(new Packet201PlayerInfo(entityplayer1.listName, true, entityplayer1.ping)); + } // CraftBukkit end } } @@ -169,8 +180,15 @@ public class ServerConfigurationManager { this.server.getWorldServer(entityplayer.dimension).kill(entityplayer); this.players.remove(entityplayer); this.getPlayerManager(entityplayer.dimension).removePlayer(entityplayer); - // CraftBukkit start - .name -> .listName - this.sendAll(new Packet201PlayerInfo(entityplayer.listName, false, 9999)); + // CraftBukkit start - .name -> .listName, replace sendAll with loop + Packet201PlayerInfo packet = new Packet201PlayerInfo(entityplayer.listName, false, 9999); + for (int i = 0; i < this.players.size(); ++i) { + EntityPlayer entityplayer1 = (EntityPlayer) this.players.get(i); + + if (entityplayer1.getBukkitEntity().canSee(entityplayer.getBukkitEntity())) { + entityplayer1.netServerHandler.sendPacket(packet); + } + } // CraftBukkit end return playerQuitEvent.getQuitMessage(); // CraftBukkit |