package org.bukkit.entity; import org.bukkit.GameEvent; import org.bukkit.enchantments.Enchantment; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** * Represents an instance of a lightning strike. May or may not do damage. */ public interface LightningStrike extends Entity { /** * Returns whether the strike is an effect that does no damage. * * @return whether the strike is an effect */ public boolean isEffect(); /** * Get the amount of flashes that will occur before the lightning is * removed. By default this value is between 1 and 3. * * @return the flashes * @deprecated use {@link #getFlashCount()} */ @Deprecated // Paper public int getFlashes(); /** * Set the amount of flashes that will occur before the lightning is * removed. One flash will occur after this lightning strike's life * has reduced below 0. * * @param flashes the flashes * @deprecated use {@link #setFlashCount(int)} */ @Deprecated // Paper public void setFlashes(int flashes); /** * Get the amount of ticks this lightning strike will inflict damage * upon its hit entities. *
* When life ticks are negative, there is a random chance that another * flash will be initiated and life ticks reset to 1. * * @return the life ticks */ public int getLifeTicks(); /** * Get the amount of ticks this lightning strike will inflict damage * upon its hit entities. *
* When life ticks are negative, there is a random chance that another * flash will be initiated and life ticks reset to 1. Additionally, if * life ticks are set to 2 (the default value when a lightning strike * has been spawned), a list of events will occur: *
* As of implementing this method, only {@link Player}s are capable of causing a lightning strike, however as this * might change in future minecraft releases, this method does not guarantee a player as the cause of a lightning. * Consumers of this method should hence validate whether or not the entity is a player if they want to use player * specific methods through an {@code instanceOf} check. *
** A player is, as of implementing this method, responsible for a lightning, and will hence be returned here as * a cause, if they channeled a {@link Trident} to summon it or were explicitly defined as the cause of this * lightning through {@link #setCausingPlayer(Player)}. *
* * @return the entity that caused this lightning or null if the lightning was not caused by a entity (e.g. normal * weather) */ @org.jetbrains.annotations.Nullable Entity getCausingEntity(); // Paper end }