001    package org.bukkit.entity;
002    
003    /**
004     * Represents an {@link Entity} that has health and can take damage.
005     */
006    public interface Damageable extends Entity {
007        /**
008         * Deals the given amount of damage to this entity.
009         *
010         * @param amount Amount of damage to deal
011         */
012        void damage(double amount);
013    
014        /**
015         * This method exists for legacy reasons to provide backwards
016         * compatibility. It will not exist at runtime and should not be used
017         * under any circumstances.
018         */
019        @Deprecated
020        void _INVALID_damage(int amount);
021    
022        /**
023         * Deals the given amount of damage to this entity, from a specified
024         * entity.
025         *
026         * @param amount Amount of damage to deal
027         * @param source Entity which to attribute this damage from
028         */
029        void damage(double amount, Entity source);
030    
031        /**
032         * This method exists for legacy reasons to provide backwards
033         * compatibility. It will not exist at runtime and should not be used
034         * under any circumstances.
035         */
036        @Deprecated
037        void _INVALID_damage(int amount, Entity source);
038    
039        /**
040         * Gets the entity's health from 0 to {@link #getMaxHealth()}, where 0 is dead.
041         *
042         * @return Health represented from 0 to max
043         */
044        double getHealth();
045    
046        /**
047         * This method exists for legacy reasons to provide backwards
048         * compatibility. It will not exist at runtime and should not be used
049         * under any circumstances.
050         */
051        @Deprecated
052        int _INVALID_getHealth();
053    
054        /**
055         * Sets the entity's health from 0 to {@link #getMaxHealth()}, where 0 is
056         * dead.
057         *
058         * @param health New health represented from 0 to max
059         * @throws IllegalArgumentException Thrown if the health is < 0 or >
060         *     {@link #getMaxHealth()}
061         */
062        void setHealth(double health);
063    
064        /**
065         * This method exists for legacy reasons to provide backwards
066         * compatibility. It will not exist at runtime and should not be used
067         * under any circumstances.
068         */
069        @Deprecated
070        void _INVALID_setHealth(int health);
071    
072        /**
073         * Gets the maximum health this entity has.
074         *
075         * @return Maximum health
076         */
077        double getMaxHealth();
078    
079        /**
080         * This method exists for legacy reasons to provide backwards
081         * compatibility. It will not exist at runtime and should not be used
082         * under any circumstances.
083         */
084        @Deprecated
085        int _INVALID_getMaxHealth();
086    
087        /**
088         * Sets the maximum health this entity can have.
089         * <p>
090         * If the health of the entity is above the value provided it will be set
091         * to that value.
092         * <p>
093         * Note: An entity with a health bar ({@link Player}, {@link EnderDragon},
094         * {@link Wither}, etc...} will have their bar scaled accordingly.
095         *
096         * @param health amount of health to set the maximum to
097         */
098        void setMaxHealth(double health);
099    
100        /**
101         * This method exists for legacy reasons to provide backwards
102         * compatibility. It will not exist at runtime and should not be used
103         * under any circumstances.
104         */
105        @Deprecated
106        void _INVALID_setMaxHealth(int health);
107    
108        /**
109         * Resets the max health to the original amount.
110         */
111        void resetMaxHealth();
112    }