package pluginbase.bukkit.minecraft;
import pluginbase.logging.Logging;
import pluginbase.minecraft.Entity;
import pluginbase.minecraft.location.EntityCoordinates;
import pluginbase.minecraft.location.Locations;
import pluginbase.minecraft.location.Vector;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
/**
* BasePlayer implementation for a Bukkit Player.
*/
class BukkitPlayer extends AbstractBukkitCommandSender<Player> implements Entity {
BukkitPlayer(@NotNull final Player player) {
super(player);
}
/** {@inheritDoc} */
@Override
public boolean isPlayer() {
return true;
}
/** {@inheritDoc} */
@NotNull
@Override
public EntityCoordinates getLocation() {
Location l = getSender().getLocation();
return Locations.getEntityCoordinates(l.getWorld().getName(), l.getWorld().getUID(),
l.getX(), l.getY(), l.getZ(), l.getPitch(), l.getYaw());
}
/** {@inheritDoc} */
@Override
public boolean teleport(@NotNull final EntityCoordinates location) {
final World world = Bukkit.getWorld(location.getWorld());
if (world == null) {
Logging.warning("Could not teleport '%s' to target location '%s'. The target world is not loaded.", getName(), location);
return false;
}
final Location l = new Location(world, location.getX(), location.getY(), location.getZ());
return getSender().teleport(l);
}
/** {@inheritDoc} */
@Override
public Vector getVelocity() {
return BukkitTools.convertVector(getSender().getVelocity());
}
/** {@inheritDoc} */
@Override
public void setVelocity(final Vector v) {
getSender().setVelocity(BukkitTools.convertVector(v));
}
}