summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/minecraft/server
diff options
context:
space:
mode:
authorTravis Watkins <amaranth@ubuntu.com>2012-01-31 13:54:15 -0600
committerEvilSeph <evilseph@gmail.com>2012-02-03 03:34:03 -0500
commit37c88685324165dad8692dae03014cbfeb119936 (patch)
tree1308b3ac34167b9116965227d45cf2d114666510 /src/main/java/net/minecraft/server
parent028cbb8fe9f7b8062b1074aaeb63a9a62e34bf05 (diff)
downloadcraftbukkit-37c88685324165dad8692dae03014cbfeb119936.tar
craftbukkit-37c88685324165dad8692dae03014cbfeb119936.tar.gz
craftbukkit-37c88685324165dad8692dae03014cbfeb119936.tar.lz
craftbukkit-37c88685324165dad8692dae03014cbfeb119936.tar.xz
craftbukkit-37c88685324165dad8692dae03014cbfeb119936.zip
[Bleeding] Implemented Vanish API.
Remove players that cannot see a player from their EntityTrackerEntry and only send user list updates to players who can see the player they reference.
Diffstat (limited to 'src/main/java/net/minecraft/server')
-rw-r--r--src/main/java/net/minecraft/server/EntityTracker.java2
-rw-r--r--src/main/java/net/minecraft/server/EntityTrackerEntry.java8
-rw-r--r--src/main/java/net/minecraft/server/ServerConfigurationManager.java32
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