mirror of
https://github.com/PaperMC/Paper.git
synced 2025-02-19 05:51:58 +01:00
Expose the potential player cause of a lightning (#6782)
This commit is contained in:
parent
4b68f08fe5
commit
7deb2b0f26
@ -45,5 +45,39 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ * @param lifeTicks ticks the current flash will do damage for
|
+ * @param lifeTicks ticks the current flash will do damage for
|
||||||
+ */
|
+ */
|
||||||
+ void setLifeTicks(int lifeTicks);
|
+ void setLifeTicks(int lifeTicks);
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * 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();
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * Updates the player that caused this lightning to be summoned into the world.
|
||||||
|
+ * By default, players that channel their {@link Trident} will be the cause of the respective lightning.
|
||||||
|
+ * <p>
|
||||||
|
+ * While the respective getter method {@link #getCausingEntity()} does not guarantee a player as the cause of a
|
||||||
|
+ * lightning to stay as future proof as possible, as of implementing this method, players are the only entities
|
||||||
|
+ * that can cause a lightning strike and hence this setter is restricted to players.
|
||||||
|
+ * </p>
|
||||||
|
+ *
|
||||||
|
+ * @param causingPlayer the player that should be the new cause of this lightning. {@code null} may be passed to
|
||||||
|
+ * indicate that no player is responsible for this lightning.
|
||||||
|
+ */
|
||||||
|
+ void setCausingPlayer(@org.jetbrains.annotations.Nullable Player causingPlayer);
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
}
|
}
|
||||||
|
@ -34,5 +34,16 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ public void setLifeTicks(int lifeTicks) {
|
+ public void setLifeTicks(int lifeTicks) {
|
||||||
+ getHandle().life = lifeTicks;
|
+ getHandle().life = lifeTicks;
|
||||||
+ }
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public @org.jetbrains.annotations.Nullable org.bukkit.entity.Entity getCausingEntity() {
|
||||||
|
+ final var cause = this.getHandle().getCause();
|
||||||
|
+ return cause == null ? null : cause.getBukkitEntity();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public void setCausingPlayer(@org.jetbrains.annotations.Nullable org.bukkit.entity.Player causingPlayer) {
|
||||||
|
+ this.getHandle().setCause(causingPlayer == null ? null : ((CraftPlayer) causingPlayer).getHandle());
|
||||||
|
+ }
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user