001    package org.bukkit.event.vehicle;
002    
003    import org.bukkit.entity.Entity;
004    import org.bukkit.entity.Vehicle;
005    import org.bukkit.event.Cancellable;
006    import org.bukkit.event.HandlerList;
007    import org.bukkit.util.NumberConversions;
008    
009    /**
010     * Raised when a vehicle receives damage.
011     */
012    public class VehicleDamageEvent extends VehicleEvent implements Cancellable {
013        private static final HandlerList handlers = new HandlerList();
014        private final Entity attacker;
015        private double damage;
016        private boolean cancelled;
017    
018        @Deprecated
019        public VehicleDamageEvent(final Vehicle vehicle, final Entity attacker, final int damage) {
020            this(vehicle, attacker, (double) damage);
021        }
022    
023        public VehicleDamageEvent(final Vehicle vehicle, final Entity attacker, final double damage) {
024            super(vehicle);
025            this.attacker = attacker;
026            this.damage = damage;
027        }
028    
029        /**
030         * Gets the Entity that is attacking the vehicle
031         *
032         * @return the Entity that is attacking the vehicle
033         */
034        public Entity getAttacker() {
035            return attacker;
036        }
037    
038        /**
039         * Gets the damage done to the vehicle
040         *
041         * @return the damage done to the vehicle
042         */
043        public double getDamage() {
044            return damage;
045        }
046    
047        /**
048         * This method exists for legacy reasons to provide backwards
049         * compatibility. It will not exist at runtime and should not be used
050         * under any circumstances.
051         */
052        @Deprecated
053        public int _INVALID_getDamage() {
054            return NumberConversions.ceil(getDamage());
055        }
056    
057        /**
058         * Sets the damage done to the vehicle
059         *
060         * @param damage The damage
061         */
062        public void setDamage(double damage) {
063            this.damage = damage;
064        }
065    
066        /**
067         * This method exists for legacy reasons to provide backwards
068         * compatibility. It will not exist at runtime and should not be used
069         * under any circumstances.
070         */
071        @Deprecated
072        public void _INVALID_setDamage(int damage) {
073            setDamage(damage);
074        }
075    
076        public boolean isCancelled() {
077            return cancelled;
078        }
079    
080        public void setCancelled(boolean cancel) {
081            this.cancelled = cancel;
082        }
083    
084        @Override
085        public HandlerList getHandlers() {
086            return handlers;
087        }
088    
089        public static HandlerList getHandlerList() {
090            return handlers;
091        }
092    }