package org.bukkit.craftbukkit.entity;
import net.minecraft.server.EntityArmorStand;
import net.minecraft.server.Vector3f;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.ArmorStand;
import org.bukkit.entity.EntityType;
import org.bukkit.inventory.ItemStack;
import org.bukkit.util.EulerAngle;
public class CraftArmorStand extends CraftLivingEntity implements ArmorStand {
public CraftArmorStand(CraftServer server, EntityArmorStand entity) {
super(server, entity);
}
@Override
public String toString() {
return "CraftArmorStand";
}
@Override
public EntityType getType() {
return EntityType.ARMOR_STAND;
}
@Override
public EntityArmorStand getHandle() {
return (EntityArmorStand) super.getHandle();
}
@Override
public ItemStack getItemInHand() {
return getEquipment().getItemInHand();
}
@Override
public void setItemInHand(ItemStack item) {
getEquipment().setItemInHand(item);
}
@Override
public ItemStack getBoots() {
return getEquipment().getBoots();
}
@Override
public void setBoots(ItemStack item) {
getEquipment().setBoots(item);
}
@Override
public ItemStack getLeggings() {
return getEquipment().getLeggings();
}
@Override
public void setLeggings(ItemStack item) {
getEquipment().setLeggings(item);
}
@Override
public ItemStack getChestplate() {
return getEquipment().getChestplate();
}
@Override
public void setChestplate(ItemStack item) {
getEquipment().setChestplate(item);
}
@Override
public ItemStack getHelmet() {
return getEquipment().getHelmet();
}
@Override
public void setHelmet(ItemStack item) {
getEquipment().setHelmet(item);
}
@Override
public EulerAngle getBodyPose() {
return fromNMS(getHandle().bodyPose);
}
@Override
public void setBodyPose(EulerAngle pose) {
getHandle().setBodyPose(toNMS(pose));
}
@Override
public EulerAngle getLeftArmPose() {
return fromNMS(getHandle().leftArmPose);
}
@Override
public void setLeftArmPose(EulerAngle pose) {
getHandle().setLeftArmPose(toNMS(pose));
}
@Override
public EulerAngle getRightArmPose() {
return fromNMS(getHandle().rightArmPose);
}
@Override
public void setRightArmPose(EulerAngle pose) {
getHandle().setRightArmPose(toNMS(pose));
}
@Override
public EulerAngle getLeftLegPose() {
return fromNMS(getHandle().leftLegPose);
}
@Override
public void setLeftLegPose(EulerAngle pose) {
getHandle().setLeftLegPose(toNMS(pose));
}
@Override
public EulerAngle getRightLegPose() {
return fromNMS(getHandle().rightLegPose);
}
@Override
public void setRightLegPose(EulerAngle pose) {
getHandle().setRightLegPose(toNMS(pose));
}
@Override
public EulerAngle getHeadPose() {
return fromNMS(getHandle().headPose);
}
@Override
public void setHeadPose(EulerAngle pose) {
getHandle().setHeadPose(toNMS(pose));
}
@Override
public boolean hasBasePlate() {
return !getHandle().hasBasePlate();
}
@Override
public void setBasePlate(boolean basePlate) {
getHandle().setBasePlate(!basePlate);
}
@Override
public void setGravity(boolean gravity) {
super.setGravity(gravity);
// Armor stands are special
getHandle().noclip = !gravity;
}
@Override
public boolean isVisible() {
return !getHandle().isInvisible();
}
@Override
public void setVisible(boolean visible) {
getHandle().setInvisible(!visible);
}
@Override
public boolean hasArms() {
return getHandle().hasArms();
}
@Override
public void setArms(boolean arms) {
getHandle().setArms(arms);
}
@Override
public boolean isSmall() {
return getHandle().isSmall();
}
@Override
public void setSmall(boolean small) {
getHandle().setSmall(small);
}
private static EulerAngle fromNMS(Vector3f old) {
return new EulerAngle(
Math.toRadians(old.getX()),
Math.toRadians(old.getY()),
Math.toRadians(old.getZ())
);
}
private static Vector3f toNMS(EulerAngle old) {
return new Vector3f(
(float) Math.toDegrees(old.getX()),
(float) Math.toDegrees(old.getY()),
(float) Math.toDegrees(old.getZ())
);
}
@Override
public boolean isMarker() {
return getHandle().isMarker();
}
@Override
public void setMarker(boolean marker) {
getHandle().setMarker(marker);
}
@Override
public boolean canMove() {
return getHandle().canMove;
}
@Override
public void setCanMove(boolean move) {
getHandle().canMove = move;
}
}