package net.minecraft.server;

import javax.annotation.Nullable;

public class EntitySkeleton extends EntitySkeletonAbstract {

    public EntitySkeleton(World world) {
        super(world);
    }

    public static void a(DataConverterManager dataconvertermanager) {
        EntityInsentient.a(dataconvertermanager, EntitySkeleton.class);
    }

    @Nullable
    protected MinecraftKey J() {
        return LootTables.ao;
    }

    protected SoundEffect G() {
        return SoundEffects.fP;
    }

    protected SoundEffect bW() {
        return SoundEffects.fU;
    }

    protected SoundEffect bX() {
        return SoundEffects.fQ;
    }

    SoundEffect o() {
        return SoundEffects.fW;
    }

    public void die(DamageSource damagesource) {
        // super.die(damagesource); // CraftBukkit
        if (damagesource.getEntity() instanceof EntityCreeper) {
            EntityCreeper entitycreeper = (EntityCreeper) damagesource.getEntity();

            if (entitycreeper.isPowered() && entitycreeper.canCauseHeadDrop()) {
                entitycreeper.setCausedHeadDrop();
                this.a(new ItemStack(Items.SKULL, 1, 0), 0.0F);
            }
        }
        super.die(damagesource); // CraftBukkit - moved from above

    }

    protected EntityArrow a(float f) {
        ItemStack itemstack = this.getEquipment(EnumItemSlot.OFFHAND);

        if (itemstack.getItem() == Items.SPECTRAL_ARROW) {
            EntitySpectralArrow entityspectralarrow = new EntitySpectralArrow(this.world, this);

            entityspectralarrow.a((EntityLiving) this, f);
            return entityspectralarrow;
        } else {
            EntityArrow entityarrow = super.a(f);

            if (itemstack.getItem() == Items.TIPPED_ARROW && entityarrow instanceof EntityTippedArrow) {
                ((EntityTippedArrow) entityarrow).a(itemstack);
            }

            return entityarrow;
        }
    }
}
