From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Nassim Jahnke <nassim@njahnke.dev>
Date: Sun, 26 Jul 2020 14:44:16 +0200
Subject: [PATCH] More lightning API


diff --git a/src/main/java/org/bukkit/entity/LightningStrike.java b/src/main/java/org/bukkit/entity/LightningStrike.java
index 5afeb2f6c82e8f752229462c2d7846f6ae7a4b44..924ee7fcc3f87eb8553ef473a7d9671f0f469dd1 100644
--- a/src/main/java/org/bukkit/entity/LightningStrike.java
+++ b/src/main/java/org/bukkit/entity/LightningStrike.java
@@ -22,7 +22,9 @@ public interface LightningStrike extends Entity {
      * removed. By default this value is between 1 and 3.
      *
      * @return the flashes
+     * @deprecated use {@link #getFlashCount()}
      */
+    @Deprecated // Paper
     public int getFlashes();
 
     /**
@@ -31,7 +33,9 @@ public interface LightningStrike extends Entity {
      * has reduced below 0.
      *
      * @param flashes the flashes
+     * @deprecated use {@link #setFlashCount(int)}
      */
+    @Deprecated // Paper
     public void setFlashes(int flashes);
 
     /**
@@ -110,4 +114,42 @@ public interface LightningStrike extends Entity {
     @Deprecated // Paper
     Spigot spigot();
     // Spigot end
+
+    // Paper start
+    /**
+     * Returns the amount of flash iterations that will be done before the lightning dies.
+     *
+     * @see #getLifeTicks() for how long the current flash will last
+     * @return amount of flashes that will be shown before the lightning dies
+     */
+    int getFlashCount();
+
+    /**
+     * Sets the amount of life iterations that will be done before the lightning dies.
+     * Default number of flashes on creation is between 1-3.
+     *
+     * @param flashes amount of iterations that will be done before the lightning dies, must to be a positive number
+     */
+    void setFlashCount(int flashes);
+
+    /**
+     * Returns the potential entity that caused this lightning strike to spawn in the world.
+     * <p>
+     * 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.
+     * </p>
+     * <p>
+     * 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)}.
+     * </p>
+     *
+     * @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
 }
