Small optimization in EntityPlayer by caching the hashcode. Thanks to a very old PR by Belphemur. In addition, changed and slightly improved the hashcode formula for entities

This commit is contained in:
Nathan Adams 2012-01-14 14:56:47 +00:00
parent 77a12d4dce
commit 52c526f313
2 changed files with 17 additions and 22 deletions

View File

@ -206,24 +206,6 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
return !entity.isAlive(); return !entity.isAlive();
} }
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final CraftEntity other = (CraftEntity) obj;
if (this.server != other.server && (this.server == null || !this.server.equals(other.server))) {
return false;
}
if (this.entity != other.entity && (this.entity == null || !this.entity.equals(other.entity))) {
return false;
}
return true;
}
public Server getServer() { public Server getServer() {
return server; return server;
} }
@ -319,11 +301,22 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
return "CraftEntity{" + "id=" + getEntityId() + '}'; return "CraftEntity{" + "id=" + getEntityId() + '}';
} }
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final CraftEntity other = (CraftEntity) obj;
return (this.getEntityId() == other.getEntityId());
}
@Override @Override
public int hashCode() { public int hashCode() {
int hash = 7; int hash = 7;
hash = 89 * hash + (this.server != null ? this.server.hashCode() : 0); hash = 29 * hash + this.getEntityId();
hash = 89 * hash + (this.entity != null ? this.entity.hashCode() : 0);
return hash; return hash;
} }
} }

View File

@ -54,6 +54,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
private long lastPlayed = 0; private long lastPlayed = 0;
private boolean hasPlayedBefore = false; private boolean hasPlayedBefore = false;
private Set<String> channels = new HashSet<String>(); private Set<String> channels = new HashSet<String>();
private int hash = 0;
public CraftPlayer(CraftServer server, EntityPlayer entity) { public CraftPlayer(CraftServer server, EntityPlayer entity) {
super(server, entity); super(server, entity);
@ -583,8 +584,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override @Override
public int hashCode() { public int hashCode() {
int hash = 5; if (hash == 0 || hash == 485) {
hash = 97 * hash + (this.getName() != null ? this.getName().hashCode() : 0); hash = 97 * 5 + (this.getName() != null ? this.getName().hashCode() : 0);
}
return hash; return hash;
} }