Minimal diffs! Move methods for the new list-name away from nms

This commit is contained in:
Dinnerbone 2011-10-03 00:34:51 +01:00
parent bf09121354
commit 80c2bc266a
3 changed files with 52 additions and 53 deletions

View File

@ -48,55 +48,6 @@ public class ServerConfigurationManager {
// CraftBukkit start // CraftBukkit start
private CraftServer cserver; private CraftServer cserver;
public void changeListName(EntityPlayer entityPlayer, String newName) {
String oldName = entityPlayer.listName;
if (oldName.equals(newName)) {
return;
}
if (newName.length() > 16) {
throw new IllegalArgumentException("Player list names can only be a maximum of 16 characters long");
}
// Collisions will make for invisible people
for (int i = 0; i < this.players.size(); ++i) {
if (((EntityPlayer) this.players.get(i)).listName.equals(newName)) {
throw new IllegalArgumentException(newName + " is already assigned as a player list name for someone");
}
}
entityPlayer.listName = newName;
// Change the name on the client side
this.sendAll(new Packet201PlayerInfo(oldName, false, 9999));
this.sendAll(new Packet201PlayerInfo(newName, true, entityPlayer.i));
}
private void detectListNameConflict(EntityPlayer entityPlayer) {
// Collisions will make for invisible people
for (int i = 0; i < this.players.size(); ++i) {
EntityPlayer testEntityPlayer = (EntityPlayer) this.players.get(i);
// We have a problem!
if (testEntityPlayer != entityPlayer && testEntityPlayer.listName.equals(entityPlayer.listName)) {
String oldName = entityPlayer.listName;
int spaceLeft = 16 - oldName.length();
if (spaceLeft <= 1) { // We also hit the list name length limit!
entityPlayer.listName = oldName.subSequence(0, oldName.length() - 2 - spaceLeft)
+ String.valueOf(System.currentTimeMillis() % 99);
} else {
entityPlayer.listName = oldName + String.valueOf(System.currentTimeMillis() % 99);
}
return;
}
}
}
// CraftBukkit end
// CraftBukkit start
public ServerConfigurationManager(MinecraftServer minecraftserver) { public ServerConfigurationManager(MinecraftServer minecraftserver) {
minecraftserver.server = new CraftServer(minecraftserver, this); minecraftserver.server = new CraftServer(minecraftserver, this);
minecraftserver.console = ColouredConsoleSender.getInstance(); minecraftserver.console = ColouredConsoleSender.getInstance();
@ -161,7 +112,7 @@ public class ServerConfigurationManager {
public void c(EntityPlayer entityplayer) { public void c(EntityPlayer entityplayer) {
// CraftBukkit // CraftBukkit
detectListNameConflict(entityplayer); cserver.detectListNameConflict(entityplayer);
this.sendAll(new Packet201PlayerInfo(entityplayer.listName, true, 1000)); this.sendAll(new Packet201PlayerInfo(entityplayer.listName, true, 1000));
// CraftBukkit end // CraftBukkit end
this.players.add(entityplayer); this.players.add(entityplayer);

View File

@ -876,4 +876,26 @@ public final class CraftServer implements Server {
public ConsoleCommandSender getConsoleSender() { public ConsoleCommandSender getConsoleSender() {
return console.console; return console.console;
} }
public void detectListNameConflict(EntityPlayer entityPlayer) {
// Collisions will make for invisible people
for (int i = 0; i < getHandle().players.size(); ++i) {
EntityPlayer testEntityPlayer = (EntityPlayer)getHandle().players.get(i);
// We have a problem!
if (testEntityPlayer != entityPlayer && testEntityPlayer.listName.equals(entityPlayer.listName)) {
String oldName = entityPlayer.listName;
int spaceLeft = 16 - oldName.length();
if (spaceLeft <= 1) { // We also hit the list name length limit!
entityPlayer.listName = oldName.subSequence(0, oldName.length() - 2 - spaceLeft)
+ String.valueOf(System.currentTimeMillis() % 99);
} else {
entityPlayer.listName = oldName + String.valueOf(System.currentTimeMillis() % 99);
}
return;
}
}
}
} }

View File

@ -6,6 +6,7 @@ import net.minecraft.server.EntityHuman;
import net.minecraft.server.EntityPlayer; import net.minecraft.server.EntityPlayer;
import net.minecraft.server.Packet131; import net.minecraft.server.Packet131;
import net.minecraft.server.Packet200Statistic; import net.minecraft.server.Packet200Statistic;
import net.minecraft.server.Packet201PlayerInfo;
import net.minecraft.server.Packet3Chat; import net.minecraft.server.Packet3Chat;
import net.minecraft.server.Packet51MapChunk; import net.minecraft.server.Packet51MapChunk;
import net.minecraft.server.Packet53BlockChange; import net.minecraft.server.Packet53BlockChange;
@ -124,12 +125,37 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
getHandle().displayName = name; getHandle().displayName = name;
} }
public String getListName() { public String getPlayerListName() {
return getHandle().listName; return getHandle().listName;
} }
public void setListName(String name) { public void setPlayerListName(String name) {
server.getHandle().changeListName(getHandle(), name); String oldName = getHandle().listName;
if (name == null) {
name = getName();
}
if (oldName.equals(name)) {
return;
}
if (name.length() > 16) {
throw new IllegalArgumentException("Player list names can only be a maximum of 16 characters long");
}
// Collisions will make for invisible people
for (int i = 0; i < server.getHandle().players.size(); ++i) {
if (((EntityPlayer) server.getHandle().players.get(i)).listName.equals(name)) {
throw new IllegalArgumentException(name + " is already assigned as a player list name for someone");
}
}
getHandle().listName = name;
// Change the name on the client side
server.getHandle().sendAll(new Packet201PlayerInfo(oldName, false, 9999));
server.getHandle().sendAll(new Packet201PlayerInfo(name, true, getHandle().i));
} }
@Override @Override