package com.bergerkiller.bukkit.common.wrappers;
import org.bukkit.entity.Player;
import com.bergerkiller.bukkit.common.protocol.PacketType;
import com.bergerkiller.bukkit.common.reflection.classes.PlayerAbilitiesRef;
import com.bergerkiller.bukkit.common.utils.PacketUtil;
/**
* Player abilities wrapper class.
* Note that Bukkit already provides methods to change these abilities for Players.
* This wrapper class is intended for human entities or non-player-bound processing.
*/
public class PlayerAbilities extends BasicWrapper {
public PlayerAbilities() {
this(PlayerAbilitiesRef.TEMPLATE.newInstance());
}
public PlayerAbilities(Object handle) {
setHandle(handle);
}
public boolean isInvulnerable() {
return PlayerAbilitiesRef.isInvulnerable.get(handle);
}
public void setInvulnerable(boolean invulnerable) {
PlayerAbilitiesRef.isInvulnerable.set(handle, invulnerable);
}
public boolean isFlying() {
return PlayerAbilitiesRef.isFlying.get(handle);
}
public void setFlying(boolean flying) {
PlayerAbilitiesRef.isFlying.set(handle, flying);
}
public boolean canFly() {
return PlayerAbilitiesRef.canFly.get(handle);
}
public void setCanFly(boolean canFly) {
PlayerAbilitiesRef.canFly.set(handle, canFly);
}
public boolean canInstantlyBuild() {
return PlayerAbilitiesRef.canInstantlyBuild.get(handle);
}
public void setCanInstantlyBuild(boolean canInstantlyBuild) {
PlayerAbilitiesRef.canInstantlyBuild.set(handle, canInstantlyBuild);
}
public boolean canBuild() {
return PlayerAbilitiesRef.mayBuild.get(handle);
}
public void setCanBuild(boolean canBuild) {
PlayerAbilitiesRef.mayBuild.set(handle, canBuild);
}
public float getFlySpeed() {
return PlayerAbilitiesRef.flySpeed.get(handle);
}
public void setFlySpeed(float speed) {
PlayerAbilitiesRef.flySpeed.set(handle, speed);
}
public float getWalkSpeed() {
return PlayerAbilitiesRef.walkSpeed.get(handle);
}
public void setWalkSpeed(float speed) {
PlayerAbilitiesRef.walkSpeed.set(handle, speed);
}
/**
* Sends a message to the player containing the updated settings
*
* @param player to update
*/
public void update(Player player) {
PacketUtil.sendPacket(player, PacketType.OUT_ABILITIES.newInstance(this));
}
}