2011-09-03 01:49:10 +02:00
|
|
|
package org.bukkit.craftbukkit;
|
|
|
|
|
2011-10-10 22:10:48 +02:00
|
|
|
import java.util.LinkedHashMap;
|
|
|
|
import java.util.Map;
|
2011-10-11 15:52:07 +02:00
|
|
|
import net.minecraft.server.EntityPlayer;
|
2011-10-10 22:10:48 +02:00
|
|
|
import org.bukkit.Bukkit;
|
2011-09-03 01:49:10 +02:00
|
|
|
import org.bukkit.OfflinePlayer;
|
|
|
|
import org.bukkit.Server;
|
2011-10-10 22:10:48 +02:00
|
|
|
import org.bukkit.configuration.serialization.ConfigurationSerializable;
|
|
|
|
import org.bukkit.configuration.serialization.SerializableAs;
|
2011-10-11 15:52:07 +02:00
|
|
|
import org.bukkit.entity.Player;
|
2011-09-03 01:49:10 +02:00
|
|
|
|
2011-10-10 22:10:48 +02:00
|
|
|
@SerializableAs("Player")
|
|
|
|
public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializable {
|
2011-09-03 01:49:10 +02:00
|
|
|
private final String name;
|
|
|
|
private final CraftServer server;
|
|
|
|
|
|
|
|
protected CraftOfflinePlayer(CraftServer server, String name) {
|
|
|
|
this.server = server;
|
|
|
|
this.name = name;
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isOnline() {
|
2011-10-11 15:52:07 +02:00
|
|
|
return getPlayer() != null;
|
2011-09-03 01:49:10 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public String getName() {
|
|
|
|
return name;
|
|
|
|
}
|
|
|
|
|
|
|
|
public Server getServer() {
|
|
|
|
return server;
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isOp() {
|
2011-09-03 03:13:07 +02:00
|
|
|
return server.getHandle().isOp(getName().toLowerCase());
|
2011-09-03 01:49:10 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public void setOp(boolean value) {
|
|
|
|
if (value == isOp()) return;
|
|
|
|
|
|
|
|
if (value) {
|
2011-09-24 23:03:31 +02:00
|
|
|
server.getHandle().addOp(getName().toLowerCase());
|
2011-09-03 01:49:10 +02:00
|
|
|
} else {
|
2011-09-24 23:03:31 +02:00
|
|
|
server.getHandle().removeOp(getName().toLowerCase());
|
2011-09-03 03:13:07 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isBanned() {
|
|
|
|
return server.getHandle().banByName.contains(name.toLowerCase());
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setBanned(boolean value) {
|
|
|
|
if (value) {
|
2011-09-24 23:03:31 +02:00
|
|
|
server.getHandle().addUserBan(name.toLowerCase());
|
2011-09-03 03:13:07 +02:00
|
|
|
} else {
|
2011-09-24 23:03:31 +02:00
|
|
|
server.getHandle().removeUserBan(name.toLowerCase());
|
2011-09-03 01:49:10 +02:00
|
|
|
}
|
|
|
|
}
|
2011-09-03 16:57:54 +02:00
|
|
|
|
|
|
|
public boolean isWhitelisted() {
|
2011-09-24 23:03:31 +02:00
|
|
|
return server.getHandle().getWhitelisted().contains(name.toLowerCase());
|
2011-09-03 16:57:54 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public void setWhitelisted(boolean value) {
|
|
|
|
if (value) {
|
2011-09-24 23:03:31 +02:00
|
|
|
server.getHandle().addWhitelist(name.toLowerCase());
|
2011-09-03 16:57:54 +02:00
|
|
|
} else {
|
2011-09-24 23:03:31 +02:00
|
|
|
server.getHandle().removeWhitelist(name.toLowerCase());
|
2011-09-03 16:57:54 +02:00
|
|
|
}
|
|
|
|
}
|
2011-10-10 22:10:48 +02:00
|
|
|
|
|
|
|
public Map<String, Object> serialize() {
|
|
|
|
Map<String, Object> result = new LinkedHashMap<String, Object>();
|
|
|
|
|
|
|
|
result.put("name", name);
|
|
|
|
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static OfflinePlayer deserialize(Map<String, Object> args) {
|
|
|
|
return Bukkit.getServer().getOfflinePlayer((String)args.get("name"));
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public String toString() {
|
|
|
|
return getClass().getSimpleName() + "[name=" + name + "]";
|
|
|
|
}
|
2011-10-11 15:52:07 +02:00
|
|
|
|
|
|
|
public Player getPlayer() {
|
|
|
|
for (Object obj: server.getHandle().players) {
|
|
|
|
EntityPlayer player = (EntityPlayer)obj;
|
|
|
|
if (player.name.equalsIgnoreCase(getName())) {
|
|
|
|
return (player.netServerHandler != null) ? player.netServerHandler.getPlayer() : null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return null;
|
|
|
|
}
|
2011-09-03 01:49:10 +02:00
|
|
|
}
|