PlotSquared/src/main/java/com/plotsquared/sponge/SpongeLowerOfflineUUIDWrapper.java

94 lines
2.8 KiB
Java
Raw Normal View History

package com.plotsquared.sponge;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
import org.spongepowered.api.GameProfile;
import org.spongepowered.api.entity.player.Player;
import org.spongepowered.api.service.profile.GameProfileResolver;
import com.google.common.base.Charsets;
import com.google.inject.Inject;
import com.intellectualcrafters.plot.object.OfflinePlotPlayer;
import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.util.UUIDHandler;
import com.intellectualcrafters.plot.uuid.UUIDWrapper;
public class SpongeLowerOfflineUUIDWrapper extends UUIDWrapper {
public SpongeLowerOfflineUUIDWrapper() {
// Anything?
}
@Override
public UUID getUUID(final PlotPlayer player) {
return getUUID(player.getName());
}
@Override
public UUID getUUID(final OfflinePlotPlayer player) {
return getUUID(player.getName());
}
@Override
public OfflinePlotPlayer getOfflinePlayer(final UUID uuid) {
String name = UUIDHandler.getName(uuid);
if (name == null) {
try {
GameProfile profile = SpongeMain.THIS.getResolver().get(uuid).get();
if (profile != null) {
name = profile.getName();
}
} catch (Exception e) {
e.printStackTrace();
}
}
if (name == null) {
for (GameProfile profile : SpongeMain.THIS.getResolver().getCachedProfiles()) {
if (getUUID(profile.getName()).equals(uuid)) {
name = profile.getName();
break;
}
}
}
final String username = name;
return new OfflinePlotPlayer() {
@Override
public boolean isOnline() {
return UUIDHandler.getPlayer(uuid) != null;
}
@Override
public UUID getUUID() {
return uuid;
}
@Override
public String getName() {
return username;
}
@Override
public long getLastPlayed() {
// TODO FIXME
throw new UnsupportedOperationException("NOT IMPLEMENTED YET");
}
};
}
public Player[] getOnlinePlayers() {
return SpongeMain.THIS.getServer().getOnlinePlayers().toArray(new Player[0]);
}
@Override
public UUID getUUID(final String name) {
return UUID.nameUUIDFromBytes(("OfflinePlayer:" + name.toLowerCase()).getBytes(Charsets.UTF_8));
}
@Override
public OfflinePlotPlayer[] getOfflinePlayers() {
// TODO FIXME
throw new UnsupportedOperationException("NOT IMPLEMENTED YET");
}
}